Calculate eigenfunctions to known eigenvalues

7 vues (au cours des 30 derniers jours)
Malte
Malte le 15 Août 2025
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!

Réponse acceptée

Christine Tobler
Christine Tobler le 18 Août 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.

Plus de réponses (1)

Torsten
Torsten le 15 Août 2025
Modifié(e) : Torsten le 15 Août 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 commentaires
Malte
Malte le 15 Août 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 le 15 Août 2025
Modifié(e) : Torsten le 15 Août 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.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Linear Algebra dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by