找到一个矩阵,当乘以常量或其他矩阵时,该矩阵会产生相同的结果



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

如果我理解正确,x不一定有任何解决方案. 如果A*x=lambda*x,则任何x的列y都满足A*y=lambda*y,所以x的列只是对应于特征值lambdaA的特征向量,并且只有当lambda实际上是特征值时才会有任何解。

从文档中:

[V,D] = eig(A( 生成特征值 (D( 和特征向量的矩阵 矩阵 A 的 (V(,因此 A*V = V*D.矩阵 D 是 的规范形式 A — 主对角线上有 A 的特征值的对角矩阵。 矩阵 V 是模态矩阵 — 它的列是 A 的特征向量。

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

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

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

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

A*X(:,i( = lambda*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

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

相关内容

  • 没有找到相关文章

最新更新