W * diag(S) * W' 形式的矩阵的特征分解MATLAB 中的矩阵指数
W
是一个又高又瘦的实值矩阵,diag(S)
是一个对角矩阵,由 +1
或 -1 组成
在对角线上。我想要 A = W * diag(S) * W' 的特征分解,其中单引号表示转置。主要问题是 A
太大了。由于 A
是对称的,秩不足,而且我实际上知道 A
的最大秩(来自 W
),我认为我应该能够有效地做到这一点。知道如何解决这个问题吗?
我的最终目标是在不使用 MATLAB 的 expm
的情况下计算 A
的矩阵指数,这对于大矩阵来说非常慢,并且没有利用秩缺陷。如果 A = U * diag(Z) * U'
是特征分解,则 exp(A) = U * diag(exp(Z)) * U'
。
虽然找到一个正交 U
使得 W * diag(S) * W' = U' * diag(Z) * U'
看起来很有希望有一个简单的算法,但我这里需要一些线性代数的帮助。
W
is a tall and skinny real valued matrix, and diag(S)
is a diagonal matrix consists of +1
or -1
on the diagonal. I want the eigen decomposition of A = W * diag(S) * W'
where single quote denotes transposition. The main problem is that A
is pretty big. Since A
is symmetric, rank deficient, and I actually know the maximum rank of A
(from W
), I think I should be able to do this efficiently. Any idea how to approach this?
My eventual goal is to compute the matrix exponential of A
without using MATLAB's expm
which is pretty slow for big matrices and does not take advantage of rank deficiency. If A = U * diag(Z) * U'
is the eigen decomposition, exp(A) = U * diag(exp(Z)) * U'
.
While finding an orthogonal U
such that W * diag(S) * W' = U' * diag(Z) * U'
looks promising to have an easy algorithm, I need some linear algebra help here.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我首先对 W 执行所谓的“薄”QR 分解,然后计算
R*diag(S)*R'
的特征值分解,然后用它来计算 A 的 eig 分解。希望这有帮助。
一个。
I'd first perform the so called 'thin' QR factorization of W, then compute the eigenvalue decomposition of
R*diag(S)*R'
, then use this to compute the eig decomposition of A.Hope this helps.
A.
MATLAB 实际上有一个用于检索最大(或最小)特征值和向量的实现。使用 eigs(A,k) 获取最大的 k。
为了仅获得最大的,可以使用幂迭代方法,或者更好的瑞利商迭代。
MATLAB actually has an implementation for retrieving the largest (or smallest) eigen values and vectors. Use
eigs(A,k)
to get thek
largest.To get the largest only, one can use the Power iteration method, or better yet Rayleigh quotient iteration.