Julia中特征分解得到向量型特征值如何重构原矩阵
问题解决方法
你遇到的报错本质是因为一维特征值向量和矩阵做*矩阵乘法时会被视为列向量,3×3的特征向量矩阵V乘3×1的λ得到3×1列向量,无法和3×3的inv(V)匹配维度。有两种常用方案实现矩阵重构:
方案1:构造对角阵(最贴合公式逻辑)
直接用LinearAlgebra内置的Diagonal()函数把特征值向量转换为对角矩阵,完全匹配你提到的$A = V\lambda V^{-1}$公式,修正后代码如下:
using LinearAlgebra # 创建矩阵 A = rand(3, 3) # 特征分解 AEig = eigen(A) λ = AEig.values V = AEig.vectors # 转换为对角阵后计算 Acomp = V * Diagonal(λ) * inv(V) # 验证结果,返回true A ≈ Acomp
方案2:高效优化写法
不需要手动计算逆矩阵,用矩阵右除运算降低计算开销,结果和方案1完全一致:
Acomp = V * (Diagonal(λ) / V)
如果追求简写不想显式构造对角阵,也可以用广播写法实现等价计算,可读性略低于显式构造对角阵:
Acomp = V * (λ .* inv(V))
内容的提问来源于stack exchange,提问作者Pål Bjartan
相关产品推荐
相关产品推荐

