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

 Akzeptierte Antwort

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

2 Kommentare

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');

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

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

Kategorien

Mehr zu Eigenvalues & Eigenvectors finden Sie in Hilfe-Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by