Eigenvalue problem and badly conditioned matrices

Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
2 replies · 2K views
member 428835
Hi PF!

I am trying to solve the eigenvalue problem ##A v = \lambda B v##. I thought I'd solve this by $$A v = \lambda B v \implies\\
B^{-1} A v = \lambda v\implies\\
(B^{-1} A - \lambda I) v = 0 $$
and then using the built in function Eigenvalues and Eigenvectors on the matrix ##B^{-1}A##. But as you can see from the title, ##B^{-1}## is badly conditioned. Any ideas on how to get around this?
 
on Phys.org
I don't follow. Isn't this a problem that you tackled ##\gt 6 ## months ago?

E.g. I asked about it here and linked to an old thread tackling this problem via use of Lancosz method (to avoid explicit inversion among other things):

https://www.physicsforums.com/threa...e-calculus-of-variations.936407/#post-5917752

but that was back in January of this year, and you mentioned you had already solved the problem.
 
  • Like
Likes   Reactions: member 428835
StoneTemplePython said:
I don't follow. Isn't this a problem that you tackled ##\gt 6 ## months ago?

E.g. I asked about it here and linked to an old thread tackling this problem via use of Lancosz method (to avoid explicit inversion among other things):

https://www.physicsforums.com/threa...e-calculus-of-variations.936407/#post-5917752

but that was back in January of this year, and you mentioned you had already solved the problem.
Thanks for bringing this up again. I was previously using both Mathematica and MATLAB (odd I know) and at the time someone convinced me that the built in eigenvalue solver in MATLAB was robust. However, now that I am using Mathematica exclusively, I forgot that explicitly computing the matrix inverse was the issue, not the eigenvalue solver.

For those in the future, generalized eigenvalue problems of the above form are solved very robustly in Mathematica via Eigensystem[A,B] following from above.

Thanks StoneTemplePython