MATLAB实现 hermite m function y-hermite(X0. o. L x) y(x)=2h[x-x)(2a, y-y)+y J n=length(x0): m=length(x) X-x for k-l: m yy=0.0 其中=);a=∑ for i=l: n h=1. 0: a=0.0 X-x for i=l:n if h=h*((x(k)-XO()/(0(1)-XOO)2 a=1/(x0(1)-xO(j)+a; end er yy=y+h*(XO(1)-x(k)*(2*a*y0(-y1(j)+y0() end y(k=yy; end
• 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 ' 1 2 1 1 ( ) [( )(2 ) ] 1 ( ) ; n i i i i i i i n n j i i j j i j i j j i j i y x h x x a y y y x x h a x x x x = = = = − − + − = = − − 其中
算例:对给定数据,试构造 Hermite多项式求出 sin0.34的近似值 >>x0=0.3,0.32,0.35] >>y0=0.295520.31457,0.342901 yl=[0.95534,0.949240.93937] y=hermite(x0, y0, y1, 0. 34) y 0.3335 >>sin(0.34) %与精确值比较 ans 0.3335
• 算例:对给定数据,试构造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(xO,y02y1,x) plot(x,y) > y2=Sin(x); hold on >> plot(x, y2, -r,) 0.34s 0.34 0.s 0.315 0.3 0.D5 0.295 030.5050.310.3150.20.3250.30.3350.340.3450.35
>> 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')