【问题标题】:Find a matrix that gives same result when multiplied by a constant or another matrix找到与常数或另一个矩阵相乘时给出相同结果的矩阵
【发布时间】:2012-02-09 17:13:01
【问题描述】:

我遇到了像A*x=lambda*x 这样的问题,其中A 是有序的d*dx 是有序的d*c,而 lambda 是一个常数。 Alambda 是已知的,而矩阵 x 是未知的。 matlab有什么办法可以解决这个问题吗?? (类似于特征值,但xd*c 矩阵而不是向量)。

【问题讨论】:

    标签: matlab matrix linear-algebra eigenvalue


    【解决方案1】:

    如果我的理解正确,x 不一定有任何解决方案。如果A*x=lambda*x,那么x的任何一列y满足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 是否为特征值,并找到任何对应的特征向量。

    【讨论】:

      【解决方案2】:

      你可以改变这个问题。使用 x(:) 将 x 写为向量(大小为 d*c x 1)。然后可以将 A 重写为 d*c x d*c 矩阵,该矩阵沿对角线具有 A 的 c 个版本。

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

      【讨论】:

        【解决方案3】:

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

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

        对于 X 的所有列的相同 lambda 值,这必须是正确的。本质上,这意味着 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
        

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-05-25
          • 2019-11-15
          • 2015-01-24
          • 2016-12-11
          相关资源
          最近更新 更多