拉格朗日插值龙格现象的matlab实现

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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=x0(i-1)

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');

分别运行两个文件后的得到两个图形曲线:

拉格朗日插值曲线分段插值曲线

相关文档
最新文档