[]=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"(线性插值)都是保形的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)