微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。