Optimizing (Reducing run time) of a sparse matrix division

Hi, so I have a sparse matrix as shown below:
[ap ae 0 an 0 0 0 0 0 ...
[aw ap ae 0 an 0 0 0 0 ...
[0 aw ap 0 0 an 0 0 0 ...
[as 0 0 ap ae 0 an 0 0 0 ....
[0 as 0 aw ap ae 0 an 0 0 0 0 ...
and this matrix is multiplied by
[T1,1]
[T1,2]
[T1,3]
[T2,1]
T[2,2]
.
.
.
This is used to solve Ax=T
To find x, I use A\T,
but when the A matrix is really large (1000 x 1000 or even more), the matrix division starts taking up a lot of time, but most of the entries are 0.
I was wondering if there is any way to optimize this to reduce run time, or since it doesnt follow a particular pattern it can't be done?

6 Comments

And you already work with A, T in sparse format ?
What is "a lot of time" in this context?
Are aw, ap, ae, and/or T variables containing numbers or are they symbolic variables? If the latter, try substituting values for those variables before solving the system.
If MATLAB is not able to detect one of the special sparse forms such as a bandwidth-limited matrix, then it uses solvers that typically end up needing dense matrices.
If the standard methods doesn't "perform", then you can try the different iterative solvers available. You can check the documentation for Systems of Linear Equations for a list of those, or the help and documentation for pcg, bicg, bicgstab, bicgstabl, cgs, gmres, lsqr, minres, qmr, symmlq, or tfqmr.
What is the sparsity of the first matrix (Matrix A) in your case?
What are the dimesion for matrix A and matrix T?
As pointed out Steven, are the variables in matrix A are of type syms?
If possible could you provide the data for matrix A and matrix T?
sparse() matrices cannot hold symbolic variables.

Sign in to comment.

Answers (0)

Products

Release

R2020b

Asked:

on 31 Mar 2022

Commented:

on 6 Apr 2022

Community Treasure Hunt

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

Start Hunting!