- 1、本文档共49页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在MATLAB中编程实现向后牛顿插值法函数为:Newtonback。 功能:求已知数据点的向前牛顿插值法多项式; 调用格式:f= Newtonback (x,y)或 f = Newtonback (x,y,x0)。 其中,x为已知数据点的x 坐标向量; y为已知数据点的y 坐标向量; x0为插值点的x坐标; f为求得的向前牛顿插值法多项式或x0处的插值。 function f = Newtonback(x,y,x0) %求已知数据点的向后差分牛顿插值多项式 %已知数据点的x 坐标向量:x %已知数据点的y 坐标向量:y %为插值点的x坐标:x0 %求得的向前差分牛顿插值多项式或x0处的插值:f syms t; if(length(x) == length(y)) n = length(x); c(1:n) = 0.0; else disp(x和y的维数不相等!); return; end f = y(n); y1 = 0; xx =linspace(x(1),x(n),(x(2)-x(1))); if(xx ~= x) disp(节点之间不是等距的!); return; end for(i=1:n-1) for(j=i+1:n) y1(j) = y(j)-y(j-1); end c(i) = y1(n); l = t; for(k=1:i-1) l = l*(t+k); end; f = f + c(i)*l/factorial(i); simplify(f); y = y1; if(i==n-1) if(nargin == 3) f = subs(f,t,(x0-x(n))/(x(2)-x(1))); else f = collect(f); f = vpa(f, 6); end end end 例4-5 根据下表的数据点求出其差分形式的牛顿插值多项式,并计算当x=1.55时y的值。 解: x=[1 1.2 1.4 1.6 1.8 ]; y=[0.8415 0.9320 0.9854 0.9996 0.9738]; f=Newtonforward(x,y) f = .841500+.108025*t-.169042e-1*t^2-.675000e-3*t^3+.541667e-4*t^4 f=Newtonforward(x,y,1.55) f = 0.9998 f=Newtonback(x,y) f = .973800-.457417e-1*t-.198042e-1*t^2+.191667e-3*t^3+.541667e-4*t^4 f=Newtonback(x,y,1.55) f = 0.9998 x 1 1.2 1.4 1.6 1.8 y 0.8415 0.9320 0.9854 0.9996 0.9738 4.5 Hermite插值 Hermite插值满足在节点上等于给定函数值,而且在节点上的导数值也等于给定的导数值。对于高阶导数的情况, Hermite插值多项式比较复杂,在实际中,常常遇到的是函数值与一阶导数给定的情况。在此情况下,n个节点x1,x2,…,xn的Hermite插值多项式的表达式如下: 其中 , , , 在MATLAB中编程实现Hermite插值法函数为: Hermite。 功能:求已知数据点的Hermite插值法多项式; 调用格式:f= Hermite (x,y,y_1)或 f = Hermite (x,y, y_1,x0)。 其中,x为已知数据点的x 坐标向量; y为已知数据点的y 坐标向量; y_1为已知数据点导数向量; x0为插值点的x坐标; f为求得的Hermite插值法多项式或x0处的插值。 function f = Hermite(x,y,y_1,x0) %求已知数据点的向
文档评论(0)