用Python在点(x,y,z)处评估3-D Hermite_e级数

用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的强大功能结合使用,可以获得健壮和高效的数值计算。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

Numpy 示例