Effacer les filtres
Effacer les filtres

solving linear equations in a loop

2 vues (au cours des 30 derniers jours)
Krzysztof
Krzysztof le 21 Mar 2014
Modifié(e) : Matt J le 21 Mar 2014
The documentation for inv says:
A frequent misuse of inv arises when solving the system of linear equations Ax = b. One way to solve this is with x = inv(A)*b. A better way, from both an execution time and numerical accuracy standpoint, is to use the matrix division operator x = A\b.
The above taken for granted, is it nevertheless reasonable to precalculate invA = inv(A) in front of a loop containing (A\Xi), especially one that necessarily sequential?

Réponse acceptée

Matt J
Matt J le 21 Mar 2014
Modifié(e) : Matt J le 21 Mar 2014
No. Make the different Xi the columns of matrix, X and just do A\X.
  2 commentaires
Krzysztof
Krzysztof le 21 Mar 2014
In case you did not have time to have a look at the algorithm: X(i+1) depends on A\X(i).
Matt J
Matt J le 21 Mar 2014
Modifié(e) : Matt J le 21 Mar 2014
Probably better, then to pre-compute the LU decomposition
[L,U]=lu(A);
and then solve the system for each Xi using (U\(L\Xi)). You might improve things still further with an L,U,P decomposition.

Connectez-vous pour commenter.

Plus de réponses (0)

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by