拉格朗日插值龙格现象的matlab实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
拉格朗日插值龙格现象的MATLAB 实现
姓名:袁宽 学号:2 专业:电气工程
题目:对于函数2
11)(x x f +=,55≤≤-x 进行拉格朗日插值。10=n ,按等距节点求分段线性插值,把)(x f 和插值多项式的曲线画在同一张图上进行比较。观察Lagrange 插值及数值积分中的分段性插值。
f.m :
function f= f( x )
f=1./(1+x.^2);
end
Lagrange.m
function y=Lagrange(x0,y0,x);
n=length(x0);
m=length(x);
for i=1:m
z=x(i);
s=0.0;
for k=1:n
p=1.0;
for j=1:n
if j~=k
p=p*(z-x0(j))/(x0(k)-x0(j));
end
end
s=p*y0(k)+s;
end
y(i)=s;
End
拉格朗日插值的曲线:
x=[-5:1:5];
y=1./(1+x.^2);
x0=[-5:0.001:5];
y0=Lagrange(x,y,x0);
y1=1./(1+x0.^2);
plot(x0,y0,'b')
hold on
plot(x0,y1,'r')
使用龙格现象观察分段性插值的曲线:syms y x lx;
y=1/(1+x^2);
x0=-5:1:5;
y0=zeros(1,length(x0));
for i=1:11
x=x0(i);
y0(i)=eval(y);
end
M = -5:0.01:5;
y1 = zeros(1,length(M));
n = 1;
for i=2:11
for x=-5:0.01:5
if x
lx(1)=y0(i-1)*(x-x0(i))/(x0(i-1)-x0(i));
lx(2)=y0(i)*(x-x0(i-1))/(x0(i)-x0(i-1));
y1(n) = lx(1)+lx(2);
n = n+1;
end
end
end
ezplot(y,[-5,5])
hold on
A =-5:0.01:5;
plot(A,y1,'r');
分别运行两个文件后的得到两个图形曲线:
拉格朗日插值曲线分段插值曲线