找到一个矩阵,当乘以常量或另一个矩阵时,该矩阵给出相同的结果

时间:2012-02-09 17:13:02

标签: matlab matrix linear-algebra eigenvalue

我遇到类似A*x=lambda*x的问题,其中A的顺序为d*dx的顺序为d*c,而lambda是常量。已知Alambda,矩阵x未知。 有没有办法在matlab中解决这个问题? (与特征值类似,但xd*c矩阵,而不是矢量)。

3 个答案:

答案 0 :(得分:2)

如果我理解正确,x就不一定有任何解决方案。如果A*x=lambda*x,那么y的任何列x都会满足A*y=lambda*y,因此x的列只是A对应于特征值的特征向量lambda,如果lambda实际上是特征值,则只会有任何解决方案。

来自documentation

  

[V,D] = eig(A)产生特征值矩阵(D)和特征向量   (V)矩阵A,使得A * V = V * D.矩阵D是规范形式   A - 在主对角线上具有A的特征值的对角矩阵。   矩阵V是模态矩阵 - 它的列是A的特征向量。

您可以使用它来检查lambda是否是特征值,并找到任何相应的特征向量。

答案 1 :(得分:0)

您可以转换此问题。通过使用x(:)将x写为向量(具有大小d * c x 1)。然后可以将A重写为d * c x d * c矩阵,该矩阵沿对角线具有C个版本的A.

现在这是一个简单的特征值问题。

答案 2 :(得分:0)

它实际上是微不足道的。你的要求是A * X = lambda * X,其中X是一个数组。实际上,看看单个X列会发生什么。如果存在一个数组X,那么

就是这样

A * X(:,i)= lambda * X(:,i)

对于X的所有列,对于λ的SAME值必须如此。实际上,这意味着X(:,i)是A的特征向量,具有相应的特征值lambda。更重要的是,它意味着X的每一列都具有与其他每列相同的特征值。

因此,对这个问题的一个简单的解决方案是简单地使用具有相同列的矩阵X,只要该列是A的特征向量。如果特征值具有大于1的多重性(因此存在具有相同特征值的多个特征向量)然后X的列可以是那些特征向量的任何线性组合。

在实践中尝试。我会选择一些简单的矩阵A.

>> A = [2 3;3 2];
>> [V,D] = eig(A)
V =
     -0.70711      0.70711
      0.70711      0.70711
D =
           -1            0
            0            5

V的第二列是特征向量,特征值为5.我们可以通过任意常数任意地缩放特征向量。所以现在选择矢量vec,并创建一个包含复制列的矩阵。

>> vec = [1;1];
>> A*[vec,vec,vec]
ans =
     5     5     5
     5     5     5

这应该让任何人都感到惊讶。