Методы вычислений
Разработка программы, которая на отрезке, по формуле функции строит интерполяционную таблицу размерности с неравномерным шагом так, чтобы узлы интерполяции совпадали с нулями полинома Чебышева. Алгоритм для вычисления приближенного значения интеграла.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 29.06.2016 |
Размер файла | 315,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
[Введите текст]
Министерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
«Комсомольский-на-Амуре государственный технический университет»
Институт новых информационных технологий
Факультет инженерно-экономический
Кафедра МОП ЭВМ
Расчетно-графическое задание
По дисциплине «Методы вычислений»
2015
Задание 1
Разработать программу, которая на отрезке [-1,1] по формуле функции f(x) строит интерполяционную таблицу размерности n +1 с неравномерным шагом так, чтобы узлы интерполяции совпадали с нулями полинома Чебышева Tn(x) степени n +1, и интерполяционный полином Лагранжа.
Для контроля распечатать интерполяционную таблицу и значения интерполяционного полинома в узлах сетки.
Вычислить и выдать на печать значение интерполяционного полинома и значение функции f(x) при х = 0,1.
Код программы
// Подключаемые библиотеки
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <math.h>
#include < windows.h>
// заданная функции
float f (float x)
{
return (exp(x) - 3*x + 1);
}
// значение построенного интерполяционного полинома в форме Лагранжа
float g (float X, float *x, float n)
{
double p,s=0;
for (int i=0; i<=n; i++)
{
p = 1;
for (int j=0; j<=n; j++)
{
if (i==j) continue;
p *= (X-x[j])/(x[i]-x[j]);
}
s += p*f(x[i]);
}
return s;
}
// Построение по формуле функции f(x) интерполяционной таблицы размерности n+1(узлы интерполяции совпадают с нулями полинома Чебышева)
// Массив x - узлы интерполяции (нули полинома Чебышева),
// Массив y - значения функции f(x) в узлах сетки.
// Массив z - значения интерполяционного полинома
void xyz (float n, float *x, float *y, float *z)
{
for (int i=0; i<=n; i++)
{
x[i] = -cos(3.14159*(2*i+1)/(2*(n+1)));
y[i] = f(x[i]);
}
for (int i=0; i<=n; i++) z[i] = g(x[i],x,n);
printf ("\t x y(x) g(x)\n");
for (int i=0; i<=n; i++)
{
if (i==18) // при заполнении страницы ждем нажатия клавиши
{
printf ("Для продолжения нажмите любую клавишу...\n");
_getch ();
printf ("\t x y(x) g(x)\n");
}
printf ("\t% .3f%12f%12f\n", x[i], y[i], z[i]);
}
}
void main (void)
{
setlocale(LC_ALL, "Russian"); //Для ввода русских символов
float n = 25, *x, *y, *z;
// динамически создаем массивы из n+1 элементов
x = new float[n+1];
y = new float[n+1];
z = new float[n+1];
printf ("Интерполяционная таблица (n=25)\n");
xyz (n, x, y, z);
printf ("\nЗначение функции при x = 0.1: %f", f(0.1));
printf ("\nЗначение интерполяционного полинома при x =0.1:%f\n",g(0.1, x, n));
// освобождаем память, выделенную под массивы
delete x; delete y; delete z;
system("pause"); // Для ожидания прекращения работы
}
Результат работы программы
Рис. 1
Задание 2
интеграл размерность полином чебышев
Построить алгоритм для вычисления приближенного значения интеграла по формуле Симпсона при n = 8 иn = 16, где n - это число интервалов, и оценки погрешности по правилу Рунге. Разработать программу, которая реализует этот алгоритм. На печать выдать два приближенных значения интеграла (при n = 8 и n = 16) и погрешность, найденную по правилу Рунге.
Код программы
//Подключаемые библиотеки
#include <conio.h>
#include <stdio.h>
#include <math.h>
#include <windows.h>
#include <iostream>
// Заданная функция
float f1 (float x) {return 1/sqrt(2*x*x + 1.3);}
void main(void)
{
setlocale(LC_ALL, "Russian"); //Для ввода русских символов
/* a и b -границы отрезка
n - число отрезков
h - шаг
Q1 - значение интеграла при n=8
Q2 - значение интеграла при n=16
*/
float a,b,h,Q1,Q2,Q; int n,i; // объявили переменные
printf("\n\t\t Численное интегрирование функций");
puts("\n\n*** Формула Симпсона ***");
a = 1; b = 2.8;
n = 8; h = (b-a)/n;
Q1 = f1(a)+f1(b);
float s1=0, s2=0, x=a;
for (i=1; i<n; i++)
{
x += h;
if (i%2)
// сумма значений функции в точках с нечетными номерами
s1 += f1(x);
else
// сумма значений функции в точках с четными номерами
s2 += f1(x);
}
Q1 = h/3*(Q1+4*s1+2*s2);
printf ("\nn= 8:");
printf ("\n Приближенное значение интеграла: %.7f", Q1);
n = 16;
h = (b-a)/n;
Q2 = f1(a)+f1(b);
s1=0; s2=0; x=a;
for ( i=1; i<n; i++)
{
x += h;
if (i%2)
// сумма значений функции в точках с нечетными номерами
s1 += f1(x);
else
// сумма значений функции в точках с четными номерами
s2 += f1(x);
}
Q2 = h/3*(Q2+4*s1+2*s2);
printf ("\nn= 16:");
printf ("\n Приближенное значение интеграла: %.7f\n", Q2);
Q= fabs(Q1-Q2)/15;
printf("\nОценка погрешности по правилу Рунге: R=%.2e\n",Q);
system("pause"); // Для ожидания прекращения работы
}
Результат работы программы
Рис. 2
Задание 3
Построить алгоритм для приближенного решения задачи Коши для обыкновенного дифференциального уравнения с начальным условием , на отрезке [0,1], с шагом h = 0.1 методом Рунге-Кутта четвертого порядка. Разработать программу, которая реализует этот алгоритм и выдает на печать таблицу приближенных и точных значений решения.
Код программы
//Подключаемые библиотеки
#include <conio.h>
#include <math.h>
#include <stdio.h>
#include <windows.h>
#include <iostream>
/* Глобальные переменные и массивы:
n - число узлов сетки
x[n] - массив узлов сетки
y[n] - массив значений точного решения
u[n] - массив значений приближенного решения
h - шаг сетки
m,k - параметры, входящие в формулу точного решения
K1,K2,K3,K4 - коэффициенты метода Рунге-Кутта
*/
const int n = 11;
double x[n], y[n], u[n], h = 0.1,
m = 1.1, k = 2.5, K1, K2, K3, K4;
// возвращает значение функции (правой части ДУ)
double f (double x,double y) { return -m*y+exp(k*x); }
void main (void)
{
setlocale(LC_ALL, "Russian"); //Для ввода русских символов
printf("Численное решение задачи Коши для обыкновенных\nдифференциальных уравнений первого порядка");
// Метод Рунге-Кутта четвертого порядка
for(int i=0; i<n; i++)
{
double a = i*h; x[i] = a;
// формула точного решения
y[i] = (exp((k+m)*a)/(k+m)+1-1/(k+m))/exp(m*a);
}
u[0] = 1;
for(int i=0; i<n-1; i++)
{
K1=f(x[i], u[i]);
K2=f(x[i]+h/2, u[i]+h/2*K1);
K3=f(x[i]+h/2, u[i]+h/2*K2);
K4=f(x[i]+h, u[i]+h*K3);
// вычисление приближенного решения
u[i+1] = u[i]+h/6*(K1+2*K2+2*K3+K4);
}
// Вывод результатов на экран
printf ("n\n\n\t\t\t\Результаты расчета:\n\n\n");
printf ("\nУзлы сетки\tТочное решение\tПриближенное решение\n");
for (int i=0; i<n; i++)
{
printf ("\n%10.2f\t% -14.4f\t% -20.4f\t", x[i], y[i], u[i]);
}
printf("\n");
system("paus
Результат работы программы
Рис. 3
Список использованных источников
1. Бахвалов Н.С. Численные методы / Н.С. Бахвалов, Н.П. Жидков, Г.М. Кобельков. -М.: Наука, 1987. - 600с.
2. Боглаев Ю.П. Вычислительная математика и программирование / Ю.П. Боглаев. -М.: Высшая школа, 1990.-544с.
3. Жидков Е.Н. Вычислительная математика / Е.Н. Жидков. -М.: Академия, 2010.- 208с.
Размещено на Allbest.ru
Подобные документы
Методика разработки и листинг программы для вычисления значений функции F(x) на отрезке [а, Ь] с заданным шагом. Вычисление значения выражения по формуле. Расчет параметров равностороннего треугольника. Порядок формирования квадратной матрицы порядка.
контрольная работа [425,1 K], добавлен 10.03.2014Математическая модель и методика разработки программного модуля для вычисления приближенного значения бесконечной суммы с точностью до Е=0,05, если x принимает значения на отрезке [a,b] с шагом h. Порядок проверки программного модуля на наличие ошибок.
курсовая работа [228,9 K], добавлен 08.09.2010Формулирование и создание программы по вычислению определенного интеграла по формуле трапеций с тремя десятичными знаками и по формуле Симпсона. Выбор Delphi как программного средства разработки программы. Создание алгоритма и листинг программы.
курсовая работа [990,9 K], добавлен 15.06.2009Понятие и характеристика некоторых методов интерполяции. Вычисление значения функции между заданными точками несколькими методами. Алгоритм линейной интерполяции. Алгоритм локальной интерполяции по формуле Лагранже. Инструкция пользования программой.
курсовая работа [186,5 K], добавлен 30.05.2015Особенности применения компьютерных программ Pascal, Excel, MathCAD и Delphi для вычисления значения функции y(x) с заданным промежутком и шагом. Виды результатов вычислений, их сравнение и вывод. Изображение блок-схемы алгоритма решения задания.
контрольная работа [760,0 K], добавлен 08.03.2011Разработка различных программ для вычисления X и Y по формуле, для вычисления интеграла, для вычисления таблицы значений функции и для вычисления элементов вектора. Составление блок-схемы программы. Ввод значений, описание переменных и условия расчета.
контрольная работа [148,1 K], добавлен 08.11.2013Численные методы. Создание программного продукта, использование которого позволит одновременно исследовать два метода вычисления определенных интегралов: метод трапеций и метод Симпсона. Рассмотрен ход вычисления интеграла в виде кода программы.
курсовая работа [834,6 K], добавлен 14.04.2019Требования к аппаратным ресурсам персонального компьютера. Расчет цены и прибыли на программное средство. Процедура нахождения значения интеграла методом Симпсона, трапеции, прямоугольников. Формы для ввода и вывода данных с доступным интерфейсом.
дипломная работа [7,4 M], добавлен 11.06.2012Составление блок-схемы и алгоритма программы для решения уравнения с приближенным значением корня по методу Ньютона, расчета приближенного значения интеграла по формуле трапеций, вычисления уравнения длины вектора. Типы формул общего члена суммы.
курсовая работа [41,3 K], добавлен 15.12.2012Средства Delphi для разработки Windows приложений. Математическая формулировка задачи, описание программы вычисления определенного интеграла по формуле левых прямоугольников. Руководство пользователя, методика испытаний продукта. Листинг программы.
курсовая работа [178,1 K], добавлен 14.11.2010