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


Julia LinearAlgebra.SymTridiagonal用法及代码示例


用法一

SymTridiagonal(dv::V, ev::V) where V <: AbstractVector

分别从对角线 (dv) 和第一个 sub/super-diagonal (ev) 构造对称三对角矩阵。结果是类型SymTridiagonal 并提供高效的专用特征求解器,但可以使用 convert(Array, _) (或简称Array(_))转换为常规矩阵。

对于SymTridiagonal 块矩阵,dv 的元素是对称的。参数ev 被解释为超对角线。来自下对角线的块是相应超对角线块的(物化)转置。

例子

julia> dv = [1, 2, 3, 4]
4-element Vector{Int64}:
 1
 2
 3
 4

julia> ev = [7, 8, 9]
3-element Vector{Int64}:
 7
 8
 9

julia> SymTridiagonal(dv, ev)
4×4 SymTridiagonal{Int64, Vector{Int64}}:
 1  7  ⋅  ⋅
 7  2  8  ⋅
 ⋅  8  3  9
 ⋅  ⋅  9  4

julia> A = SymTridiagonal(fill([1 2; 3 4], 3), fill([1 2; 3 4], 2));

julia> A[1,1]
2×2 Symmetric{Int64, Matrix{Int64}}:
 1  2
 2  4

julia> A[1,2]
2×2 Matrix{Int64}:
 1  2
 3  4

julia> A[2,1]
2×2 Matrix{Int64}:
 1  3
 2  4

用法二

SymTridiagonal(A::AbstractMatrix)

从对称矩阵 A 的对角线和第一个上对角线构造对称三对角线矩阵。

例子

julia> A = [1 2 3; 2 4 5; 3 5 6]
3×3 Matrix{Int64}:
 1  2  3
 2  4  5
 3  5  6

julia> SymTridiagonal(A)
3×3 SymTridiagonal{Int64, Vector{Int64}}:
 1  2  ⋅
 2  4  5
 ⋅  5  6

julia> B = reshape([[1 2; 2 3], [1 2; 3 4], [1 3; 2 4], [1 2; 2 3]], 2, 2);

julia> SymTridiagonal(B)
2×2 SymTridiagonal{Matrix{Int64}, Vector{Matrix{Int64}}}:
 [1 2; 2 3]  [1 3; 2 4]
 [1 2; 3 4]  [1 2; 2 3]

相关用法


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