Calculate eigenfunctions to known eigenvalues

7 views (last 30 days)
Hello,
I need to find eigenfunctions and eigenvalues of an operator . It would require to much storage to calculate the matrix depiction of , so I am using the eigs command and calculate the eigenvalues and eigenfunctions of by writing the operator as a function (the input of this function is a test function f and the output is ). So far so good. Everything works.
No I have run the code and I forgot to save the eigenvectors. I could run the code again to get the eigenvectors, but I wondering: Is there a more efficient way of getting the eigenvectors if the eigenvalues are known?
Thanks for help!

Accepted Answer

Christine Tobler
Christine Tobler on 18 Aug 2025
Unfortunately, there isn't a painless way to do this. That is, it's likely that writing new code to get eigenvectors given the eigenvalues will take you longer to get right, then just re-running eigs.
If you had the eigenvectors and needed the eigenvalues, that's quite painlessly possible using x'*A(x) for each eigenvector x.
The other way around, the usual way to do this would be to solve (A - lambda_mod*I) * x = rand, where lambda_mod is slightly different from lambda to avoid a singular linear system. You might need to do this in multiple iterations (inverse iteration as Torsten mentioned). But with your matrix being given as a function handle, I imagine solving a linear system with it is non-trivial.

More Answers (1)

Torsten
Torsten on 15 Aug 2025
Edited: Torsten on 15 Aug 2025
You could also try
null(A-lambda*eye(size(A)))
where lambda is a given eigenvalue.
Are you talking about eigenfunctions or eigenvectors ? You mix up the two terms in your question.
  2 Comments
Malte
Malte on 15 Aug 2025
Thanks for the answer. I want to calculate an eigenfunction. I dont think what you have suggested works for me. I can not write the operator as a matrix. It would require too much storage. It is of the size (). So what I am actually looking for is a solution that you have provided me in your answer, where A is a function.
Torsten
Torsten on 15 Aug 2025
Edited: Torsten on 15 Aug 2025
I think in this case you will have to numerically solve for the function f in the equation
A^ * f = lambda * f
Maybe the resulting equation is a PDE - I don't know what kind of differential operator A^ is.

Sign in to comment.

Categories

Find more on Linear Algebra in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!