Advertisement
kej

Untitled

kej
Jul 26th, 2022
307
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.15 KB | None | 0 0
  1. function [lagr] = lagrange(ksi,n,z,f) syms x;
  2.  
  3. polynom=0; for i=0:n
  4. p=1;
  5. for j=0:n
  6. if(i~=j) p=p*(x-ksi(j+1))/(ksi(i+1)-ksi(j+1)); end
  7. end
  8. polynom=polynom+f(i+1)*p;
  9. end
  10. fun=matlabFunction(polynom);
  11. lagr=fun(z);
  12. end
  13. clc;
  14. clear all
  15. close all
  16. h = 0.1;
  17. a = 0;
  18. b = 1.2;
  19. eps = 10^(-4);
  20. n1 = 3;
  21. n2 = 11;
  22. x = a:h:b;
  23. h_n1 = (b-a)/n1; ksi_n1 = a:h_n1:b; ksi_Ch_n1 = [];
  24. h_n2 = (b-a)/n2; ksi_n2 = a:h_n2:b; ksi_Ch_n2 = [];
  25. n1_i = 0; for i = 0:n1
  26. ksi_Ch_n1 = [ksi_Ch_n1 (b-a)/2 * cos((2*n1_i+1)*pi/(2*(n1+1))) + (a+b)/2];
  27. n1_i = n1_i + 1;
  28. end
  29. n2_i = 0; for i = 0:n2
  30. ksi_Ch_n2 = [ksi_Ch_n2 (b-a)/2 * cos((2*n2_i+1)*pi/(2*(n2+1))) + (a+b)/2];
  31. n2_i = n2_i + 1;
  32. end
  33. [V,kk] = Ex1Taylor(x,eps);
  34.  
  35. [fn1,nn1] = Ex1Taylor(ksi_n1,eps);
  36. [fn2,nn2] = Ex1Taylor(ksi_n2,eps);
  37. [f_Ch_n1, Ch_nn1] = Ex1Taylor(ksi_Ch_n1,eps); [f_Ch_n2, Ch_nn2] = Ex1Taylor(ksi_Ch_n2,eps);
  38. [lagrn1] = lagrange(ksi_n1,n1,x,fn1); [lagrn2] = lagrange(ksi_n2,n2,x,fn2);
  39. [lagr_Ch_n1] = lagrange(ksi_Ch_n1,n1,x,f_Ch_n1); [lagr_Ch_n2] = lagrange(ksi_Ch_n2,n2,x,f_Ch_n2);
  40. pogrn1 = V-lagrn1
  41. pogrn2 = V-lagrn2
  42. pogrn1_Ch = V-lagr_Ch_n1 pogrn2_Ch = V-lagr_Ch_n2
  43. nn = [5 10 15 20 25 30 35 40 45]; for i=1:length(nn)
  44. step = (b-a)/nn(i); ksi_nn = a:step:b; ksi_Ch_nn = [];
  45. l = 0;
  46. for j = 0:nn(i)
  47. ksi_Ch_nn = [ksi_Ch_nn (b-a)/2 * cos((2*l+1)*pi/(2*(nn(i)+1))) + (a+b)/2]; l = l + 1;
  48. end
  49. [f_nn,knn] = Ex1Taylor(ksi_nn,eps);
  50. [f_Ch_nn, knn_Ch] = Ex1Taylor(ksi_Ch_nn,eps);
  51. [lagrnn] = lagrange(ksi_nn,nn(i),x,f_nn); [lagrnn_Ch] = lagrange(ksi_Ch_nn,nn(i),x,f_Ch_nn);
  52. pogrnn(i) = norm(V-lagrnn,inf); pogrnn_Ch(i) = norm(V-lagrnn_Ch,inf);
  53. end
  54. A = table(x',V',lagrn1',pogrn1','VariableNames',{'Отрезок','Ряд Тейлора','Полином', 'Погрешность'})
  55. plot(x,pogrn1);
  56. title('График при n1 = 10 для равномерной сетки'); xlabel('х');
  57. ylabel('Максимальная погрешность');
  58.  
  59. B = table(x',V',lagrn2',pogrn2','VariableNames',{'Отрезок','Ряд Тейлора','Полином', 'Погрешность'})
  60. plot(x,pogrn2);
  61. title('График при n2 = 25 для равномерной сетки'); xlabel('x');
  62. ylabel('Максимальная погрешность');
  63. C = table(x',V',lagr_Ch_n1',pogrn1_Ch','VariableNames',{'Отрезок','Ряд Тейлора','Полином', 'Погрешность'})
  64. plot(x,pogrn1_Ch);
  65. title('График при n1 = 10 для Чебышевской сетки');
  66. xlabel('x');
  67. ylabel('Максимальная погрешность');
  68. D = table(x',V',lagr_Ch_n2',pogrn2_Ch','VariableNames',{'Отрезок','Ряд Тейлора','Полином', 'Погрешность'})
  69. plot(x,pogrn2_Ch);
  70. title('График при n2 = 25 для Чебышевской сетки');
  71. xlabel('x');
  72. ylabel('Максимальная погрешность');
  73.  
  74. E = table(nn',pogrnn',pogrnn_Ch','VariableNames',{'n',
  75. 'Макс.погр.равн.распр.сетки','Макс.погр.Чеб.сетки'})
  76. plot(nn,pogrnn);
  77. title('График для разного количества узлов'); xlabel('X');
  78. ylabel('Максимальная погрешность');
  79. hold on
  80. plot(nn,pogrnn_Ch);
  81.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement