高等数值分析拉格朗日插值多项式切比雪夫高斯龙格现象复合梯形辛普森求积公式
解答:
1.拉格朗日插值函数:
function y=lagrange (a,b,x)
y=0;
if length(a)==length(b)
n=length(a);
else disp('ERROR!length(a)!=length(b)')
return;
end
for i=1:n
k=1;
for j=1:n
if j~=i
k=k.*(x-a(j))/(a(i)-a(j));
end
end
y=y+k*b(i);
end
2.问题(a):
function Q_a
m=100;
n=10;
x=-1:2/n:1;
y=1./(1+9*x.^2);
x0=-1:2/m:1;
y0=lagrange(x,y,x0);
y1=1./(1+9*x0.^2);
plot(x0,y0,'--r');
hold on;
plot(x0,y1,'-b');
end
3.问题(b):
function Q_b
m=100;
n=10;
x=zeros(1,n+1);
for i=1:n+1
x(i)=cos((2*i-1)*pi/(2*n+2)); end
y=1./(1+9*x.^2);
x0=-1:2/m:1;
y0=lagrange(x,y,x0);
y1=1./(1+9*x0.^2);
plot(x0,y0,'--r');
hold on;
plot(x0,y1,'-b');
end
4.问题(c):
main.m(m文件)
figure(1)
Q_a()
figure(2)
Q_b()
syms x
y=1/(1+9*x^2);
I0=int(y,-1,1);%准确值
n=10;
x=-1:2/n:1;
y=1./(1+9*x.^2);
I1=trapz(x,y);%复合梯形
x0=zeros(1,n);
for i=1:n
x0(i)=(x(i)+x(i+1))/2;
end
y0=2/n*1./(1+9*x0.^2);
I2=I1/3+2*sum(y0)/3;%复合辛普森
x1=[-0.5384693101 0.5384693101 -0.9061798459 0.9061798459 0];
y1=1./(1+9*x1.^2);
A=[0.4786286705 0.4786286705 0.2369268851 0.2369268851 0.5688888889]; I3=y1*A'; %高斯
5总结:
(1).使用等距节点构造的高次拉格朗日插值多项式在正负1附件,插值值与真实值偏差非常大,存在较大的震荡。
(2).使用切比雪夫多项式插值节点构造的高次拉格朗日插值多项式,可以改善这种情况,提高插值精度。
(3).复合梯形求积公式和复合辛普森求积公式可以比较有效的求函数的积分,相同节点的复合辛普森求积公式要比复合梯形求积公式精度要高。
(4).高斯求积公式可以用较少的节点达到较高的精度。