3

我遇到了一个问题A*x=lambda*x,比如哪里A是有序的d*dx是有序的d*c,而 lambda 是一个常数。A并且lambda是已知的并且矩阵x是未知的。matlab有什么办法可以解决这个问题吗??(像特征值,但x它是一个d*c矩阵而不是一个向量)。

4

3 回答 3

2

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

文档中:

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

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

于 2012-02-09T17:37:29.097 回答
0

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

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

于 2012-02-09T19:51:23.983 回答
0

它实际上微不足道。您的要求是 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

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

于 2012-02-10T00:14:19.843 回答