Python Scipy.linalg.qr_更新不';行不通

Python Scipy.linalg.qr_更新不';行不通,python,scipy,Python,Scipy,无法了解scipy.linalg.qr_更新无法正常工作的原因。 来自scipy文档: qr\u更新(Q、R、u、v、覆盖\u qruv=False,检查\u finite=True) 如果A=QR是A的QR分解,则返回QR分解 A+uvˆT对于实A,或A+uvˆH对于复A 但它不起作用!以下是一个例子: import numpy as np from numpy.linalg import * N = 3 coef = 0.5 Q = np.eye(N) R = coef * np.eye

无法了解scipy.linalg.qr_更新无法正常工作的原因。 来自scipy文档:

qr\u更新(Q、R、u、v、覆盖\u qruv=False,检查\u finite=True)

如果A=QR是A的QR分解,则返回QR分解 A+uvˆT对于实A,或A+uvˆH对于复A

但它不起作用!以下是一个例子:

import numpy as np
from numpy.linalg import *

N = 3
coef = 0.5
Q = np.eye(N)
R = coef * np.eye(N)
u  = np.matrix([[ 1.92981364,  0.2505024,   1.25051418]])

print "What should be:"
print Q*R + u.T * u

q1, r1 = qr_update(Q, R, u.T, u.T)

print "What we have:"
print q1 * r1
输出:

What should be:
[[ 4.22418069  0.48342295  2.41325932]
[ 0.48342295  0.56275145  0.3132568 ]
[ 2.41325932  0.3132568   2.06378571]]

What we have:
[[  4.22418069e+00  -7.36996838e-02  -1.53468755e+00]
[  0.00000000e+00   5.00656362e-01  -2.62290295e-03]
[  0.00000000e+00   0.00000000e+00   5.16088504e-01]]

如果你能给我任何帮助,我将不胜感激

小心不要将
*
与矩阵乘法/点积混淆。对于普通的numpy数组,
*
是按元素排列的。所以
np.dot(A,B)
A*B
通常是不一样的!你完全正确-谢谢!打印np.矩阵(q1)*np.矩阵(r1)-给出正确答案