gnuplot で Fitting

2016-11-30 :  PCクリニック
Python、C言語、Perl、化学業界、硝子業界、グルコサミン、Firefox
2月(2016-02-01)の記事「Lua 学習:The GSL Shell Project」で書いた:
  「Lua 学習」もそれなりに進んできた。
  では、“関数フィッティング”はどうなの?
  取り敢えず、「Lua Curve Fitting」と検索してみた。
  ・・・・・
  ・・・・・
これで、GSL Shellを見つけ、
続く(2016-02-04の)記事「GSL Shell 学習:Linear Least Squares fit」など、
数件記事にしている


前(2016-11-28)の記事「gnuplot 学習:インラインデータ」に続いて、
gnuplotマニュアルの日本語訳(5.0.5版だが)を見ていたら、・・・・・

  ・・・・・
  ・・・・・
  Fit
  コマンドfit は、Marquardt-Levenberg 法による非線形最小自乗法(NLLS)
  を用いて、データ点の集合にユーザが与える式を当てはめます。
  独立変数は 12 まで許されていて、従属変数は常に 1 つで、
  任意個数のパラメータを当てはめることができます。
  さらに追加で、データ点の重み付け用に誤差評価を入力することも可能です。

  fit の最も基本的な使用法は、以下の単純な例が示しています:
    f(x) = a + b*x + c*x**2
    fit f(x) 'measured.dat' using 1:2 via a,b,c
    plot 'measured.dat' u 1:2, f(x)
  ・・・・・
  ・・・・・

があった。


これは、2月24日の記事「GSL Shell 学習:Nonlinear Least Squares Fit
で書いたコードに比べ、大変シンプルだ。
それでは、ヤコビアンとか云う面倒な記述が必要!


そうすると、
Luaからgnuplotを呼び出して、
fitの実行結果から係数を受け取る。


それはどうすればイイ?

1.(デフォルトでは)処理経過が、コンソールに出力される。
2.“fit”の実行結果は、「fit.log」なるファイルに出力される。

なので、
1.に対しては「set fit quiet」とする。
2.に対しては「fit.log」ファイルを解読して、・・・・・

2月24日の記事に相当するデータと関数でやってみた。
$D << EOD
5 0.67
7 0.84
8 1.29
9 1.25
10 0.69
13 0.35
15 0.18
17 0.09
18 0.02
EOD

f(x) = a*x**3 + b*x**2 + c*x + d
fit f(x) $D via a,b,c,d
なる“test.plt”を作って実行。

「fit.log」ファイルを見ると、
・・・・・
・・・・・

Final set of parameters Asymptotic Standard Error
======================= ==========================
a = 0.00311474 +/- 0.001226 (39.36%)
b = -0.115066 +/- 0.04207 (36.56%)
c = 1.23526 +/- 0.4508 (36.49%)
d = -3.03341 +/- 1.503 (49.54%)

・・・・・
・・・・・
という部分があった。
これが求めたい係数ですね。

因みに、
当時記事には書いてないが“GSL Shell”で求めた係数は、
  a = 0.00309704
  b = -0.11455273
  c = 1.2309695
  d = -3.019161
で、
カイ二乗は、 0.46154972279974
でした。


このgnuplotに依る方式は、イタダキですね。

Luaからの利用では、
「fit.log」を読み込んで、
求まった係数の部分を、先頭30文字分ほど抜き出し、
1月の記事「Lua 学習:eval 関数」で書いた
assert( load( <文字列> ) )()
を使えば取り込めますネ。


本日はここまで。


Lua ( GSL Shell ) & gnuplot 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


161103,08
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
09 | 2017/10 | 11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク