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

조회 수: 85 (최근 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 CenterFile Exchange에서 Eigenvalues & Eigenvectors에 대해 자세히 알아보기

태그

제품


릴리스

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by