scipy.linalg.lu() 与 scipy.linalg.lu_factor() 究竟有何不同?

问题描述

我已经阅读了 scipy.linalg.lu() vs scipy.linalg.lu_factor()How to understand the pivot matrix of scipy.linalg.lu_factor?,但我仍然不知道这两个函数间的真正区别。

假设我们的标题中有以下内容

ExecutionHandler

这两行怎么可能:

from numpy.linalg import solve
from scipy.linalg import lu,lu_factor,lu_solve
A = np.array([[2,5,8,7],[5,2,8],[7,6,6],4,8]])
b = np.array([1,1,1])

在数学上等同于这些:

lu_a = lu_factor(A) # returns (L1U1,P1)
x = lu_solve(lu_a,b)

M 引用 P,L,U = lu(A) y = solve(L,b) x = solve(U,y) 返回的组合 L1U1 矩阵以节省空间。在第一个场景中,我们正在解决 MPx = b,而在第二个场景中,我们正在解决 Lb = yUy = x >.

如果有人能解释这背后的数学原理,将不胜感激。在我的测试中,我注意到 lu_factor() 返回的 M 矩阵只是 lu_factor() 返回的元素总和 L+U,但我做到了看到 P ≠ P1。此外,lu()lu_factor() 显着快 - 这仅仅是因为 M 的内存效率更高吗? LU 是三角形的(因此非常稀疏),我认为这可以否定这一点。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)