《hermite插值以及两种MATLAB程序》由会员分享,可在线阅读,更多相关《hermite插值以及两种MATLAB程序(4页珍藏版)》请在人人文库网上搜索。
1、给定矢量P0, P1, R0, R1,称满足下列条件的参数三次多项式曲线Pt,t0,1为Hermite曲线:Hx0=y0,Hx1=y1,Hx0=m0,Hx1=m1,即Hermite曲线两个端点为P0, P1,在两端点的切矢量分别R0, R1。记几何矩阵和基矩阵分别为GH, MH, GH, MH是未知的.取GH=P0, P1, R0, R1,则只要MH就可以了。一般的曲线经过多项式分解, 得到参数多项式曲线的矩阵表示:Pt=GMT将(1)式代入(2)得到:GHMHTH|t=0=GHMH1,0,0,0T=P0,GHMHTH|t=1=GHMH1,1,1,1T=P1,GHMHTH|t=0=GHMH0,。
2、1,0,0T=R0,GHMHTH|t=0=GHMH0,1,2,3T=R1,将上面四个式子合并如下形式:GHMH20103=P0, P1, R0, R1=GH上面方程的解不唯一,不妨取MH=20103-1=1000-320-3-21-2100-11从而得到三次Hermite曲线的方程:Pt=GHMHT其中MHT确定了一组Hermite基函数G0t,G1t,H0t,H1t,即MHT=1000-320-3-21-2100-111tt2t3=1-3t2+2t33t2-2t3t-2t2+t3-t2+t3附:MATLAB程序function yy=hermite(x,y,dy,xx) % 输入X左右两个端。
3、点的X轴坐标Y左右两个端点的Y轴坐标dy左右两个端点的切矢xx中间插值的点X轴坐标%输出yy中间插值的点Y轴坐标function yy=hermite(x,y,dy,xx) k=length(xx);z=zeros(1,k);for i=1:k;s=0;xaix=xx(i);a=1-3.*(xaix)2+2.*(xaix)3;b=2.*(xaix)2-2.*(xaix)3;c=xaix-2.*(xaix)2+(xaix)3;d=-2.*(xaix)2+(xaix)3;s=y(1)*a+y(2)*b+dy(1)*c+dy(2)*d;z(i)=s;endyy=z;function yy=hermi。
4、te(x,y,dy,xx) % 输入X左右两个端点的X轴坐标Y左右两个端点的Y轴坐标dy左右两个端点的切矢xx中间插值的点X轴坐标%输出yy中间插值的点Y轴坐标m=length(x);n=length(y);l=length(dy);k=length(xx); if m=n,error(向量长度不一样);end; if n=l,error(向量长度不一样);end; z=zeros(1,k); for i=1:k; s=0; a=xx(i)-x(1);b=x(1)-x(2);c=xx(i)-x(2);a1=(1-2*a/b)*(c/b)2;aa=xx(i)-x(2);a2=(1+2*aa/b)*(a/b)2; b1=a*(c/b)2; b2=c*(a/b)2; s=y(1)*a1+y(2)*a2+dy(1)*b1+dy(2)*b2; z(i)=s; endyy=z。