在Python中把赫米特数列转换为多项式

  • Post category:Python

将赫米特数列转换为多项式的过程,在Python中可以通过使用特定的库函数来实现。下面是具体的步骤。

  1. 引入所需的库函数
    为了将赫米特数列转换为多项式,我们需要引入SciPy库中的特定函数,该库可以通过pip安装:
pip install scipy

在Python代码中引入scipy库:

from scipy.special import eval_hermite, hermite

其中eval_hermite函数用于计算在给定点x处的赫米特多项式的值,而hermite函数返回一个函数对象,它根据索引n计算一个赫米特多项式。

  1. 构建多项式
    在引入了所需的库函数之后,我们可以通过以下代码将赫米特数列转换为多项式:
import numpy as np
import matplotlib.pyplot as plt

n = 5
x = np.linspace(-5, 5, 100)
sum = np.zeros(len(x))
for i in range(n):
    h_i = hermite(i)
    hermite_i = h_i(x)
    c_i = eval_hermite(i, 0)
    sum = sum + ((1 / np.sqrt(np.math.factorial(i))) * (c_i * hermite_i))

plt.plot(x, sum)
plt.show()

在这个代码中,我们首先定义了一个赫米特数列的长度n,并使用numpy库中的linspace函数来创建一个包含100个值的数组x。接下来,我们定义了一个sum变量来记录多项式的总和,初始化为长度为x数组长度的全零数组。在for循环中,我们遍历了0到n-1的所有值,使用hermite函数来计算赫米特多项式,并使用eval_hermite函数来计算该多项式在0点的值c_i。最后,我们将每个计算出的多项式的和乘以一个归一化系数,并将结果累加到我们之前定义的“总和”数组中。最后,我们使用matplotlib库将多项式可视化。

示例:
我希望将第15阶的赫米特数列转换为多项式,并将结果可视化。 其中第15次多项式是通过计算一次hermite(15)而得到的。

import numpy as np
import matplotlib.pyplot as plt
from scipy.special import eval_hermite, hermite

n = 15
x = np.linspace(-5, 5, 100)
sum = np.zeros(len(x))
for i in range(n):
    h_i = hermite(i)
    hermite_i = h_i(x)
    c_i = eval_hermite(i, 0)
    sum = sum + ((1 / np.sqrt(np.math.factorial(i))) * (c_i * hermite_i))

plt.plot(x, sum)
plt.show()

运行结果是一个振荡的多项式,其上下限超过了基础离散点所指定的范围。此示例说明了如何使用Python代码将赫米特数列转换为多项式,并将结果可视化。