Wol*_*tan 4 python numpy scipy
如何手动重构经lu_factor分解的矩阵A?(A = PLU)
由于矩阵P的设置,我目前的所有尝试均以失败告终。这是我到目前为止的内容:
A = np.random.rand(3,3)
lu, piv = lu_factor(A)
U = np.triu(lu)
L = np.tril(lu, -1)
L[np.diag_indices_from(L)] = 1.0
Run Code Online (Sandbox Code Playgroud)
我正在寻找使这行打印True的矩阵P:
print np.allclose(A, np.dot(P, np.dot(L, U)))
Run Code Online (Sandbox Code Playgroud)
任何提示/链接/建议表示赞赏!
排列向量需要按顺序解释。如果piv=[1,2,2]是这样,则需要按顺序执行以下操作(使用从零开始的索引):
在代码中,这可以解决问题:
P = np.eye(3)
for i, p in enumerate(piv):
Q = np.eye(3,3)
q = Q[i,:].copy()
Q[i,:] = Q[p,:]
Q[p,:] = q
P = np.dot(P, Q)
Run Code Online (Sandbox Code Playgroud)
对于piv=[1,2,2] P是
[[ 0. 0. 1.]
[ 1. 0. 0.]
[ 0. 1. 0.]]
Run Code Online (Sandbox Code Playgroud)
这可能不是计算P的非常快的方法,但可以解决问题并回答问题。
| 归档时间: |
|
| 查看次数: |
550 次 |
| 最近记录: |