タグ

matrixに関するmoozのブックマーク (2)

  • C++の行列ライブラリ Eigenの紹介 - Preferred Networks Research & Development

    C++で行列計算をする場合に便利なライブラリEigenを紹介したいと思います。 ベクトル・行列演算は知っているからEigenの使い方だけを教えてくれというかたは最初の章は読み飛ばしてください。 — 多くの統計処理がベクトル・行列演算を用いるとコンパクトに表すことが知られています。ちょっと複雑そうにみえる問題も整理してみるとベクトル・行列演算で書ける場合が多いです。(ベクトル・行列という言葉に抵抗がある方はそれぞれを単に配列、配列の配列とでも思ってもらえればいいでしょう)。ベクトルの内積は\(u^T v = u_1 v_1 + u_2 v_2 + \ldots +\)として求められ、ベクトルのノルムは自分自身のベクトルとの内積の平方根、\(|u| = \sqrt{ u^T u} \)として求められます(以降ベクトルは全て列ベクトルを指すとします)。 例えば、あるユーザーの商品の購買履歴は、\

    C++の行列ライブラリ Eigenの紹介 - Preferred Networks Research & Development
  • Strassenのアルゴリズム - 行列の乗算の高速化

    シュトラッセンのアルゴリズム(Strassen algorithm)は、行列の積を高速に計算するアルゴリズムである。通常、行列同士の積を計算するにはの時間が必要だが、このアルゴリズムを用いると、の時間で計算できる[1]。1969年、フォルカー・シュトラッセンが開発した[1][2]。 便宜上、を偶数と考えて、以下のように部分行列に分解する。 そして、以下の七つの行列をつくる。 このとき、 の関係が成り立つ。 この関係を利用して計算すると、部分行列同士の乗算が、通常の方法では8回必要なのに、この方法では7回ですむようになり、計算時間が削減される。部分行列への分割を再帰的に行うことにより、さらに計算時間を削減することができる。 脚注[編集] ^ a b 奥村晴彦『C言語による最新アルゴリズム事典』技術評論社、1991年、51頁。ISBN 4-87408-414-1。 ^ Strassen, Vo

    mooz
    mooz 2013/12/27
    積算の回数を減らす
  • 1