您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 汽车理论 > hermite插值以及两种MATLAB程序
给定矢量P0,P1,R0,R1,称满足下列条件的参数三次多项式曲线P(t),t∈[0,1]为Hermite曲线:H(x0)=y0,H(x1)=y1,H′(x0)=m0,H′(x1)=m1,即Hermite曲线两个端点为P0,P1,在两端点的切矢量分别R0,R1。记几何矩阵和基矩阵分别为GH,MH,GH,MH是未知的.取GH=[P0,P1,R0,R1],则只要MH就可以了。一般的曲线经过多项式分解,得到参数多项式曲线的矩阵表示:P(t)=G∙M∙T将(1)式代入(2)得到:GH∙MH∙TH|t=0=GH∙MH∙(1,0,0,0)T=P0,GH∙MH∙TH|t=1=GH∙MH∙(1,1,1,1)T=P1,GH∙MH∙TH|t=0=GH∙MH∙(0,1,0,0)T=R0,GH∙MH∙TH|t=0=GH∙MH∙(0,1,2,3)T=R1,将上面四个式子合并如下形式:GH∙MH∙[1001001111020103]=[P0,P1,R0,R1]=GH上面方程的解不唯一,不妨取MH=[1001001111020103]−1=[1000−320−3−21−2100−11]从而得到三次Hermite曲线的方程:P(t)=GH∙MH∙T其中MH∙T确定了一组Hermite基函数G0(t),G1(t),H0(t),H1(t),即MH∙T=[1000−320−3−21−2100−11][1tt2t3]=[1−3t2+2t33t2−2t3t−2t2+t3−t2+t3]附:MATLAB程序functionyy=hermite(x,y,dy,xx)%输入X——左右两个端点的X轴坐标Y——左右两个端点的Y轴坐标dy——左右两个端点的切矢xx——中间插值的点X轴坐标%输出yy——中间插值的点Y轴坐标functionyy=hermite(x,y,dy,xx)k=length(xx);z=zeros(1,k);fori=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;functionyy=hermite(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);ifm~=n,error('向量长度不一样');end;ifn~=l,error('向量长度不一样');end;z=zeros(1,k);fori=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;
本文标题:hermite插值以及两种MATLAB程序
链接地址:https://www.777doc.com/doc-2876271 .html