《复旦大学 Matlab课件 (2).ppt》由会员分享,可在线阅读,更多相关《复旦大学 Matlab课件 (2).ppt(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Matlab MathCleve Morler著陈文斌()复旦大学2002多项式和样条 在平面上给定n个点(xk,yk),可以唯一确定一个最多n-1次的多项式通过这些点,这个多项式叫插值多项式插值多项式P(xk)=yk,k=1,2,nLagrange插值形式插值多项式例子 x=0:3;y=-5 6 1 16;disp(x;y)Monomial基Vandermonde矩阵 x=0:3;y=-5 6 1 16;V=vander(x)c=VyVandermonde矩阵是非奇异的,但条件数是非常坏的Polyinterp(Lagrange插值形式)function v=polyinterp(x,y,u)
2、n=length(x);for k=1:n w=ones(size(u);for j=1:k-1 k+1:n w=(u x(j)./(x(k)x(j).*w;end v=v+w*y(k);end-0.500.511.522.533.5-10-50510152025 u=-.25:.01:3.25;v=polyinterp(x,y,u);plot(x,y,o,u,v,-)Polyinterp(符号运算)symx=sym(x)P=polyinterp(x,y,symx)pretty(P)P=simplify(P)P=x3-2*x-5012345676810121416182022Polyinter
3、p(另外的例子)x=1:6;y=16 18 21 17 15 12;u=.75:.05:6.25;v=polyinterp(x,y,u);plot(x,y,o,u,v,-);0123456710121416182022分片线性插值 x=1:6;y=16 18 21 17 15 12;plot(x,y,o,u,v,-);function v,sigma=piecelin(x,y,u)d=diff(y)./diff(x);%First divided difference%Find subinterval indices,x(k)=u=x(j)=j;end%Evaluate interpolant
4、 s=u-x(k);v=y(k)+s.*d(k);分片三次插值 设s=x-xk,h=hkHermite插值(osculatory插值)pchiptx.m splinetx.mpchiptx pchip:piecewise cubic Hermit interpolating polynomial,Matlab中pchip算法基于Fritsch和Carlson1、如果左右导数是相反符号或有0,则dk=02、如果同号且区间长度相等,则是调和平均3、如果同号且区间长度不相等,则是加权调和平均0123456710121416182022三次样条三次样条也是分片三次插值函数。物理上的样条在满足插值限制的
5、前提下,最小化势能。数学上的样条必须满足二次导数连续,且满足插值限制。参考文献:A Practical Guide to Spline,Carl de Boor。他也是Matlab的spline函数和spline工具箱的作者。三次样条二阶导数连续等距“Not-a-knot”在边界上,把两段合成一段,在等距的情况下:这样,可以导致一个线性代数方程组:三次样条然后我们可以计算出各个节点的一阶导数0246810121416182022分片线性插值02468510152025full degree多项式插值0246810121416182022保形状Hermit插值024681012141618202
6、2样条插值分 析 上面的图描述了光滑性和局部单调性(保形状)的一种折衷。分片线性插值:保持单调性的,但光滑性比较差。Full degree多项式插值:无限可微,但不保持形状,特别是在端点的地方。Pchip和spline插值在这两个极端之间。样条比pchip光滑,样条的两阶导数连续,而pchip一阶导数连续。不连续的两阶导数隐含着不连续的曲率。人的眼睛可以检测出图形上曲率的不连续。另一方面,pchip是保形状的,而样条不一定保形状。pchiptx 和splinetx pchiptx和splinetx都是基于分片三次Hermite插值,在每个区间用monomial基:pchiptx.m,splinetx.m请比较一下与matlab中的pchip与spline的区别123456-0.5-0.4-0.3-0.2-0.100.10.20.30.40.5Interpolatation interpgui