实验四用MATLAB实现拉格朗日插值、分段线性插值
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四用MATLAB实现拉格朗日插值、分段线性插值
一、实验目的:
1)学会使用MATLAB软件;
2)会使用MATLAB软件进行拉格朗日插值算法和分段线性差值算法;
二、实验内容:
1用MATLAB实现y二l./(x.“2+l); (-l<=x<=l)的拉格朗日插值、分段线性
2.选择以下函数,在n个节点上分别用分段线性和三次样条插值的方法,计算m个插值点的
函数值,通过数值和图形的输岀,将插值结果与精确值进行比较,适当增加n,再作比较,由此作初步分析:
(1).y=sinx;( 0WxW2 几)
(2).y=(l-x A2) (-lWxWl)
三、实验方法与步骤:
问题一用拉格朗日插值法
1)泄义函数:y二l./(x."2+l);将苴保存在f.m文件中,程序如下:
function y = fl(x)
y 二l./(x. ”2+1);
2)泄义拉格朗日插值函数:将其保存lagrange, m文件中,具体实现程序编程如下:function y = lagrange(xO, yO, x)
m = length(x) ; /区间长度/
n = length(xO);
for i = l:n
l(i) = 1;
end
for i = l:m
for j = l:n
for k = l:n
if j == k
continue;
end
l(j) = ( x(i) -xO(k))/( xO(j) - xO(k) )*l(j);
end
end
end
y = 0;
for i = l:n
y = yO(i) * l(i) + y;
end
3)建立测试程序,保存在text.m文件中,实现画图:
X二一1:0. 001:1;
y = l./(x. *2+1);
p二polyfit (x, y, n);
py=vpa(poly2sym(p), 10)
plot_x=-5:0. 001:5;
fl二polyval(p, plot_x);
figure
plot (x, y, i' , plot_x, fl)
1.2
二分段线性插值:
建立div_linear. m文件。具体编程如下
/*分段线性插值函数:div_linear. m文件*/
function y 二div_linear(xO, y0» x, n)
%for j 二1:length(x)
for i = 1:n-l
if (x >= xO(i)) && (x <= xO(i+D)
y = (x - xO(i+l))/(xO(i) - xO(i+l))*yO(i) + ( x - xO(i))/(xO(i+l) xO(i))*yO(i+l);
else
continue;
end
end
%end
测试程序(text2. m):
xO = linspace ( -5, 5, 50);
y0= l./(x0. 4+1);
y=interpl(xO, yO, xO,' 1inear)
plot (xO, yO, xO, y,' p‘);
2)运行测试程序
问题二:(1)・分段线性插值Matlab命令如下:
x=linspace(0 z 2*pi,100);
y=sin(x);
xl=linspaae(0,2*pi,5);
yl=sin(xl);
plot(x z y z xl,yl z xl,yl,1o'z1LineWidth',1・5), gtext(•n=41) 图形如下:
⑵•三次样条插值选取7个基点计算插值Matlab命令如下xO=linspace(-1,1,7);
yO=(l-x0・A2);
x=linspace(-1r1r100); y=interpl(xO r yO f x r'spline 1); xl=linspace(-1,1,100);
yl=(l-xl•人2); plot(xl,yl^k* ,xO z yO z- + \x f y f »r»);
图形如下:
5、实验总结: 通过本次课程设计,我初步掌握了MATLAB运用,加深了对于各种线性插值的理解:培养了独立工作能力和创造力:综合运用专业及基础知识,解决实际数学问题的能力;在本次课程设计中,在老师的精心指导下,收益匪浅。同时对数学的研究有了更深入的认识。