Showing results for

- Intel Community
- Software Development SDKs and Libraries
- Intel® oneAPI Math Kernel Library & Intel® Math Kernel Library
- Generalized eigenvalue problem with non-definite symmetric matrix

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Mute
- Printer Friendly Page

Highlighted
##

Ever_B_

Beginner

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

10-15-2013
03:55 PM

27 Views

Generalized eigenvalue problem with non-definite symmetric matrix

I need to compute the 5 lowest real eigenvalues and corresponding eigenvectors for a generalized eigenvalue problem A*u=lambda*B*u. Both A and B are real symmetric matrices. A is positive definite but B is not positive definite.

I can use dggev but dggev computes ALL the eigenvalues and eigenvectors assuming A and B are not symmetric, which I think it is not efficient because (a) I need onl 5 eignevalues/eigenvectors and (b) my matrices ARE symmetric.

Since B is not positive definite, I cannot use sygvx.

I want to use MKL!

What can I do?

2 Replies

Highlighted
##

Victor_K_Intel1

Employee

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

10-16-2013
03:56 AM

27 Views

Hi Ever B.,

You can solve the problem mu*A*u=B*u and then find lambda=1/mu. sygvx is applicable for this problem. Of course, you'll have to find 5 biggest eigenvalues. Of course, possibility of mu to be equal to 0 should be considred separately.

Victor

Highlighted
##

Ever_B_

Beginner

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

10-19-2013
02:50 PM

27 Views

Solving the adjunct problem as Victor suggested sounds like a great idea, but I cannot get it to work. I use this call:

[fortran]call dsygvx(1, 'V', 'A', 'U', n, B, n, A, n, vl, vu, 1, n, abstol, m, Lambda, Z, n, work, lwork, iwork, ifail, info)[/fortran]

Notice I reversed A and B to solve the adjunt problem. I am sure the matrix B is +definite, which is confirmed by info not giving a lack of +definiteness error. The smalles test problem I can devise has n=64 but I want to use this for N>10,000. I do 1/Lambda to get the eigenvalues of the original problem. I get 63 converged, of which one is infinite, 61 give the same large unreasonable value, and only one, #63, has a resonable but not correct value. I have to say that I have solved the original problem for the 5 lowest eigenvalues with an iterative algorithm that I coded myself but it is not efficient. I want to use MKL. What can I try now? Is there any iterative algorithm in MKL?

Thanks!

For more complete information about compiler optimizations, see our Optimization Notice.