您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 拉格朗日插值法程序设计
计算方法实验报告第1页拉格朗日插值法程序设计一、实验目的1)掌握常用的插值方法,求函数的近似表达式,解决实际问题。2)明确插值多项式和分段插值多项式的优缺点。3)学会插值方法的程序设计。二、实验设备和实验环境操作系统:WindowsXPProfessional软件:MATLAB7.0或VisualC++6.0三、实验内容:已知实验数据如下表所示,试用拉格朗日插值多项式求5645.0,5635.0,5625.0x的值。ix0.561600.562800.564010.56521iy0.827410.826590.825770.82495四、算法描述:已知(x),n),L,,)(if(x及yx,,x,xxniin10210为不超过次多项式且满足),,1,0()(niyxLiin易知Ln(x)=l0(x)y0+…+ln(x)yn,其中li(x)均为n次多项式,再由xj(ji)为n次多项式li(x)的n个根知nijjjixxAxl0k)(,其中Ak为待定系数,由1)(0nijjjkixxAxl)(,得到nixxAnijjjk,,1,0,10)(故:nijjjinijjjixxxxxl00)()()(对应每一节点xi(0in),都能求出满足插值条件的n次插值多项式,从而可以求出n+1计算方法实验报告第2页个n次插值多项式l0(x),l1(x),…,ln(x)。进而,根据插值节点x求出插值结果y。五、实验结果与分析(一)实验源程序function[f,f0]=Languages(x,y,x0)%求已知数据点的拉格朗日插值多项式%x:已知数据点x坐标向量%y:已知数据点y坐标向量%x0:插值点x的坐标%f:求得的拉格朗日插值多项式%f0:x0处的插值symst;if(length(x)==length(y))n=length(x);elsedisp('x和y的维数不一样!');return;end%检错f=0.0;fori=1:np=y(i);for(j=1:i-1)p=p*(t-x(j))/(x(i)-x(j));end;for(j=i+1:n)p=p*(t-x(j))/(x(i)-x(j));end;f=f+p;endf0=subs(f,'t',x0)计算方法实验报告第3页(二)实验数据x0.56260.56360.5646MATLAB程序(1)如下:MATLAB程序(2)如下:(二)实验结果分析程序结果:运行结果(1):计算方法实验报告第4页运行结果(2):分析:Lagrange插值公式是一个累加累乘的二重算法,结构紧凑,其各个节点地位对等,形式也很对称,从数学的角度讲,这个公式很漂亮。不过,Lagrange插值公式也有很大的缺点,在实际应用中,如果临时需要增添一个节点,则其所有系数都要重算,这势必照成计算量的浪费。在利用Lagrange插值公式进行高次插值的时候,很容易出现龙格现象,这说明对于某些插值,并不是插值的次数越多,结果越精准。对待问题应该根据情况进行分析,才能合理求出自己需要的结果。
本文标题:拉格朗日插值法程序设计
链接地址:https://www.777doc.com/doc-5465412 .html