Mã hóa một số thường trình Cơ học lượng tử, tôi đã phát hiện ra một hành vi tò mò của NumPy của Python. Khi tôi sử dụng nhân của NumPy với nhiều hơn hai mảng, tôi nhận được kết quả bị lỗi. Trong mã bên dưới, tôi phải viết:Nhân số nguyên tử của một số mảng trong Python Numpy
f = np.multiply(rowH,colH)
A[row][col]=np.sum(np.multiply(f,w))
tạo kết quả chính xác. Tuy nhiên, công thức ban đầu của tôi là:
A[row][col]=np.sum(np.multiply(rowH, colH, w))
không tạo ra thông báo lỗi nhưng kết quả sai. Đâu là lỗi của tôi trong suy nghĩ rằng tôi có thể đưa ra ba mảng để thường xuyên nhân của numpy?
Đây là mã đầy đủ:
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)
:: Chú ý :: mã này chỉ chạy với NumPy 1.7.0 và cao hơn!
ok, xấu của tôi :-). Tôi có nên xóa bài đăng này hay bạn nghĩ nó hữu ích cho người khác không? – seb
để nguyên. đã giúp tôi :) – mrjrdnthms