# How do I find the eigenvalues and vectors of an equation not of form (A*x = b*x)?

7 views (last 30 days)

Show older comments

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 Comment

Jeffrey Clark
on 1 Oct 2022

### Answers (2)

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.

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 Comments

### See Also

### Categories

### Community Treasure Hunt

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

Start Hunting!