- •Лабораторная работа №1 Интерполяция
- •1.1 Краткие теоретические сведения
- •1.1. Задача аппроксимации функций
- •1.2 Интерполяционный многочлен Лагранжа
- •1.2 Задание к работе
- •ЛабораторнаЯ рАбота № 2 АпПроксимацИя функцИй, заданНых таблицеЙ
- •2.1 Краткие теоретические сведения
- •2.2 Задание к работе
- •Лабораторная работа №3 интерполирование функции кубическими сплайнами
- •3.1 Краткие теоретические сведения.
- •3.2 Задание к работе
- •Лабораторная работа №4 Численное интегрирование
- •4.1 Краткие теоретические сведения.
- •4.1.1 Квадратурные формулы прямоугольников, трапеций и Симпсона
- •4.1.2 Алгоритм прямоугольников-трапеций
- •4.2 Задание к работе
- •Лабораторная работа №5 Численное дифференцирование
- •5.1 Краткие теоретические сведения
- •5.1.1 Вычисление производной по ее определению
- •5.2 Конечно- разностные аппроксимации производных
- •5.3 Использование интерполяционных многочленов Лагранжа для формул численного дифференцирования
- •5.2 Задание к работе
- •Лабораторная рАбота №6 Численное решение обыкновенных дифференциальных уравнений
- •6.1 Краткие теоретические сведения
- •6.1.1 Численное решение обыкновенных дифференциальных уравнений первого порядка. Численное решение задачи Коши.
- •6.1.2 Метод Эйлера
- •6.1.3 Метод Рунге-Кутты
- •6.2 Задание.
- •7 Література
- •Навчальне видання
5.2 Задание к работе
Функция f(x) определена на отрезке [1;1.2]. Выбрав шаг h=0,01, по формулам (17) и (19) найти приближенные значения производных и в точках 1,05 и 1,13; оценить погрешность вычислений.
Таблица 1
x |
Вариант |
|||||||
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
|
1,00 |
2,85765 |
2,71828 |
0,36788 |
1,17520 |
1,54308 |
0,84147 |
0,54030 |
1,55741 |
1,02 |
2,91538 |
2,77319 |
0,36059 |
1,20630 |
1,56689 |
0,85211 |
0,52337 |
1,62813 |
1,04 |
2,97427 |
2,82922 |
0,35345 |
1,23788 |
1,59134 |
0,86240 |
0,50622 |
1,70361 |
1,06 |
3,03436 |
2,88637 |
0,34646 |
1,26996 |
1,61641 |
0,87236 |
0,48887 |
1,78442 |
1,08 |
3,09566 |
2,94468 |
0,33960 |
1,30254 |
1,64214 |
0,88196 |
0,47133 |
1,87122 |
1,10 |
3,15819 |
3,00417 |
0,33287 |
1,33565 |
1,66852 |
0,89121 |
0,45360 |
1,96476 |
1,12 |
3,22199 |
3,06485 |
0,32628 |
1,36929 |
1,69557 |
0,90010 |
0,43568 |
2,06596 |
1,14 |
3,28708 |
3,12677 |
0,31982 |
1,40347 |
1,72329 |
0,90863 |
0,41759 |
2,17588 |
1,16 |
3,35348 |
3,18993 |
0,31349 |
1,43822 |
1,75171 |
0,91680 |
0,39934 |
2,29580 |
1,18 |
3,42123 |
3,25437 |
0,30728 |
1,47355 |
1,78083 |
0,92461 |
0,38092 |
2,42727 |
1,20 |
3,49034 |
3,32012 |
0,30119 |
1,50946 |
1,81066 |
0,93204 |
0,36236 |
2,57215 |
Продолжение таблицы 1
x |
Вариант |
|||||||
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
|
1,00 |
0,52500 |
0,76159 |
0,37600 |
1,04720 |
0,84147 |
0,70711 |
0,54630 |
3,62686 |
1,02 |
0,54480 |
0,76987 |
0,38460 |
1,03561 |
0,85211 |
0,72111 |
0,55936 |
3,78029 |
1,04 |
0,56422 |
0,77789 |
0,39303 |
1,02395 |
0,86240 |
0,73485 |
0,57256 |
3,93977 |
1,06 |
0,58327 |
0,78566 |
0,40131 |
1,01220 |
0,87236 |
0,74833 |
0,58592 |
4,10555 |
1,08 |
0,60196 |
0,79320 |
0,40942 |
1,00036 |
0,88196 |
0,76158 |
0,59943 |
4,27791 |
1,10 |
0,62031 |
0,80050 |
0,41739 |
0,98843 |
0,89121 |
0,77460 |
0,61311 |
4,45711 |
1,12 |
0,63833 |
0,80757 |
0,42522 |
0,97641 |
0,90010 |
0,78740 |
0,62695 |
4,64344 |
1,14 |
0,65603 |
0,81441 |
0,43290 |
0,96429 |
0,90863 |
0,80000 |
0,64097 |
4,83720 |
1,16 |
0,67342 |
0,82104 |
0,44046 |
0,95207 |
0,91680 |
0,81240 |
0,65517 |
5,03870 |
1,18 |
0,69051 |
0,82745 |
0,44788 |
0,93974 |
0,92461 |
0,82462 |
0,66956 |
5,24827 |
1,20 |
0,70732 |
0,83365 |
0,45518 |
0,92730 |
0,93204 |
0,83666 |
0,68414 |
5,46623 |
Приложение
/***************************************************************************
*Вычисление производной функции по ее определению на примере функции у = sinx *
****************************************************************************/
#include <stdio>
#include <conio.h>
#include <cmath>
#define A 10
float derivf(float, float);
void main()
{
float deltax,den,der2,e,e1,x;
clrscr();
printf ("Введите значение х и точность epsilon\n");
scanf ("%f%f",&x,&e);
deltax = 0.1; der1 = derivf(x,deltax);
do
{
deltax = deltax / A;
der2 = derivf(x, deltax);
el = fabs(der1 - der2);
der1 = der2;
}
while (el >= e);
printf ("\n\nx = %f производная f'= %f",x,der2);
printf ("\nПогрешность приближения = %f\n",e1);
printf("\nНажмите любую клавишу для продолжения...");
getch();
}
//функция
float derivf(float x, float y)
{
float z;
z = (sin(x+y) - sin(x))/y;
return z;
}
/*****************************************************************************
* Вычисление производных первого и второго порядков с одинаковой погрешностью *
* в зависимости от шага по формулам численного дифференцирования *
*****************************************************************************/
#include <stdio>
#include <conio.h>
#include <cmath>
#define P 15
void main ()
{
int i,n;
double a,b,h,h1,h2,x,y1,y2,y[P+1];
clrscr();
printf ("Введите n - число разбиений отрезка [a,b]\n");
scanf ("%i",&n);
if ((n >= 3) && (n <= 15))
{
printf ("Введите координаты концов отрезка а, b\n");
scanf ("%lf%lf",&a, &b);
printf ("Введите значения функции y(i) в узлах,");
printf (" причем у(0) = f(a), y(n) =f(b)\n");
for (i = 0; i <= n; scanf (”%lf”, &y[i]), i++);
printf ("Введите значение x\n”);
scanf ("%lf”, &х);
h = (b - a) / n;
i = floor((x - a) / h + h/2);
h1 = 2*h;
h2 = h*h;
if (i == 0)
{
y1 = (-3 * у [0] + 4 * y[1] – y[2])/h1;
y2 = (2 * y[0] - 5 * y[1] + 4 * y[2] – y[3]) / h2;
};
if ((i > 0) && (i < n))
{
y1 = (-y[i – 1] + y[i + 1]) / h1;
y2 = (y[i - 1] - 2 * y[i] + y[i + 1]) / h2;
};
if (i == n)
{
y1 = (y[n - 2] - 4 * y[n - 1] + 3 * y[n]) / h1;
y2 = (-y[n-3] + 4 * y[n-2] - 5 * y[n-1] + 2 * y[n]) / h2;
};
printf ("x = %f произв1 = %f",x,y1);
printf (" произв2 = %f",y2);
};
printf("\nНажмите любую клавишу для продолжения...");
getch();
}
Пусть отрезок [a,b] разбит на п равных частей с шагом и в точках некоторая функция принимает значения . Для переменной х, принадлежащей отрезку [a,b] , требуется вычислить значения первой и второй производной, имеющих порядок аппроксимации в зависимости от шага. Полагаем, что значения производных у' и у" в точках х, близких к точкам х , равны соответствующим значениям и Будем считать точку х близкой к если она принадлежит промежутку Точки х, близкие к , имеет одно и то же значение параметра i- целая часть .
В зависимости от i при имеем три типа формул (19)-(21). Так при i=1:
при
Чтобы получить правильные результаты, вычисления производят с двойной точностью. Для ориентировки в работе программ можно использовать таблицу
-
1
1,01
1,02
1,03
2,718150
2,745650
2,773250
2,800950
2,730000
2,750000
2,770000
2,790000
2,718282
2,745601
2,773195
2,801066
из которой, в частности, следует, что при вводе данных и четырех значений функции ех с шестью верными знаками после запятой в результате вычислений сохраняется пять знаков после запятой для первой производной и два знака - для второй производной. Если, например, ввести значения функции с четырьмя знаками после запятой, то получим для значение 2,715000, а для - 3,000000.