help-octave
[Top][All Lists]

## Re: sparse matrix improvements in 2.9.x

 From: Shai Ayal Subject: Re: sparse matrix improvements in 2.9.x Date: Sat, 10 Jun 2006 10:09:20 +0300 User-agent: Thunderbird 1.5.0.4 (Windows/20060516)

```David Bateman wrote:
```
```Shai Ayal wrote:
```
```Hi all,

```
I have to invert a sparse matrix using the "\" operator. This matrix is the result of a discretization of a Poisson equation using finite differencing. When I increase the resolution of the discretization above a certain threshold the inversion stops to work. I can currently invert a ~200x200 matrix, but not 300x300 derived from the same physical problem (i.e. I just decrease the cell size). I am almost sure this is not a memory problem (I have 1GB ram). So this is probably a numerical problem. It might be something in my discretization code, or in the inversion code.
```
```
I am currently using 2.1.72 with octave-forge. Should I upgrade to 2.9.x? Is the sparse inversion there "better" in that it tries to do some clever decompositions (like matlab)?
```
Shai
```
```
I hope you don't mean invert as a sparse inversion is generally full.
The "\" operator in 2.9.x is pretty much like that in matlab and does
```
```
I am using the "\" operator.

```
```  1. If the matrix is diagonal, solve directly and goto 8

2. If the matrix is a permuted diagonal, solve directly taking into
account the permutations. Goto 8

3. If the matrix is square, banded and if the band density is less
than that given by `spparms ("bandden")' continue, else goto 4.

a. If the matrix is tridiagonal and the right-hand side is not
sparse continue, else goto 3b.

1. If the matrix is hermitian, with a positive real
diagonal, attempt       Cholesky factorization using
LAPACK xPTSV.

2. If the above failed or the matrix is not hermitian with
a positive       real diagonal use Gaussian elimination
with pivoting using       LAPACK xGTSV, and goto 8.

b. If the matrix is hermitian with a positive real diagonal,
attempt       Cholesky factorization using LAPACK xPBTRF.

c. if the above failed or the matrix is not hermitian with a
positive       real diagonal use Gaussian elimination with
pivoting using       LAPACK xGBTRF, and goto 8.

4. If the matrix is upper or lower triangular perform a sparse forward
or backward substitution, and goto 8

5. If the matrix is a upper triangular matrix with column permutations
or lower triangular matrix with row permutations, perform a sparse
forward or backward substitution, and goto 8

6. If the matrix is square, hermitian with a real positive diagonal,
attempt sparse Cholesky factorization using CHOLMOD.

7. If the sparse Cholesky factorization failed or the matrix is not
hermitian with a real positive diagonal, and the matrix is square,
factorize using UMFPACK.

8. If the matrix is not square, or any of the previous solvers flags
a singular or near singular matrix, find a minimum norm solution
using CXSPARSE(1).

You are probably having problems with SuperLU with 2.1 and they will go
away with 2.9. Note that you need to install UFSparse to get the full
benefits of the above, otherwise large parts are deactivated
```
```
```
Thanks for the concise explanation. Are these features available on all 2.9.x version?
```
Shai

```