Is there a function out there to find a matrix parameter so that the Eigenvalues come out to be a predetermined number?

So, what I basically need is some variation of the solve function so that, given the following matrix (the real matrix I'm using is 7x7):
M =[(1-theta), 0, -theta*alpha, theta*alpha0;
-theta*alpha, (1-theta), 0, theta*alpha0;
0, -theta*alpha, (1-theta), theta*alpha0;
0, 0, 0, 1];
I can screen values of, say, alpha, to find at least one so that the dominant Eigenvalue is 1 (I'm looking for an oscillating system).
Now, one of the biggest problems I've come across is that I cant simply use the
max(eig(M))
function because I already have a value = 1 (given the last row) which is meaningless. Not only that, I have to remove the imaginary part of the Eigenvalues (I don't care about the frequency of oscillation).
Thank you so much for the help!
German

 Accepted Answer

hi, try :
max(abs(eig(M)));

2 Comments

Thanks, Youssef, but this doesn't help me. It only partially solves the problem: It takes away the imaginary part of the numbers, yes, but I still have the problem of evaluating the "second highest" number in an auntomatic way......... :(
i think the values are sorted no? ok try to use the function sort :
M=rand(10);
L=sort(abs(eig(M)),'descend');
N=L(2); % second highest number
% or without the || operator
%N2=sort(eig(M),'descend');

Sign in to comment.

More Answers (1)

FYI, there is a documentation example that is similar to the answer that Youssef gave.
Alan Weiss
MATLAB mathematical toolbox documentation

Community Treasure Hunt

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

Start Hunting!