找到一个与常数或另一个矩阵相乘时给出相同结果的矩阵
我遇到了类似 A*x=lambda*x
的问题,其中 A
的顺序为 d*d
, x 的阶数是
d*c
并且 lambda 是一个常量。 A
和 lambda
已知,矩阵 x
未知。 matlab中有没有办法解决这个问题? (与特征值类似,但 x 是 d*c 矩阵而不是向量)。
I have got a problem like A*x=lambda*x
, where A
is of order d*d
, x
is of order d*c
and lambda is a constant. A
and lambda
are known and the matrix x
is unknown.
Is there any way to solve this problem in matlab?? (Like eigen values but x
is a d*c
matrix instead of being a vector).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
更多
发布评论
评论(3)
如果我理解正确的话,
x
不一定有任何解决方案。如果A*x=lambda*x
,则x
的任意列y
满足A*y=lambda*y
>,因此x
的列只是对应于特征值lambda
的A
的特征向量,并且只有在lambda
实际上是一个特征值。来自文档:
您可以使用它来检查 lambda 是否是特征值,并找到任何相应的特征向量。
If I've understood you correctly, there will not necessarily be any solutions for
x
. IfA*x=lambda*x
, then any columny
ofx
satisfiesA*y=lambda*y
, so the columns ofx
are simply eigenvectors ofA
corresponding to the eigenvaluelambda
, and there will only be any solutions iflambda
is in fact an eigenvalue.From the documentation:
You can use this to check if
lambda
is an eigenvalue, and find any corresponding eigenvectors.你可以转化这个问题。使用 x(:) 将 x 写为向量(大小为 d*cx 1)。然后 A 可以重写为 ad*cxd*c 矩阵,该矩阵沿对角线具有 A 的 c 个版本。
现在这是一个简单的特征值问题。
You can transform this problem. Write x as vector by by using x(:) (has size d*c x 1). Then A can be rewritten to a d*c x d*c matrix which has c versions of A along the diagonal.
Now it's a simple eigenvalue problem.
这其实是微不足道的。您的要求是 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。V
的第二列是特征向量,特征值为 5。我们可以按任何常数任意缩放特征向量。现在选择向量 vec,并创建一个具有复制列的矩阵。
这应该不会令任何人感到惊讶。
Its actually trivial. Your requirement is that A*X = lambda*X, where X is an array. Effectively, look at what happens for a single column of X. If An array X exists, then it is true that
A*X(:,i) = lambda*X(:,i)
And this must be true for the SAME value of lambda for all columns of X. Essentially, this means that X(:,i) is an eigenvector of A, with corresponding eigenvalue lambda. More importantly, it means that EVERY column of X has the same eigenvalue as every other column.
So a trivial solution to this problem is to simply have a matrix X with identical columns, as long as that column is an eigenvector of A. If an eigenvalue has multiplicity greater than one (therefore there are multiple eigenvectors with the same eigenvalue) then the columns of X may be any linear combination of those eigenvectors.
Try it in practice. I'll pick some simple matrix A.
The second column of V is an eigenvector, with eigenvalue of 5. We can arbitrarily scale an eigenvector by any constant. So now pick the vector vec, and create a matrix with replicated columns.
This should surprise nobody.