【问题标题】:Eigendecomposition and "composition" in JuliaJulia 中的特征分解和“组合”
【发布时间】:2021-07-20 13:13:50
【问题描述】:

我在 Julia 中经历了一些 tutorial on factorization。为了练习,我尝试从矩阵中提取特征分解并重新创建原始矩阵,使用公式:

A = VλV⁻¹

其中 V 是特征向量矩阵,λ 是特征值对角矩阵,V⁻¹ 是倒矩阵 V。

让我感到困惑的是,特征值是作为向量返回的,而我发现的 guides 表明它应该作为对角矩阵返回。

代码示例:

using LinearAlgebra

# Create matrix
A = rand(3, 3)

# Eigendecomposition
AEig = eigen(A)

λ = AEig.values
 3-element Vector{Float64}:
 
V = AEig.vectors
 3×3 Matrix{Float64}:
  
Acomp = V*λ*inv(V)

A ≈ Acomp

尝试将向量和矩阵相乘会返回错误:

DimensionMismatch("A has dimensions (3,1) but B has dimensions (3,3)")

这是因为将 V 与 λ 相乘返回一个 3 元素向量,然后尝试将其与 V⁻¹ 相乘,这是一个 3×3 矩阵。我的问题是,有没有一种直接的方法可以从向量创建对角矩阵?或者,是否可以通过另一种方式实现对原始矩阵的“重组”?

【问题讨论】:

    标签: julia matrix-multiplication eigenvalue matrix-decomposition


    【解决方案1】:

    您可以使用LinearAlgebra 中的单位矩阵,显示为I,如下所示:

    julia> λ                                                                                                                
    3-element Vector{Float64}:                                                                                               
    -0.4445656542213612                                                                                                      
    0.5573883013610712                                                                                                      
    1.310095519651262
    
    julia> λ .* I(3)                                                                                                        
    3×3 Matrix{Float64}:                                                                                                     
    -0.444566  -0.0       -0.0                                                                                               
    0.0        0.557388   0.0                                                                                               
    0.0        0.0        1.3101 
    

    .* 表示向量的每个元素都与矩阵的相应行相乘。

    [编辑:] 在使用Diagonal() 函数发布问题后,我发现了另一种创建对角矩阵的方法。虽然上述解决方案有效,但这创建了一些更简单的语法:

    julia> Diagonal(λ)
    3×3 Diagonal{Float64, Vector{Float64}}:
     -0.444566   ⋅         ⋅ 
       ⋅        0.557388   ⋅ 
       ⋅         ⋅        1.3101
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-30
      • 2021-06-19
      • 1970-01-01
      • 1970-01-01
      • 2018-06-03
      相关资源
      最近更新 更多