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

5 posts
• Page **1** of **1**

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

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

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.

http://icl.cs.utk.edu/lapack-forum/viewtopic.php?f=2&t=298.

Julien.

- Julien Langou
**Posts:**791**Joined:**Thu Dec 09, 2004 12:32 pm**Location:**Denver, CO, USA

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

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

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

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.

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:**791**Joined:**Thu Dec 09, 2004 12:32 pm**Location:**Denver, CO, USA

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

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

5 posts
• Page **1** of **1**

Users browsing this forum: Ronaldlax and 3 guests