1I a +ax +L +an-x!=élyiuLXx,éa,i-éy,uyn-1e1n-1ua,+a,x,+L +an-x"=y2LX21-e Mié Mi=MMuemMia,ty.tetni!1t"-ia.+a,x,+L +a..VLXn11为了后面求解使用方便,我们据此编写一个Lagrange插值函数命令程序以方便调用function p=lagrange(x,y) %输入数据点生标向量x,y输出插值多项式系数pL=length(x);A=ones(L);β p=[an-1,an-2,L ,ar,a]for j=2:LA(:,j)=A(:,j-1).*x';计算插值多项式在x0处的值:endy0=polyval(p,x0)X-inv(A)*y';for i-1:Lp(i)=X(L-i+1);end
function p=lagrange(x,y) %输入数据点坐标向量x,y输出插值多项式系数p L=length(x); A=ones(L); for j=2:L A(:,j)=A(:,j-1).*x'; end X=inv(A)*y'; for i=1:L p(i)=X(L-i+1); end 为了后面求解使用方便,我们据此编写一个Lagrange插值函 数命令程序以方便调用. 计算插值多项式在x0处的值: y0=polyval(p,x0)
例1已知观测数据如下,求其插值多项式曲线00.20.30.40.50.60.70.80.910.1X-.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.3 11.2yclc:clf:clear:x=0:0. 1:1 ;y=[-. 447 1. 978 3. 28 6. 16 7. 08 7. 34 7. 66 9. 56 9. 48 9. 3 1plot(x,y,'k.','markersize,35)米蛋14axis([0 1 -2 16)12grid;龙格(Runge)现象10hold on8p=lagrange(x, y) ;6t=0:0. 01:1;u=polyval(p, t) ;plot(t, u,'r*')与数据点有明显的偏离。0随着分点的增加,大的起伏波动越明显插值问题中典型的“龙格(Runge)现象00.10.20.30.40.50.60.70.80.91
例1 已知观测数据如下,求其插值多项式曲线. x 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 y -.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.3 11.2 clc;clf;clear; x=0:0.1:1; y=[-.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.3 11.2]; plot(x,y,'k.','markersize',35) axis([0 1 -2 16]) grid; hold on p=lagrange(x,y); t=0:0.01:1; u=polyval(p,t); plot(t,u,'r*') 与数据点有明显的偏离。 随着分点的增加,大的起伏波动越明显, -插值问题中典型的“龙格(Runge)现象 ” 龙格(Runge)现象
1例2对函数在[-5,5]上以1为步长进行划分11 + 20x作Lagrange插值,观察函数曲线与插值曲线的变化clc;clf;clear;x=-5:0. 1:5;龙格现象示意图y=1./(1+20*x .*x) :plot(x,y,'k--','linewidth2)axis([-5 5 -1.2 6])grid;hold onx=-5:5;y=1./(1+20*x .*x) ;p=lagrange(x, y) ;t=-5:0.1:5;高次多项式插值容易发生“龙格现象”,f=polyval(p, t) ;如何避免?plot(t,f,'r-')方法:采用分段低次多项式插值的方法
例2 对函数 ,在[-5,5]上以1为步长进行划分 作Lagrange插值,观察函数曲线与插值曲线的变化. clc;clf;clear; x=-5:0.1:5; y=1./(1+20*x .*x); plot(x,y,'k-','linewidth',2) axis([-5 5 -1.2 6]) grid; hold on x=-5:5; y=1./(1+20*x .*x); p=lagrange(x,y); t=-5:0.1:5; f=polyval(p,t); plot(t,f,'r-') 龙格现象示意图 高次多项式插值容易发生“龙格现象” , 如何避免? 方法:采用分段低次多项式插值的方法
3、分段线性插值(xk+1, fk+l)(k.k)Xx, =bX.....Xa=x.n-分段线性插值的MATLAB命令:y0=interp1(x,y,x0)其中x,y为已知数据点,yo为求得的插值函数在x0处的值
3、分段线性插值 . . 分段线性插值的MATLAB命令: y0=interp1(x,y,x0) 其中x,y为已知数据点,y0为求得的插值函数在x0处的值
校正值校正值刻度值刻度值例3已知某转子流量计在100~1000mL/min流量600100105.3605.8范围内,刻度值与校正200700207.2707.4值的关系如表所示.试300800308.1806.7用线性插值法计算流量计的刻度值为785时,实400900406.9908.0际流量为多少?5001000507.5107.9解:Matlab计算程序如下:X=[100,200, 300,400, 500, 600, 700,800, 900, 1000] ;Y=[105.3,207.2,308.1,406.9,507.5,605.8,707.4,806.7, 908. 0, 107. 9] ;Xk=780;这里:X和Y分别表示样本点的刻度值和校正值:Xk和Yk分别表示插值点的刻度值和校正值。Yk=interpl(X, Y, Xk)执行结果:Yk =786.8400
例3已知某转子流量计在 100~1000mL/min流量 范围内,刻度值与校正 值的关系如表所示.试 用线性插值法计算流量 计的刻度值为785时,实 际流量为多少? 刻度值 校正值 刻度值 校正值 100 105.3 600 605.8 200 207.2 700 707.4 300 308.1 800 806.7 400 406.9 900 908.0 500 507.5 1000 107.9 解:Matlab计算程序如下: X=[100,200,300,400,500,600,700,800,900,1000]; Y=[105.3,207.2,308.1,406.9,507.5,605.8,707.4,806.7,9 08.0,107.9]; Xk=780; Yk=interp1(X,Y,Xk) 执行结果:Yk = 786.8400 这里:X和Y分别表示样本点的刻度值和校正值; Xk和Yk分别表示插值点的刻度值和校正值