使用Python中的NumPy对Hermite级数进行微分,并将每次微分乘以标量

  • Post category:Python

使用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 函数对多项式进行求导,最后将结果乘以标量即可。我们通过两个示例说明了如何进行一阶和二阶微分,并得到了微分后的多项式表示。