Calculate eigenfunctions to known eigenvalues

7 ビュー (過去 30 日間)
Malte
Malte 2025 年 8 月 15 日
回答済み: Christine Tobler 2025 年 8 月 18 日
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!

採用された回答

Christine Tobler
Christine Tobler 2025 年 8 月 18 日
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.

その他の回答 (1 件)

Torsten
Torsten 2025 年 8 月 15 日
編集済み: Torsten 2025 年 8 月 15 日
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 件のコメント
Malte
Malte 2025 年 8 月 15 日
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 2025 年 8 月 15 日
編集済み: Torsten 2025 年 8 月 15 日
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.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeLinear Algebra についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by