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插值函数的构造方法,先设定函数形式,再利用插值条件⒀求出插值函数.
在插值的时候不仅考虑函数值信息,也同时考虑导数的信息,一般来说,我们假设插值点为
歼陪如
也就是说,一直从 阶导到 阶导,那么实际上就是一共 个插值点,所以插值得到 次多项式。
并且,按照之前所说的误差公式,其误差为
类比lagrange和Newton,同样有两种类似的构造方乱粗法。
下面举例说明
可以看出,这里是三个点构造一个二次插值函数,那么下面说明两种构造方法。
(1)构造基函数
接下来利用基函数在各个点取值(1或0)的情况,进行待定系数法的求解。
(2)类Newton插值
总结:Hermite插值在处理上其实就是把导数情况也看作新的插值点,那么构造和误差公式氏启等都能和之前的普通插值类推过来。下一篇笔记写一下样条插值。
function f = Hermite(x,y,y_1,x0)syms t
f = 0.0
if(length(x) == length(y))
if(length(y) == length(y_1))
n = length(x)
else
disp('y和y的导数的维数不相等差态!')
return
end
else
disp('x和y的维数不相等!')
return
end
for i=1:n
h = 1.0
a = 0.0
for j=1:n
if( j ~= i)
h = h*(t-x(j))^2/((x(i)-x(j))^2)
a = a + 1/(x(i)-x(j))
end
end
f = 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)
else
f = vpa(f,6)
end
end
end
自虚笑源己升铅分析吧
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)