Bus errorとSegmentation faultに困ったら見るブログ

物理の研究者による日々の研究生活のメモ書きです ( python/emacs/html/Japascript/シェルスクリプト/TeX/Mac/C言語/Linux/git/tmux/R/ポケモンGO)

【C言語】GSLの補間を使ってみる

(元記事 2012/02/05)

#include <gsl/gsl_interp.h>
#include <gsl/gsl_spline.h>

gsl_interp_accel *acc = gsl_interp_accel_alloc();
const gsl_interp_type *T = gsl_interp_cspline;
gsl_spline *spline = gsl_spline_alloc(T, data_size);

gsl_spline_init(spline, f0, fn, data_size);

i=0;
for(xi = inif[0]; xi < inif[data_size-1]; xi += DELTA){
i++;
yi = gsl_spline_eval(spline, xi, acc);
printf("%.15le %.15le\n", xi, yi);
}


gsl_spline_free(spline);
gsl_interp_accel_free(acc);

 

 

補間の方法は他にも選べる。

gsl_interp_linear, gsl_interp_cspline

とか・・・


自分の欲しい結果に合ったものを用いるべし

 

gsl_spline_init(spline, f0, fn, data_size)

下端f0から上端fnまでdata_size個のデータから補完する
補完元データを読み込ませる

 

yi = gsl_spline_eval(spline, xi, acc);

これでxiのときの補完した値が得られる

 

gsl_spline_free(spline);
gsl_interp_accel_free(acc);

全部終わったら解放しておくこと

 

今自分で書いたコードを読み返してみて色々とまずい気がするなー・・・ボソッ
i=0;
for(xi = inif[0]; xi < inif[data_size-1]; xi += DELTA){
i++;
この辺とか