Me está dando un error muy extraño usando un método básico de acceso directo en python. Parece, a menos que estoy siendo muy estúpida, consigo diferentes valores para A = A + B y A + = B. Aquí está mi código:Error de adición numpy de Python
def variance(phi,sigma,numberOfIterations):
variance = sigma
for k in range(1,numberOfIterations):
phik = np.linalg.matrix_power(phi,k)
variance = variance + phik*sigma*phik.T
return variance
Esto, básicamente, sólo calcula la covarianza de un vector autorregresivo . Así, por:
phi = np.matrix('0.7 0.2 -0.1; 0.001 0.8 0.1; 0.001 0.002 0.9')
sigma = np.matrix('0.07 0.01 0.001; 0.01 0.05 0.004; 0.001 0.004 0.01')
me sale:
variance(phi,sigma,10) =
[[ 0.1825225 0.07054728 0.00430524]
[ 0.07054728 0.14837229 0.02659357]
[ 0.00430524 0.02659357 0.04657858]]
Esto es correcto Creo que (está de acuerdo con Matlab). Ahora si cambio de la línea anterior a
variance += phik*sigma*(phik.T)
me sale:
variance(phi,sigma,10) =
[[ 0.34537165 0.20258329 0.04365378]
[ 0.20258329 0.33471052 0.1529369 ]
[ 0.04365378 0.1529369 0.19684553]]
¿Qué está pasando?
Muchas gracias
Dan
'A = A .__ add __ (B)' = 'A = A .__ iadd __ (B)' si A es mutable – JBernardo
También es un poco raro tener una variable en el ámbito de su funcionar con el mismo nombre que la función. –