作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用有什么区别
scipy.sparse.linalg.factorized(A)
scipy.sparse.linalg.splu(A)
.solve(rhs)
返回对象方法和两者都在文档中说他们使用 LU 分解。我想知道他们两个的性能差异。
Au = f
在每个时间步。 A 是稀疏且相当大的,但不依赖于时间步长,因此我想事先投入一些时间以使迭代更快(可能有数千个)。我尝试使用
scipy.sparse.linalg.inv(A)
,但是当矩阵的大小很大时它会抛出内存异常。我用过
scipy.linalg.spsolve
在每一步直到最近,现在我正在考虑使用某种分解来获得更好的性能。所以如果你有除了 LU 之外的其他建议,请随时提出!
最佳答案
假设 A
,它们应该都能很好地解决您的问题。不会随着每个时间步长而改变。scipy.sparse.linalg.inv(A)
将返回一个与 A
大小相同的密集矩阵,所以难怪它会抛出内存异常。scipy.linalg.solve
也是一个密集的线性求解器,这不是你想要的。
假设 A
稀疏,求解Au=f
而你只想解决Au=f
一次,您可以使用 scipy.sparse.linalg.spsolve
.例如
u = spsolve(A, f)
如果您想为后续求解显着加快速度,您可以使用
scipy.sparse.linalg.factorized
或
scipy.sparse.linalg.splu
.例如
A_inv = splu(A)
for t in range(iterations):
u_t = A_inv.solve(f_t)
或者
A_solve = factorized(A)
for t in range(iterations):
u_t = A_solve(f_t)
它们的速度应该相当,并且比以前的选项快得多。
关于numpy - scipy.sparse.linalg : what's the difference between splu and factorized?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57239217/
使用有什么区别 scipy.sparse.linalg.factorized(A) 和 scipy.sparse.linalg.splu(A) 他们都用 .solve(rhs) 返回对象方法和两者
我有下面的代码,我使用命令 scipy.linalg.lu() 计算给定方阵的 L 矩阵,然后我再次执行相同的操作,除了然后应用于给定矩阵的稀疏形式使用 scipy.sparse.linalg.slu
我是一名优秀的程序员,十分优秀!