编写一些量子力学例程时,我发现 Python 的 NumPy 存在一个奇怪的行为。当我使用 NumPy 的 multiply 函数时使用超过两个数组,我会得到错误的结果。在下面的代码中,我必须这样写:
f = np.multiply(rowH,colH)
A[row][col]=np.sum(np.multiply(f,w))
该程序可以产生正确的结果。然而,我最初的表述是:
A[row][col]=np.sum(np.multiply(rowH, colH, w))
它不会产生错误信息,但会得出错误的结果。我在想,我将三个数组输入给NumPy的乘法例程,错在哪里?
以下是完整的代码:
from numpy.polynomial.hermite import Hermite, hermgauss
import numpy as np
import matplotlib.pyplot as plt
dim = 3
x,w = hermgauss(dim)
A = np.zeros((dim, dim))
#build matrix
for row in range(0, dim):
rowH = Hermite.basis(row)(x)
for col in range(0, dim):
colH = Hermite.basis(col)(x)
#gaussian quadrature in vectorized form
f = np.multiply(rowH,colH)
A[row][col]=np.sum(np.multiply(f,w))
print(A)
::注意::该代码仅支持NumPy 1.7.0及以上版本!