密QR分解,固有値および固有ベクトル¶
以下の手続きは,密実行列と複素数行列としてファイル gmm/gmm\_dense\_qr.h
の中で利用できます.
gmm::qr_factor(M, Q, R) // compute the QR factorization of M in Q and R
// (Householder version)
implicit_qr_algorithm(M, eigval, double tol = 1E-16) // compute the
// eigenvalues of M using the implicit QR factorisation (Householder and
// Francis QR step version). eigval should be a vector of appropriate size
// in which the eigenvalues will be computed. If the matrix have
// complex eigenvalues, please use a complex vector.
implicit_qr_algorithm(M, eigval, shvect, double tol = 1E-16) // idem,
// compute additionally the schur vectors in the matrix shvect.
symmetric_qr_algorithm(M, eigval, double tol = 1E-16) // idem for symmetric
// real and hermitian complex matrices (based on Wilkinson QR step)
symmetric_qr_algorithm(M, eigval, eigvect, double tol = 1E-16) // idem,
// compute additionally the eigenvectors in the matrix eigvect.
Remark: 非エルミート行列に対する固有ベクトルの計算はまだ実装されていません.LAPACKインターフェイスから geev_interface_left
関数と geev_interface_right
関数を使用できます ( gmm/gmm_lapack_interface.h
を参照してください).これらのLAPACK関数は,左右の固有ベクトルを計算します.
ファイル gmm/gmm\_condition\_number.h
で定義されている以下の関数は
gmm::condition_number(M)
行列 M
の条件数を計算します.この関数は密なQRアルゴリズムを使用するので,密行列でのみ使用できます.