一般来说,我们可以使用下面的代码来求矩阵的特征值和特征向量
A = magic(3);
[V,D,W] = eig(A)

但是我最近遇到了无法求左特征值的情况
clc,clear,close all
syms rho1 rho2 rho c1 c2 u
A = [rho2/(rho1+rho2)*u -rho1/(rho1+rho2)*u rho1/(rho1+rho2)
-rho2/(rho1+rho2)*u rho1/(rho1+rho2)*u rho2/(rho1+rho2)
c1^2-u^2 c2^2-u^2 2*u];
[V,D,W] = eig(A);
V = simplify(V)
D
W

求出的特征值居然是 [1,2,3],这显然是不对的。
对于这种情况,我采用了曲线救国的策略。众所周知:矩阵AAA的右特征向量是ATA^TAT的左特征向量。
所以我们可以求 ATA^TAT 的右特征向量,从而得到 AAA 的左特征向量。
clc,clear,close all
syms rho1 rho2 rho c1 c2 u
A = [rho2/(rho1+rho2)*u -rho1/(rho1+rho2)*u rho1/(rho1+rho2)
-rho2/(rho1+rho2)*u rho1/(rho1+rho2)*u rho2/(rho1+rho2)
c1^2-u^2 c2^2-u^2 2*u];
[V,D] = eig(A.');
V = simplify(V)

矩阵 VVV 中的每一列都是矩阵 AAA 的一个左特征向量
2023年3月1日11点02分

文章讨论了在MATLAB中遇到无法直接求得矩阵左特征值的情况。作者提供了一个曲线救国的方法,通过计算矩阵转置的特征向量来获取原矩阵的左特征向量。具体做法是先计算A的转置A的特征向量,然后这些向量即为A的左特征向量。这种方法在处理特定形式的矩阵时可能更为有效。
2296

被折叠的 条评论
为什么被折叠?



