[英]Matrix multiplication issue for LU decomposition?
我正在尝试通过使用LU分解来解决Ax = b,但是不知何故我无法通过乘以L * U来获得A。 这是代码和结果;
A = array([2,3,5,4]).reshape(2,2)
b = array([4,3])
P,L, U = lu(A)
以及L和U的结果
L:
array([[ 1. , 0. ],
[ 0.4, 1. ]])
U:
array([[ 5. , 4. ],
[ 0. , 1.4]])
L * U的结果
dot(L,U):
array([[ 5., 4.],
[ 2., 3.]])
所以我不是((2,3),(5,4)),而是((5.,4。),(2.,3.))。 结果,我无法解决Ax = b。 获得L * U结果的原因是什么?
哦,好像我完全忘记了置换矩阵P。将P的逆与L * U相乘就解决了这个问题。
dot(inv(P),dot(P,A)):
array([[ 2., 3.],
[ 5., 4.]])
根据WikiPedia :PA = LU。
因此,如果您希望A = LU,则可以在lu
函数中添加permute_l=True
:
(ins)>>> a = np.array([2,3,5,4]).reshape(2,2)
(ins)>>> l,u = scipy.linalg.lu(a, permute_l=True)
(ins)>>> l.dot(u)
array([[ 2., 3.],
[ 5., 4.]])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.