ЗАДАНИЕ:
- С помощью интерполяционных формул Ньютона, Гаусса, Стирлинга и Бесселя найти значения первой и второй производных при данных значениях аргумента для функции, заданной таблично (таб. 3.1 и 3.2).
- Составить таблицу конечных разностей до пятого порядка включительно.
- Для функции (таб. 1.1) определить численно значения первой, второй и третьей производных и сравнить их с аналитической производной при шаге дифференцирования h=1E-1, 1E-3 и 1E-5.
- Выдать на терминал график зависимости погрешности численного дифференцирования от шага h.
- Подготовить отчет по работе.
Таб 3.2
x | y (x) |
1.5 | 10.517 |
2.0 | 10.193 |
2.5 | 9.807 |
3.0 | 9.387 |
3.5 | 8.977 |
4.0 | 8.637 |
4.5 | 8.442 |
5.0 | 8.482 |
5.5 | 8.862 |
6.0 | 9.701 |
6.5 | 11.132 |
7.0 | 13.302 |
- x=1.6+0.08n
- x=3.27+0.11n
- x=6.3-0.12n
- x=5.85-0.09n
(n=2,4,6,8,…,30).
n=16
Алгоритм вычисления первой и второй производной методами Ньютона, Стирлинга, Гаусса и Бесселя:
Присвоение начальных значений:
Алгоритм вычисления следующих разностей (1 шаг от всего алгоритма вычисления разностей):
Алгоритм вычисления всех разностей:
Алгоритм вычисления производной методом Ньютона.
Первой производной:
Второй производной:
Алгоритм нахождения производных методом Гаусса:
Первой производной:
Второй производной:
Алгоритмы нахождения производных методом Стирлинга:
Первой производной:
Второй производной:
Алгоритмы нахождения производных методом Бесселя:
Первой производной:
Второй производной:
Тексты программ на MatLab:
Файл «Data.m»:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
number_of_elements=12;%kolichestvo elementov v massivah X i Y X=[ 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0] Y=[ 10.517 10.193 9.807 9.387 8.977 8.637 8.442 8.482 8.862 9.701 11.132 13.302] n=16; x1=1.6+0.08*n x2=3.27+0.11*n x3=6.3-0.12*n x4=5.85-0.09*n h=0.5; t1=(x1-X(1))/h; t2=(x2-X(1))/h; t3=(x3-X(1))/h; t4=(x4-X(1))/h; |
Файл «DNone.m»:
1 2 3 4 5 |
function result=DNone(Y,N); for i=1:(N-1) DY(i)=-Y(i+1)+Y(i); end; result=DY; |
Файл «DN.m»:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
function result=DN(X,Y,N,x); %eta procedure vichislyaet znacheniya DY (5-i shtuk) DY=DNone(Y,N); DY(N)=0; DY'; D2Y=DNone(DY,N-1);D2Y(N)=0; D2Y(N-1)=0;D2Y'; D3Y=DNone(D2Y,N-2);D3Y(N)=0; D3Y(N-1)=0;D3Y(N-2)=0;D3Y'; D4Y=DNone(D3Y,N-3);D4Y(N)=0; D4Y(N-1)=0;D4Y(N-2)=0;D4Y(N-3)=0;D4Y'; D5Y=DNone(D4Y,N-4);D5Y(N)=0; D5Y(N-1)=0;D5Y(N-2)=0;D5Y(N-3)=0;D5Y(N-4);D5Y'; i=1; while (X(i)<x) index=i; i=i+1; end; res=zeros(N,5); res(:,1)=DY';%(index);poldecrement(index); res(:,2)=D2Y';%(index);poldecrement(index); res(:,3)=D3Y';%(index);poldecrement(index); res(:,4)=D4Y';%(index);poldecrement(index); res(:,5)=D5Y';%(index);poldecrement(index); result=res; |
Файл «DerivativeNyuton1.m»:
1 2 3 4 5 6 7 8 |
function result=DerivativeNyuton1(X,Y,N,h,x); DY=DN(X,Y,N,x); index=detectindex(X,x); t=X(index)-X(1); % dery=1/(3*h)*(DY(index,1)+(2*t-1)*factorial(2)*DY(index,2)+(3*t^2-6*t+2)/factorial(3)*DY(index,3)+(4*t^3-18*t^2+22*t-6)/factorial(4)*DY(index,4)+(5*t^4-40*t^3+105*t^2-100*t+24)/factorial(5)*DY(index,5)); dery=1/h*(DY(index,1)+(2*t-1)/factorial(2)*DY(index,2)+(3*t*t-6*t+2)/factorial(3)*DY(index+1,3));%+(4*t^3-18*t^2+22*t-6)/factorial(4)*DY(index,4)+(5*t^4-40*t^3+105*t^2-100*t+24)/factorial(5)*DY(index,5)); result=dery; |
Файл «DerivativeNyuton2.m»:
1 2 3 4 5 6 7 8 |
function result=DerivativeNyuton2(X,Y,N,h,x); DY=DN(X,Y,N,x); index=detectindex(X,x); t=X(index)-X(1); % dery=1/(3*h^2)*(DY(index,2)+(6*t-6)/factorial(3)*DY(index,3)+(12*t^2-36*t+22)/factorial(4)*DY(index,4)+(20*t^3-120*t^2+210*t-100)/factorial(5)*DY(index,5)); dery=1/h^2*(DY(index,2)+(6*t-6)/factorial(3)*DY(index+1,3));%+(12*t^2-36*t+22)/factorial(4)*DY(index,4)+(20*t^3-120*t^2+210*t-100)/factorial(5)*DY(index,5)); result=dery; |
Файл «DerivativeGauss1.m»:
1 2 3 4 5 6 |
function result=DerivativeGauss1(X,Y,N,h,x); DY=DN(X,Y,N,x); index=detectindex(X,x); t=X(index)-X(1); dery=1/h*(DY(index,1)+(2*t-1)/2*DY(index+1,2)+(3*t^2-1)/6*DY(index+1,3)); result=dery; |
Файл «DerivativeGauss2.m»:
1 2 3 4 5 6 |
function result=DerivativeGauss2(X,Y,N,h,x); DY=DN(X,Y,N,x); index=detectindex(X,x); t=X(index)-X(1); dery=1/(h*h)*(DY(index+1,2)+t*DY(index+1,3)); result=dery; |
Файл «DerivativeStirlinga1.m»:
1 2 3 4 5 6 |
function result=DerivativeStirlinga1(X,Y,N,h,x); DY=DN(X,Y,N,x); index=detectindex(X,x); t=X(index)-X(1); dery=1/h*((DY(index+1,1)+DY(index,1))/2 + t*DY(index+1,2) + (3*t^2-1)/6*(DY(index+2,3)+DY(index+1,3))/2); result=dery; |
Файл «DerivativeStirlinga2.m»:
1 2 3 4 5 6 |
function result=DerivativeStirlinga2(X,Y,N,h,x); DY=DN(X,Y,N,x); index=detectindex(X,x); t=X(index)-X(1); dery=1/(h*h)*(DY(index+1,2)+t*(DY(index+2,3)+DY(index+1,4)/2)); result=dery; |
Файл «DerivativeBesselya1.m»:
1 2 3 4 5 6 |
function result=DerivativeBesselya1(X,Y,N,h,x); DY=DN(X,Y,N,x); index=detectindex(X,x); t=X(index)-X(1); dery=1/h*(DY(index,1)+(2*t-1)/2*(DY(index+1,2)+DY(index,2))/2+(3*t^2-3*t+0.5)/6*DY(index+1,3)); result=dery; |
Файл «DerivativeBesselya2.m»:
1 2 3 4 5 6 |
function result=DerivativeBesselya2(X,Y,N,h,x); DY=DN(X,Y,N,x); index=detectindex(X,x); t=X(index)-X(1); dery=1/(h*h)*((DY(index+1,2)+DY(index,2))/2 + (2*t-1)/2*DY(index+1,3)); result=dery; |
Файл «detectindex.m»:
1 2 3 4 5 6 |
function result=detectindex(X,x); i=1;index=1; while (X(i)<x) i=i+1; index=i; end; result=index; |
Файл «poldecrement.m»:
1 2 3 4 |
function result=poldecrement(index); n=index; if (n>2) n=n-1; end; result=n; |
Значения первой и второй производных:
2.8800 | 5.0300 | 4.3800 | 4.4100 |
Ньютона | y’ | 0.2520 | 3.8330 | 2.2050 | 2.2050 |
y’’ | 0.2296 | 3.9909 | 2.5200 | 2.5200 | |
Гаусса | y’ | 0.2376 | 4.5066 | 2.0136 | 2.0136 |
y’’ | 0.1468 | 3.1794 | 2.6738 | 2.6738 | |
Стирлинга | y’ | 0.1870 | 5.0222 | 2.6396 | 2.6396 |
y’’ | 0.2556 | 3.4309 | 3.4852 | 3.4852 | |
Бесселя | y’ | 0.2670 | 3.8738 | 3.8738 | 1.5074 |
y’’ | 0.7320 | 3.4975 | 2.2258 | 2.2258 |
Таблица разностей:
∆y | ∆2y | ∆3y | ∆4y | ∆5y |
-0.3240 | -0.0620 | 0.0280 | 0.0160 | -0.0000 |
-0.3860 | -0.0340 | 0.0440 | 0.0160 | -0.0010 |
-0.4200 | 0.0100 | 0.0600 | 0.0150 | 0.0000 |
-0.4100 | 0.0700 | 0.0750 | 0.0150 | 0.0000 |
-0.3400 | 0.1450 | 0.0900 | 0.0150 | -0.0010 |
-0.1950 | 0.2350 | 0.1050 | 0.0140 | 0.0000 |
0.0400 | 0.3400 | 0.1190 | 0.0140 | 0.0000 |
0.3800 | 0.4590 | 0.1330 | 0.0140 | 0 |
0.8390 | 0.5920 | 0.1470 | 0 | 0 |
1.4310 | 0.7390 | 0 | 0 | 0 |
2.1700 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 |
Программа для вычисления левой, правой, центральной, второй центральной, третьей центральной производных:
1 2 3 4 5 6 |
function abw(x,h); Left = (func2(x) - func2(x-h))/h Right = (func2(x + h) - func2(x))/h Middlel = (func2(x + h) - func2(x - h))/(2*h) Middle2 = (func2(x + 2*h) - 2*func2(x) + func2(x - 2*h))/(4*h^2) Middle3= (func2(x + 3*h) - 3*func2(x + h) + 3*func2(x - h) - func2(x - 3*h) )/(8*h^3) |
1 2 |
function result=func2(x); result=3*x^4+4*x^3-12*x*x+1; |
Результаты:
H=0.1
Производная | 2.8800 5.0300 4.3800 4.4100 |
Левая
Правая Центральная 2-я центральная 3-я центральная |
300.2639 1.6603e+003 1.0954e+003 1.1567e+003
334.6418 1.7611e+003 1.1726e+003 1.1567e+003 317.4529 1.7107e+003 1.1340e+003 1.1567e+003 343.9584 1.0078e+003 771.9984 781.9710 231.3600 386.1600 339.3600 511.5908 |
H=1e-3
Производная | 2.8800 | 5.0300 | 4.3800 | 4.4100 |
Левая
Правая Центральная 2-я центральная 3-я центральная |
316.8954
317.2392 317.0673 343.7184 231.3600 |
1.7095e+003
1.7106e+003 1.7101e+003 1.0076e+003 386.1597 |
1.1330e+003
1.1338e+003 1.1334e+003 771.7584 339.3595 |
1.1563e+003
1.1571e+003 1.1567e+003 781.9716 341.5198 |
H=1e-5
Производная | 2.8800 | 5.0300 | 4.3800 | 4.4100 |
Левая
Правая Центральная 2-я центральная 3-я центральная |
317.0655
317.0690 317.0673 343.7184 255.7954 |
1.7100e+003
1.7101e+003 1.7101e+003 1.0076e+003 852.6513 |
1.1334e+003
1.1334e+003 1.1334e+003 771.7586 625.2776 |
1.1567e+003
1.1567e+003 1.1567e+003 781.9710 511.5908 |
Графики зависимости погрешности численного дифференцирования от шага h:
Выводы.
Производные для функции данной функции были найдены при помощи интерполяционной формулы Ньютона а также аналитически. Для неё были также найдены левая, правая и центральная производные первого порядка, и центральные производные второго и третьего порядка. Были построены графики зависимости точности от шага дифференцирования.