2003年12月23日(火)

最小二乗 by gsl

プログラムの中から最小二乗 fit のライブラリを使いたくてちょっと調べる。
モンテカルロ的に状況を変えながら最小二乗で得られた値を指標に使おうと思っているのでインタラクティブなの操作がいるものは没。 Mathematica は使ったことがないので没(笑)。

折角なので gsl でやろうかと思うと、これがあきれるほど面倒で参ってしまう。
汎用的なデザイン、というつもりなのかもしれないが、実質的に利用可能なアルゴリズム1種、導関数必須、データ構造決め打ち、最後に収束判定は自分で書けと来た。

萎えるな〜。 C++ でガワを作っとくかな。

用意するもの

  • fit しようするデータ列 y[]
  • fit する関数による残差列 f(x)-y[]を計算して書き込む関数
  • 同じく、各 fitting parameter で偏微分した jacobi 行列を作る関数
  • 上二つを実行する関数…
  • 上3つの関数、データ点数、パラメータ数、実データへのポインタを持つ構造体(上述の関数に引数で渡る)、へのポインタを持つ構造体
  • アルゴリズムを指す変数
  • malloc される solver へのポインタ

プログラムの流れ

  1. 上述構造体を埋める
  2. fitting parameter を gsl のベクトルに
  3. solver の初期化
  4. イテレートする
  5. テスト関数でテスト
  6. イテレーションを継続するか考える
  7. 共分散行列を計算
  8. そこから fit 結果を抽出

[referer:

Script Error

The script did not produce proper HTTP headers. Please see the error log to see the detail of the errors. Depending on the server configuration, you can also run thisscript under CGIWrap debugging. Usually, either rename or linkthe script temporarily to a file which ends with .cgidextension, or add a AddHandler cgi-script-debug .cgiline to your .htaccess file.

]

あわせて読みたい