XLPack 6.1
Julia API リファレンスマニュアル
読み取り中…
検索中…
一致する文字列を見つけられません

◆ dsyev()

function dsyev ( jobz::Char  ,
uplo::Char  ,
n::Integer  ,
a::Array{Float64}  ,
w::Array{Float64}   
)

固有値・固有ベクトル (対称行列)

目的
dsyevは実対称行列 A のすべての固有値, および, 必要により固有ベクトルを求める.
戻り値
info (Int32)
= 0: 正常終了
= -1: 入力パラメータ jobz の誤り (jobz != 'V'および'N')
= -2: 入力パラメータ uplo の誤り (uplo != 'U'および'L')
= -3: 入力パラメータ n の誤り (n < 0)
= -4: 入力パラメータ a の誤り
= -5: 入力パラメータ w の誤り
= i > 0: 収束しなかった. 中間結果の3重対角形の非対角要素のうちi個が0に収束しなかった.
引数
[in]jobz= 'N': 固有値のみ求める.
= 'V': 固有値と固有ベクトルを求める.
[in]uplo= 'U': Aの上三角部分を格納する.
= 'L': Aの下三角部分を格納する.
[in]n行列Aの行および列数. (n >= 0) (n = 0 の場合, 処理を行わずに戻る)
[in,out]a2次元配列 (Float64, n x n)
[in] n×n対称行列 A. uploに従い上三角部分あるいは下三角部分を格納する.
[out] jobz = 'V': info = 0の場合, 行列Aの正規直交固有ベクトルをaに返す.
  jobz = 'N': aの下三角部分(uplo = 'L'の場合)あるいは上三角部分(uplo = 'U'の場合)は対角部分を含め壊される.
[out]w1次元配列 (Float64, n)
info = 0の場合, 求められた固有値(昇順).
出典
LAPACK
使用例
対称行列Aの固有値・固有ベクトルを求める.
ただし,
( 2.20 -0.11 -0.32 )
A = ( -0.11 2.93 0.81 )
( -0.32 0.81 2.37 )
とする.
function TestDsyev()
n = 3
a = [ 2.2 -0.11 -0.32;
0.0 2.93 0.81;
0.0 0.0 2.37 ]
w = Vector{Cdouble}(undef, n)
info = dsyev('V', 'U', n, a, w)
println("w = ", w, ", info = ", info)
println("a:")
println(a)
end
function dsyev(jobz::Char, uplo::Char, n::Integer, a::Array{Float64}, w::Array{Float64})
固有値・固有ベクトル (対称行列)
実行結果
> TestDsyev()
w = [1.7070595491104588, 2.22943643244226, 3.5635040184472837], info = 0
a:
[-0.3993220772133821 0.894521385341403 -0.20093125644579898;
0.4810264443405481 0.3909945886772715 0.7846889775383503;
-0.7804841052161664 -0.2166903846320573 0.586421212707156]