How do I find the eigenvalues and vectors of an equation not of form (A*x = b*x)?
17 ビュー (過去 30 日間)
古いコメントを表示
I'm trying to solve a vibrations problem in which my eigenvalue equation is K*x = b*M*x, where K and M are matrices and b is a scalar. I can do this by hand for low dimensional problems, but it gets to be way too much after more than 2-3 degrees of freedom are introduced.
Is there a built in command to do this? K and M are symbolic matrices.
1 件のコメント
Jeffrey Clark
2022 年 10 月 1 日
@Edward Walker, as indicated in the tips documentation the symbolic eig function does not support solving the generalized eigenvalue problem (with two input arguments). To solve the generalized eigenvalue problem, use the MATLAB eig function instead by converting the input matrices to a MATLAB numeric type. As in this varient:
回答 (2 件)
John D'Errico
2022 年 10 月 1 日
編集済み: John D'Errico
2022 年 10 月 1 日
This is a classic problem in eigenvalues, caled the generalized eigenvalue problem. That is, if you want to solve the eigenproblem
A*x = lambda*B*x
then eig solves it for you, directly.
help eig
Do you see that one of the options allows you to provide TWO matrices? All you need to do is:
[V,D] = eig(K,M);
Of course, if the matrix M is non-singular, then it is equivalent to writing the problem as
inv(M)*K*x = lambda*x
So then you could use eig simply as
[V,D] = eig(inv(M)*K);
In general, it is better to avoid the matrix inverse computation, so just use the generalized eigenvalue solver you already have in the form of eig(K,M).
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Eigenvalues & Eigenvectors についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!