Kodowanie niektórych procedur mechaniki kwantowej, odkryłem ciekawe zachowanie NumPy Pythona. Kiedy używam NumPy's z więcej niż dwoma tablicami, otrzymuję błędne wyniki. W poniższym kodzie muszę napisać:Mnożenie elementarne kilku macierzy w Pythonie Numpy
f = np.multiply(rowH,colH)
A[row][col]=np.sum(np.multiply(f,w))
, która daje prawidłowy wynik. Jednak moje początkowe sformułowanie było następujące:
A[row][col]=np.sum(np.multiply(rowH, colH, w))
, które nie generuje komunikatu o błędzie, ale jest błędny. Gdzie moja wina w myśleniu, że mógłbym podać trzy tablice do rutynowego mnożenia numpy?
Oto pełny kod:
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)
:: UWAGA :: ten kod działa tylko z NumPy 1.7.0 i wyżej!
ok, mój zły :-). czy powinienem usunąć ten post, czy uważasz, że jest on przydatny dla innych? – seb
zostaw to. pomogło mi :) – mrjrdnthms