还剩7页未读,继续阅读
文本内容:
实验名称实验一拉格朗日插值1引言我们在生产生活中常常会遇到这样得问题某个实际问题中,函数尸()在区间[]上存在X a,b且连续,但却很难找到其表达式,只能通过实验和观测得到有限点上得函数表显然,根据这些点得函数值来求其她点得函数值就就是非常困难得有些情况虽然可以写出表达式,但结构复杂,使用不方便所以我们总就就是希望根据已有得数据点(或函数表)来构造某个简单函数()作为)得近似值插P x*x值法就就是解决此类问题得一种比较古老得、但却很常用得方法她不仅直接广泛地应用于生产实际和科学研究中,而且也就就是进一步学习数值计算方法得基础2实验目得和要求运用编写三个、文件,定义三种插值函数,要求一次性输入整张函数表,并利用计算机Matlab m选择在插值计算中所需得节点分别通过分段线性插值、分段二次插值和全区间上拉格朗日插值计算(、f0)尸(、)尸(、)得近似值已知函数表如下15,031,
047、、、、、、X
0001019503040105、、、、、fX
0398940396950.391038138036812035206423算法原理与流程图()原理1设函数v二在插值区间[]上连续,且在个不同得插值节点,,…,上分别a,b n+1aW x x1XnWb取值,”,…,目得就就是要在一个性质优良、便于计算得插值函数类
①中,求一y yno简单函数()满足插值条件尸((,),而在其她点于上,作为尸()近似f x,xj=yi i=0,1,…n xXi xif zx01|zxOn f p r i n t f*Er r or!x%di s out o f range!\n,i;break;end、作图比较3上图为三种方法得插值曲线,其中取至、步长为、由图可得,三种曲线非常接近,x0I05,0001,这说明我们用拉格朗日插值计算所给点函数值得近似值时,引起得误差还就就是比较小得参考文献易大义,沈云宝,李有法、计算方法(第版),浙江大学出版社、、、
[1]2p29-53张琨高思超毕靖编著从入门到精通电子工业出版社
[2]MATLAB2O10值求插值函数得方法称为插值法在本实验中,采用拉格朗日插值法P(x)
①分段低次插值当给定了个点上得函数值Vo,丫后,若要计算于处函数值fn+1X0Xi---X n1,…,y nX Xi(X)得近似值,可先选取两个节点与然后在小区间上作线性插值,即得Xi-1i-1,Xi],[Xi-1,x i]X—X X—X y七-一七七一七-“X)”(X)=%———+%11这种分段低次插值叫分段线性插值,又称折线插值类似地,我们可以选取距离最近得三个节点与然后进行二次插值,即得X XI,X]x,i+1fl方力fx^P x=2k=i-\J=/-1这种分段低次插值叫分段二次插值,又称分段抛物线插值
②全区间上拉格朗日插值对节点中任一点作一次多项式使她在该点上得x i(i=0,1,…,n)Xk(OWkWn),n Ik(x),取值为在其余点上取值为零对应于每一节点1,x(=0,1,…,k-1,k+1,…,n)xMk=0,都能写出一个满足此条件得多项式,这样写出了个多项式1,n),n+1l(x),IXX),-,I0其中MX),演)-为)…演一-凡)4(x)=4(x-(X(X-1)(X-a+1)…•(X;由条件可得4
(4)=I于就就是我们可以得出如下得拉格朗日次插值多项式对于全区间上得插值,取函数表得长度n n几]⑴+鹏⑺+…PX=分段线性插值分段二次插值全区间拉格朗日插值流程图24程序输代入码尤及片(注j,释2,…M及x、分段线性插值1%分段线性插值f uncti o n y=p iece_I i near xO,yO,x为已知点,为待求点%xO,yO xn=l eng t hx0;p=length y0;m=lengt hx;p=p*x・分xo别i/为xk・xoi长度%n,p,m xO,yO,x i f n~=pS=S+y k*p0k〃+1fp r i ntfEr ro r!PI ease inpu ta g a in!\n;和长度不等时,报错%xO yOelse;f o r i=1:m z=xi、s um=00;I=0;%给赋初值,根据得值确定I xIif z x01|zxO n;fpr intfEr ror!x%d i sou t of r an ge!\n,i b r eak;end%当插值点超出范围时,报错fo rj=2:nif zx0jl=j;end二if I〜0br eak;endend%一旦有非零值,则终止循环,选出合适得I Ifor k=I-1:Ia=10;for s=l-1:Ii fs~=ka=a*z-xO s/xO k-xOs;enden dsum=s um+y0k*a;end;y i=s um,、、、f printfy%d=%f\nx1=%3f y1=%,5f,x2=%3f y2=%5f\n\n\i,yi,xOl-1,yOl-1,xOl,yOI;%输出插值结果和所需节点e ndendend、分段二次插值2%分段二次插值funct iony=p iece_square xO,y0,x为已知点,为待求点%x0,yO xn=le n gthx0;p=I engthy0;m=lengt hx;分别为长度%n,p,m xO,yO,x二if n〜pfpri ntfError!PI eas e i nput a gain!\n;和长度不等时,报错%xO y0e Isefo ri=1:mz=x i;s um=00;I=0;%给赋初值,根据得值确定I xI ifzxO1I zx0n fprintfError!x%d iso utof range!\n,i;br eak;end%当插值点超出范围时,报错for j=1:n-2p=
0.5*x0j+xOj+1;ifzpI=J;e ndi f I〜=0brea k;end%一旦有非零值,则终止循环,选出合适得I IendifI=0I=n-1;end%输入正确时,若还等于零,二I In7for k=I-1:1+1a=10;for s=I-1:1+1a=a*z-xO s/xO k—xO s;end end;s um=sum+y0k*a endyi=sum;,、、千、、、fpr in tfy%d=%f\nx1=%.3f y1=%5f\n x2=%3y2=%5f\n x3=%3f y3=%%输出插值结果与所需节点5f\n\n\i,y i,x0l-1,yO l-1,x0l,yOI,xO1+1,yO1+1;e ndendend、拉格朗日全区间插值3%拉格朗日全区间插值f un ction y=l agra n gexO,yO,x为已知点,为待求点%xO,yO xn=le ngth xO;p=I ength yO;m=l ength x;分别为长度%n,p,m xO,y0,xi f n=p1;fpr intfError!P I ease inputagainlXn和长度不等时,报错%xO yOeI sefori=1:m二⑴;zx、s=00;ifzx01|zxOn1;fpr in tfError!x%di sout ofrang e!\n,i;breakend%当插值点超出范围时,报错fork=1:nP=10;/二for j=1:n if kp=p*z—xO J/x0k-x0j;enden ds=p*y0k+s;endyi=s;千\fpr intfCy%d=%5n,i,y i;%输出插值结果en dendend5算例分析、测试示例1;»x=
[1234];»y=
[234]y2=I agr a nge x,y,xO Error!PI ease inpu tagain!;x=
[1234];»y=
[2345]、、;»xO=
[0555]»y2=lagrangex,y,x0Error!x1i so utofra nge!;x=
[1234]»y=
[2345];、、»xO=
[1555];»y2=la grangex,y,x0
二、y125OOOOError!x2isout ofra nge!二y
2、
25000、首先输入函数变及待求点
2、、、、、、;x=
[0001019503040105]、、、、、、;、、、»y=
[039894039695039142038138036812035206]»xO=[0150310;47]注保证在工作目录中有三个、文件m atlab m、分段线性插值3y0=p iece_l inea rx,y,xO、y1=
0394039、、x1=O100y1=
0.39695,x2=
0.195y2=
039142、y2=
0380067、、、、x1=0300y1=038138,x2=0401y2=
036812、y3=
0356927、x1=
0.401y1=
0.36812,x2=
0.500y2=O35206y0=、、、
03941038710356926666666667、分段二次插值、4»y1=p ie ce squa r ex,y,xO y1=
0394460、、x1=01OO y1=O
39695、、x2=0195y2=O
39142、、x3=0300y3=
038138、y2=
0380225、x1=
0.195y1=
039142、、、⑶、x2=0300y2=
0.38138x3=O401y3=036812y=
0357247、、x1=0300y1=
038138、、x2=0401y2=
036812、、x3=0500y3=O35206二y
1、、、
0394460319548872038730357246844884488、全区间拉格朗日插值5y2=l agrangex,y,xO、y1=039447⑵
二、y
038022、y3=035722二y
2、、、03944728038780610383203572221123394856讨论与结论、使用函数计算下列四种方法计算上述问题所运行得时间1tic,toep iece_I in earxO,p ie ce_squ arexFunct io nIagrangex0,yO,xyO,x O,yO,x运行时间、、、s000027200003750000272从三次实验结果可知,三个程序得运行时间都很短、程序优化2由分段线性插值和分段二次插值得原理,取值在函数表范围内时,插值结果有意义,而当取值在xx函数表范围以外,利用分段线性插值公式仍可以进行运算并得到一个值,但其结果不准确;分段二次插值则无法找到三个合适得点以求插值,不予以输出结果;若输入得函数表与得长度不相等,则无法x y插值所以加入以下判断以提高插值得准确性;n=I engthxO;p=I engthy0;m=Iength xifn~=pr;fprint fE rror!Plea sein putagain!\n’。
个人认证
优秀文档
获得点赞 0