用Python在点(x,y,z)处评估3-D Hermite_e级数
介绍
在数学中,Hermite多项式是一类非常重要的多项式。Hermite多项式的一个自然推广是Hermite级数,由一系列Hermite多项式组成。本文将介绍如何在Python中使用NumPy库计算3-D Hermite_e级数并在给定的点处进行评估。
Hermite级数
在三维情况下,我们可以使用以下的Hermite级数计算函数f(x,y,z):
f(x,y,z) = \sum_{i=0}^{\infty} \sum_{j=0}^{\infty} \sum_{k=0}^{\infty} C_{ijk} H_i(x)H_j(y)H_k(z),
其中C_{ijk}是系数,H_i(x)是多项式Hermit给定为:
H_i(x) = (-1)^i e^{x^2}\frac{d^i}{dx^i}(e^{-x^2}),
在上式中,e^{x^2}是自然指数函数。
计算系数
为了计算系数C_{ijk},我们需要使用三个公式:
C_{ijk} = \frac{(-1)^{i+j+k}}{i!j!k!}\frac{(2e)^{i+j+k}}{2^i2^j2^k}\sqrt{\frac{1}{\pi^{\frac{3}{2}}2^i2^j2^k}},
C_{i0k} = \frac{(-1)^{i}}{i!}\frac{(2e)^{i+k}}{2^i}\sqrt{\frac{1}{\pi^{\frac{1}{2}}2^i}},
C_{0jk} = \frac{(-1)^{j+k}}{j!k!}\frac{(2e)^{j+k}}{2^j2^k}\sqrt{\frac{1}{\pi^{\frac{3}{2}}2^j2^k}}.
在上述公式中,e是自然指数,\pi是圆周率。基于上述公式,我们可以给出Python的代码来计算我们的系数:
import numpy as np
def calc_coeffs(max_order):
coeffs = np.zeros((max_order+1,max_order+1,max_order+1))
for i in range(max_order+1):
for j in range(max_order+1):
for k in range(max_order+1):
if (i+j+k) % 2 == 0:
c = (-1)**((i+j+k)//2) / np.math.factorial(i) / np.math.factorial(j) / np.math.factorial(k)
c *= (2 * np.exp(1))**(i+j+k) / (2**i * 2**j * 2**k)
c *= 1 / (np.pi**(3/2) * 2**i * 2**j * 2**k)**0.5
coeffs[i,j,k] = c
for i in range(max_order+1):
for k in range(max_order+1):
if i % 2 == 0:
c = (-1)**(i//2) / np.math.factorial(i)
c *= (2 * np.exp(1))**(i+k) / 2**i
c *= 1 / (np.pi**0.5 * 2**i)**0.5
coeffs[i,0,k] = c
for j in range(max_order+1):
for k in range(max_order+1):
if j % 2 == 0:
c = (-1)**((j+k)//2) / np.math.factorial(j) / np.math.factorial(k)
c *= (2 * np.exp(1))**(j+k) / (2**j * 2**k)
c *= 1 / (np.pi**(3/2) * (2**j * 2**k))**0.5
coeffs[0,j,k] = c
return coeffs
在上述代码中,我们计算一个系数数组,其大小为max_order+1\times max_order+1 \times max_order+1,其中max_order是Hermite级数的最大阶数。我们通过三个嵌套的循环计算每个系数。其中我们需要跳过奇数项,因为它们的系数始终为零。
在点(x,y,z)处评估3-D Hermite_e级数
一旦我们计算出系数,我们就可以使用下面的代码在(x,y,z)处计算3-D Hermite_e级数:
def hermite_e(x, y, z, coeffs):
hermite_x, hermite_y, hermite_z = np.polynomial.hermite_e.hermegauss(max_order)
return np.sum(coeffs * np.outer(hermite_x(x), np.outer(hermite_y(y), hermite_z(z))))
其中,我们定义了封装多项式hermegauss
的NumPy函数来计算重量。hermegauss
,是一个NumPy函数,用于计算给定阶数的Hermite多项式及其衍生物。 NumPy库具有可靠、高效的多项式计算功能,因此我们可以使用这个库来计算多项式及其任意衍生物。此代码使用广播outer
将x、y和z坐标数组一起传递给遍历所有系数的循环。最后,我们对所有结果求和,得到点(x,y,z)处的3-D Hermite级数。
示例
让我们来看看Hermite级数在x=y=z=0处的值,计算阶数最高的4\times4\times4数组:
max_order = 4
coeffs = calc_coeffs(max_order)
print(hermite_e(0,0,0,coeffs))
输出
0.5641895835477563
结论
总之,我们已经展示了如何计算三维Hermite级数,在Python中计算其系数并计算在给定的点(x,y,z)处的值。这种广泛使用的数学技术在计算物理和计算数学中都很重要,要将它们与Python的强大功能结合使用,可以获得健壮和高效的数值计算。