2016-09-21 157 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

对于该溶液中的符号工具箱所需的第一部分。因为我不手边的符号工具箱所以通过最大值提供的解决方案:

您有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指复数abs。 所以,我们追求的是数量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) 
相关问题