- 1、本文档共43页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
多项式插值概要1
多项式插值 来源于实际、又广泛用于实际。 多项式插值的主要目的是用一个多项式拟合离散点上的函数值,使得可以用该多项式估计数据点之间的函数值。 可导出数值微分、积分方法,有限差分近似 关注插值多项式的表达式、精度、选点效果。 Lagrange插值 Lagrange插值 方法介绍 对给定的n个插值点 及对应的函数值 ,利用n-1次Lagrange插值多项式,则对插值区间内任意x的函数值y可通过下式求的: MATLAB实现 function y=lagrange(x0,y0,x) ii=1:length(x0); y=zeros(size(x)); for i=ii ij=find(ii~=i); y1=1; for j=1:length(ij), y1=y1.*(x-x0(ij(j))); end y=y+y1*y0(i)/prod(x0(i)-x0(ij)); end 算例:给出f(x)=ln(x)的数值表,用Lagrange计算ln(0.54)的近似值。 x=[0.4:0.1:0.8]; y=[-0.916291,-0.693147,-0.510826,-0.356675,-0.223144]; lagrange(x,y,0.54) ans = -0.6161 (精确解-0.616143) Hermite插值 方法介绍 不少实际问题不但要求在节点上函数值相等,而且要求导数值也相等,甚至要求高阶导数值也相等,满足这一要求的插值多项式就是Hermite插值多项式。下面只讨论函数值与一阶导数值个数相等且已知的情况。 已知n个插值点 及对应的函数值 和一阶导数值 。则对插值区间内任意x的函数值y的Hermite插值公式: MATLAB实现 % hermite.m function y=hermite(x0,y0,y1,x) n=length(x0); m=length(x); for k=1:m yy=0.0; for i=1:n h=1.0; a=0.0; for j=1:n if j~=i h=h*((x(k)-x0(j))/(x0(i)-x0(j)))^2; a=1/(x0(i)-x0(j))+a; end end yy=yy+h*((x0(i)-x(k))*(2*a*y0(i)-y1(i))+y0(i)); end y(k)=yy; end 算例:对给定数据,试构造Hermite多项式求出sin0.34的近似值。 x0=[0.3,0.32,0.35]; y0=[0.29552,0.31457,0.34290]; y1=[0.95534,0.94924,0.93937]; y=hermite(x0,y0,y1,0.34) y = 0.3335 sin(0.34) %与精确值比较 ans = 0.3335 x=[0.3:0.005:0.35];y=hermite(x0,y0,y1,x); plot(x,y) y2=sin(x); hold on plot(x,y2,--r) Runge现象和分段插值 问题的提出:根据区间[a,b]上给出的节点做插值多项式p(x)的近似值,一般总认为p(x)的次数越高则逼近f(x)的精度就越好,但事实并非如此。 反例: 在区间[-5,5]上的各阶导数存在,但在此区间上取n个节点所构成的Lagrange插值多项式在全区间内并非都收敛。 取n=10,用Lagrange插值法进行插值计算。 x=[-5:1:5]; y=1./(1+x.^2); x0=[-5:0.1:5]; y0=lagrange(x,y,x0); y1=1./(1+x0.^2); %绘制图形 plot(x0,y0,--r) %插值曲线 hold on plot(x0,y1,‘-b) %原曲线 为解决Rung问题,引入分段插值。 算法分析:所谓分段插值就是通过插值点用折线或低次曲线连接起来逼近原曲线。 MATLAB实现 可调用内部函数
文档评论(0)