拉格朗日插值
有数据
(
x
0
,
y
0
)
,
(
x
1
,
y
1
)
,
.
.
.
.
,
(
x
n
,
y
n
)
(x_0, y_0),(x_1,y_1),....,(x_n,y_n)
(x0,y0),(x1,y1),....,(xn,yn)
可以构造n+1个基函数
b
i
(
x
)
=
y
i
(
x
−
x
0
)
(
x
−
x
1
)
.
.
.
(
x
−
x
i
−
1
)
(
x
−
x
i
+
1
)
.
.
.
(
x
−
x
n
)
(
x
i
−
x
0
)
(
x
i
−
x
1
)
.
.
.
(
x
i
−
x
i
−
1
)
(
x
i
−
x
i
+
1
)
.
.
.
(
x
i
−
x
n
)
b_i(x)=y_i\frac{(x-x_0)(x-x_1)...(x-x_{i-1})(x-x_{i+1})...(x-x_n)}{(x_i-x_0)(x_i-x_1)...(x_i-x_{i-1})(x_i-x_{i+1})...(x_i-x_n)}
bi(x)=yi(xi−x0)(xi−x1)...(xi−xi−1)(xi−xi+1)...(xi−xn)(x−x0)(x−x1)...(x−xi−1)(x−xi+1)...(x−xn)
他会有
b
i
(
x
j
)
b_i(x_j)
bi(xj),当i=j时,取值
y
i
y_i
yi,否则全为0
把这些函数加起来就是拉格朗日插值
P
n
(
x
)
P_n(x)
Pn(x)
它可以表述成
P
n
(
x
)
=
∑
y
i
l
i
(
x
)
P_n(x)=\sum y_il_i(x)
Pn(x)=∑yili(x)
埃特金逐次线性插值
每次用两个点计算一次线性插值函数,然后用线性插值点和新的数据点再计算新函数,反复迭代到误差极小的程度作为最终的插值函数
牛顿插值
一阶差商
f [ x , x 0 ] = f ( x ) − f ( x 0 ) x − x 0 f[x,x_0]=\frac{f(x)-f(x_0)}{x-x_0} f[x,x0]=x−x0f(x)−f(x0)
二阶差商
f [ x , x 0 , x 1 ] = f [ x , x 0 ] − f [ x , x 1 ] x − x 1 f[x,x_0,x_1]=\frac{f[x,x_0]-f[x,x_1]}{x-x_1} f[x,x0,x1]=x−x1f[x,x0]−f[x,x1]
构造n阶差商,展开并假设n阶差商为0,就可以建立f(x)和差商的关系式作为近似插值函数
分段插值
一次分段插值
x − x i x i − 1 − x i f ( x i − 1 ) + x − x i − 1 x i − x i − 1 f ( x i ) \frac{x-x_i}{x_{i-1}-x_i}f(x_{i-1})+\frac{x-x_{i-1}}{x_{i}-x_{i-1}}f(x_{i}) xi−1−xix−xif(xi−1)+xi−xi−1x−xi−1f(xi)
作为在
[
x
i
−
1
,
x
i
]
[x_{i-1}, x_i]
[xi−1,xi]区间的插值
类似地也有二次,三次分段插值
样条插值是在分段节点处导数连续的分段插值
三次样条插值
构造基函数
S
i
(
x
)
=
a
x
3
+
b
x
2
+
c
x
+
d
S_i(x)=ax^3+bx^2+cx+d
Si(x)=ax3+bx2+cx+d
根据数据点的值应该相等
连接点处一二阶导数应该相等
边界条件构建方程组解出各个基函数的位置参数
边界条件有三种
自然边界,首尾端点二阶导等于0
固定边界,指定超参数设置首尾边界的值
非扭结边界,首尾端点的二阶导等于他们最近邻的二阶导
埃尔米特插值
带导数的插值,可以在之前牛顿或者拉格朗日插值的基础上,添加导数的约束