用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
用MATLAB实现拉格朗日插值和分段线性插值.
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)