rb-gsl 1.16.0.5 → 1.16.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (612) hide show
  1. checksums.yaml +4 -4
  2. data/rb-gsl.gemspec +5 -10
  3. metadata +10 -713
  4. data/.gitignore +0 -12
  5. data/.travis.yml +0 -24
  6. data/AUTHORS +0 -12
  7. data/COPYING +0 -341
  8. data/ChangeLog +0 -621
  9. data/Gemfile +0 -4
  10. data/README.md +0 -77
  11. data/Rakefile +0 -20
  12. data/THANKS +0 -17
  13. data/examples/alf/alf.gp +0 -15
  14. data/examples/alf/alf.rb +0 -32
  15. data/examples/blas/blas.rb +0 -13
  16. data/examples/blas/dnrm2.rb +0 -16
  17. data/examples/blas/level1.rb +0 -81
  18. data/examples/blas/level2.rb +0 -11
  19. data/examples/blas/level3.rb +0 -12
  20. data/examples/bspline.rb +0 -57
  21. data/examples/cdf.rb +0 -16
  22. data/examples/cheb.rb +0 -21
  23. data/examples/combination.rb +0 -23
  24. data/examples/complex/RC-lpf.rb +0 -47
  25. data/examples/complex/add.rb +0 -36
  26. data/examples/complex/coerce.rb +0 -14
  27. data/examples/complex/complex.rb +0 -25
  28. data/examples/complex/fpmi.rb +0 -70
  29. data/examples/complex/functions.rb +0 -77
  30. data/examples/complex/michelson.rb +0 -36
  31. data/examples/complex/mul.rb +0 -28
  32. data/examples/complex/oscillator.rb +0 -17
  33. data/examples/complex/set.rb +0 -37
  34. data/examples/const/physconst.rb +0 -151
  35. data/examples/const/travel.rb +0 -45
  36. data/examples/deriv/demo.rb +0 -13
  37. data/examples/deriv/deriv.rb +0 -36
  38. data/examples/deriv/diff.rb +0 -35
  39. data/examples/dht.rb +0 -42
  40. data/examples/dirac.rb +0 -56
  41. data/examples/eigen/eigen.rb +0 -34
  42. data/examples/eigen/herm.rb +0 -22
  43. data/examples/eigen/narray.rb +0 -9
  44. data/examples/eigen/nonsymm.rb +0 -37
  45. data/examples/eigen/nonsymmv.rb +0 -43
  46. data/examples/eigen/qhoscillator.gp +0 -35
  47. data/examples/eigen/qhoscillator.rb +0 -90
  48. data/examples/eigen/vander.rb +0 -41
  49. data/examples/fft/fft.rb +0 -17
  50. data/examples/fft/fft2.rb +0 -17
  51. data/examples/fft/forward.rb +0 -25
  52. data/examples/fft/forward2.rb +0 -26
  53. data/examples/fft/radix2.rb +0 -18
  54. data/examples/fft/real-halfcomplex.rb +0 -33
  55. data/examples/fft/real-halfcomplex2.rb +0 -30
  56. data/examples/fft/realradix2.rb +0 -19
  57. data/examples/fft/sunspot.dat +0 -256
  58. data/examples/fft/sunspot.rb +0 -16
  59. data/examples/fit/expdata.dat +0 -20
  60. data/examples/fit/expfit.rb +0 -31
  61. data/examples/fit/gaussfit.rb +0 -29
  62. data/examples/fit/gaussian_2peaks.rb +0 -34
  63. data/examples/fit/hillfit.rb +0 -40
  64. data/examples/fit/lognormal.rb +0 -26
  65. data/examples/fit/lorentzfit.rb +0 -22
  66. data/examples/fit/multifit.rb +0 -72
  67. data/examples/fit/ndlinear.rb +0 -133
  68. data/examples/fit/nonlinearfit.rb +0 -89
  69. data/examples/fit/plot.gp +0 -36
  70. data/examples/fit/polyfit.rb +0 -9
  71. data/examples/fit/powerfit.rb +0 -21
  72. data/examples/fit/sigmoidfit.rb +0 -40
  73. data/examples/fit/sinfit.rb +0 -22
  74. data/examples/fit/wlinear.rb +0 -46
  75. data/examples/fresnel.rb +0 -11
  76. data/examples/function/function.rb +0 -36
  77. data/examples/function/log.rb +0 -7
  78. data/examples/function/min.rb +0 -33
  79. data/examples/function/sin.rb +0 -10
  80. data/examples/function/synchrotron.rb +0 -18
  81. data/examples/gallery/butterfly.rb +0 -7
  82. data/examples/gallery/cayley.rb +0 -12
  83. data/examples/gallery/cornu.rb +0 -23
  84. data/examples/gallery/eight.rb +0 -11
  85. data/examples/gallery/koch.rb +0 -40
  86. data/examples/gallery/lemniscate.rb +0 -11
  87. data/examples/gallery/polar.rb +0 -11
  88. data/examples/gallery/rgplot/cossin.rb +0 -35
  89. data/examples/gallery/rgplot/rgplot.replaced +0 -0
  90. data/examples/gallery/rgplot/roesller.rb +0 -55
  91. data/examples/gallery/roesller.rb +0 -39
  92. data/examples/gallery/scarabaeus.rb +0 -14
  93. data/examples/histogram/cauchy.rb +0 -27
  94. data/examples/histogram/cauchy.sh +0 -2
  95. data/examples/histogram/exponential.rb +0 -19
  96. data/examples/histogram/gauss.rb +0 -16
  97. data/examples/histogram/gsl-histogram.rb +0 -40
  98. data/examples/histogram/histo2d.rb +0 -31
  99. data/examples/histogram/histo3d.rb +0 -34
  100. data/examples/histogram/histogram-pdf.rb +0 -27
  101. data/examples/histogram/histogram.rb +0 -26
  102. data/examples/histogram/integral.rb +0 -28
  103. data/examples/histogram/poisson.rb +0 -27
  104. data/examples/histogram/power.rb +0 -25
  105. data/examples/histogram/rebin.rb +0 -17
  106. data/examples/histogram/smp.dat +0 -5
  107. data/examples/histogram/xexp.rb +0 -21
  108. data/examples/integration/ahmed.rb +0 -21
  109. data/examples/integration/cosmology.rb +0 -75
  110. data/examples/integration/friedmann.gp +0 -16
  111. data/examples/integration/friedmann.rb +0 -35
  112. data/examples/integration/gamma-zeta.rb +0 -35
  113. data/examples/integration/integration.rb +0 -22
  114. data/examples/integration/qag.rb +0 -8
  115. data/examples/integration/qag2.rb +0 -14
  116. data/examples/integration/qag3.rb +0 -8
  117. data/examples/integration/qagi.rb +0 -28
  118. data/examples/integration/qagi2.rb +0 -49
  119. data/examples/integration/qagiu.rb +0 -29
  120. data/examples/integration/qagp.rb +0 -20
  121. data/examples/integration/qags.rb +0 -14
  122. data/examples/integration/qawc.rb +0 -18
  123. data/examples/integration/qawf.rb +0 -41
  124. data/examples/integration/qawo.rb +0 -29
  125. data/examples/integration/qaws.rb +0 -30
  126. data/examples/integration/qng.rb +0 -17
  127. data/examples/interp/demo.gp +0 -20
  128. data/examples/interp/demo.rb +0 -45
  129. data/examples/interp/interp.rb +0 -37
  130. data/examples/interp/points +0 -10
  131. data/examples/interp/spline.rb +0 -20
  132. data/examples/jacobi/deriv.rb +0 -40
  133. data/examples/jacobi/integrate.rb +0 -34
  134. data/examples/jacobi/interp.rb +0 -43
  135. data/examples/jacobi/jacobi.rb +0 -11
  136. data/examples/linalg/HH.rb +0 -15
  137. data/examples/linalg/HH_narray.rb +0 -13
  138. data/examples/linalg/LQ_solve.rb +0 -73
  139. data/examples/linalg/LU.rb +0 -84
  140. data/examples/linalg/LU2.rb +0 -31
  141. data/examples/linalg/LU_narray.rb +0 -24
  142. data/examples/linalg/PTLQ.rb +0 -47
  143. data/examples/linalg/QR.rb +0 -18
  144. data/examples/linalg/QRPT.rb +0 -47
  145. data/examples/linalg/QR_solve.rb +0 -78
  146. data/examples/linalg/QR_solve_narray.rb +0 -13
  147. data/examples/linalg/SV.rb +0 -16
  148. data/examples/linalg/SV_narray.rb +0 -12
  149. data/examples/linalg/SV_solve.rb +0 -49
  150. data/examples/linalg/chol.rb +0 -29
  151. data/examples/linalg/chol_narray.rb +0 -15
  152. data/examples/linalg/complex.rb +0 -57
  153. data/examples/linalg/invert_narray.rb +0 -10
  154. data/examples/math/const.rb +0 -67
  155. data/examples/math/elementary.rb +0 -35
  156. data/examples/math/functions.rb +0 -41
  157. data/examples/math/inf_nan.rb +0 -34
  158. data/examples/math/minmax.rb +0 -22
  159. data/examples/math/power.rb +0 -18
  160. data/examples/math/test.rb +0 -31
  161. data/examples/matrix/a.dat +0 -0
  162. data/examples/matrix/add.rb +0 -45
  163. data/examples/matrix/b.dat +0 -4
  164. data/examples/matrix/cat.rb +0 -31
  165. data/examples/matrix/colvectors.rb +0 -24
  166. data/examples/matrix/complex.rb +0 -41
  167. data/examples/matrix/det.rb +0 -29
  168. data/examples/matrix/diagonal.rb +0 -23
  169. data/examples/matrix/get_all.rb +0 -159
  170. data/examples/matrix/hilbert.rb +0 -31
  171. data/examples/matrix/iterator.rb +0 -19
  172. data/examples/matrix/matrix.rb +0 -57
  173. data/examples/matrix/minmax.rb +0 -53
  174. data/examples/matrix/mul.rb +0 -39
  175. data/examples/matrix/rand.rb +0 -20
  176. data/examples/matrix/read.rb +0 -29
  177. data/examples/matrix/rowcol.rb +0 -47
  178. data/examples/matrix/set.rb +0 -41
  179. data/examples/matrix/set_all.rb +0 -100
  180. data/examples/matrix/view.rb +0 -32
  181. data/examples/matrix/view_all.rb +0 -148
  182. data/examples/matrix/write.rb +0 -23
  183. data/examples/min.rb +0 -29
  184. data/examples/monte/miser.rb +0 -47
  185. data/examples/monte/monte.rb +0 -47
  186. data/examples/monte/plain.rb +0 -47
  187. data/examples/monte/vegas.rb +0 -46
  188. data/examples/multimin/bundle.rb +0 -66
  189. data/examples/multimin/cqp.rb +0 -109
  190. data/examples/multimin/fdfminimizer.rb +0 -40
  191. data/examples/multimin/fminimizer.rb +0 -41
  192. data/examples/multiroot/demo.rb +0 -36
  193. data/examples/multiroot/fdfsolver.rb +0 -50
  194. data/examples/multiroot/fsolver.rb +0 -33
  195. data/examples/multiroot/fsolver2.rb +0 -32
  196. data/examples/multiroot/fsolver3.rb +0 -26
  197. data/examples/narray/histogram.rb +0 -14
  198. data/examples/narray/mandel.rb +0 -27
  199. data/examples/narray/narray.rb +0 -28
  200. data/examples/narray/narray2.rb +0 -44
  201. data/examples/narray/sf.rb +0 -26
  202. data/examples/ntuple/create.rb +0 -17
  203. data/examples/ntuple/project.rb +0 -31
  204. data/examples/odeiv/binarysystem.gp +0 -23
  205. data/examples/odeiv/binarysystem.rb +0 -104
  206. data/examples/odeiv/demo.gp +0 -24
  207. data/examples/odeiv/demo.rb +0 -69
  208. data/examples/odeiv/demo2.gp +0 -26
  209. data/examples/odeiv/duffing.rb +0 -45
  210. data/examples/odeiv/frei1.rb +0 -109
  211. data/examples/odeiv/frei2.rb +0 -76
  212. data/examples/odeiv/legendre.rb +0 -52
  213. data/examples/odeiv/odeiv.rb +0 -32
  214. data/examples/odeiv/odeiv2.rb +0 -45
  215. data/examples/odeiv/oscillator.rb +0 -42
  216. data/examples/odeiv/sedov.rb +0 -97
  217. data/examples/odeiv/whitedwarf.gp +0 -40
  218. data/examples/odeiv/whitedwarf.rb +0 -158
  219. data/examples/ool/conmin.rb +0 -100
  220. data/examples/ool/gencan.rb +0 -99
  221. data/examples/ool/pgrad.rb +0 -100
  222. data/examples/ool/spg.rb +0 -100
  223. data/examples/pdf/bernoulli.rb +0 -5
  224. data/examples/pdf/beta.rb +0 -7
  225. data/examples/pdf/binomiral.rb +0 -10
  226. data/examples/pdf/cauchy.rb +0 -6
  227. data/examples/pdf/chisq.rb +0 -8
  228. data/examples/pdf/exponential.rb +0 -7
  229. data/examples/pdf/exppow.rb +0 -6
  230. data/examples/pdf/fdist.rb +0 -7
  231. data/examples/pdf/flat.rb +0 -7
  232. data/examples/pdf/gamma.rb +0 -8
  233. data/examples/pdf/gauss-tail.rb +0 -5
  234. data/examples/pdf/gauss.rb +0 -6
  235. data/examples/pdf/geometric.rb +0 -5
  236. data/examples/pdf/gumbel.rb +0 -6
  237. data/examples/pdf/hypergeometric.rb +0 -11
  238. data/examples/pdf/landau.rb +0 -5
  239. data/examples/pdf/laplace.rb +0 -7
  240. data/examples/pdf/logarithmic.rb +0 -5
  241. data/examples/pdf/logistic.rb +0 -6
  242. data/examples/pdf/lognormal.rb +0 -6
  243. data/examples/pdf/neg-binomiral.rb +0 -10
  244. data/examples/pdf/pareto.rb +0 -7
  245. data/examples/pdf/pascal.rb +0 -10
  246. data/examples/pdf/poisson.rb +0 -5
  247. data/examples/pdf/rayleigh-tail.rb +0 -6
  248. data/examples/pdf/rayleigh.rb +0 -6
  249. data/examples/pdf/tdist.rb +0 -6
  250. data/examples/pdf/weibull.rb +0 -8
  251. data/examples/permutation/ex1.rb +0 -22
  252. data/examples/permutation/permutation.rb +0 -16
  253. data/examples/poly/bell.rb +0 -6
  254. data/examples/poly/bessel.rb +0 -6
  255. data/examples/poly/cheb.rb +0 -6
  256. data/examples/poly/cheb_II.rb +0 -6
  257. data/examples/poly/cubic.rb +0 -9
  258. data/examples/poly/demo.rb +0 -20
  259. data/examples/poly/eval.rb +0 -28
  260. data/examples/poly/eval_derivs.rb +0 -14
  261. data/examples/poly/fit.rb +0 -21
  262. data/examples/poly/hermite.rb +0 -6
  263. data/examples/poly/poly.rb +0 -13
  264. data/examples/poly/quadratic.rb +0 -25
  265. data/examples/random/diffusion.rb +0 -34
  266. data/examples/random/gaussian.rb +0 -9
  267. data/examples/random/generator.rb +0 -27
  268. data/examples/random/hdsobol.rb +0 -21
  269. data/examples/random/poisson.rb +0 -9
  270. data/examples/random/qrng.rb +0 -19
  271. data/examples/random/randomwalk.rb +0 -37
  272. data/examples/random/randomwalk2d.rb +0 -19
  273. data/examples/random/rayleigh.rb +0 -36
  274. data/examples/random/rng.rb +0 -33
  275. data/examples/random/rngextra.rb +0 -14
  276. data/examples/roots/bisection.rb +0 -25
  277. data/examples/roots/brent.rb +0 -43
  278. data/examples/roots/demo.rb +0 -30
  279. data/examples/roots/newton.rb +0 -46
  280. data/examples/roots/recombination.gp +0 -11
  281. data/examples/roots/recombination.rb +0 -61
  282. data/examples/roots/steffenson.rb +0 -48
  283. data/examples/sf/ShiChi.rb +0 -6
  284. data/examples/sf/SiCi.rb +0 -6
  285. data/examples/sf/airy_Ai.rb +0 -8
  286. data/examples/sf/airy_Bi.rb +0 -8
  287. data/examples/sf/bessel_IK.rb +0 -12
  288. data/examples/sf/bessel_JY.rb +0 -13
  289. data/examples/sf/beta_inc.rb +0 -9
  290. data/examples/sf/clausen.rb +0 -6
  291. data/examples/sf/dawson.rb +0 -5
  292. data/examples/sf/debye.rb +0 -9
  293. data/examples/sf/dilog.rb +0 -6
  294. data/examples/sf/ellint.rb +0 -6
  295. data/examples/sf/expint.rb +0 -8
  296. data/examples/sf/fermi.rb +0 -10
  297. data/examples/sf/gamma_inc_P.rb +0 -9
  298. data/examples/sf/gegenbauer.rb +0 -8
  299. data/examples/sf/hyperg.rb +0 -7
  300. data/examples/sf/laguerre.rb +0 -19
  301. data/examples/sf/lambertW.rb +0 -5
  302. data/examples/sf/legendre_P.rb +0 -10
  303. data/examples/sf/lngamma.rb +0 -5
  304. data/examples/sf/psi.rb +0 -54
  305. data/examples/sf/sphbessel.gp +0 -27
  306. data/examples/sf/sphbessel.rb +0 -30
  307. data/examples/sf/synchrotron.rb +0 -5
  308. data/examples/sf/transport.rb +0 -10
  309. data/examples/sf/zetam1.rb +0 -5
  310. data/examples/siman.rb +0 -44
  311. data/examples/sort/heapsort.rb +0 -23
  312. data/examples/sort/heapsort_vector_complex.rb +0 -21
  313. data/examples/sort/sort.rb +0 -23
  314. data/examples/sort/sort2.rb +0 -16
  315. data/examples/stats/mean.rb +0 -17
  316. data/examples/stats/statistics.rb +0 -18
  317. data/examples/stats/test.rb +0 -9
  318. data/examples/sum.rb +0 -34
  319. data/examples/tamu_anova.rb +0 -18
  320. data/examples/vector/a.dat +0 -0
  321. data/examples/vector/add.rb +0 -56
  322. data/examples/vector/b.dat +0 -4
  323. data/examples/vector/c.dat +0 -3
  324. data/examples/vector/collect.rb +0 -26
  325. data/examples/vector/compare.rb +0 -28
  326. data/examples/vector/complex.rb +0 -51
  327. data/examples/vector/complex_get_all.rb +0 -85
  328. data/examples/vector/complex_set_all.rb +0 -131
  329. data/examples/vector/complex_view_all.rb +0 -77
  330. data/examples/vector/connect.rb +0 -22
  331. data/examples/vector/decimate.rb +0 -38
  332. data/examples/vector/diff.rb +0 -31
  333. data/examples/vector/filescan.rb +0 -17
  334. data/examples/vector/floor.rb +0 -23
  335. data/examples/vector/get_all.rb +0 -82
  336. data/examples/vector/gnuplot.rb +0 -38
  337. data/examples/vector/graph.rb +0 -28
  338. data/examples/vector/histogram.rb +0 -22
  339. data/examples/vector/linspace.rb +0 -24
  340. data/examples/vector/log.rb +0 -17
  341. data/examples/vector/logic.rb +0 -33
  342. data/examples/vector/logspace.rb +0 -25
  343. data/examples/vector/minmax.rb +0 -47
  344. data/examples/vector/mul.rb +0 -49
  345. data/examples/vector/narray.rb +0 -46
  346. data/examples/vector/read.rb +0 -29
  347. data/examples/vector/set.rb +0 -35
  348. data/examples/vector/set_all.rb +0 -121
  349. data/examples/vector/smpv.dat +0 -15
  350. data/examples/vector/test.rb +0 -43
  351. data/examples/vector/test_gslblock.rb +0 -58
  352. data/examples/vector/vector.rb +0 -110
  353. data/examples/vector/view.rb +0 -35
  354. data/examples/vector/view_all.rb +0 -73
  355. data/examples/vector/where.rb +0 -29
  356. data/examples/vector/write.rb +0 -24
  357. data/examples/vector/zip.rb +0 -34
  358. data/examples/wavelet/ecg.dat +0 -256
  359. data/examples/wavelet/wavelet1.rb +0 -50
  360. data/ext/gsl_native/alf.c +0 -206
  361. data/ext/gsl_native/array.c +0 -553
  362. data/ext/gsl_native/array_complex.c +0 -245
  363. data/ext/gsl_native/blas.c +0 -28
  364. data/ext/gsl_native/blas1.c +0 -733
  365. data/ext/gsl_native/blas2.c +0 -1088
  366. data/ext/gsl_native/blas3.c +0 -880
  367. data/ext/gsl_native/block.c +0 -40
  368. data/ext/gsl_native/block_source.h +0 -885
  369. data/ext/gsl_native/bspline.c +0 -122
  370. data/ext/gsl_native/bundle.c +0 -3
  371. data/ext/gsl_native/cdf.c +0 -740
  372. data/ext/gsl_native/cheb.c +0 -531
  373. data/ext/gsl_native/combination.c +0 -275
  374. data/ext/gsl_native/common.c +0 -293
  375. data/ext/gsl_native/complex.c +0 -1002
  376. data/ext/gsl_native/const.c +0 -331
  377. data/ext/gsl_native/const_additional.c +0 -99
  378. data/ext/gsl_native/cqp.c +0 -283
  379. data/ext/gsl_native/deriv.c +0 -187
  380. data/ext/gsl_native/dht.c +0 -353
  381. data/ext/gsl_native/diff.c +0 -164
  382. data/ext/gsl_native/dirac.c +0 -388
  383. data/ext/gsl_native/eigen.c +0 -2322
  384. data/ext/gsl_native/error.c +0 -193
  385. data/ext/gsl_native/extconf.rb +0 -118
  386. data/ext/gsl_native/fft.c +0 -1095
  387. data/ext/gsl_native/fit.c +0 -204
  388. data/ext/gsl_native/fresnel.c +0 -312
  389. data/ext/gsl_native/function.c +0 -518
  390. data/ext/gsl_native/geometry.c +0 -139
  391. data/ext/gsl_native/graph.c +0 -1590
  392. data/ext/gsl_native/gsl.c +0 -259
  393. data/ext/gsl_native/gsl_narray.c +0 -794
  394. data/ext/gsl_native/histogram.c +0 -1964
  395. data/ext/gsl_native/histogram2d.c +0 -1042
  396. data/ext/gsl_native/histogram3d.c +0 -884
  397. data/ext/gsl_native/histogram3d_source.c +0 -749
  398. data/ext/gsl_native/histogram_find.c +0 -99
  399. data/ext/gsl_native/histogram_oper.c +0 -150
  400. data/ext/gsl_native/ieee.c +0 -88
  401. data/ext/gsl_native/include/rb_gsl.h +0 -136
  402. data/ext/gsl_native/include/rb_gsl_array.h +0 -214
  403. data/ext/gsl_native/include/rb_gsl_cheb.h +0 -19
  404. data/ext/gsl_native/include/rb_gsl_common.h +0 -348
  405. data/ext/gsl_native/include/rb_gsl_complex.h +0 -25
  406. data/ext/gsl_native/include/rb_gsl_const.h +0 -23
  407. data/ext/gsl_native/include/rb_gsl_dirac.h +0 -6
  408. data/ext/gsl_native/include/rb_gsl_eigen.h +0 -17
  409. data/ext/gsl_native/include/rb_gsl_fft.h +0 -49
  410. data/ext/gsl_native/include/rb_gsl_fit.h +0 -23
  411. data/ext/gsl_native/include/rb_gsl_function.h +0 -23
  412. data/ext/gsl_native/include/rb_gsl_graph.h +0 -68
  413. data/ext/gsl_native/include/rb_gsl_histogram.h +0 -63
  414. data/ext/gsl_native/include/rb_gsl_histogram3d.h +0 -97
  415. data/ext/gsl_native/include/rb_gsl_integration.h +0 -17
  416. data/ext/gsl_native/include/rb_gsl_interp.h +0 -41
  417. data/ext/gsl_native/include/rb_gsl_linalg.h +0 -21
  418. data/ext/gsl_native/include/rb_gsl_math.h +0 -20
  419. data/ext/gsl_native/include/rb_gsl_odeiv.h +0 -18
  420. data/ext/gsl_native/include/rb_gsl_poly.h +0 -67
  421. data/ext/gsl_native/include/rb_gsl_rational.h +0 -30
  422. data/ext/gsl_native/include/rb_gsl_rng.h +0 -20
  423. data/ext/gsl_native/include/rb_gsl_root.h +0 -22
  424. data/ext/gsl_native/include/rb_gsl_sf.h +0 -110
  425. data/ext/gsl_native/include/rb_gsl_statistics.h +0 -17
  426. data/ext/gsl_native/include/rb_gsl_tensor.h +0 -43
  427. data/ext/gsl_native/include/rb_gsl_with_narray.h +0 -31
  428. data/ext/gsl_native/include/templates_off.h +0 -87
  429. data/ext/gsl_native/include/templates_on.h +0 -241
  430. data/ext/gsl_native/integration.c +0 -1154
  431. data/ext/gsl_native/interp.c +0 -499
  432. data/ext/gsl_native/jacobi.c +0 -733
  433. data/ext/gsl_native/linalg.c +0 -3915
  434. data/ext/gsl_native/linalg_complex.c +0 -726
  435. data/ext/gsl_native/math.c +0 -706
  436. data/ext/gsl_native/matrix.c +0 -36
  437. data/ext/gsl_native/matrix_complex.c +0 -1733
  438. data/ext/gsl_native/matrix_double.c +0 -557
  439. data/ext/gsl_native/matrix_int.c +0 -255
  440. data/ext/gsl_native/matrix_source.h +0 -2708
  441. data/ext/gsl_native/min.c +0 -219
  442. data/ext/gsl_native/monte.c +0 -978
  443. data/ext/gsl_native/multifit.c +0 -1862
  444. data/ext/gsl_native/multimin.c +0 -778
  445. data/ext/gsl_native/multimin_fsdf.c +0 -156
  446. data/ext/gsl_native/multiroots.c +0 -952
  447. data/ext/gsl_native/multiset.c +0 -210
  448. data/ext/gsl_native/ndlinear.c +0 -320
  449. data/ext/gsl_native/nmf.c +0 -171
  450. data/ext/gsl_native/nmf_wrap.c +0 -75
  451. data/ext/gsl_native/ntuple.c +0 -469
  452. data/ext/gsl_native/odeiv.c +0 -947
  453. data/ext/gsl_native/ool.c +0 -879
  454. data/ext/gsl_native/permutation.c +0 -598
  455. data/ext/gsl_native/poly.c +0 -39
  456. data/ext/gsl_native/poly2.c +0 -265
  457. data/ext/gsl_native/poly_source.h +0 -1871
  458. data/ext/gsl_native/qrng.c +0 -160
  459. data/ext/gsl_native/randist.c +0 -1848
  460. data/ext/gsl_native/rational.c +0 -480
  461. data/ext/gsl_native/rng.c +0 -595
  462. data/ext/gsl_native/root.c +0 -407
  463. data/ext/gsl_native/sf.c +0 -1446
  464. data/ext/gsl_native/sf_airy.c +0 -200
  465. data/ext/gsl_native/sf_bessel.c +0 -871
  466. data/ext/gsl_native/sf_clausen.c +0 -28
  467. data/ext/gsl_native/sf_coulomb.c +0 -206
  468. data/ext/gsl_native/sf_coupling.c +0 -121
  469. data/ext/gsl_native/sf_dawson.c +0 -29
  470. data/ext/gsl_native/sf_debye.c +0 -148
  471. data/ext/gsl_native/sf_dilog.c +0 -43
  472. data/ext/gsl_native/sf_elementary.c +0 -46
  473. data/ext/gsl_native/sf_ellint.c +0 -206
  474. data/ext/gsl_native/sf_elljac.c +0 -30
  475. data/ext/gsl_native/sf_erfc.c +0 -89
  476. data/ext/gsl_native/sf_exp.c +0 -169
  477. data/ext/gsl_native/sf_expint.c +0 -201
  478. data/ext/gsl_native/sf_fermi_dirac.c +0 -148
  479. data/ext/gsl_native/sf_gamma.c +0 -343
  480. data/ext/gsl_native/sf_gegenbauer.c +0 -97
  481. data/ext/gsl_native/sf_hyperg.c +0 -203
  482. data/ext/gsl_native/sf_laguerre.c +0 -113
  483. data/ext/gsl_native/sf_lambert.c +0 -47
  484. data/ext/gsl_native/sf_legendre.c +0 -368
  485. data/ext/gsl_native/sf_log.c +0 -105
  486. data/ext/gsl_native/sf_mathieu.c +0 -235
  487. data/ext/gsl_native/sf_power.c +0 -47
  488. data/ext/gsl_native/sf_psi.c +0 -89
  489. data/ext/gsl_native/sf_synchrotron.c +0 -48
  490. data/ext/gsl_native/sf_transport.c +0 -76
  491. data/ext/gsl_native/sf_trigonometric.c +0 -210
  492. data/ext/gsl_native/sf_zeta.c +0 -115
  493. data/ext/gsl_native/signal.c +0 -303
  494. data/ext/gsl_native/siman.c +0 -713
  495. data/ext/gsl_native/sort.c +0 -207
  496. data/ext/gsl_native/spline.c +0 -377
  497. data/ext/gsl_native/stats.c +0 -787
  498. data/ext/gsl_native/sum.c +0 -168
  499. data/ext/gsl_native/tamu_anova.c +0 -56
  500. data/ext/gsl_native/tensor.c +0 -35
  501. data/ext/gsl_native/tensor_source.h +0 -1122
  502. data/ext/gsl_native/vector.c +0 -35
  503. data/ext/gsl_native/vector_complex.c +0 -2241
  504. data/ext/gsl_native/vector_double.c +0 -1433
  505. data/ext/gsl_native/vector_int.c +0 -202
  506. data/ext/gsl_native/vector_source.h +0 -3321
  507. data/ext/gsl_native/wavelet.c +0 -923
  508. data/lib/gsl.rb +0 -8
  509. data/lib/gsl/gnuplot.rb +0 -41
  510. data/lib/gsl/oper.rb +0 -43
  511. data/lib/gsl/version.rb +0 -3
  512. data/lib/ool.rb +0 -22
  513. data/lib/ool/conmin.rb +0 -30
  514. data/lib/rbgsl.rb +0 -1
  515. data/rdoc/alf.rdoc +0 -77
  516. data/rdoc/blas.rdoc +0 -269
  517. data/rdoc/bspline.rdoc +0 -42
  518. data/rdoc/changes.rdoc +0 -159
  519. data/rdoc/cheb.rdoc +0 -99
  520. data/rdoc/cholesky_complex.rdoc +0 -46
  521. data/rdoc/combi.rdoc +0 -125
  522. data/rdoc/complex.rdoc +0 -210
  523. data/rdoc/const.rdoc +0 -546
  524. data/rdoc/dht.rdoc +0 -122
  525. data/rdoc/diff.rdoc +0 -133
  526. data/rdoc/ehandling.rdoc +0 -50
  527. data/rdoc/eigen.rdoc +0 -401
  528. data/rdoc/fft.rdoc +0 -535
  529. data/rdoc/fit.rdoc +0 -284
  530. data/rdoc/function.rdoc +0 -94
  531. data/rdoc/graph.rdoc +0 -137
  532. data/rdoc/hist.rdoc +0 -409
  533. data/rdoc/hist2d.rdoc +0 -279
  534. data/rdoc/hist3d.rdoc +0 -112
  535. data/rdoc/integration.rdoc +0 -398
  536. data/rdoc/interp.rdoc +0 -231
  537. data/rdoc/intro.rdoc +0 -27
  538. data/rdoc/linalg.rdoc +0 -681
  539. data/rdoc/linalg_complex.rdoc +0 -88
  540. data/rdoc/math.rdoc +0 -276
  541. data/rdoc/matrix.rdoc +0 -1093
  542. data/rdoc/min.rdoc +0 -189
  543. data/rdoc/monte.rdoc +0 -234
  544. data/rdoc/multimin.rdoc +0 -312
  545. data/rdoc/multiroot.rdoc +0 -293
  546. data/rdoc/narray.rdoc +0 -177
  547. data/rdoc/ndlinear.rdoc +0 -250
  548. data/rdoc/nonlinearfit.rdoc +0 -348
  549. data/rdoc/ntuple.rdoc +0 -88
  550. data/rdoc/odeiv.rdoc +0 -378
  551. data/rdoc/perm.rdoc +0 -221
  552. data/rdoc/poly.rdoc +0 -335
  553. data/rdoc/qrng.rdoc +0 -90
  554. data/rdoc/randist.rdoc +0 -233
  555. data/rdoc/ref.rdoc +0 -93
  556. data/rdoc/rng.rdoc +0 -203
  557. data/rdoc/roots.rdoc +0 -305
  558. data/rdoc/sf.rdoc +0 -1622
  559. data/rdoc/siman.rdoc +0 -89
  560. data/rdoc/sort.rdoc +0 -94
  561. data/rdoc/start.rdoc +0 -16
  562. data/rdoc/stats.rdoc +0 -219
  563. data/rdoc/sum.rdoc +0 -65
  564. data/rdoc/tensor.rdoc +0 -251
  565. data/rdoc/tut.rdoc +0 -5
  566. data/rdoc/use.rdoc +0 -177
  567. data/rdoc/vector.rdoc +0 -1243
  568. data/rdoc/vector_complex.rdoc +0 -347
  569. data/rdoc/wavelet.rdoc +0 -218
  570. data/test/gsl/blas_test.rb +0 -79
  571. data/test/gsl/bspline_test.rb +0 -63
  572. data/test/gsl/cdf_test.rb +0 -1512
  573. data/test/gsl/cheb_test.rb +0 -80
  574. data/test/gsl/combination_test.rb +0 -100
  575. data/test/gsl/complex_test.rb +0 -20
  576. data/test/gsl/const_test.rb +0 -29
  577. data/test/gsl/deriv_test.rb +0 -62
  578. data/test/gsl/dht_test.rb +0 -79
  579. data/test/gsl/diff_test.rb +0 -53
  580. data/test/gsl/eigen_test.rb +0 -563
  581. data/test/gsl/err_test.rb +0 -23
  582. data/test/gsl/fit_test.rb +0 -101
  583. data/test/gsl/histo_test.rb +0 -14
  584. data/test/gsl/index_test.rb +0 -61
  585. data/test/gsl/integration_test.rb +0 -274
  586. data/test/gsl/interp_test.rb +0 -27
  587. data/test/gsl/linalg_test.rb +0 -463
  588. data/test/gsl/matrix_nmf_test.rb +0 -37
  589. data/test/gsl/matrix_test.rb +0 -98
  590. data/test/gsl/min_test.rb +0 -89
  591. data/test/gsl/monte_test.rb +0 -77
  592. data/test/gsl/multifit_test.rb +0 -753
  593. data/test/gsl/multimin_test.rb +0 -157
  594. data/test/gsl/multiroot_test.rb +0 -135
  595. data/test/gsl/multiset_test.rb +0 -52
  596. data/test/gsl/odeiv_test.rb +0 -275
  597. data/test/gsl/oper_test.rb +0 -98
  598. data/test/gsl/poly_test.rb +0 -338
  599. data/test/gsl/qrng_test.rb +0 -94
  600. data/test/gsl/quartic_test.rb +0 -28
  601. data/test/gsl/randist_test.rb +0 -122
  602. data/test/gsl/rng_test.rb +0 -303
  603. data/test/gsl/roots_test.rb +0 -78
  604. data/test/gsl/sf_test.rb +0 -2079
  605. data/test/gsl/stats_test.rb +0 -122
  606. data/test/gsl/sum_test.rb +0 -69
  607. data/test/gsl/tensor_test.rb +0 -396
  608. data/test/gsl/vector_test.rb +0 -223
  609. data/test/gsl/wavelet_test.rb +0 -130
  610. data/test/gsl_test.rb +0 -321
  611. data/test/test_helper.rb +0 -42
  612. data/uncrustify.cfg +0 -1693
