Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function [lagr] = lagrange(ksi,n,z,f) syms x;
- polynom=0; for i=0:n
- p=1;
- for j=0:n
- if(i~=j) p=p*(x-ksi(j+1))/(ksi(i+1)-ksi(j+1)); end
- end
- polynom=polynom+f(i+1)*p;
- end
- fun=matlabFunction(polynom);
- lagr=fun(z);
- end
- clc;
- clear all
- close all
- h = 0.1;
- a = 0;
- b = 1.2;
- eps = 10^(-4);
- n1 = 3;
- n2 = 11;
- x = a:h:b;
- h_n1 = (b-a)/n1; ksi_n1 = a:h_n1:b; ksi_Ch_n1 = [];
- h_n2 = (b-a)/n2; ksi_n2 = a:h_n2:b; ksi_Ch_n2 = [];
- n1_i = 0; for i = 0:n1
- ksi_Ch_n1 = [ksi_Ch_n1 (b-a)/2 * cos((2*n1_i+1)*pi/(2*(n1+1))) + (a+b)/2];
- n1_i = n1_i + 1;
- end
- n2_i = 0; for i = 0:n2
- ksi_Ch_n2 = [ksi_Ch_n2 (b-a)/2 * cos((2*n2_i+1)*pi/(2*(n2+1))) + (a+b)/2];
- n2_i = n2_i + 1;
- end
- [V,kk] = Ex1Taylor(x,eps);
- [fn1,nn1] = Ex1Taylor(ksi_n1,eps);
- [fn2,nn2] = Ex1Taylor(ksi_n2,eps);
- [f_Ch_n1, Ch_nn1] = Ex1Taylor(ksi_Ch_n1,eps); [f_Ch_n2, Ch_nn2] = Ex1Taylor(ksi_Ch_n2,eps);
- [lagrn1] = lagrange(ksi_n1,n1,x,fn1); [lagrn2] = lagrange(ksi_n2,n2,x,fn2);
- [lagr_Ch_n1] = lagrange(ksi_Ch_n1,n1,x,f_Ch_n1); [lagr_Ch_n2] = lagrange(ksi_Ch_n2,n2,x,f_Ch_n2);
- pogrn1 = V-lagrn1
- pogrn2 = V-lagrn2
- pogrn1_Ch = V-lagr_Ch_n1 pogrn2_Ch = V-lagr_Ch_n2
- nn = [5 10 15 20 25 30 35 40 45]; for i=1:length(nn)
- step = (b-a)/nn(i); ksi_nn = a:step:b; ksi_Ch_nn = [];
- l = 0;
- for j = 0:nn(i)
- ksi_Ch_nn = [ksi_Ch_nn (b-a)/2 * cos((2*l+1)*pi/(2*(nn(i)+1))) + (a+b)/2]; l = l + 1;
- end
- [f_nn,knn] = Ex1Taylor(ksi_nn,eps);
- [f_Ch_nn, knn_Ch] = Ex1Taylor(ksi_Ch_nn,eps);
- [lagrnn] = lagrange(ksi_nn,nn(i),x,f_nn); [lagrnn_Ch] = lagrange(ksi_Ch_nn,nn(i),x,f_Ch_nn);
- pogrnn(i) = norm(V-lagrnn,inf); pogrnn_Ch(i) = norm(V-lagrnn_Ch,inf);
- end
- A = table(x',V',lagrn1',pogrn1','VariableNames',{'Отрезок','Ряд Тейлора','Полином', 'Погрешность'})
- plot(x,pogrn1);
- title('График при n1 = 10 для равномерной сетки'); xlabel('х');
- ylabel('Максимальная погрешность');
- B = table(x',V',lagrn2',pogrn2','VariableNames',{'Отрезок','Ряд Тейлора','Полином', 'Погрешность'})
- plot(x,pogrn2);
- title('График при n2 = 25 для равномерной сетки'); xlabel('x');
- ylabel('Максимальная погрешность');
- C = table(x',V',lagr_Ch_n1',pogrn1_Ch','VariableNames',{'Отрезок','Ряд Тейлора','Полином', 'Погрешность'})
- plot(x,pogrn1_Ch);
- title('График при n1 = 10 для Чебышевской сетки');
- xlabel('x');
- ylabel('Максимальная погрешность');
- D = table(x',V',lagr_Ch_n2',pogrn2_Ch','VariableNames',{'Отрезок','Ряд Тейлора','Полином', 'Погрешность'})
- plot(x,pogrn2_Ch);
- title('График при n2 = 25 для Чебышевской сетки');
- xlabel('x');
- ylabel('Максимальная погрешность');
- E = table(nn',pogrnn',pogrnn_Ch','VariableNames',{'n',
- 'Макс.погр.равн.распр.сетки','Макс.погр.Чеб.сетки'})
- plot(nn,pogrnn);
- title('График для разного количества узлов'); xlabel('X');
- ylabel('Максимальная погрешность');
- hold on
- plot(nn,pogrnn_Ch);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement