Page 1 of 1

eigenvalues of non-symmetric tridiagonal matrix

PostPosted: Mon May 02, 2011 7:13 am
by GNOW MAS
hi, I am going to solve the eigenvalues of a second order differential equation

the differencing matrix is a on-symmetric tridiagonal matrix

now I am using dgeevx to solve my system,

however it is not that efficient, and there's a limit on the order of the matrix (running out of memory)

I want to know if there are some special solvers which are able to solve the eigenvalues of a non-symmetric tridiagonal matrix

Thank you very much

Re: eigenvalues of non-symmetric tridiagonal matrix

PostPosted: Mon May 02, 2011 5:15 pm
by Julien Langou
If your matrix is tridiagonal nonsymmetric but such that T(i,i+1)*T(i+1,i) > 0 (for all i= 1 ... n-1), then you can use figi2.f from EISPACK, this subroutine outputs an orthogonal similarity transformation that transforms your nonsymmetric tridiagonal matrix into a symmetric tridiagonal one. Then you can solve the symmetric tridiagonal problem with any LAPACK tridiagonal eigensolvers. (They start as SSTExx: ssteqr, sstedc, or sstemr.)

Getting the eigenvalues is "easy". Getting the eigenvectors is somewhat harder. To obtain the eigenvectors, you need to "simply" multiply the two "z" matrices. figi2 gives you z_figi2. dsteqr gives you z_dsteqr. Now perform: z <- z_figi2 * z_dsteqr. You can do this by using the sgemm operation from BLAS. I never used the subroutine but we have a user for which all this works a few weeks ago.

If the matrix does not have the properties required by figi2.f, there is nothing I am aware off. Best you can do is consider your matrix as nonsymmetric Hessenberg ... Still a killer.

Julien.

Re: eigenvalues of non-symmetric tridiagonal matrix

PostPosted: Tue May 03, 2011 6:58 am
by GNOW MAS
yeah, I know figi2

at the very beginning I think that my matrix would be sign symmetric
unfortunately it is not

now I am using the general matrix solver
the resolution is not high enough, and it runs slowly

anyway, thank you,
at least I know that probably there doesn't exist such a solver