用MATLAB实现拉格朗日插值和分段线性插值

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用MATLAB实现拉格朗日插值和分段线性插值

1、实验内容:

用MATLAB实现拉格朗日插值和分段线性插值。

2、实验目的:

1)学会使用MATLAB软件;

2)会使用MATLAB软件进行拉格朗日插值算法

和分段线性差值算法;

3、实验原理:

利用拉格朗日插值方法进行多项式插值,并将图形显式出来。

4、实验步骤及运行结果

(1)实现lagrange插值

1)定义函数: f = 1/(x^2+1) 将其保存在f.m 文件中,具体程

序如下:

function y = f1(x)

y = 1./(x.^2+1);

2)定义拉格朗日插值函数:将其保存在lagrange.m 文件中,

具体实现程序编程如下:

function y = lagrange(x0,y0,x)

m = length(x); /区间长度/

n = length(x0);

for i = 1:n

l(i) = 1;

end

for i = 1:m

for j = 1:n

for k = 1:n

if j == k

continue;

end

l(j) = ( x(i) -x0(k))/( x0(j) - x0(k) )*l(j);

end

end

end

y = 0;

for i = 1:n

y = y0(i) * l(i) + y;

end

3)建立测试程序,保存在text.m文件中,实现画图:

x=-5:0.001:5;

y=(1+x.^2).^-1;

p=polyfit(x,y,n);

py=vpa(poly2sym(p),10)

plot_x=-5:0.001:5;

f1=polyval(p,plot_x);

figure

plo t(x,y,‘r',plot_x,f1)

输入n=6,出现下面的图形:

通过上图可以看到当n=6是没有很好的模拟。

于是重新运行text.M并选择n=11

由此可见n=11时的图像是可以很好的实现模拟

(2)分段线性插值:

建立div_linear.m文件。具体编程如下/*分段线性插值函数:div_linear.m 文件*/

function y = div_linear(x0,y0,x,n)

%for j = 1:length(x)

for i = 1:n-1

if (x >= x0(i)) && (x <= x0(i+1))

y = (x - x0(i+1))/(x0(i) - x0(i+1))*y0(i) + ( x - x0(i))/(x0(i+1) - x0(i))*y0(i+1);

else

continue;

end

end

%end

测试程序(text2.m):

n = input(‘输入n =:’);

x0 = linspace( -5,5,n);

for x = -5:0.01:5

y = div_linear(x0,f(x0),x,n);

hold on;

plot(x,y,'r');

plot(x,f(x),'b');

end

2)运行测试程序,这是会出现:

输入n=:

2)输入n=6,并按Enter键,出现:

4)关掉图形界面后,重新运行程序,输入n=11,并按enter键后

出现:

5)再次关掉图形界面,输入n=100,并按enter键,出现:

此时。图形将于原函数图形基本吻合,说明分割区间越多,图像接

近真实的图像。

(3)用lagrange插值观察y = |sin(k*π*x)|的误差分析:

1)编写函数文件,保存在f2.m 中

x=0:0.01:1;

k= input('输入k:')

n= input('输入n:');

y=abs(sin(k*pi*x));

p=polyfit(x,y,n-1);

py=vpa(poly2sym(p),8);

plot_x=0:0.01:1;

f1=polyval(p,plot_x);

plot(x,y,plot_x,f1);

2)运行该程序:

输入k=:1

输入n=:2

出现如下图形界面:

关掉图形界面后重新运行f2.m,输入k=:1,n=:3

出现如下界面:

再次关掉图形界面,

输入k=:1,n=:6 后出现:此时图形基本吻合。

类推,

输入k=2, n=3后出现:

k =2, n =11,出现如下图形:

k =2,n =15,这时出现:

k =2,n =19,出现:

当k=2,n=21时,图形如下:

此时基本吻合。

5、实验总结:

通过本次课程设计,我初步掌握了MATLAB运用,加深了对于各种线性插值的理解;培养了独立工作能力和创造力;综合运用专业及基础知识,解决实际数学问题的能力;在本次课程设计中,在老师的精心指导下,收益匪浅。同时对数学的研究有了更深入的认识。

(注:专业文档是经验性极强的领域,无法思考和涵盖全面,素材和资料部分来自网络,供参考。可复制、编制,期待你的好评与关注)

相关文档
最新文档