eigenvalue and eigenvector of free vibration while stiffness matrix is not invertable

43 ビュー (過去 30 日間)
Hi everybody,
I have K (stiffness matrix) and M (mass matrix) and I want to find eigenvalues and eigenvectors of (K-w^2*M)*fi=0 problem where
w^2 are eigenvalues, and fi are eigenvectors.
In general I solve this problem as [eig1,eig2]=eig(K^-1*M) in matlab. but now, I have a not invertable K matrix. So, I want to use eigs but I do not know how I should do.
Anybody knows how to do it?
Thanks in advance

採用された回答

Christine Tobler
Christine Tobler 2022 年 5 月 5 日
If eig has been working well for the size of your problem you could consider using
[U, D] = eig(K, M); %this solves K*U = M*U*D and would match eig(M\K) if M is invertible.
instead of computing the inverse of M. This will work safely also for singular matrix M. You can of course flip the order of passing in K and M, this only affects if the eigenvalues computed need to be inverted (is it K*x = lambda*M*x or M*x = lambda*K*x).
By convention, usually people will use the mass matrix as the second matrix if it makes sense to call one of the input a mass matrix.
For eigs, you can use the same syntax eigs(K, M) but here it's much more relevant than with EIG which eigenvalues you want (eigs computes only a subset, typically closest to zero or furthest away from zero). Depending on this, either K or M still need to be inverted inside of eigs.
eigs has quite a lot of special-case treatment for the case when the second matrix is symmetric positive definite, so if one of your matrices is that, it may be a good idea to pass it in as the second argument.

その他の回答 (0 件)

カテゴリ

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

タグ

製品


リリース

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by