MATLAB Answers


How to determine which algorithm mldivide (A\b) uses

さんによって質問されました 2015 年 10 月 27 日
最新アクティビティ Grzegorz Knor さんによって 回答されました 2017 年 4 月 19 日
I have a sparse, banded matrix, A, for which I am solving the linear system Ax=b using A\b in Matlab.
The documentation for mldivide shows a flow chart that explains which solver it will use. However, I would like to automate the process of determining the best algorithm. Therefore, I would really just like to know which algorithm mldivide chooses for different inputs. Is there a way to get this information out?

  0 件のコメント

サインイン to comment.



3 件の回答

回答者: Grzegorz Knor 2017 年 4 月 19 日

For sparse matrices check function spparms :
On my computer it produces:
sp\: bandwidth = 2+1+2.
sp\: is A diagonal? no.
sp\: is band density (1) > bandden (0.5) to try banded solver? yes.
sp\: is LAPACK's banded solver successful? yes.

  0 件のコメント

サインイン to comment.

the cyclist
回答者: the cyclist
2015 年 10 月 27 日

Look at the Algorithms section of this documentation page.

  1 件のコメント

2015 年 10 月 27 日
Yes, thanks, as I stated in my question, I already looked at that. However, what I what to know is if I can give mldivide various inputs and have it automatically tell me which algorithm it choses.
In other words, I want to automate this process.

サインイン to comment.

回答者: Jan
2015 年 10 月 27 日
編集済み: Jan
2015 年 10 月 27 日

I'm not sure if I understand your question. You explain:
The documentation for mldivide shows a flow chart that explains which solver it will use.
Is this not a valid answer of your question already? Or are you looking for the name of the library function instead of the name of the solver? Matlab does not offer the source code for mldivide.

  3 件のコメント

2015 年 10 月 27 日
No, I want to automate the process. In other words, I give mldivide a matrix A, and it tells me which algorithm it will use.
Sorry, its not good for the job security of computer scientists, but its what I need to do...
Jan 30 Oct 2015
The function mldivide willnot tell you, which algorithm is used. This is not the purpose of this command. You can write such a function by your own translating the flow chart of the documentation to a bunch of IF statements.
Even if it DID tell you, for what purpose would you use that information?
Perhaps you would be better served by the LINSOLVE function, which allows you to specify various properties of the coefficient matrix for the system you're trying to solve. This can avoid some of the testing for those matrix properties (which for large matrices could be expensive.)

サインイン to comment.

Translated by