使用NumPy对Hermite级数进行微分
1. Hermite级数
Hermite级数是数学上特殊的一类级数,其定义如下:
$$
H_n(x) = (-1)^ne^{x^2}{\frac{d^n}{dx^n}}e^{-x^2}
$$
其中 $n$ 为非负整数。它可以表示成如下的形式:
$$
H_n(x) = 2^nn!\sum_{k=0}^{n/2}{(-1)^k\over (n-2k)!k!(n-2k-1)!}{x^{n-2k}}
$$
2. 使用NumPy微分Hermite级数
如果我们要对Hermite级数进行微分,可以利用NumPy中的polyder函数。由于Hermite级数可以表示为多项式的形式,我们可以使用NumPy的多项式函数进行操作。举个例子,我们可以先用NumPy的函数计算Hermite级数的多项式表示:
import numpy as np
def hermite(n: int) -> np.poly1d:
poly = [1.0]
for k in range(n):
poly = np.polymul(poly, [1.0, -2.0*k])
return np.poly1d(poly, True)
此时得到的 poly
即为 Hermite多项式级数的系数。例如,hermite(2)
得到的多项式为:
$$
\begin{aligned}
H_2 = 4x^2 – 2
\end{aligned}
$$
接下来,我们利用 polyder
函数对 Hermite级数进行微分,以一阶导数为例:
def hermite_derivative(n: int, scalar: float) -> np.poly1d:
poly_coef = hermite(n).coefficients
derivative_coef = np.polyder(poly_coef)
return scalar * np.poly1d(derivative_coef, True)
其中 scalar
表示每次微分后乘以的标量,通过调整 scalar
可以修改微分的强度。这里我们使用一阶导数计算 Hermite级数的微分,如果需要计算更高阶的导数,可以将 polyder
函数的次数参数调高即可。
3. 示例
示例1
我们以 H_2(x)
为例进行微分,计算一阶导数。此时,我们调用 hermite_derivative
函数得到一阶导数的多项式表示,并取 scalar=1
:
derivative = hermite_derivative(2, 1)
通过对多项式进行求导,计算一阶导数的多项式表示为:
$$
\begin{aligned}
H_2′(x) & = (8x) \
& = 8x
\end{aligned}
$$
因此,我们得到了 H_2(x)
的一阶导数的多项式表示:8x
。
示例2
接下来,我们以 H_3(x)
为例进行微分,计算二阶导数。此时,我们调用 hermite_derivative
函数得到二阶导数的多项式表示,并取 scalar=2
:
second_derivative = hermite_derivative(3, 2)
通过对多项式进行求导,计算二阶导数的多项式表示为:
$$
\begin{aligned}
H_3”(x) & = 48x^2 – 12 \
& = 12(4x^2 – 1)
\end{aligned}
$$
因此,我们得到了 H_3(x)
的二阶导数的多项式表示:12(4x^2 - 1)
。
4. 总结
本文中,我们演示了如何通过 NumPy 对Hermite级数进行微分,并将每次微分乘以标量。具体而言,我们先利用 NumPy 计算Hermite级数的多项式表示,然后使用 NumPy 的 polyder
函数对多项式进行求导,最后将结果乘以标量即可。我们通过两个示例说明了如何进行一阶和二阶微分,并得到了微分后的多项式表示。