FC2ブログ

FreeBASIC 学習:gsl, The GNU Scientific Library

2019-07-27 :  PCクリニック
以前(2019-07-10)の記事:
FreeBASIC 学習:im モジュール」で書いた、
  ライブラリ・ヘッダー索引:「FreeBASIC ExtLibTOC
を見ると、

  ・・・・・
  ・・・・・
  数学
    GSL - 乱数発生器、特殊関数、最小二乗法のような、
       広範囲の数学的ルーチンを提供します。
  ・・・・・
  ・・・・・

があったので、行ってみた。

  ・・・・・
  ・・・・・
  プログラム例は、GSL ライブラリの使用例のページも参照下さい。
  ・・・・・
  ・・・・・

ここの、

  プログラム例目次

の、
1番目に、

  線形回帰 (37.1)

があったので、「GSL_fit_1D.bas」としてテストしてみた。


但し、最初に見たページに、

  注意:コンパイル時に、下記のエラーが表示される場合:
  FreeBASIC\bin\win32\ld.exe: cannot find -l****
  これは、linker のエラーで、
  ****.a または ****.dll または ****.dll.a が見つからないからです。
  ・・・・・・・・・・
  もしくは、
  ・・・・・・・・・・
  ・・・・・・・・・・
  から該当ファイルをダウンロードして fbc の /lib/win32 に
  ****.a または ****.dll ファイルをコピーします。

とあったので、

  「FB-win32-gsl-1.15.zip」 2014-09-14 付 903.0KB

をダウンロードした。

そして、書庫の中の ~/lib/win32/ にある2つ:

  libgsl.a
  libgslcblas.a

を、取り敢えず持ってきた。


' GSL_fit_1D.bas: gsl_fit.bi 関数を使った線形回帰のプログラム

#Include once "gsl/gsl_cblas.bi"
#include "gsl/gsl_fit.bi"
dim x(4) as double
dim y(4) as double
dim w(4) as double
dim as double c0, c1, cov00, cov01, cov11, chisq
dim as integer i, n=4, s=1
data 1970, 1980, 1990, 2000 ' x data
for i=1 to 4
Read x(i)
next
data 12, 11, 14, 13 ' y data
for i=1 to 4
Read y(i)
next
data .1, .2, .3, .4 ' weight data
for i=1 to 4
Read w(i)
next

gsl_fit_linear (@x(1),s,@y(1),s,n,@c0,@c1,@cov00,@cov01,@cov11,@chisq)
Print using "best fit: y = ####.###### + ####.###### x"; c0; c1
Print " 共分散行列:"
print using " ######.#### ######.#### "; cov00; cov01
print using " ######.#### ######.#### "; cov01; cov11
Print using " chisq = ####.#### "; chisq
'
' ウェイト付き線形近似。データの重みは w() 配列です。
'
gsl_fit_wlinear (@x(1),s,@w(1),s,@y(1),s,n,@c0,@c1,@cov00,@cov01,@cov11,@chisq)
Print
Print "加重版:"
Print
Print using "best fit: y = ####.###### + ####.###### x"; c0; c1
Print " 共分散行列:"
print using " ######.#### ######.#### "; cov00; cov01
print using " ######.#### ######.#### "; cov01; cov11
print using " chisq = ####.#### "; chisq

' 加重版と非加重版の両方で、
' 傾きは .06 で、切片(intercept)は -106.6 になるはずです。

Sleep
確かに、
  best fit: y = -106.600000 + 0.060000 x
   chisq = 0.8000
となった。


GSL が使える。



本日はここまで。


FreeBASIC 学習は続く。


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

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



コメントの投稿

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

人気blog Ranking



最新記事
カレンダー
06 | 2021/07 | 08
- - - - 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




Google Analytics
ブックマーク