q1:Lagrange插值多项式和Newton插值多项式做Runge现象,区间为[-5,5],将原函数图像和插值函数图象放在同一张图中用不同颜色进行区分。
- function lagrange(a,b)
- %输入变量:
- % a:插值多项式的最低次数;
- % b:插值多项式的最高次数。
- %输出变量:无输出变量,只显示拟合图像与程序运行时间。
- %本函数目的:演示高阶Larange插值的Runge现象。
- %时间:与a,b有关,一般不超过0.1s。
- %tic;
- for i=a:b
- x = linspace(-5, 5, i+1);%
- y = 1./(1+x.^2);
- %以上两步确定了插值运算需要的数值对
- p = polyfit(x,y,i);%p为插值多项式的系数
- xx = -5:0.01:5;
- yy = polyval(p,xx);%根据系数计算对应xx的因变量值
- plot(xx,yy);
- hold on;
- grid on;
- end;
- plot(xx,1./(1+xx.^2),'r');
- title('Lagrange插值的Runge现象(红色为实际图像)');
- %toc;
- end
- function newton(a,b)
- %输入变量:
- % a:插值多项式的最低次数;
- % b:插值多项式的最高次数。
- %输出变量:无输出变量,只显示拟合图像与程序运行时间。
- %本函数目的:演示高阶Newton插值的Runge现象。
- %时间:与a,b有关,一般不超过0.3s。
- %备注:需要调用同目录下的calculator_of_newton函数!
- tic;
- for i = a:b
- x = linspace(-5, 5, i+1);
- y = 1./(1. + x.^2);
- %以上两步确定了插值运算需要的数值对
-
- p = zeros(i+1);
- p(:,1) = y';%p为差商表与函数值的组合矩阵,第一列为函数值
- for j1 = 2:i+1
- for j2 = j1:i+1
- p(j2, j1) = (p(j2, j1-1) - p(j2-1, j1-1))/(x(j2) - x(j2-j1+1));
- end
- end %for循环计算p矩阵完毕
-
- x_c = -5:0.01:5;
- y_c = calculator_of_newton(x_c, p, x);%调用该函数计算自变量经过插值多项式后的对应值
- plot(x_c, y_c);
- hold on;
- grid on;
- end
- plot(x_c, 1./(1. + x_c.^2), 'r');
- title('Newton插值的Runge现象(红色为实际图像)');
- toc;
- end


雷达卡




京公网安备 11010802022788号







