Get unscaled eigenvectors from DGEEV

Open discussion regarding features, bugs, issues, vendors, etc.

Get unscaled eigenvectors from DGEEV

Postby costoich » Mon Apr 04, 2011 12:13 pm

Hello,
Does anybody know how to get unscaled left and right eigenvectors from dgeev? I am trying to find A = VR(GAMMA)VL, which will not work with the scaled versions.
Thanks,
Chris
costoich
 
Posts: 3
Joined: Mon Apr 04, 2011 12:08 pm

Re: Get unscaled eigenvectors from DGEEV

Postby Julien Langou » Wed Apr 06, 2011 12:44 am

Hi Chris, not sure what you mean by scaled and unscaled. Anyway, please read the following thread:
http://icl.cs.utk.edu/lapack-forum/viewtopic.php?f=2&t=298.
Julien.
Julien Langou
 
Posts: 734
Joined: Thu Dec 09, 2004 12:32 pm
Location: Denver, CO, USA

Re: Get unscaled eigenvectors from DGEEV

Postby costoich » Mon Apr 11, 2011 2:31 pm

Thank you Julien, that was helpful. I still run into a little problem though. I am following your instructions to dsigg:

What's the conclusion of all this. Looks like for your application, you really
want inv(VR) and that VL is not enough. Even if your eigenvalue are distinct,
LAPACK will not guarantee you
VL^H * VR = I.
But (if dist. eigs.) VR^H * VL is a diagonal matrix with modulus 1 diagonal element,
therefore you can compute for each i=1 to n:
VL(:,i)^H * VR(:,i) = alpha.
alpha is necessarilly a scalar of modulus 1, if it's not, then the modulus of
alpha nedds to be between 0 and 1 and this means that you have multiple eigenvalues
and well, it's a little harder to handle, so I'll skip.
Then you just need to divide the row i of VL by conj(alpha) or the col i of VR
by alpha. (Either one or the other, but not both!). And that should do it.
After this scaling, you will find inv(VR) from VL^H.


In my case, I expect 5 eigenvalues, 3 of which are multiple. Sometimes alpha = 0.0, which is a problem. Do you have any advise?
Thanks a lot!
-Chris
costoich
 
Posts: 3
Joined: Mon Apr 04, 2011 12:08 pm

Re: Get unscaled eigenvectors from DGEEV

Postby Julien Langou » Mon Apr 11, 2011 3:00 pm

Yep, for multiple eigenvalues, you would get (alpha.NE.1.0D+00). (The fact that it is ZERO or not is not the issue actually, as soon as it's not ONE you are in trouble.)
So, what you can do is simply compute VR (only), and compute the inverse of VR to get VL. That's the best idea I have at this point. Read the email of Jim (at the bottom of topic #298) to see the danger of doing this.
If your problem is well conditioned, the procedure above ( compute VR (only), and compute the inverse of VR to get VL ) will work.
Julien.
Julien Langou
 
Posts: 734
Joined: Thu Dec 09, 2004 12:32 pm
Location: Denver, CO, USA

Re: Get unscaled eigenvectors from DGEEV

Postby costoich » Mon Apr 11, 2011 3:32 pm

Hi Julien,
Thanks for the reply. I have been doing that: computing VR, then the pseudo-inverse using SVD (sometimes VR is singular). Thank you very much for confirming that this is probably my best option.
-Chris
costoich
 
Posts: 3
Joined: Mon Apr 04, 2011 12:08 pm


Return to User Discussion

Who is online

Users browsing this forum: Google [Bot] and 3 guests