繁体   English   中英

LU分解的矩阵乘法问题?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM