📅  最后修改于: 2023-12-03 15:04:21.074000             🧑  作者: Mango
np.poly2lag() 方法用于将多项式系数转换成拉格朗日系数。
具体来说,np.poly2lag() 将多项式系数 $p_n, p_{n-1}, ..., p_1, p_0$ 转换成拉格朗日系数 $l_n, l_{n-1}, ..., l_1, l_0$。
np.poly2lag(p)
参数说明:
返回值:
import numpy as np
p = np.array([1, 2, 3])
l = np.poly2lag(p)
print(l)
输出结果如下:
[1 4 3]
上述代码中,我们将多项式系数 $p=[1, 2, 3]$ 传递给 np.poly2lag() 方法,得到的拉格朗日系数 $l=[1, 4, 3]$。
现在让我们来看看如何手动计算拉格朗日系数。
对于多项式 $P(x)=p_n x^n + p_{n-1} x^{n-1} + ... + p_1 x + p_0$ 和插值点 $(x_1, y_1), (x_2, y_2), ..., (x_n, y_n)$,拉格朗日插值多项式为:
$$ L(x)=\sum_{i=1}^{n} y_i l_i(x) $$
其中,
$$ l_i(x)=\prod_{j=1,j\neq i}^{n} \frac{x-x_j}{x_i-x_j} $$
我们可以使用多项式系数来计算拉格朗日系数。具体来说,拉格朗日系数为:
$$ l_i = \frac{(-1)^{n-i}}{i(n-i)!} \prod_{j=1,j\neq i}^{n} \frac{1}{x_i-x_j} $$
在上述示例代码中,多项式系数为 $p=[1, 2, 3]$,即 $P(x)=x^2+2x+3$。假设插值点为 $(0, 3), (1, 6), (2, 11)$,则 $n=3$,$x_1=0, y_1=3, x_2=1, y_2=6, x_3=2, y_3=11$,因此:
$$ l_1 = \frac{(-1)^{3-1}}{1(3-1)!} \frac{1}{(0-1)(0-2)} = 1 $$
$$ l_2 = \frac{(-1)^{3-2}}{2(3-2)!} \frac{1}{(1-0)(1-2)} = 4 $$
$$ l_3 = \frac{(-1)^{3-3}}{3(3-3)!} \frac{1}{(2-0)(2-1)} = 3 $$
因此,我们得到的拉格朗日系数为 $l=[1, 4, 3]$,与 np.poly2lag() 方法得到的结果一致。