How do I find the eigenvalues and vectors of an equation not of form (A*x = b*x)?
7 views (last 30 days)
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.
John D'Errico on 1 Oct 2022
Edited: John D'Errico on 1 Oct 2022
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.
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).