用Python中的NumPy在点(x,y)上评估二维Hermite_e数列与三维数组的系数

  • Post category:Python

评估二维Hermite_e数列与三维数组的系数涉及到多维数列的处理。Python中的NumPy库是处理多维数列的好工具。下面是使用NumPy库在点(x,y)上评估二维Hermite_e数列与三维数组的系数的完整攻略。

评估二维Hermite_e数列

首先我们需要定义一个二维Hermite_e数列。Hermite_e数列是一个重要的数学概念,在概率论、量子力学等领域都有广泛的应用。

import numpy as np

def hermite_e(n, x):
    if n == 0:
        return np.ones_like(x)
    elif n == 1:
        return 2 * x
    else:
        return 2 * x * hermite_e(n-1, x) - 2 * (n-1) * hermite_e(n-2, x)

def two_d_hermite_e(n, m, x, y):
    return hermite_e(n, x) * hermite_e(m, y)

上面的代码定义了一个二维Hermite_e数列的函数two_d_hermite_e,它将两个一维的Hermite_e数列相乘得到一个二维的Hermite_e数列。参数nm分别表示两个Hermite_e数列的次数,xy是要评估的点的坐标。

然后我们可以通过下面的代码评估一个在点(1, 2)上的二维Hermite_e数列的值:

x = np.array([1])
y = np.array([2])
two_d_hermite_e(3, 2, x, y)

这里我们选择了n=3m=2,表示两个Hermite_e数列的次数分别为3和2。xy分别是点的x和y坐标。这段代码会输出一个由一个数构成的NumPy数组,表示在点(1, 2)上二维Hermite_e数列的值。

评估三维数组的系数

三维数组是由多个二维数组组成的,每一个二维数组又是由多个一维数组组成的。我们可以使用NumPy库中的einsum函数来评估三维数组的系数。einsum函数可以对多个数组进行广义的点积运算,并选择输出的维度。下面是一个使用einsum函数评估三维数组系数的示例:

import numpy as np

# 定义三维数组
a = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
b = np.array([[[8, 7], [6, 5]], [[4, 3], [2, 1]]])

# 使用einsum计算系数
c = np.einsum('ijk,ilk->jl', a, b)

print(c)

上面的代码定义了一个三维数组ab,每个二维数组的形状都是(2, 2)。我们想要计算这个三维数组的系数,即$C_{jl} = \sum_{i,k} A_{ijk} B_{ilk}$。

最后我们使用einsum函数进行计算,指定输入的字符串'ijk,ilk->jl'表示将ab按照上面的公式计算,输出的结果是一个形状为(2, 2)的二维数组。

输出结果为:

[[132  60]
 [100  44]]

这里的结果表示的是在每一个(j, l)位置上求和的值。