当我想计算复数4 * 4矩阵M
的特征值和特征向量时,我有一个问题。
我们来举个例子:
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
是虚数索引。
如果我们直接从MATLAB使用命令eig(M)
,它将给出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 :(得分: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)