我试图通过使用 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.]])
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句