タグ

ブックマーク / yano.hatenadiary.jp (3)

  • Boost.uBLAS でQR分解 - yanoの日記

    前回の特異値分解に続いて,今回はQR分解を実装してみます. 特異値分解はあっけないほど単純に実装できたのですが,QR分解はそれよりも少し長くなります. なぜなら,特異値分解は lapack.dgesvd(lapack.dgesdd) を呼び出すだけで良かったのですが,QR分解は lapack.dgeqrf と lapack.dorgqr を呼び出さなければいけないからです. 以下に私の実装例を示します. math.hpp #ifndef MATH_HPP_20080923 #define MATH_HPP_20080923 #if defined(_MSC_VER) && (_MSC_VER >= 1020) # pragma once #endif #include <boost/numeric/ublas/fwd.hpp> namespace math { void qr_factor

    Boost.uBLAS でQR分解 - yanoの日記
  • Boost.uBLAS で特異値分解(SVD) - 高速版 - yanoの日記

    前回は bindings.lapack.gesvd による特異値分解を紹介しました. lapack にはもう一つ特異値分解を行う関数があります. それが今回紹介する bindings.lapack.gesdd(lapack.dgesdd) になります. gesvd との違いは分割統治法(divide-and-conquer method)により処理を高速化したことです. 早速実装してみましょう(前回の math.hpp と test.cpp は変更を加える必要がありません). math.cpp #include "math.hpp" #include <algorithm> #include <vector> #include <boost/numeric/ublas/banded.hpp> #include <boost/numeric/ublas/matrix.hpp> #define

    Boost.uBLAS で特異値分解(SVD) - 高速版 - yanoの日記
    rin1024
    rin1024 2009/07/13
  • Boost.uBLAS で特異値分解(SVD) - yanoの日記

    Boost.uBLAS と Boost.Bindings, clapack をインストールした今,特異値分解を簡単に実装することができます. というのも,Boost.Bindings を通して bindings.lapack.gesvd(lapack.dgesvd) を呼び出すだけだからです. 以下に私の実装例を示します. math.hpp #ifndef MATH_HPP_20090501 #define MATH_HPP_20090501 #if defined(_MSC_VER) && (_MSC_VER >= 1020) # pragma once #endif #include <boost/numeric/ublas/fwd.hpp> namespace math { void svd(const boost::numeric::ublas::matrix<double>& A

    Boost.uBLAS で特異値分解(SVD) - yanoの日記
    rin1024
    rin1024 2009/07/13
  • 1