|
setup diary |
離散的なデータの間の値を補完しようとしたのだが、関数でfittingすると非常に複雑なものになりそうだったので、スプライン曲線で補完することにした。
スプライン曲線を計算して書こうとすると、意外に難しいらしい。GSLでできるのでは無いかと思って調べてみたら、やはりできた。というわけで、ruby-gslでspline補完するために書いたプログラムがこれ。
require "gsl" data=[ [2.0144,7.8956747], [109.2747,0.9246663], [216.3775,0.6455773], [319.6925,0.3726170], ].sort_by{|t,v| v}.transpose ya=NArray.to_na(data[0]) xa=NArray.to_na(data[1]) spline = GSL::Spline.alloc("cspline",xa,ya) puts spline.eval(4.5)
xaは小さい方から大きい方に単調になっていけないようなので、sortが必要だったが、あっさり動いた。さすがruby。