收藏 分销(赏)

实验一---函数插值方法报告.doc

上传人:天**** 文档编号:4681938 上传时间:2024-10-09 格式:DOC 页数:11 大小:157.01KB
下载 相关 举报
实验一---函数插值方法报告.doc_第1页
第1页 / 共11页
实验一---函数插值方法报告.doc_第2页
第2页 / 共11页
点击查看更多>>
资源描述
实验一 函数插值方法报告 一、问题提出 对于给定的一元函数的n+1个节点值。试用Lagrange公式求其插值多项式或分段二次Lagrange插值多项式。 数据如下: (1) 0.4 0.55 0.65 0.80 0.95 1.05 0.41075 0.57815 0.69675 0.90 1.00 1.25382 求五次Lagrange多项式,和分段三次插值多项式,计算, 的值。(提示:结果为, ) (2) 1 2 3 4 5 6 7 0.368 0.135 0.050 0.018 0.007 0.002 0.001 试构造Lagrange多项式,计算的,值。(提示:结果为, ) 二、要求 1、 利用Lagrange插值公式 编写出插值多项式程序; 2、 给出插值多项式或分段三次插值多项式的表达式; 3、 根据节点选取原则,对问题(2)用三点插值或二点插值,其结果如何; 4、 对此插值问题用Newton插值多项式其结果如何。Newton插值多项式如下: 其中: 三、目的和意义 1、 学会常用的插值方法,求函数的近似表达式,以解决其它实际问题; 2、 明确插值多项式和分段插值多项式各自的优缺点; 3、 熟悉插值方法的程序编制; 4、 如果绘出插值函数的曲线,观察其光滑性。 四、实验学时:2学时 五、实验步骤: 1.进入C或matlab开发环境; 2.根据实验内容和要求编写程序; 3.调试程序; 4.运行程序; 5.撰写报告,讨论分析实验结果. 解: 一、编写插值函数结构程序 Lagrange插值多项式M文件:lagrange1.m function [A1,LN,L1,B1]=lagrange1(X,Y) m=length(X); LN=ones(m,m); for k=1: m x1=1; for i=1:m if k~=i x1=conv(x1,poly(X(i)))/(X(k)-X(i)); end end L1(k,:)=x1; B1(k,:)=poly2sym (x1) end A1=Y*L1;LN=Y*B1 分段三次艾尔米特插值多项式的M文件:Hermite3.m function [f,ff] = Hermite3(x,y,y1) syms t; f = 0.0; if(length(x) == length(y)) if(length(y) == length(y1)) n = length(x); else disp('y和y的导数的维数不相等'); return; end else disp('x和y的维数不相等! '); return; end for i=1:n h = 1.0; a = 0.0; for j=1:n if( j ~= i) h = h*(t-x(j))^2/((x(i)-x(j))^2); a = a + 1/(x(i)-x(j)); end end f = f + h*((x(i)-t)*(2*a*y(i)-y1(i))+y(i)); end ff = subs(f,'t'); (1)、求五次Lagrange多项式,和分段三次插值多项式。 在主显示区,输入五次Lagrange多项式程序: >> X=[0.4 0.55 0.65 0.80 0.95 1.05]; >> Y=[0.41075 0.57815 0.69675 0.90 1.00 1.25382]; >> [A1,LN,L1,B1]=lagrange1(X,Y) >> plot(X,A1); >> F=poly2sym(A1) 运行后,输出五次Lagrange多项式的结果: A1 = 121.6264 -422.7503 572.5667 -377.2549 121.9718 -15.0845 F = (2139673480305281*x^5)/17592186044416 - (1859275536318005*x^4)/4398046511104 + (9836621836743*x^3)/17179869184 - (414796119737013*x^2)/1099511627776 + (2145751274873259*x)/17592186044416 - 1061478972867847/70368744177664 拉格朗日插值多项式的图如下: 在主显示区,输入分段三次艾尔米特插值多项式的程序: >> x=[0.4 0.55 0.65 0.80 0.95 1.05]; >> y=[0.41075 0.57815 0.69675 0.90 1.00 1.25382]; >> y1=[2.3440 0.9032 1.4329 0.9903 0.9170 5.1439]; >> [f,ff] = Hermite3(x,y,y1); >> ff 运行后,分段三次艾尔米特插值多项式的输出结果: ff = (6400000000*(t - 4/5)^2*(t - 11/20)^2*(t - 13/20)^2*(t - 19/20)^2*(t - 21/20)^2*((2240245151070481*t)/140737488355328 - 52393133567890089/8796093022208000))/184041 - (16000000*((6348013345609171*t)/140737488355328 - 85523418631741336287/1759218604441600000)*(t - 2/5)^2*(t - 4/5)^2*(t - 11/20)^2*(t - 13/20)^2*(t - 19/20)^2)/169 + (16000000*((4105617466549689*t)/281474976710656 - 5238387122042657959/703687441776640000)*(t - 2/5)^2*(t - 4/5)^2*(t - 13/20)^2*(t - 19/20)^2*(t - 21/20)^2)/9 - (256000000*((35097*t)/10000 - 46347/12500)*(t - 2/5)^2*(t - 11/20)^2*(t - 13/20)^2*(t - 19/20)^2*(t - 21/20)^2)/81 - (400000000*((13147*t)/20000 - 449611/400000)*(t - 2/5)^2*(t - 4/5)^2*(t - 11/20)^2*(t - 19/20)^2*(t - 21/20)^2)/81 - (10000000000*((84913*t)/11000 - 1833347/220000)*(t - 2/5)^2*(t - 4/5)^2*(t - 11/20)^2*(t - 13/20)^2*(t - 21/20)^2)/9801 分段三次艾尔米特插值多项式的图如下: (2)、试构造Lagrange多项式。 结果为, 在主显示区,输入程序: >> X=[1 2 3 4 5 6 7]; >> Y=[0.368 0.135 0.050 0.018 0.007 0.002 0.001]; >> [A1,LN,L1,B1]=lagrange1(X,Y) >> plot(X,A1); >> F=poly2sym(A1) 运行后,输出结果的Lagrange多项式的结果: A1 = 0.0001 -0.0016 0.0186 -0.1175 0.4419 -0.9683 0.9950 F = (4304240283865561*x^6)/73786976294838206464 - (7417128346304051*x^5)/4611686018427387904 + (223*x^4)/12000 - (2821*x^3)/24000 + (994976512675275*x^2)/2251799813685248 - (19367*x)/20000 + 199/200 Lagrange多项式的图如下: 二、计算函数值 计算函数值的主程序:lagrangezhi.m function [y,R]=lagrangezhi(X,Y,x,M) n=length(X); m=length(x); for i=1:m z=x(i);s=0.0; for k=1:n p=1.0; q1=1.0; c1=1.0; for j=1:n if j~=k p=p*(z-X(j))/(X(k)-X(j)); end q1=abs(q1*(z-X(j)));c1=c1*j; end s=p*Y(k)+s; end y(i)=s; end R=M*q1/c1; (1)、计算、 的值。 在主显示区,输入程序: >> x=0.596; M=1; X=[0.4,0.55,0.65,0.80,0.95,1.05]; >> Y=[0.41075,0.57815,0.69675,0.90,1.00,1.25382]; >> [y,R]=lagrangezhi(X,Y,x,M) 运行结果: y = 0.6257 R = 2.2170e-008 在主显示区,输入程序: >> x=0.99; M=1; X=[0.4,0.55,0.65,0.80,0.95,1.05]; >> Y=[0.41075,0.57815,0.69675,0.90,1.00,1.25382]; >> [y,R]=lagrangezhi(X,Y,x,M) 运行结果: y = 1.0542 R = 5.5901e-008 (2)、计算、的值 在主显示区,输入程序: >> x=1.8; M=1; X=[1,2,3,4,5,6,7]; >> Y=[0.368,0.135,0.050,0.018,0.007,0.002,0.001]; >> [y,R]=lagrangezhi(X,Y,x,M) 运行结果: y = 0.1648 R = 0.0059 在主显示区,输入程序: >> x=6.15; M=1; X=[1,2,3,4,5,6,7]; >> Y=[0.368,0.135,0.050,0.018,0.007,0.002,0.001]; >> [y,R]=lagrangezhi(X,Y,x,M) 运行结果: y = 0.0013 R = 0.0042 三、Newton插值多项式 Newton插值多项式主程序M文件:Newton.m function [A,C,L,wcgs,Cw]= Newton(X,Y) n=length(X); A=zeros(n,n); A(:,1)=Y'; s=0.0; p=1.0; q=1.0; c1=1.0; for j=2:n for i=j:n A(i,j)=(A(i,j-1)- A(i-1,j-1))/(X(i)-X(i-j+1)); end b=poly(X(j-1));q1=conv(q,b); c1=c1*j; q=q1; end C=A(n,n); b=poly(X(n)); q1=conv(q1,b); for k=(n-1):-1:1 C=conv(C,poly(X(k))); d=length(C); C(d)=C(d)+A(k,k); end L(k,:)=poly2sym(C); Q=poly2sym(q1); syms M wcgs=M*Q/c1; Cw=q1/c1; 在主显示区,输入的程序: >> x=[0.4 0.55 0.65 0.80 0.95 1.05]; >> y=[0.41075 0.57815 0.69675 0.90 1.00 1.25382]; >> [A,C,L,wcgs,Cw]= Newton(x,y) >> syms x; >> ezplot(L,[0 1.1]); 运行结果如下,得到 A = 0.4108 0 0 0 0 0 0.5782 1.1160 0 0 0 0 0.6967 1.1860 0.2800 0 0 0 0.9000 1.3550 0.6760 0.9900 0 0 1.0000 0.6667 -2.2944 -7.4261 -15.3020 0 1.2538 2.5382 7.4861 24.4514 63.7551 121.6264 C = 121.6264 -422.7503 572.5667 -377.2549 121.9718 -15.0845 L = (8558693921221117*x^5)/70368744177664 - (3718551072636019*x^4)/8796093022208 + (5036350380412441*x^3)/8796093022208 - (3318368957896111*x^2)/8796093022208 + (536437818718315*x)/4398046511104 - 8491831782942691/562949953421312 wcgs = (M*(x^6 - (22*x^5)/5 + (1583*x^4)/200 - (3721*x^3)/500 + (542206127247039*x^2)/140737488355328 - (4682696525551953*x)/4503599627370496 + 4111390143022055/36028797018963968))/720 Cw = 0.0014 -0.0061 0.0110 -0.0103 0.0054 -0.0014 0.0002 牛顿插值多项式的图如下: 在主显示区,输入的程序: >> x=[1 2 3 4 5 6 7]; >> y=[0.368 0.135 0.050 0.018 0.007 0.002 0.001]; >> [A,C,L,wcgs,Cw]= Newton(x,y) >> syms x; >> ezplot(L,[0 8]); 运行结果如下,得到: A = 0.3680 0 0 0 0 0 0 0.1350 -0.2330 0 0 0 0 0 0.0500 -0.0850 0.0740 0 0 0 0 0.0180 -0.0320 0.0265 -0.0158 0 0 0 0.0070 -0.0110 0.0105 -0.0053 0.0026 0 0 0.0020 -0.0050 0.0030 -0.0025 0.0007 -0.0004 0 0.0010 -0.0010 0.0020 -0.0003 0.0005 -0.0000 0.0001 C = 0.0001 -0.0016 0.0186 -0.1175 0.4419 -0.9683 0.9950 L = (8608480567731121*x^6)/147573952589676412928 - (7417128346304047*x^5)/4611686018427387904 + (223*x^4)/12000 - (2821*x^3)/24000 + (7959812101402191*x^2)/18014398509481984 - (19367*x)/20000 + 199/200 wcgs = (M*(x^7 - 28*x^6 + 322*x^5 - 1960*x^4 + 6769*x^3 - 13132*x^2 + 13068*x - 5040))/5040 Cw = 0.0002 -0.0056 0.0639 -0.3889 1.3431 -2.6056 2.5929 -1.0000 牛顿插值多项式的图如下 四、结果讨论和分析 通过上机实验,我对主要函数常见的插值方法有了更深的认识。在编辑拉格朗日插值、牛顿插值以及分段插值MATLAB程序过程中,深入了解了它们各自的算法,为我以后在工程中应用插值函数奠定了基础。 根据得出的数据知道,与拉格朗日插值相比牛顿插值的计算量要小,程序设计方便,并且牛顿插值曲线相对要光滑些。分段三次埃尔米特插值与分段低次插值函数都有一致收敛性但是低次插值要求给出节点上的导数值,其光滑性较差,改进这种插值以克服其缺点要用三次样条插值。三次样条插值具有良好的收敛性和稳定性,又有二阶光滑度。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服