eigenvalue and eigenvector of free vibration while stiffness matrix is not invertable
조회 수: 40 (최근 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
댓글 수: 0
채택된 답변
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
추가 답변 (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!