2016-09-21 5 views
0

У меня вопрос, когда я хочу рассчитать собственные значения и собственные векторы комплексной матрицы 4 * 4 M. Давайте рассмотрим пример:Как получить собственные значения и собственные векторы с определенным условием нормировки в Matlab

M =

[7,71 0,88 -0.47i 0.11i;

0,88 19,09 0.11i -0.02i;

-0.47i 0.11i -7.71 -0.88;

0.11i -0.02i -0,88 -3,44.]

Это что-то вроде, M*V=D*V, здесь V = [a1, a2, i *b1, i *b2], D это собственные. a1,a2,b1,b2 - реальные значения, а i - это мнимый индекс.

Если мы используем команду eig(M) непосредственно из MATLAB, это даст собственные с norm(V)=sqrt(a1^2+a2^2+b1^2+b2^2)=1

Но теперь мне нужны собственные значения с условием a1^2+a2^2+(i *b1)^2+(i *b2)^2=1 вместо norm(V)=1

Прокомментируйте, если кто-то получает подсказку. Большое спасибо.

С наилучшими пожеланиями, Майк

+0

В вашем примере кажется, что a1, a2, i * b1, i * b2 являются элементами одного из собственных векторов. Для вычисления нормы требуется принять 'abs', так что норма (V) = sqrt (abs (a1)^2 + abs (a2)^2 + abs (b1)^2 + abs (b2)^2) = 1 ; верно. Пожалуйста, добавьте M-матрицу к вопросу. и уточните и объясните, что именно вы хотите сделать. – rahnema1

+0

hi rahnema1, если я использую eig для вычисления, он автоматически нормализует собственные векторы как норму (V) = 1. Но теперь я хочу рассчитать с новой нормировкой собственных векторов. – Mike22LFC

+0

ответ обновлен! – rahnema1

ответ

0

Для первой части решения, необходимого символический набор инструментов. так как я не имею символический набор инструментов под руку, так что я предоставить решение по Maxima:

у вас есть 4 комплексные числа, образующие собственного вектора говорят:

A: a1 + %i * a2; 
B: b1 + %i * b2; 
C: c1 + %i * c2; 
D: d1 + %i * d2; 

%i символ представляет собой мнимую единицу. Норма 2 вектора является:

sqrt(cabs(A)^2 + cabs(B)^2 + cabs(C)^2 + cabs(D)^2). 

Здесь cabs означает комплексный абс. Таким образом, мы ищем число v таким образом, что если мы разделим элементы вектора на него результирующий вектор обладает этим свойством:

(cabs(A/v)^2 + cabs(B/v)^2 + (%i * cabs(C/v))^2 + (%i * cabs(D/v))^2) = 1; 

Мы можем решить уравнение для v:

A: a1 + %i * a2; 
B: b1 + %i * b2; 
C: c1 + %i * c2; 
D: d1 + %i * d2; 
eq: (cabs(A/v)^2 + cabs(B/v)^2 + (%i * cabs(C/v))^2 + (%i * cabs(D/v))^2) - 1; 
solve(eq , v); 

результат :

v = sqrt([a1^2 + a2^2 + b1^2 + b2^2 - c1^2 - c2^2 - d1^2 - d2^2 ]) 
    =sqrt (cabs(A)^2 + cabs(B)^2 - cabs(C)^2 - cabs(D)^2) 

Код Matlab для нормализации собственных векторов:

M=[... 

7.71 0.88 -0.47i 0.11i; 

0.88 19.09 0.11i -0.02i; 

-0.47i 0.11i -7.71 -0.88; 

0.11i -0.02i -0.88 -3.44]; 

% with nobalance eigenvector do not necessarily normalized 
[VEC, D] = eig(M, 'nobalance'); 
ABS2 = abs(VEC).^2; 
ABS2(3:4,:) = -ABS2(3:4,:); 
v = sqrt(sum(ABS2,1)); 
VEC = bsxfun(@rdivide,VEC, v)