当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Julia LinearAlgebra.eigen用法及代码示例


用法一

eigen(A; permute::Bool=true, scale::Bool=true, sortby) -> Eigen

计算 A 的特征值分解,返回一个 Eigen 分解对象 F,其中包含 F.values 中的特征值和矩阵 F.vectors 列中的特征向量。 (k 特征向量可以从切片 F.vectors[:, k] 中获得。)

迭代分解产生组件 F.valuesF.vectors

以下函数可用于 Eigen 对象: inv det isposdef

对于一般的非对称矩阵,可以在特征向量计算之前指定如何平衡矩阵。选项permute=true 将矩阵置换为更接近上三角形,而scale=true 将矩阵按其对角线元素缩放以使行和列在范数上更加相等。两个选项的默认值为true

默认情况下,特征值和向量按字典顺序按 (real(λ),imag(λ)) 排序。可以将不同的比较函数 by(λ) 传递给 sortby ,或者您可以传递 sortby=nothing 以任意顺序保留特征值。一些特殊的矩阵类型(例如 Diagonal SymTridiagonal )可能会实现自己的排序约定并且不接受 sortby 关键字。

例子

julia> F = eigen([1.0 0.0 0.0; 0.0 3.0 0.0; 0.0 0.0 18.0])
Eigen{Float64, Float64, Matrix{Float64}, Vector{Float64}}
values:
3-element Vector{Float64}:
  1.0
  3.0
 18.0
vectors:
3×3 Matrix{Float64}:
 1.0  0.0  0.0
 0.0  1.0  0.0
 0.0  0.0  1.0

julia> F.values
3-element Vector{Float64}:
  1.0
  3.0
 18.0

julia> F.vectors
3×3 Matrix{Float64}:
 1.0  0.0  0.0
 0.0  1.0  0.0
 0.0  0.0  1.0

julia> vals, vecs = F; # destructuring via iteration

julia> vals == F.values && vecs == F.vectors
true

用法二

eigen(A, B) -> GeneralizedEigen

计算 AB 的广义特征值分解,返回一个 GeneralizedEigen 分解对象 F,其中包含 F.values 中的广义特征值和矩阵 F.vectors 列中的广义特征向量。 (第 k 个广义特征向量可以从切片 F.vectors[:, k] 中获得。)

迭代分解产生组件 F.valuesF.vectors

传递给 eigen 的任何关键字参数都会传递给 lower-level eigen! 函数。

例子

julia> A = [1 0; 0 -1]
2×2 Matrix{Int64}:
 1   0
 0  -1

julia> B = [0 1; 1 0]
2×2 Matrix{Int64}:
 0  1
 1  0

julia> F = eigen(A, B);

julia> F.values
2-element Vector{ComplexF64}:
 0.0 - 1.0im
 0.0 + 1.0im

julia> F.vectors
2×2 Matrix{ComplexF64}:
  0.0+1.0im   0.0-1.0im
 -1.0+0.0im  -1.0-0.0im

julia> vals, vecs = F; # destructuring via iteration

julia> vals == F.values && vecs == F.vectors
true

用法三

eigen(A::Union{SymTridiagonal, Hermitian, Symmetric}, irange::UnitRange) -> Eigen

计算 A 的特征值分解,返回一个 Eigen 分解对象 F,其中包含 F.values 中的特征值和矩阵 F.vectors 列中的特征向量。 (k 特征向量可以从切片 F.vectors[:, k] 中获得。)

迭代分解产生组件 F.valuesF.vectors

以下函数可用于 Eigen 对象: inv det isposdef

UnitRange irange 指定要搜索的排序特征值的索引。

注意

如果 irange 不是 1:n ,其中 nA 的维度,则返回的分解将是 truncated 分解。

用法四

eigen(A::Union{SymTridiagonal, Hermitian, Symmetric}, vl::Real, vu::Real) -> Eigen

计算 A 的特征值分解,返回一个 Eigen 分解对象 F,其中包含 F.values 中的特征值和矩阵 F.vectors 列中的特征向量。 (k 特征向量可以从切片 F.vectors[:, k] 中获得。)

迭代分解产生组件 F.valuesF.vectors

以下函数可用于 Eigen 对象: inv det isposdef

vl 是要搜索的特征值窗口的下限,vu 是上限。

注意

如果 [ vl , vu ] 不包含 A 的所有特征值,则返回的分解将是 truncated 分解。

相关用法


注:本文由纯净天空筛选整理自julialang.org 大神的英文原创作品 LinearAlgebra.eigen — Function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。