6
我在python中使用基本的快捷方法时出现了一个非常奇怪的错误。看来,除非我是非常愚蠢的,我得到不同的值,A = A + B和A + = B.这里是我的代码:Python numpy添加错误
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
这基本上只是计算向量自回归的协方差。因此,对于:
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')
我得到:
variance(phi,sigma,10) =
[[ 0.1825225 0.07054728 0.00430524]
[ 0.07054728 0.14837229 0.02659357]
[ 0.00430524 0.02659357 0.04657858]]
这是正确的,我相信(用Matlab同意)。现在,如果我改变上面
variance += phik*sigma*(phik.T)
我得到的线:
variance(phi,sigma,10) =
[[ 0.34537165 0.20258329 0.04365378]
[ 0.20258329 0.33471052 0.1529369 ]
[ 0.04365378 0.1529369 0.19684553]]
回事请告诉我?
非常感谢
丹
'A = A .__添加__(B)'='A = A .__ IADD __(B)'如果A是可变的 – JBernardo
这也是一种奇怪的有一个变量的范围你函数与函数具有相同的名称。 –