资源描述:
《4.插值法的程序》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、1.1拉格朗日多项式和基函数的MATLAB程序function[L]=lagran1(X,Y)m=length(X);L=ones(m,m);fork=1:mV=1;fori=1:mifk~=iV=conv(V,poly(X(i)))/(X(k)-X(i));endendL1(k,:)=V;l(k,:)=poly2sym(V)endL=Y*l例1给出节点数据,,,,,,作五次拉格朗日插值多项式和基函数.解1)首先将上述程序保存为M文件;2)然后在MATLAB工作窗口输入程序>>X=[-2.15-1.000.011.
2、022.033.25];Y=[17.037.241.052.0317.0623.05];[L]=lagran1(X,Y)运行后输出五次拉格朗日插值多项式L及基函数ll=[-0.0056*x^5+0.0299*x^4-0.0323*x^3-0.0292*x^2+0.0382*x-0.0004][0.0331*x^5-0.1377*x^4-0.0503*x^3+0.6305*x^2-0.4852*x+0.0048][-0.0693*x^5+0.2184*x^4+0.3961*x^3-1.2116*x^2-0.3166*
3、x+1.0033][0.0687*x^5-0.1469*x^4-0.5398*x^3+0.6528*x^2+0.9673*x-0.0097][-0.0317*x^5+0.0358*x^4+0.2530*x^3-0.0426*x^2-0.2257*x+0.0023][0.0049*x^5+0.0004*x^4-0.0266*x^3+0.0001*x^2+0.0220*x-0.0002]L=1.0954-4.5745*x+3.3960*x^2+2.1076*x^3+0.0648*x^4-0.2169*x^51.2拉格朗
4、日插值及其误差估计的MATLAB程序function[y,R]=lagranzi(X,Y,x,M)n=length(X);m=length(x);fori=1:mz=x(i);s=0.0;fork=1:np=1.0;q1=1.0;c1=1.0;forj=1:nifj~=kp=p*(z-X(j))/(X(k)-X(j));endq1=abs(q1*(z-X(j)));c1=c1*j;ends=p*Y(k)+s;endy(i)=s;endR=M*q1/c1;例2已知,,,用拉格朗日插值及其误差估计的MATLAB主程序求
5、的近似值,并估计其误差.解1)首先将上述程序保存为M文件;2)然后在MATLAB工作窗口输入程序>>x=2*pi/9;M=1;X=[pi/6,pi/4,pi/3];Y=[0.5,0.7071,0.8660];[y,R]=lagranzi(X,Y,x,M)运行后输出插值y及其误差限R为y=R=0.64348.8610e-004.2牛顿插值法的MATLAB程序function[y,R,A,C,L]=newdscg(X,Y,x,M)n=length(X);m=length(x);fort=1:mz=x(t);A=zero
6、s(n,n);A(:,1)=Y';s=0.0;p=1.0;q1=1.0;c1=1.0;forj=2:nfori=j:nA(i,j)=(A(i,j-1)-A(i-1,j-1))/(X(i)-X(i-j+1));endq1=abs(q1*(z-X(j-1)));c1=c1*j;endC=A(n,n);q1=abs(q1*(z-X(n)));fork=(n-1):-1:1C=conv(C,poly(X(k)));d=length(C);C(d)=C(d)+A(k,k);endy(k)=polyval(C,z);endR=
7、M*q1/c1;L(k,:)=poly2sym(C);例3给出节点数据,,,,作三阶牛顿插值多项式,计算,并估计其误差.解1).首先将名为newdscg.m的程序保存为M文件;2).然后在MATLAB工作窗口输入程序>>symsM,X=[-4,0,1,2];Y=[27,1,2,17];x=-2.345;[y,R,P]=newdscg(X,Y,x,M)运行后输出插值y及其误差限公式R,三阶牛顿插值多项式Py=22.3211R=1323077530165133/562949953421312*M(即R=2.3503*M
8、)P=11/12*x^3+17/4*x^2-25/6*x+13分段线性插值的MATLAB程序functions=xxczhjt1(x0,y0,xi,x,y)s=interp1(x0,y0,xi);Sn=interp1(x0,y0,x0);plot(x0,y0,'o',x0,Sn,'-',xi,s,'*',x,y,'-.')legend('节点(xi,yi)'