如果对插值函数, 不仅要求它在节点处与函数同值,而且要求它与函数有相同的一阶, 二阶甚至更高阶的导数值, 这就是Hermite插值问题。本节主要讨论在节点处插值函数与函数的值及一阶导数值均相等的Hermite插值。
1、推导过程
(灵魂画手我弟弟)
实例——两个节点的三次多项式:
所以,两个节点的三次Hermite插值多项式为:
2、误差估计:
与Largrange插值的误差估计相类似,可导出Hermite插值的误差估计。
定理: 设为区间上的互异节点,为的过这组节点的次Hermite插值多项式。如果在上次连续可导,则对任意,插值余项为
证明思路同前面的插值误差估计。
可令辅助函数为
3、唯一性
定理: 设为区间上的互异节点, 则满足插值条件式的次Hermite多项式是唯一的。
证明:假设存在另一个,则相减的函数的余项,2n+2次导一定为零,余项为0故相等。
故,至多
4、分段三次Hermite插值
当节点较多时,为避免多项式次数过高而引起非节点处的偏离过大,仍采用分段插值的方法。
若把节点两两分段,在每一小段上作三次Hermite插值,就得到一个分段三次Hermite插值函数。由前面的推导可直接写出分段三次Hermite插值函数的分段表达式。
误差估计:
分段三次Hermite插值函数是插值区间上的光滑函数,有一阶连续导数,它与函数在节点处密合程度较好。
5、Hermite插值的一般形式
Hermite插值问题的一般形式是:已知函数
计算这种插值多项式可以采用基函数的方法重新推导一遍。
①与前面的讨论类似,可以证明满足条件Hermite插值多项式是存在唯一的。
定理: 设为区间上的互异节点,为的Hermite插值多项式。若则对有
证明:同样的思路,令辅助函数为
罗尔定理得
上式得
继续往上用罗尔即可,思路同前面
②降阶法求Hermite插值多项式
设
已经满足
于是由导数值插值条件,有
由此确定
许多实际工程技术中一般对精度要求非常高
1、三次样条函数的力学背景
在工程和数学应用中常有这么一类数据处理问题:在平面上给定了一组有序的离散点列,要求用一条光滑的曲线把这些点按次序连接起来。工程技术人员为了得到这条光滑的曲线,常常使用一条富有弹性的均匀细木条,依次经过这些点,并用压铁在若干点处压住,然后沿这条细木条画出一条光滑的曲线,并形象地称之为“样条曲线”。
在力学上,如果把细木条看成弹性细梁,压铁看成作用在梁上的集中载荷,“样条曲线”就可模拟为弹性细梁在外加集中载荷作用下的弯曲变形曲线。如果用A表示细梁的刚度系数,M表示弯矩,在建立坐标系后,由于样条是均匀细木条,在两个相邻压铁之间无任何外力,由力学知识可得
即“样条曲线”为分段多项式,且曲线的函数值、一阶导数、二阶导数都是连续的,而三阶导数是间断的,这就是三次样条差值函数的力学背景。
2、三次样条插值定义
设在区间
如果定义在
(1)在每个小区间
(2)在整个区间
则称
对定义在区间
3、三次样条插值的求法
首先,
约束条件为
3n-3+n+1共4n-2个条件,想要解出来还需要两个约束条件。通常在区间端点各加一个条件,称为边界条件。
边界条件:
①已知两端的一阶导数值
②已知两端的二阶导数值
特殊条件是
③周期边界条件
当
此时边界条件为
此时
求法分为两种:三转角方法和三弯矩方法
①三转角方法(关于一阶导数)
矩阵表示为:
上述方程组称为
若边界条件为
若边界条件为
若边界条件为周期性的边界条件,则有
②三弯矩方法(关于二阶导数)
上一种方法对于边界条件是一阶导数的情况比较简单,但是实际情况中,利用二阶导数
写成矩阵形式:
上述方程组称为
若边界条件为
若边界条件为
若边界条件为周期性的边界条件,则有
4、三次样条插值函数的性质
性质一 极小模性质
设
性质二 最佳逼近性质
设
5、误差估计
设函数
搜了个代码,三弯矩
function []=spline3(X,Y,dY,x0,m)
N=size(X,2);
s0=dY(1); sN=dY(2);
interval=0.025;
disp('x0为插值点')
x0
h=zeros(1,N-1);
for i=1:N-1 h(1,i)=X(i+1)-X(i); end
d(1,1)=6*((Y(1,2)-Y(1,1))/h(1,1)-s0)/h(1,1);
d(N,1)=6*(sN-(Y(1,N)-Y(1,N-1))/h(1,N-1))/h(1,N-1);
for i=2:N-1
d(i,1)=6*((Y(1,i+1)-Y(1,i))/h(1,i)-(Y(1,i)-Y(1,i-1))
/h(1,i-1))/ (h(1,i)+h(1,i-1)); end
mu=zeros(1,N-1); md=zeros(1,N-1);
md(1,N-1)=1; mu(1,1)=1;
for i=1:N-2
u=h(1,i+1)/(h(1,i)+h(1,i+1)); mu(1,i+1)=u;
md(1,i)=1-u; end
p(1,1)=2; q(1,1)=mu(1,1)/2;
for i=2:N-1
p(1,i)=2-md(1,i-1)*q(1,i-1); q(1,i)=mu(1,i)/p(1,i); end
p(1,N)=2-md(1,N-1)*q(1,N-1);
y=zeros(1,N); y(1,1)=d(1)/2;
for i=2:N y(1,i)=(d(i)-md(1,i-1)*y(1,i-1))/p(1,i); end
x=zeros(1,N); x(1,N)=y(1,N);
for i=N-1:-1:1 x(1,i)=y(1,i)-q(1,i)*x(1,i+1); end
fprintf ('M为三对角方程的解n'); M=x;
fprintf ('n');
syms t;
digits (m);
for i=1:N-1
pp(i)=M(i)*(X(i+1)-t)^3/(6*h(i))+M(i+1)*(t-X(i))^3
/(6*h(i))+(Y(i)-M(i)*h(i)^2/6)*(X(i+1)-t)/h(i)+
(Y(i+1)-M(i+1)*h(i)^2/6)*(t-X(i))/h(i);
pp(i)=simplify(pp(i)); coeff=sym2poly(pp(i));
if length(coeff)~=4
tt=coeff(1:3); coeff(1:4)=0; coeff(2:4)=tt; end
if x0>X(i)&x0
6、B-样条函数 这个加星 有空再说
搜了一个大体扫了一眼应该是我一时半会搞不明白。。放着
三次B样条插值和误差分析_人工智能_温故而知新-CSDN博客blog.csdn.net总体上,hermite插值和样条插值也就是,一个要求一阶导数连续,一个要求二阶导数连续