当我们使用Python中的Numpy库时,可以很方便地对Hermite_e系列进行整合。下面是详细的攻略:
1. 导入Numpy库
首先,需要在代码中导入Numpy库:
import numpy as np
2. Hermite_e函数
定义Hermite_e函数,可以使用以下代码实现:
def Hermite_e(n, x):
"""
Compute the nth "probabilists" Hermite polynomial evaluated at x.
Parameters
----------
n : int
Degree of the Hermite polynomial. Must be non-negative.
x : array_like
A scalar or array of values at which to evaluate the resulting
polynomial.
Returns
-------
H_n : ndarray
The value(s) of the nth probabilist's Hermite polynomial at `x`.
"""
n = np.asarray(n)
x = np.asarray(x)
if n.ndim != 0 or x.ndim != 0:
n, x = np.broadcast_arrays(n, x)
if np.any(n < 0):
raise ValueError("Degree of Hermite polynomial must be non-negative.")
scale = np.sqrt(np.pi)*2**n
He_0 = 1
if n == 0:
return He_0
He_1 = 2*x
if n == 1:
return He_1
for k in range(1, n):
He_kplus1 = 2*x*He_1 - 2*k*He_0
He_0 = He_1
He_1 = He_kplus1
return He_1/scale
3. 使用Numpy对Hermite_e的0轴以上进行整合
使用Numpy库的sum
函数可以非常方便地整合Hermite_e系列中的0轴以上部分。这里使用以下代码对Hermite_e的0轴以上进行整合:
#计算重积分 cos(x*theta)*Hermite_e(n1, np.sqrt(beta)*x)*Hermite_e(n2, np.sqrt(beta)*x)*np.exp(-0.5*beta*x**2)在区间(-inf, inf)上的值
#首先定义函数f
def f(x, n1, n2, beta, theta):
return np.cos(x*theta) * Hermite_e(n1, np.sqrt(beta)*x) * Hermite_e(n2, np.sqrt(beta)*x) * np.exp(-0.5*beta*x**2)
#定义待计算的阶数
n1 = 2
n2 = 3
#定义beta和theta的值,这里为了方便直接赋值
beta = 1
theta = 0.3
#使用quad函数计算重积分
result, _ = quad(f, -np.inf, np.inf, args=(n1, n2, beta, theta))
print(result)
这里的示例计算了重积分 cos(x*theta)*Hermite_e(n1, np.sqrt(beta)*x)*Hermite_e(n2, np.sqrt(beta)*x)*np.exp(-0.5*beta*x**2)
在区间 (-inf, inf) 上的值。
另外一个示例是计算Hermite_e 0轴以上阶数为2至5的总和,可以使用以下代码实现:
#定义一个数组保存每个阶数的值
n_array = np.array([2, 3, 4, 5])
#定义beta和x的值,这里为了方便直接赋值
beta = 1
x = 0.5
#使用NumPy的sum函数对0轴以上进行整合求和
result = np.sum(Hermite_e(n_array, np.sqrt(beta)*x))
print(result)
这里的示例计算了Hermite_e阶数在2至5之间的总和,其中 beta
和 x
的值分别为 1 和 0.5。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在Python中使用Numpy对Hermite_e系列的0轴以上进行整合 - Python技术站