todo & done

  • gimpをインストール中
    • 上手く行くかどうか。。。
      • db46のインストールに失敗
      • java のヘッダが無いと怒られている。遅いので明日。
  • 逆行列計算関数のデバッグ
    • boost ublasのlu_factorizeでこけている。
BOOST_UBLAS_CHECK (singular != 0 ||
                   detail::expression_type_check (prod (triangular_adaptor<matrix_type, unit_lower> (m),
                                                        triangular_adaptor<matrix_type, upper> (m)), cm), internal_logic ());

の後ろの型チェックでこけているらしい。変数singularがnon zeroという条件は、分解しようとしている行列が正則ということだと思う。
後ろのチェックは、m(分解された行列)の下三角部分(対角は1)と上三角部分の積の型が分解される前の行列と同じかどうかをチェックしているように見える。つまり、LU分解で得られたL, Uの積がちゃんと元の行列を再現するかどうか、みたいなイメージ?ただし、このちょっと前の部分で

swap_rows (pm, cm); 

というコードがあるが、これが何やっているかはまだ謎。帯行列の行を入れ替えると、元の帯行列とは違う型になっちゃうよな。。。眠くなってきたので明日に回す。