在Python中使用NumPy评估Hermite_e序列,需要执行以下步骤:
- 导入NumPy库
在Python中,可以使用以下语句导入NumPy库:
import numpy as np
- 定义Hermite_e函数
Hermite_e函数可以使用以下代码定义:
def Hermite_e(x, n):
if n == 0:
return np.exp(-x**2)
elif n == 1:
return -2*x*np.exp(-x**2)
else:
return -2*x*Hermite_e(x, n-1) + 2*(n-1)*Hermite_e(x, n-2)
这里定义了一个递归函数,用于计算Hermite_e序列的每个元素值。当$n=0$时,返回$e^{-x^2}$;当$n=1$时,返回$-2xe^{-x^2}$;否则,根据递推公式 $H_n(x) = -2xH_{n-1}(x) + 2(n-1)H_{n-2}(x)$,计算$H_n(x)$。
- 评估Hermite_e函数
可以使用NumPy中的np.vectorize
函数,将Hermite_e函数转换为矢量函数,以便于接受Numpy数组参数,并返回相应的Numpy数组结果。
Hermite_e_vec = np.vectorize(Hermite_e)
- 测试评估Hermite_e函数
可以使用以下代码分别测试评估Hermite_e函数:
# 在点x的列表中评估Hermite_e序列,n为次数
x_list = [0, 1, 2, 3, 4]
n = 3 # 次数
H_n = Hermite_e_vec(x_list, n)
print("Hermite_e({}) at x={}: {}".format(n, x_list, H_n))
这里以n=3为例,评估Hermite_e序列在点x_list=[0, 1, 2, 3, 4]处的取值。运行结果如下:
Hermite_e(3) at x=[0, 1, 2, 3, 4]:
[ 0.00000000e+00 -6.00000000e+00 -1.44000000e+02 -3.48000000e+03
-8.30400000e+04]
- 示例说明
示例1:计算Hermite_e序列的前10项
可以使用以下代码计算Hermite_e序列的前10项:
x_list = np.linspace(-5, 5, 101)
Hermite_e_mat = np.zeros((10, len(x_list)))
for n in range(10):
Hermite_e_mat[n, :] = Hermite_e_vec(x_list, n)
# 可视化Hermite_e序列的前10项
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(8, 6))
ax.plot(x_list, Hermite_e_mat.T, linewidth=2)
ax.set_xlabel('x', fontsize=14)
ax.set_ylabel('Hermite_e(x, n)', fontsize=14)
ax.set_title('Hermite_e Sequence', fontsize=14)
ax.grid(True)
plt.show()
这里使用NumPy的linspace
函数生成一个长度为101的一维数组,表示$x\in[-5,5]$的点的坐标。然后,定义一个二维数组Hermite_e_mat
,用于存储Hermite_e序列在每个点$x$处的取值。接下来,使用一个循环,依次计算Hermite_e序列的每个元素值,并将结果存储到Hermite_e_mat
中。最后,使用Matplotlib可视化Hermite_e序列的前10项。运行结果如下:
示例2:计算多项式函数与Hermite_e序列的乘积
可以使用以下代码计算多项式函数$x^3 - x^2 + 1$与Hermite_e序列的$n=4$项的乘积:
x_list = np.linspace(-5, 5, 101)
n = 4 # Hermite_e的次数
# 计算多项式函数与Hermite_e序列的乘积
poly = x_list**3 - x_list**2 + 1
H_n = Hermite_e_vec(x_list, n)
poly_H_n = poly * H_n
# 可视化多项式函数与Hermite_e序列n=4的乘积
fig, ax = plt.subplots(figsize=(8, 6))
ax.plot(x_list, poly_H_n, linewidth=2)
ax.set_xlabel('x', fontsize=14)
ax.set_ylabel('P(x) * Hermite_e(x, {})'.format(n), fontsize=14)
ax.set_title('Polynomial and Hermite_e Sequence', fontsize=14)
ax.grid(True)
plt.show()
这里先计算多项式函数$x^3 - x^2 + 1$在每个点坐标$x$处的取值,并将其存储在数组poly
中。然后,计算Hermite_e序列的$n=4$项在相应点坐标$x$处的取值,并将结果存储在数组H_n
中。然后计算多项式函数与Hermite_e序列的乘积,将结果存储在数组poly_H_n
中。最后,使用Matplotlib可视化多项式函数与Hermite_e序列n=4的乘积。运行结果如下:
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在Python中使用NumPy在点x的列表中评估Hermite_e序列 - Python技术站