作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要解决数千次 Ax=b 类型的小型线性系统。这里A是一个不小于3x3、最大8x8的矩阵。我知道这个 http://www.johndcook.com/blog/2010/01/19/dont-invert-that-matrix/所以我不认为即使矩阵很小也反转矩阵是明智的吗?那么最有效的方法是什么?我正在用 Fortran 编程,所以我可能应该使用 lapack 库,对吗?我的矩阵是完整的,并且通常是非对称的。
谢谢
A.
最佳答案
警告:我没有深入研究这个问题,但我很乐意分享一些经验。
根据我的经验,解决 3x3 系统的最快方法基本上是使用 Cramer's rule .如果您需要使用相同的矩阵 A 求解多个系统,则需要预先计算 A 的逆。这仅适用于 2x2 和 3x3。
如果您必须使用相同的矩阵求解多个 4x4 系统,那么再次使用逆运算明显比 LU 的正向和反向替换快。我似乎记得它使用的操作更少,实际上差异更大(再次,以我的经验)。随着矩阵大小的增加,差异缩小,并且差异逐渐消失。如果您正在解决具有差分矩阵的系统,那么我认为计算逆矩阵没有优势。
在所有情况下,用逆求解系统可能比使用 LU 分解准确得多,因为 A 是相当病态的。因此,如果准确性是一个问题,那么 LU 分解绝对是要走的路。
关于linear-algebra - 用小 A 求解多个线性系统 Ax=b 的最有效方法(最小 3x3 最大 8x8),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15718999/
我是一名优秀的程序员,十分优秀!