フィルターのクリア

What's the most efficient way to solve a sparse linear system Ax = b?

77 ビュー (過去 30 日間)
JUNWEI ZHANG
JUNWEI ZHANG 2017 年 8 月 7 日
回答済み: Jess 2018 年 8 月 15 日
In my project I have to solve an over-determined linear system Ax = b, where A is a large and sparse non-square matrix. We've explored A to have the following structural properties:
As can be seen above, A can be divided into two parts: the left part is a block diagonal matrix, which is ideal for solving linear systems. However the right part is a concatenation of several block diagonal matrices, which complicated to problem.
We've studied this structure for weeks but hasn't found an efficient solver that recognizes this structure. So far the best way to solve this is by sparse(A) \ b, which is way faster than pinv(A)*b or simply A\b. We believe there is still room for improvement because now only sparsity is exploited, not the structure.
Does anyone have any advice on how to solve this linear system more efficiently? BTW, what's the computational complexity for sparse(A) \ b?
Thanks in advance!
  1 件のコメント
Stephen23
Stephen23 2017 年 8 月 7 日
The most efficient and accurate way is also to use \, just as the documentation recommends. If the data is truly sparse then it should be stored as a sparse matrix, then using \ lets MATLAB pick an efficient algorithm. You are unlikely to find anything better. See also related discussions:

サインインしてコメントする。

回答 (2 件)

KSSV
KSSV 2017 年 8 月 7 日
編集済み: KSSV 2017 年 8 月 7 日
If you have GPU, you may consider using mldivide which is same as A\B..and might be faster. YOu can read it here, how the \ works:

Jess
Jess 2018 年 8 月 15 日
There are very few cases where the `\` operator isn't the fastest and roughly the most accurate. I've done a lot of testing of this against other algorithms and packages in the numerical science community. It's really top-notch for almost all cases. For the cases that it wasn't great, it usually had slightly less accuracy than other methods.

カテゴリ

Help Center および File ExchangeOperating on Diagonal Matrices についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by