GSL:直線近似(Fitting)

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

さて、本文。

4ヶ月前(2016-02-04)の記事「GSL Shell 学習:Linear Least Squares fit
の後、フィッティングについて更に学習していたが、・・・・・

折角の“GSL Shell”なのだから、「GSL - GNU Scientific Library」に何かあるのでは?


やはり、
Reference Manual」に載っていました。

「38 Least-Squares Fitting」の
38.2 Linear regression
  The functions in this section are used to fit simple one or two
   parameter linear regression models.
   ・ Linear regression with a constant term:
   ・ Linear regression without a constant term:

つまり、
定数項がある“ Y ~ a X + b ”
定数項の無い“ Y ~ a X ”
の2つ。

と云うことで、コーディングしてみた。

gsl = require'gsl'
ffi.cdef[[
int gsl_fit_linear( double* x, size_t xstride, double* y, size_t ystride, size_t n, double* c0, double* c1, double *cov00, double* cov01, double* cov11, double* sumsq );
int gsl_fit_mul( double* x, size_t xstride, double* y, size_t ystride, size_t n, double* c1, double* cov11, double* sumsq );
]]

----- テスト・データ:
x = ffi.new( 'double[5]', { 1, 2, 3, 4, 5 } )
y = ffi.new( 'double[5]', { 1.1, 2.1, 2.8, 4.3, 5.1 } )

----- 結果用変数宣言:
c0 = ffi.new( 'double[1]' ); c1 = ffi.new( 'double[1]' )
cov00 = ffi.new( 'double[1]' ); cov01 = ffi.new( 'double[1]' )
cov11 = ffi.new( 'double[1]' ); sumsq = ffi.new( 'double[1]' )

----- y ~ c0 + c1 x  ---------- 直線 で近似 ----------
_ = gsl.gsl_fit_linear( x, 1, y, 1, 5, c0, c1, cov00, cov01, cov11, sumsq )
print( c0[0], c1[0] ) ----- 0.02, 1.02 つまり、y ~ 0.02 + 1.02 x

------- y ~ c1 x  ---------- 原点を通る直線 で近似 ----------
_ = gsl.gsl_fit_mul( x, 1, y, 1, 5, c1, cov11, sumsq )
print( c1[0] ) ----- 1.0254545454545 つまり、y ~ 1.0254545454545 x
非常にシンプルだ。


近似直線を求める、即ち1次式フィッティング(Linear Least Squares fit)
なら、これで決まり!


本日はここまで。


Lua ( GSL Shell ) 学習は続く。


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


160525
関連記事
スポンサーサイト

コメントの投稿

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

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



おきてがみ

最新記事
カレンダー
04 | 2017/05 | 06
- 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
ブックマーク