HermiteMatlab

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1.导数完全的情况下Hermite插值多项式拟合Matlab程序functionf=Hermite(x,y,y_1,x0)symst;f=0.0;if(length(x)==length(y))if(length(y)==length(y_1))n=length(x);elsedisp('y和y的导数的维数不相等!');return;endelsedisp('x和y的维数不相等!');return;endfori=1:nh=1.0;a=0.0;forj=1:nif(j~=i)h=h*(t-x(j))^2/((x(i)-x(j))^2);a=a+1/(x(i)-x(j));endendf=f+h*((x(i)-t)*(2*a*y(i)-y_1(i))+y(i));if(i==n)if(nargin==4)f=subs(f,'t',x0);elsef=vpa(f,6);endendend2.更具一般性的Hermite插值公式的Matlab程序function[h,yy]=HermiteInt1(x,y,x1,y1,xx)%求Hermite插值.x为插值节点,y为相应的函数值;在节点x1的一阶导数为y1;xx为插值点.%输出Hermite插值函数的表达式h,若输入参数中有插值点xx时,再输出xx相应的插值函数值yy.n=length(x);m=length(x1);symstyy=0;fori=1:n%下面求y(i)前的系数I=0;%下面这个循环是要找出x(i)在数组x1中的位置forj=1:mifx(i)==x(j)I=j;break;endendl1=1;l2=0;forj=1:nifj~=il1=l1*(t-x(j))/(x(i)-x(j));l2=l2+1/(x(i)-x(j));endendforj=1:mifj~=Il1=l1*(t-x1(j))/(x(i)-x1(j));l2=l2+1/(x(i)-x1(j));endendifI==0l2=0;endyy=yy+l1*(-l2*(t-x(i))+1)*y(i);endfori=1:m%下面求y1(i)前的系数l3=1;forj=1:nifx(j)~=x1(i)l3=l3*(t-x(j))/(x1(i)-x(j));endendforj=1:mifx1(j)~=x1(i)l3=l3*(t-x1(j))/(x1(i)-x1(j));endendyy=yy+l3*(t-x1(i))*y1(i);endh=simplify(yy);ifnargin==5yy=eval(subs(h,'xx','t'));end

1 / 3
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功