天天看点

插值法

一维插值

线性插值就是将相邻两点用直线连接起来

用线性插值进行近似计算,当插值区间小时,近似程度较高。

插值法

用多项式$p(x) = a_0 + a_1 * x + a_2 * x^2 + ... + a_n * x^n $拟合

插值法

拉格朗日插值是用多条特殊的多项式函数,确定相应的系数,加权得到多项式函数

已知下面这几个点,我想找到一根穿过它们的曲线:

插值法

使用多项式是可以的, 但是大神的脑回路总是令人捉摸不透,拉格朗日是这么想的,第一,这肯定是多项式曲线,第二,他认为可以用多条曲线叠加得到,具体是这样的。

第一根曲线 \(f_1(x)\) ,在\(x_1\)点处,取值为1,其余两点取值为0:

插值法

同理在 \((x_2,f_2(x))\) ,\((x_3,f_3(x))\)处也这样做。

插值法
插值法

那么:

\[f(x) = y_1*f_1(x) + y_2*f_2x) + y_3*f_3(x)

\]

\[l_k(x) = \frac{(x-x_0)...(x-x_k-1)(x-x_k+1)...(x-x_n)}{(x_k-x_0)...(x_k-x_k-1)(x_k-x_k+1)...(x_k-x_n)} = \prod_{j = 0, j \neq k}^{n} \frac{x - x_j}{x_k - x_j}

基函数性质

(1)

\(

l_k(x_i) =

\begin{Bmatrix}

1, i=k \\

0, i \neq k

\end{Bmatrix}

(k = 0, 1 ... n)

\)

(2)\(l_k(x_i)\)是惟一确定的n次多项式

(3)拉格朗日插值所包含基函数个数与插值节点个数相同。

\[L_n(x) = \sum_{k=0}^{n}y_k l_k(x) = \sum_{k=0}^{n}y_k \prod_{j = 0, j \neq k}^{n} \frac{x - x_j}{x_k - x_j}

插值法

牛顿Newton插值基本思想是将待求的n次插值多项式\(P_n(x)\)改写为具有承袭性的形式,然后利用插值条件⑴确定\(P_n(x)\)的待定系数,以求出所要的插值函数。

用牛顿向前插值多项式计算

插值法

一阶均差:

插值法

二阶均差是一阶均差的均差:

插值法

三阶均差就是二阶均差的均差,以此类推,我们得到牛顿插值法为:

插值法

联系泰勒公式理解吧,大名鼎鼎的泰勒公式就是这么来的。

插值法

我们用二次函数:\(aX^2+bx+c\)来描述曲线,下图中一共有4个点,可以分成3个区间。每一个区间都需要一个二次函数来描述,一共需要9个未知数。下面的任务就是找出9个方程。

如下图所示:一共有\(x_0,x_1,x_2,x_3\)四个点,三个区间,每个区间上都有一个方程。

插值法

1.曲线方程在节点处的值必须相等,即函数在\(x_1,x_2\)两个点处的值必须符合两个方程,这里一共是4个方程:

\[a_1*x_1^2+b_1*x_1+c_1=f(x_1) \\

a_2*x_1^2+b_2*x_1+c_2=f(x_1) \\

a_2*x_2^2+b_2*x_2+c_2=f(x_2) \\

a_3*x_2^2+b_3*x_2+c_3=f(x_2) \\

2.第一个端点和最后一个端点必须过第一个和最后一个方程:这里一共是2个方程

3.节点处的一阶导数的值必须相等。这里为两个方程。

\[2*a_1*x_1+b_1 = 2*a_2*x_1+b_2 \\

2*a_2*x_1+b_2 = 2*a_3*x_2+b_3 \\

4.在这里假设第一个方程的二阶导数为0:这里为一个方程:

\[a_1=0

插值法

三次样条的原理和二次样条的原理相同,我们用函数\(aX^3+bX^2+cX+d\)这个函数来进行操作,这里一共是4个点,分为3个区间,每个区间一个三次样条函数的话,一共是12个方程,只要我们找出这12个方程,这个问题就算解决了。

1.内部节点处的函数值应该相等,这里一共是4个方程。

2.函数的第一个端点和最后一个端点,应该分别在第一个方程和最后一个方程中。这里是2个方程。

3.两个函数在节点处的一阶导数应该相等。这里是两个方程。

4.两个函数在节点处的二阶导数应该相等,这里是两个方程。

5.端点处的二阶导数为零,这里是两个方程。

\[a_1=0  \\

b_1=0 \\

插值法

二维插值

方法与一维数据插值类似

插值法
插值法
插值法

参考

1.Lagrange、Newton、分段插值法及Python实现

2.如何直观地理解拉格朗日插值法?

3.牛顿插值的几何解释是怎么样的?

4.三次样条插值法

5.(数值分析)各种插值法的python实现

继续阅读