hermite插值的matlab代码

hermite插值的matlab代码,第1张

function

[]=piecewise_hermite(x0,y0,y0_)

n=length(x0)

for

k=1:n-1

p=poly(x0(k+1))/(x0(k)-x0(k+1))

q=poly(x0(k))/(x0(k+1)-x0(k))

i=conv(conv(p,p),(1+2*q))*y0(k)

...

+conv(conv(q,q),(1+2*p))*y0(k+1)

...

+conv(conv(p,p),poly(x0(k)))*y0_(k)

...

+conv(conv(q,q),poly(x0(k+1)))*y0_(k+1)

x=x0(k):0.01:x0(k+1)

fval=polyval(i,x)

plot(x,fval,'r')

hold

on

y=1./亮侍悔(1+x.^2)

plot(x,y,'g')

fprintf('在区间[%f,%f]内\n',x0(k),x0(k+1))

s=poly2sym(i)

vpa(s,6)

end

end

按谈裂上面语敬正句试试

Hermite插值是利用未知函数f(x)在插值节点上的函数值及导数值来构造插值多项式的,其提法为:给定n+1个互异的节点x0,x1,……,xn上的函数值和导数值求一个2n+1次多项式H2n+1(x)满足插值条件

H2n+1(xk)=yk

H'2n+1(xk)=y'k k=0,1,2,……,n ⒀

如上求出前歼的H2n+1(x)称为2n+1次Hermite插值函键源数稿悔态,它与被插函数一般有更好的密合度.

★基本思想

利用Lagrange插值函数的构造方法,先设定函数形式,再利用插值条件⒀求出插值函数.

分段线性插值就是满足shape-preserving的。Matlab里有这样的毁袭册命令,直接调用,非常简单,自己去查。

而所有高于二次的禅顷多项式纤宏插值方法,都会产生虚假的波动,不具备保形效果。

在要求shape-preserving的同时,如果对插值精度没有要求,那么分段线性插值就非常好了,其缺陷仅在于插值曲线连续但不光滑(即导数不连续)。

Matlab中的一维插值函数为yi=(x,y,xi,method),其中method选取"nearest"(临近点插值)或"linear"(线性插值)都是保形的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12301556.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存