Linear System Speed Up Ax=b

6 vues (au cours des 30 derniers jours)
Taehun Kim
Taehun Kim le 7 Fév 2021
Commenté : Taehun Kim le 10 Fév 2021
Dear All,
I have a linear solve embedded in the right hand side function of a large system of ODEs that I am trying to solve using ode45 or ode15s.
I see that the profiling result on my code indicates that most of my time is spent evaluating the linear solves...
I have a right hand side matrix b continuously changing at each time point. There are three types of linear solves that I am calling: (1) a constant tri-diagonal matrix of dimension nxn where n is around 1000, (2) an upper triangular matrix with the diagonal and a line above the diagonal filled with numbers but all others are zero, (3) a lower triangular matrix with the diagonal and a line below the diagonal filled with numbers buit all others are zero.
in each case, I am specifying an option to indicate if matrix is either upper or lower triangular matrix. Then, I am using linsolve... but the code is slow... Do you think there is a practical way to speed up the linear solve evaluation in the code? the coefficient matrices are so sparse in this case and I think that there may be ways that we can exploit this... But not sure what exactly to do...
Thank you so much! :)
  2 commentaires
Taehun Kim
Taehun Kim le 7 Fév 2021
Can I possibly write my own solver specific for the cases that I have?
Taehun Kim
Taehun Kim le 7 Fév 2021
Or any MATLAB built-in functions are available?

Connectez-vous pour commenter.

Réponse acceptée

Matt J
Matt J le 8 Fév 2021
the coefficient matrices are so sparse in this case and I think that there may be ways that we can exploit this
If those matrices are being held in sparse data form, then the sparsity should be exploited alread
  1 commentaire
Taehun Kim
Taehun Kim le 10 Fév 2021
Thanks for the comment Matt!
I am currently using linsolve and passing in an option saying my matrix is either an upper or a lower triangular matrix. It is however the case that we are unable to use sparse pattern matrix with linsolve...
So, I have switched back to the backslash solve and have profiled the code once again. For the linsolve with options for matrix pattern enabled, the code spent around 70 seconds solving the system of linear equations. In contrast, the backslash with sparse data spent only around 21 seconds solving the same system!
Thank you for your help in this matter! Saving as a sparse data indeed helped a lot! :)
Sincerely,
Taehun Kim

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Operating on Diagonal Matrices dans Help Center et File Exchange

Produits


Version

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by