密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アルゴリズムを使用するので,密行列でのみ使用できます.