|
|
◆ dsyev()
| def dsyev |
( |
jobz |
, |
|
|
uplo |
, |
|
|
n |
, |
|
|
a |
, |
|
|
w |
|
|
) |
| |
固有値・固有ベクトル (対称行列)
- 目的
- dsyevは実対称行列 A のすべての固有値, および, 必要により固有ベクトルを求める.
- 戻り値
- info (int)
= 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] | a | Numpy ndarray (2次元配列, float, n x n)
[in] n×n対称行列 A. uploに従い上三角部分あるいは下三角部分を格納する.
[out] jobz = 'V': info = 0の場合, 行列Aの正規直交固有ベクトルをaに返す.
jobz = 'N': aの下三角部分(uplo = 'L'の場合)あるいは上三角部分(uplo = 'U'の場合)は対角部分を含め壊される. |
| [out] | w | Numpy ndarray (1次元配列, float, n)
info = 0の場合, 求められた固有値(昇順). |
- 出典
- LAPACK
- 使用例
- 対称行列Aの固有値・固有ベクトルを求める.
ただし, ( 2.20 -0.11 -0.32 )
A = ( -0.11 2.93 0.81 )
( -0.32 0.81 2.37 )
とする. def TestDsyev():
n = 3
a = np.array([
[2.2, 0.0, 0.0],
[-0.11, 2.93, 0.0],
[-0.32, 0.81, 2.37]])
w = np.empty(3)
info = dsyev( 'V', 'U', n, a, w)
print(w, info)
print(a)
def dsyev(jobz, uplo, n, a, w) 固有値・固有ベクトル (対称行列)
- 実行結果
>>> TestDsyev()
[1.70705955 2.22943643 3.56350402] 0
[[-0.39932208 0.48102644 -0.78048411]
[ 0.89452139 0.39099459 -0.21669038]
[-0.20093126 0.78468898 0.58642121]]
|