@@ -1,250 +0,0 @@
1
- #
2
- # = NDLINAR: multi-linear, multi-parameter least squares fitting
3
- #
4
- # The multi-dimension fitting library NDLINEAR is not included in GSL,
5
- # but is provided as an extension library. This is available at the
6
- # {Patrick Alken's page}[http://ucsu.colorado.edu/~alken/gsl/].
7
- #
8
- # Contents:
9
- # 1. {Introduction}[link:rdoc/ndlinear_rdoc.html#label-Introduction]
10
- # 1. {Class and methods}[link:rdoc/ndlinear_rdoc.html#label-Class+and+Methods]
11
- # 1. {Examples}[link:rdoc/ndlinear_rdoc.html#label-Examples]
12
- #
13
- # == Introduction
14
- # The NDLINEAR extension provides support for general linear least squares
15
- # fitting to data which is a function of more than one variable (multi-linear or
16
- # multi-dimensional least squares fitting). This model has the form where
17
- # <tt>x</tt> is a vector of independent variables, a_i are the fit coefficients,
18
- # and F_i are the basis functions of the fit. This GSL extension computes the
19
- # design matrix X_{ij = F_j(x_i) in the special case that the basis functions
20
- # separate: Here the superscript value j indicates the basis function
21
- # corresponding to the independent variable x_j. The subscripts (i_1, i_2, i_3,
22
- # ...) refer to which basis function to use from the complete set. These
23
- # subscripts are related to the index i in a complex way, which is the main
24
- # problem this extension addresses. The model then becomes where n is the
25
- # dimension of the fit and N_i is the number of basis functions for the variable
26
- # x_i. Computationally, it is easier to supply the individual basis functions
27
- # u^{(j) than the total basis functions F_i(x). However the design matrix X is
28
- # easiest to construct given F_i(x). Therefore the routines below allow the user
29
- # to specify the individual basis functions u^{(j) and then automatically
30
- # construct the design matrix X.
31
- #
32
- #
33
- # == Class and Methods
34
- # ---
35
- # * GSL::MultiFit::Ndlinear.alloc(n_dim, N, u, params)
36
- # * GSL::MultiFit::Ndlinear::Workspace.alloc(n_dim, N, u, params)
37
- #
38
- # Creates a workspace for solving multi-parameter, multi-dimensional linear
39
- # least squares problems. <tt>n_dim</tt> specifies the dimension of the fit
40
- # (the number of independent variables in the model). The array <tt>N</tt> of
41
- # length <tt>n_dim</tt> specifies the number of terms in each sum, so that
42
- # <tt>N[i]</tt>
43
- # specifies the number of terms in the sum of the i-th independent variable.
44
- # The array of <tt>Proc</tt> objects <tt>u</tt> of length <tt>n_dim</tt> specifies
45
- # the basis functions for each independent fit variable, so that <tt>u[i]</tt>
46
- # is a procedure to calculate the basis function for the i-th
47
- # independent variable.
48
- # Each of the procedures <tt>u</tt> takes three block parameters: a point
49
- # <tt>x</tt> at which to evaluate the basis function, an array y of length
50
- # <tt>N[i]</tt> which is filled on output with the basis function values at
51
- # <tt>x</tt> for all i, and a params argument which contains parameters needed
52
- # by the basis function. These parameters are supplied in the <tt>params</tt>
53
- # argument to this method.
54
- #
55
- # Ex)
56
- #
57
- # N_DIM = 3
58
- # N_SUM_R = 10
59
- # N_SUM_THETA = 11
60
- # N_SUM_PHI = 9
61
- #
62
- # basis_r = Proc.new { |r, y, params|
63
- # params.eval(r, y)
64
- # }
65
- #
66
- # basis_theta = Proc.new { |theta, y, params|
67
- # for i in 0...N_SUM_THETA do
68
- # y[i] = GSL::Sf::legendre_Pl(i, Math::cos(theta));
69
- # end
70
- # }
71
- #
72
- # basis_phi = Proc.new { |phi, y, params|
73
- # for i in 0...N_SUM_PHI do
74
- # if i%2 == 0
75
- # y[i] = Math::cos(i*0.5*phi)
76
- # else
77
- # y[i] = Math::sin((i+1.0)*0.5*phi)
78
- # end
79
- # end
80
- # }
81
- #
82
- # N = [N_SUM_R, N_SUM_THETA, N_SUM_PHI]
83
- # u = [basis_r, basis_theta, basis_phi]
84
- #
85
- # bspline = GSL::BSpline.alloc(4, N_SUM_R - 2)
86
- #
87
- # ndlinear = GSL::MultiFit::Ndlinear.alloc(N_DIM, N, u, bspline)
88
- #
89
- # ---
90
- # * GSL::MultiFit::Ndlinear.design(vars, X, w)
91
- # * GSL::MultiFit::Ndlinear.design(vars, w)
92
- # * GSL::MultiFit::Ndlinear::Workspace#design(vars, X)
93
- # * GSL::MultiFit::Ndlinear::Workspace#design(vars)
94
- #
95
- # Construct the least squares design matrix <tt>X</tt> from the input <tt>vars</tt>
96
- # and the previously specified basis functions. vars is a ndata-by-n_dim
97
- # matrix where the ith row specifies the n_dim independent variables for the
98
- # ith observation.
99
- #
100
- # ---
101
- # * GSL::MultiFit::Ndlinear.est(x, c, cov, w)
102
- # * GSL::MultiFit::Ndlinear::Workspace#est(x, c, cov)
103
- #
104
- # After the least squares problem is solved via <tt>GSL::MultiFit::linear</tt>,
105
- # this method can be used to evaluate the model at the data point <tt>x</tt>.
106
- # The coefficient vector <tt>c</tt> and covariance matrix <tt>cov</tt> are
107
- # outputs from <tt>GSL::MultiFit::linear</tt>. The model output value and
108
- # its error [<tt>y, yerr</tt>] are returned as an array.
109
- #
110
- # ---
111
- # * GSL::MultiFit::Ndlinear.calc(x, c, w)
112
- # * GSL::MultiFit::Ndlinear::Workspace#calc(x, c)
113
- #
114
- # This method is similar to <tt>GSL::MultiFit::Ndlinear.est</tt>, but does
115
- # not compute the model error. It computes the model value at the data point
116
- # <tt>x</tt> using the coefficient vector <tt>c</tt> and returns the model
117
- # value.
118
- #
119
- # == Examples
120
- # This example program generates data from the 3D isotropic harmonic oscillator
121
- # wavefunction (real part) and then fits a model to the data using B-splines in
122
- # the r coordinate, Legendre polynomials in theta, and sines/cosines in phi.
123
- # The exact form of the solution is (neglecting the normalization constant for
124
- # simplicity) The example program models psi by default.
125
- #
126
- # #!/usr/bin/env ruby
127
- # require("gsl")
128
- #
129
- # N_DIM = 3
130
- # N_SUM_R = 10
131
- # N_SUM_THETA = 10
132
- # N_SUM_PHI = 9
133
- # R_MAX = 3.0
134
- #
135
- # def psi_real_exact(k, l, m, r, theta, phi)
136
- # rr = GSL::pow(r, l)*Math::exp(-r*r)*GSL::Sf::laguerre_n(k, l + 0.5, 2 * r * r)
137
- # tt = GSL::Sf::legendre_sphPlm(l, m, Math::cos(theta))
138
- # pp = Math::cos(m*phi)
139
- # rr*tt*pp
140
- # end
141
- #
142
- # basis_r = Proc.new { |r, y, params|
143
- # params.eval(r, y)
144
- # }
145
- #
146
- # basis_theta = Proc.new { |theta, y, params|
147
- # for i in 0...N_SUM_THETA do
148
- # y[i] = GSL::Sf::legendre_Pl(i, Math::cos(theta));
149
- # end
150
- # }
151
- #
152
- # basis_phi = Proc.new { |phi, y, params|
153
- # for i in 0...N_SUM_PHI do
154
- # if i%2 == 0
155
- # y[i] = Math::cos(i*0.5*phi)
156
- # else
157
- # y[i] = Math::sin((i+1.0)*0.5*phi)
158
- # end
159
- # end
160
- # }
161
- #
162
- #
163
- # GSL::Rng::env_setup()
164
- #
165
- # k = 5
166
- # l = 4
167
- # m = 2
168
- #
169
- # NDATA = 3000
170
- #
171
- # N = [N_SUM_R, N_SUM_THETA, N_SUM_PHI]
172
- # u = [basis_r, basis_theta, basis_phi]
173
- #
174
- # rng = GSL::Rng.alloc()
175
- #
176
- # bspline = GSL::BSpline.alloc(4, N_SUM_R - 2)
177
- # bspline.knots_uniform(0.0, R_MAX)
178
- #
179
- # ndlinear = GSL::MultiFit::Ndlinear.alloc(N_DIM, N, u, bspline)
180
- # multifit = GSL::MultiFit.alloc(NDATA, ndlinear.n_coeffs)
181
- # vars = GSL::Matrix.alloc(NDATA, N_DIM)
182
- # data = GSL::Vector.alloc(NDATA)
183
- #
184
- #
185
- # for i in 0...NDATA do
186
- # r = rng.uniform()*R_MAX
187
- # theta = rng.uniform()*Math::PI
188
- # phi = rng.uniform()*2*Math::PI
189
- # psi = psi_real_exact(k, l, m, r, theta, phi)
190
- # dpsi = rng.gaussian(0.05*psi)
191
- #
192
- # vars[i][0] = r
193
- # vars[i][1] = theta
194
- # vars[i][2] = phi
195
- #
196
- # data[i] = psi + dpsi
197
- # end
198
- #
199
- # X = GSL::MultiFit::Ndlinear::design(vars, ndlinear)
200
- #
201
- # coeffs, cov, chisq, = GSL::MultiFit::linear(X, data, multifit)
202
- #
203
- # rsq = 1.0 - chisq/data.tss
204
- # STDERR.printf("chisq = %e, Rsq = %f\n", chisq, rsq)
205
- #
206
- # eps_rms = 0.0
207
- # volume = 0.0
208
- # dr = 0.05;
209
- # dtheta = 5.0 * Math::PI / 180.0
210
- # dphi = 5.0 * Math::PI / 180.0
211
- # x = GSL::Vector.alloc(N_DIM)
212
- #
213
- # r = 0.01
214
- # while r < R_MAX do
215
- # theta = 0.0
216
- # while theta < Math::PI do
217
- # phi = 0.0
218
- # while phi < 2*Math::PI do
219
- # dV = r*r*Math::sin(theta)*r*dtheta*dphi
220
- # x[0] = r
221
- # x[1] = theta
222
- # x[2] = phi
223
- #
224
- # psi_model, err = GSL::MultiFit::Ndlinear.calc(x, coeffs, ndlinear)
225
- # psi = psi_real_exact(k, l, m, r, theta, phi)
226
- # err = psi_model - psi
227
- # eps_rms += err * err * dV;
228
- # volume += dV;
229
- #
230
- # if phi == 0.0
231
- # printf("%e %e %e %e\n", r, theta, psi, psi_model)
232
- # end
233
- #
234
- # phi += dphi
235
- # end
236
- # theta += dtheta
237
- # end
238
- # printf("\n");
239
- # r += dr
240
- # end
241
- #
242
- # eps_rms /= volume
243
- # eps_rms = Math::sqrt(eps_rms)
244
- # STDERR.printf("rms error over all parameter space = %e\n", eps_rms)
245
- #
246
- #
247
- # {Reference index}[link:rdoc/ref_rdoc.html]
248
- # {top}[link:index.html]
249
- #
250
- #
@@ -1,348 +0,0 @@
1
- #
2
- # = Nonlinear Least-Squares Fitting
3
- # This chapter describes functions for multidimensional nonlinear least-squares
4
- # fitting. The library provides low level components for a variety of iterative
5
- # solvers and convergence tests. These can be combined by the user to achieve
6
- # the desired solution, with full access to the intermediate steps of the
7
- # iteration. Each class of methods uses the same framework, so that you can
8
- # switch between solvers at runtime without needing to recompile your program.
9
- # Each instance of a solver keeps track of its own state, allowing the solvers
10
- # to be used in multi-threaded programs.
11
- #
12
- # Contents:
13
- # 1. {Overview}[link:rdoc/nonlinearfit_rdoc.html#label-Overview]
14
- # 1. {Initializing the Solver}[link:rdoc/nonlinearfit_rdoc.html#label-Initializing+the+Solver]
15
- # 1. {GSL::MultiFit::FdfSolver class}[link:rdoc/nonlinearfit_rdoc.html#label-FdfSolver+class]
16
- # 1. {Providing the function to be minimized}[link:rdoc/nonlinearfit_rdoc.html#label-Providing+the+function+to+be+minimized]
17
- # 1. {GSL::MultiFit::Function_fdf class}[link:rdoc/nonlinearfit_rdoc.html#label-Function_fdf+class]
18
- # 1. {Iteration}[link:rdoc/nonlinearfit_rdoc.html#label-Iteration]
19
- # 1. {Search Stopping Parameters}[link:rdoc/nonlinearfit_rdoc.html#label-Search+Stopping+Parameters]
20
- # 1. {Computing the covariance matrix of best fit parameters}[link:rdoc/nonlinearfit_rdoc.html#label-Computing+the+covariance+matrix+of+best+fit+parameters]
21
- # 1. {Higher level interfaces}[link:rdoc/nonlinearfit_rdoc.html#label-Higher+level+interfaces]
22
- # 1. {Examples}[link:rdoc/nonlinearfit_rdoc.html#label-Examples]
23
- # 1. {Fitting to user-defined functions}[link:rdoc/nonlinearfit_rdoc.html#label-Fitting+to+user-defined+functions]
24
- # 1. {Fitting to built-in functions}[link:rdoc/nonlinearfit_rdoc.html#label-Fitting+to+built-in+functions]
25
- #
26
- # == Overview
27
- # The problem of multidimensional nonlinear least-squares fitting requires the
28
- # minimization of the squared residuals of n functions, f_i, in p parameters,
29
- # x_i, All algorithms proceed from an initial guess using the linearization,
30
- # where x is the initial point, p is the proposed step and J is the Jacobian
31
- # matrix J_{ij} = d f_i / d x_j. Additional strategies are used to enlarge the
32
- # region of convergence. These include requiring a decrease in the norm ||F||
33
- # on each step or using a trust region to avoid steps which fall outside the
34
- # linear regime.
35
- #
36
- # To perform a weighted least-squares fit of a nonlinear model Y(x,t) to data
37
- # (t_i, y_i) with independent gaussian errors \sigma_i, use function components
38
- # of the following form, Note that the model parameters are denoted by x in this
39
- # chapter since the non-linear least-squares algorithms are described
40
- # geometrically (i.e. finding the minimum of a surface). The independent
41
- # variable of any data to be fitted is denoted by t.
42
- #
43
- # With the definition above the Jacobian is
44
- # J_{ij} =(1 / \sigma_i) d Y_i / d x_j, where Y_i = Y(x,t_i).
45
- #
46
- # == Initializing the Solver
47
- #
48
- # === FdfSolver class
49
- # ---
50
- # * GSL::MultiFit::FdfSolver.alloc(T, n, p)
51
- #
52
- # This creates an instance of the <tt>GSL::MultiFit::FdfSolver</tt> class of
53
- # type <tt>T</tt> for <tt>n</tt> observations and <tt>p</tt> parameters. The type <tt>T</tt>
54
- # is given by a <tt>Fixnum</tt> constant or a <tt>String</tt>,
55
- # * <tt>GSL::MultiFit::LMSDER</tt> or <tt>"lmsder"</tt>
56
- # * <tt>GSL::MultiFit::LMDER</tt> or <tt>"lmder"</tt>
57
- # For example, the following code creates an instance of a Levenberg-Marquardt
58
- # solver for 100 data points and 3 parameters,
59
- #
60
- # solver = MultiFit::FdfSolver.alloc(MultiFit::LMDER, 100, 3)
61
- #
62
- # ---
63
- # * GSL::MultiFit::FdfSolver#set(f, x)
64
- #
65
- # This method initializes, or reinitializes, an existing solver <tt>self</tt>
66
- # to use the function <tt>f</tt> and the initial guess <tt>x</tt>. The function <tt>f</tt>
67
- # is an instance of the <tt>GSL::MultiFit::Function_fdf</tt> class (see below). The
68
- # initial guess of the parameters <tt>x</tt> is given by a {GSL::Vector}[link:rdoc/vector_rdoc.html] object.
69
- #
70
- # ---
71
- # * GSL::MultiFit::FdfSolver#name
72
- #
73
- # This returns the name of the solver <tt>self</tt> as a String.
74
- #
75
- #
76
- # ---
77
- # * GSL::MultiFit::FdfSolver#x
78
- # * GSL::MultiFit::FdfSolver#dx
79
- # * GSL::MultiFit::FdfSolver#f
80
- # * GSL::MultiFit::FdfSolver#J
81
- # * GSL::MultiFit::FdfSolver#jacobian
82
- # * GSL::MultiFit::FdfSolver#jac
83
- #
84
- # Access to the members (see <tt>gsl_multifit_nlin.h</tt>)
85
- #
86
- # == Providing the function to be minimized
87
- # === Function_fdf class
88
- # ---
89
- # * GSL::MultiFit::Function_fdf.alloc()
90
- # * GSL::MultiFit::Function_fdf.alloc(f, df, p)
91
- # * GSL::MultiFit::Function_fdf.alloc(f, df, fdf, p)
92
- #
93
- # Constructor for the <tt>Function_fdf</tt> class, to a
94
- # function with <tt>p</tt> parameters, The first two or three arguments are Ruby Proc objects
95
- # to evaluate the function to minimize and its derivative (Jacobian).
96
- #
97
- # ---
98
- # * GSL::MultiFit::Function_fdf#set_procs(f, df, p)
99
- # * GSL::MultiFit::Function_fdf#set_procs(f, df, fdf, p)
100
- #
101
- # This initialize of reinitialize the function <tt>self</tt> with <tt>p</tt> parameters
102
- # by two or three Proc objects <tt>f, df</tt> and <tt>fdf</tt>.
103
- #
104
- # ---
105
- # * GSL::MultiFit::Function_fdf#set_data(t, y)
106
- # * GSL::MultiFit::Function_fdf#set_data(t, y, sigma)
107
- #
108
- # This sets the data <tt>t, y, sigma</tt> of length <tt>n</tt>, to the function <tt>self</tt>.
109
- #
110
- # == Iteration
111
- # ---
112
- # * GSL::MultiFit::FdfSolver#iterate
113
- #
114
- # THis performs a single iteration of the solver <tt>self</tt>. If the iteration
115
- # encounters an unexpected problem then an error code will be returned.
116
- # The solver maintains a current estimate of the best-fit parameters at all
117
- # times. This information can be accessed with the method <tt>position</tt>.
118
- #
119
- # ---
120
- # * GSL::MultiFit::FdfSolver#position
121
- #
122
- # This returns the current position (i.e. best-fit parameters) of the solver
123
- # <tt>self</tt>, as a <tt>GSL::Vector</tt> object.
124
- #
125
- #
126
- # == Search Stopping Parameters
127
- # A minimization procedure should stop when one of the following conditions is true:
128
- # * A minimum has been found to within the user-specified precision.
129
- # * A user-specified maximum number of iterations has been reached.
130
- # * An error has occurred.
131
- # The handling of these conditions is under user control. The method below allows
132
- # the user to test the current estimate of the best-fit parameters.
133
- #
134
- # ---
135
- # * GSL::MultiFit::FdfSolver#test_delta(epsabs, epsrel)
136
- #
137
- # This method tests for the convergence of the sequence by comparing the last
138
- # step with the absolute error <tt>epsabs</tt> and relative error (<tt>epsrel</tt>
139
- # to the current position. The test returns <tt>GSL::SUCCESS</tt> if the following
140
- # condition is achieved,
141
- # |dx_i| < epsabs + epsrel |x_i|
142
- # for each component of <tt>x</tt> and returns <tt>GSL::CONTINUE</tt> otherwise.
143
- #
144
- # ---
145
- # * GSL::MultiFit::FdfSolver#test_gradient(g, epsabs)
146
- # * GSL::MultiFit::FdfSolver#test_gradient(epsabs)
147
- #
148
- # This function tests the residual gradient <tt>g</tt> against the absolute error
149
- # bound <tt>epsabs</tt>. If <tt>g</tt> is not given, it is calculated internally.
150
- # Mathematically, the gradient should be exactly zero at the minimum.
151
- # The test returns <tt>GSL::SUCCESS</tt> if the following condition is achieved,
152
- # \sum_i |g_i| < epsabs
153
- # and returns <tt>GSL::CONTINUE</tt> otherwise. This criterion is suitable for
154
- # situations where the precise location of the minimum, x, is unimportant provided
155
- # a value can be found where the gradient is small enough.
156
- #
157
- # ---
158
- # * GSL::MultiFit::FdfSolver#gradient
159
- #
160
- # This method returns the gradient g of \Phi(x) = (1/2) ||F(x)||^2 from the
161
- # Jacobian matrix and the function values, using the formula g = J^T f.
162
- #
163
- # ---
164
- # * GSL::MultiFit.test_delta(dx, x, epsabs, epsrel)
165
- # * GSL::MultiFit.test_gradient(g, epsabs)
166
- # * GSL::MultiFit.gradient(jac, f, g)
167
- # * GSL::MultiFit.covar(jac, epsrel)
168
- # * GSL::MultiFit.covar(jac, epsrel, covar)
169
- #
170
- # Singleton methods of the <tt>GSL::MultiFit</tt> module.
171
- #
172
- #
173
- # == Computing the covariance matrix of best fit parameters
174
- # ---
175
- # * GSL::MultiFit.covar(J, epsrel)
176
- # * GSL::MultiFit.covar(J, epsrel, covar)
177
- #
178
- # This method uses the Jacobian matrix <tt>J</tt> to compute the covariance
179
- # matrix of the best-fit parameters. If an existing matrix <tt>covar</tt> is given,
180
- # it is overwritten, and if not, this method returns a new matrix.
181
- # The parameter <tt>epsrel</tt> is used to remove linear-dependent columns when
182
- # <tt>J</tt> is rank deficient.
183
- #
184
- # The covariance matrix is given by,
185
- # covar = (J^T J)^{-1}
186
- # and is computed by QR decomposition of <tt>J</tt> with column-pivoting.
187
- # Any columns of R which satisfy
188
- # |R_{kk}| <= epsrel |R_{11}|
189
- # are considered linearly-dependent and are excluded from the covariance matrix
190
- # (the corresponding rows and columns of the covariance matrix are set to zero).
191
- #
192
- # == Higher level interfaces
193
- # ---
194
- # * GSL::MultiFit::FdfSolver.fit(x, y, type[, guess])
195
- # * GSL::MultiFit::FdfSolver.fit(x, w, y, type[, guess])
196
- #
197
- # This method uses <tt>FdfSolver</tt> with the LMSDER algorithm to fit the data
198
- # <tt>[x, y]</tt> to a function of type <tt>type</tt>. The returned value is
199
- # an array of 4 elements, <tt>[coef, err, chisq, dof]</tt>,
200
- # where <tt>coef</tt> is an array of the fitting coefficients, <tt>err</tt> contains
201
- # errors in estimating <tt>coef</tt>, <tt>chisq</tt> is the
202
- # chi-squared, and <tt>dof</tt> is the degree-of-freedom in the fitting
203
- # which equals to (data length - number of fitting coefficients). The optional
204
- # argument <tt>guess</tt> is an array of initial guess of the coefficients.
205
- # The fitting type <tt>type</tt> is given by a <tt>String</tt> as follows.
206
- # * <tt>"gaussian"</tt>: Gaussian fit,
207
- # <tt>y = y0 + A exp(-(x-x0)^2/2/var)</tt>, <tt>coef = [y0, A, x0, var]</tt>
208
- # * <tt>"gaussian_2peaks"</tt>: 2-peak Gaussian fit,
209
- # <tt>y = y0 + A1 exp(-(x-x1)^2/2/var1) + A2 exp(-(x-x2)^2/2/var2)</tt>, <tt>coef = [y0, A1, x1, var1, A2, x2, var2]</tt>
210
- # * <tt>"exp"</tt>: Exponential fit,
211
- # <tt>y = y0 + A exp(-b x)</tt>, <tt>coef = [y0, A, b]</tt>
212
- # * <tt>"dblexp"</tt>: Double exponential fit,
213
- # <tt>y = y0 + A1 exp(-b1 x) + A2 exp(-b2 x)</tt>, <tt>coef = [y0, A1, b1, A2, b2]</tt>
214
- # * <tt>"sin"</tt>: Sinusoidal fit,
215
- # <tt>y = y0 + A sin(f x + phi)</tt>, <tt>coef = [y0, A, f, phi]</tt>
216
- # * <tt>"lor"</tt>: Lorentzian peak fit,
217
- # <tt>y = y0 + A/((x-x0)^2 + B)</tt>, <tt>coef = [y0, A, x0, B]</tt>
218
- # * <tt>"hill"</tt>: Hill's equation fit,
219
- # <tt>y = y0 + (m - y0)/(1 + (xhalf/x)^r)</tt>, <tt>coef = [y0, n, xhalf, r]</tt>
220
- # * <tt>"sigmoid"</tt>: Sigmoid (Fermi-Dirac) function fit,
221
- # <tt>y = y0 + m/(1 + exp((x0-x)/r))</tt>, <tt>coef = [y0, m, x0, r]</tt>
222
- # * <tt>"power"</tt>: Power-law fit,
223
- # <tt>y = y0 + A x^r</tt>, <tt>coef = [y0, A, r]</tt>
224
- # * <tt>"lognormal"</tt>: Lognormal peak fit,
225
- # <tt>y = y0 + A exp[ -(log(x/x0)/width)^2 ]</tt>, <tt>coef = [y0, A, x0, width]</tt>
226
- #
227
- # See {Linear fitting}[link:rdoc/fit_rdoc.html#label-Higer+level+interface] for linear and polynomical fittings.
228
- #
229
- # == Examples
230
- # === Fitting to user-defined functions
231
- #
232
- # The following example program fits a weighted exponential model with background
233
- # to experimental data, Y = A exp(-lambda t) + b. The first part of the program sets
234
- # up the functions <tt>procf</tt> and <tt>procdf</tt> to calculate the model and its Jacobian.
235
- # The appropriate fitting function is given by,
236
- # f_i = ((A exp(-lambda t_i) + b) - y_i)/sigma_i
237
- # where we have chosen t_i = i. The Jacobian matrix <tt>jac</tt> is the derivative of
238
- # these functions with respect to the three parameters (A, lambda, b). It is given by,
239
- # J_{ij} = d f_i / d x_j
240
- # where x_0 = A, x_1 = lambda and x_2 = b.
241
- #
242
- #
243
- # require("gsl")
244
- # include GSL::MultiFit
245
- #
246
- # # x: Vector, list of the parameters to determine
247
- # # t, y, sigma: Vectors, observational data
248
- # # f: Vector, function to minimize
249
- # procf = Proc.new { |x, t, y, sigma, f|
250
- # a = x[0]
251
- # lambda = x[1]
252
- # b = x[2]
253
- # n = t.size
254
- # for i in 0...n do
255
- # yi = a*Math::exp(-lambda*t[i]) + b
256
- # f[i] = (yi - y[i])/sigma[i]
257
- # end
258
- # }
259
- #
260
- # # jac: Matrix, Jacobian
261
- # procdf = Proc.new { |x, t, y, sigma, jac|
262
- # a = x[0]
263
- # lambda = x[1]
264
- # n = t.size
265
- # for i in 0...n do
266
- # ti = t[i]
267
- # si = sigma[i]
268
- # ei = Math::exp(-lambda*ti)
269
- # jac.set(i, 0, ei/si)
270
- # jac.set(i, 1, -ti*a*ei/si)
271
- # jac.set(i, 2, 1.0/si)
272
- # end
273
- # }
274
- #
275
- # f = GSL::MultiFit::Function_fdf.alloc(procf, procdf, 2)
276
- #
277
- # # Create data
278
- # r = GSL::Rng.alloc()
279
- # t = GSL::Vector.alloc(n)
280
- # y = GSL::Vector.alloc(n)
281
- # sigma = Vector.alloc(n)
282
- # for i in 0...n do
283
- # t[i] = i
284
- # y[i] = 1.0 + 5*Math::exp(-0.1*t[i]) + r.gaussian(0.1)
285
- # sigma[i] = 0.1
286
- # end
287
- #
288
- # f.set_data(t, y, sigma)
289
- # x = GSL::Vector.alloc(1.0, 0.0, 0.0) # initial guess
290
- #
291
- # solver = GSL::FdfSolver.alloc(FdfSolver::LMSDER, n, np)
292
- #
293
- # solver.set(f, x)
294
- #
295
- # iter = 0
296
- # solver.print_state(iter)
297
- # begin
298
- # iter += 1
299
- # status = solver.iterate
300
- # solver.print_state(iter)
301
- # status = solver.test_delta(1e-4, 1e-4)
302
- # end while status == GSL::CONTINUE and iter < 500
303
- #
304
- # covar = solver.covar(0.0)
305
- # position = solver.position
306
- # chi2 = pow_2(solver.f.dnrm2)
307
- # dof = n - np
308
- # printf("A = %.5f +/- %.5f\n", position[0], Math::sqrt(chi2/dof*covar[0][0]))
309
- # printf("lambda = %.5f +/- %.5f\n", position[1], Math::sqrt(chi2/dof*covar[1][1]))
310
- # printf("b = %.5f +/- %.5f\n", position[2], Math::sqrt(chi2/dof*covar[2][2]))
311
- #
312
- #
313
- # === Fitting to built-in functions
314
- # #!/usr/bin/env ruby
315
- # require("gsl")
316
- # include MultiFit
317
- #
318
- # N = 100
319
- #
320
- # y0 = 1.0
321
- # A = 2.0
322
- # x0 = 3.0
323
- # w = 0.5
324
- #
325
- # r = Rng.alloc
326
- # x = Vector.linspace(0.01, 10, N)
327
- # sig = 1
328
- # # Lognormal function with noise
329
- # y = y0 + A*Sf::exp(-pow_2(Sf::log(x/x0)/w)) + 0.1*Ran::gaussian(r, sig, N)
330
- #
331
- # guess = [0, 3, 2, 1]
332
- # coef, err, chi2, dof = MultiFit::FdfSolver.fit(x, y, "lognormal", guess)
333
- # y0 = coef[0]
334
- # amp = coef[1]
335
- # x0 = coef[2]
336
- # w = coef[3]
337
- #
338
- # graph(x, y, y0+amp*Sf::exp(-pow_2(Sf::log(x/x0)/w)))
339
- #
340
- #
341
- # {prev}[link:rdoc/fit_rdoc.html]
342
- # {next}[link:rdoc/bspline_rdoc.html]
343
- #
344
- # {Reference index}[link:rdoc/ref_rdoc.html]
345
- # {top}[link:index.html]
346
- #
347
- #
348
- #