数値解析日記

数値解析関係のネタ帳。C++,pythonなど

pythonの区間演算ライブラリ進捗2015-09-22

成果

  • interval型の配列をplotする plotinfsup,plotlengthを作成した。

反省

  • しかし、実装がとても汚いので、公開には遠い
  • 理想はplotinfsup(x,y)でplotできるようにすること

とある場所で進捗を発表したら、フィードバックがあったので。

今後の方針

行列の実装

plotinfsup(x,y)やplotlength(x,y)を実装するにしても、他のことをやるにしても、行列の実装は避けられない。
しかし、高速に行列演算を実行するnumpyのndarrayクラスは、あらかじめ決められた型でしか利用することができない。
自分でBLASを使って書くことは不可能に近いので、ndarrayクラスを利用して書いていくことになる。改善案として、以下の2つを考えた。

  1. 新しいinterval型arrayクラスを作成し、内部にndarrayクラスの行列を格納する。
    内部にintervalarray.infarray,intervalarray.suparrayという、double型のndarray配列を用意し、格納する。
    しかし、以下のような問題が発生する。
  • 確保するメモリの最適化
    infarray,suparrayのように二つに分割すると、連続したメモリ領域を確保することができない。大きく配列を確保して、分割する方法でも可能だが、
  • 計算順序の複雑化
    悪夢
  1. numpyのソースを書き換える。またはnumpyを継承して、interval型を追加する。
    numpyのソースをダウンロードして、ソースを少し見たらSAN値が下がって、一時的狂気に陥った。
    ソースを読む手間や作業量を考えると、効率が悪いように見える。C++のテンプレート機能が恋しくなった。