MATLAB Function Reference | ![]() ![]() |
表示
R = chol(X) [R,p] = chol(X)
詳細
chol
は、X
の対角部分と上三角部分のみを使います。下三角部分は上三角部分の(複素共役)転置と考えられます。X
は、エルミート行列です。
R = chol(X)
は、X
が正定行列のとき、R'*R
=
X
となる上三角行列 R
を作成します。X
が正定行列でなければ、エラーメッセージが表示されます。
[R,p] = chol(X)
は、2 つの出力引数を使って、エラーメッセージを表示しません。X
が正定行列ならば、p
は 0 で R
は上記と同じです。X
が正定行列でなければ、p
は正の整数で、R
は、R'*R
=
X(1:q,1:q
) となる次数q
=
p-1
の上三角行列です。
例題
n = 5; X = pascal(n) X = 1 1 1 1 1 1 2 3 4 5 1 3 6 10 15 1 4 10 20 35 1 5 15 35 70
興味深いことに、コレスキ 分解は上三角行列に並べられた係数と同じ係数をもっています。
R = chol(X) R = 1 1 1 1 1 0 1 2 3 4 0 0 1 3 6 0 0 0 1 4 0 0 0 0 1
最後の要素から 1 を引くことで正定性を壊すことができ、特異行列を実際に作ることができます。
X(n,
n) = X(n,
n)-1 X = 1 1 1 1 1 1 2 3 4 5 1 3 6 10 15 1 4 10 20 35 1 5 15 35 69
アルゴリズム
chol
は、LINPACK のサブルーチン ZPOFA
のアルゴリズムを使います。コレスキ分解の使用の詳細は、LINPACK Users' Guide の第 8 章を参照してください。
参考文献
Anderson, E., Z. Bai, C. Bischof, S. Blackford, J. Demmel, J. Dongarra, J. Du Croz, A. Greenbaum, S. Hammarling, A. McKenney, and D. Sorensen, LAPACK User's Guide, Third Edition, SIAM, Philadelphia, 1999.
参考
![]() | checkout | cholinc | ![]() |