Codificando alcune routine della meccanica quantistica, ho scoperto un comportamento curioso di NumPy di Python. Quando uso NumPy si moltiplica con più di due array, ottengo risultati errati. Nel seguente codice, devo scrivere:Moltiplicazione elementare di diversi array in Python Numpy
f = np.multiply(rowH,colH)
A[row][col]=np.sum(np.multiply(f,w))
che produce il risultato corretto. Tuttavia, la mia formulazione iniziale era questa:
A[row][col]=np.sum(np.multiply(rowH, colH, w))
che non produce un messaggio di errore, ma il risultato sbagliato. Dov'è la mia colpa nel pensare che potrei dare tre matrici alla routine di moltiplicazione di Numpy?
Ecco il codice completo:
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)
:: :: NOTA questo codice viene eseguito solo con NumPy 1.7.0 in alto!
ok, mio male :-). dovrei rimuovere questo post o pensi che sia utile per gli altri? – seb
lascia. mi ha aiutato :) – mrjrdnthms