GSL Shell 学習:Nonlinear Least Squares Fit

2016-02-24 :  PCクリニック
本文の前に、
-・・・ -・-
現時点での blogramのランクインカテゴリは、
7、2、0、0、1、 0、0、0、0、0(40)で、換算ポイント 88pt 。
「化学業界」「硝子業界」「FM COCOLO」「e-radio」、
「グルコサミン」「Firefox」bg値変動のみ。
「Perl」「C言語」「Python」「FM青森」全く変化無し。
・-・ - -・

さて、本文。(これも Lua 学習?)

GSL shell documentation」の、
13章「Nonlinear Least Squares fit
書き出しは、
  GSL Shell provides support for nonlinear least squares fitting
  for user-defined data and functions.

===例の翻訳サイトの結果:

  GSL シェルは、非線形最小二乗フィッティング関数と
  ユーザー定義データをサポートします。

こんなものかな???

  GSL Shell は、ユーザ定義のデータと関数に対する、
  非線形最小二乗近似の機能を提供する。

でしょうか?

で、恥ずかしながら<紙>は、
ヤコビアン
がなかなか理解できない。

なんとか分かったようなので、

Lua ( GSL Shell )で、1本コーディング:
9点のデータを3次式で近似
X = matrix.vec{ 5, 7, 8, 9, 10, 13, 15, 17, 18 }
Y = matrix.vec{ 0.67, 0.84, 1.29, 1.25, 0.69, 0.35, 0.18, 0.09, 0.02 }
------- Y ~ a * X^3 + b * X^2 + c * X + d で近似

n = #X
function fdf( k, f, J ) -- ( 係数、関数、ヤコビアン )
for i=1, n do
local a, b, c, d = k[1], k[2], k[3], k[4]
local x, y = X[i], Y[i]
if f then f[i] = ( (a*x^3+b*x^2+c*x+d) - y ) end -- (近似関数 - 観測値)
if J then
J:set( i, 1, x^3 )
J:set( i, 2, x^2 )
J:set( i, 3, x )
J:set( i, 4, 1 )
end
end
end

s = num.nlinfit{ n=n, p=4 } -- 観測値の数、係数の数
s:set( fdf, matrix.vec{ 1, 0, 0, 0 } ) -- 係数の初期推定値
for i=1, 100 do
s:iterate() -- 繰り返し計算
if s:test( 0, 1e-8 ) then break end
end
print( s.x, s.chisq ) -- 求めた係数、カイ二乗

p = graph.plot( 'TEST Fitting Graph' )
g = graph.xyline( X, Y ) -- 観測値:マーク
p:addline( g, 0x0000FFFF, {{'marker', size=5}} )
a, b, c, d = s.x[1], s.x[2], s.x[3], s.x[4]
h = graph.fxline( |x| a*x^3+b*x^2+c*x+d, X[1], X[n] )
p:addline( h ) -- 近似関数:折れ線

p:show()
これでイイのかな???


更なる学習ダ。


本日はここまで。


Lua ( GSL Shell ) 学習は続く。


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


160123-24
関連記事
スポンサーサイト

コメントの投稿

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

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



おきてがみ

最新記事
カレンダー
05 | 2017/06 | 07
- - - - 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 -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

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

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


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

Google Analytics
ブックマーク