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.
- checksums.yaml +4 -4
- data/rb-gsl.gemspec +5 -10
- metadata +10 -713
- data/.gitignore +0 -12
- data/.travis.yml +0 -24
- data/AUTHORS +0 -12
- data/COPYING +0 -341
- data/ChangeLog +0 -621
- data/Gemfile +0 -4
- data/README.md +0 -77
- data/Rakefile +0 -20
- data/THANKS +0 -17
- data/examples/alf/alf.gp +0 -15
- data/examples/alf/alf.rb +0 -32
- data/examples/blas/blas.rb +0 -13
- data/examples/blas/dnrm2.rb +0 -16
- data/examples/blas/level1.rb +0 -81
- data/examples/blas/level2.rb +0 -11
- data/examples/blas/level3.rb +0 -12
- data/examples/bspline.rb +0 -57
- data/examples/cdf.rb +0 -16
- data/examples/cheb.rb +0 -21
- data/examples/combination.rb +0 -23
- data/examples/complex/RC-lpf.rb +0 -47
- data/examples/complex/add.rb +0 -36
- data/examples/complex/coerce.rb +0 -14
- data/examples/complex/complex.rb +0 -25
- data/examples/complex/fpmi.rb +0 -70
- data/examples/complex/functions.rb +0 -77
- data/examples/complex/michelson.rb +0 -36
- data/examples/complex/mul.rb +0 -28
- data/examples/complex/oscillator.rb +0 -17
- data/examples/complex/set.rb +0 -37
- data/examples/const/physconst.rb +0 -151
- data/examples/const/travel.rb +0 -45
- data/examples/deriv/demo.rb +0 -13
- data/examples/deriv/deriv.rb +0 -36
- data/examples/deriv/diff.rb +0 -35
- data/examples/dht.rb +0 -42
- data/examples/dirac.rb +0 -56
- data/examples/eigen/eigen.rb +0 -34
- data/examples/eigen/herm.rb +0 -22
- data/examples/eigen/narray.rb +0 -9
- data/examples/eigen/nonsymm.rb +0 -37
- data/examples/eigen/nonsymmv.rb +0 -43
- data/examples/eigen/qhoscillator.gp +0 -35
- data/examples/eigen/qhoscillator.rb +0 -90
- data/examples/eigen/vander.rb +0 -41
- data/examples/fft/fft.rb +0 -17
- data/examples/fft/fft2.rb +0 -17
- data/examples/fft/forward.rb +0 -25
- data/examples/fft/forward2.rb +0 -26
- data/examples/fft/radix2.rb +0 -18
- data/examples/fft/real-halfcomplex.rb +0 -33
- data/examples/fft/real-halfcomplex2.rb +0 -30
- data/examples/fft/realradix2.rb +0 -19
- data/examples/fft/sunspot.dat +0 -256
- data/examples/fft/sunspot.rb +0 -16
- data/examples/fit/expdata.dat +0 -20
- data/examples/fit/expfit.rb +0 -31
- data/examples/fit/gaussfit.rb +0 -29
- data/examples/fit/gaussian_2peaks.rb +0 -34
- data/examples/fit/hillfit.rb +0 -40
- data/examples/fit/lognormal.rb +0 -26
- data/examples/fit/lorentzfit.rb +0 -22
- data/examples/fit/multifit.rb +0 -72
- data/examples/fit/ndlinear.rb +0 -133
- data/examples/fit/nonlinearfit.rb +0 -89
- data/examples/fit/plot.gp +0 -36
- data/examples/fit/polyfit.rb +0 -9
- data/examples/fit/powerfit.rb +0 -21
- data/examples/fit/sigmoidfit.rb +0 -40
- data/examples/fit/sinfit.rb +0 -22
- data/examples/fit/wlinear.rb +0 -46
- data/examples/fresnel.rb +0 -11
- data/examples/function/function.rb +0 -36
- data/examples/function/log.rb +0 -7
- data/examples/function/min.rb +0 -33
- data/examples/function/sin.rb +0 -10
- data/examples/function/synchrotron.rb +0 -18
- data/examples/gallery/butterfly.rb +0 -7
- data/examples/gallery/cayley.rb +0 -12
- data/examples/gallery/cornu.rb +0 -23
- data/examples/gallery/eight.rb +0 -11
- data/examples/gallery/koch.rb +0 -40
- data/examples/gallery/lemniscate.rb +0 -11
- data/examples/gallery/polar.rb +0 -11
- data/examples/gallery/rgplot/cossin.rb +0 -35
- data/examples/gallery/rgplot/rgplot.replaced +0 -0
- data/examples/gallery/rgplot/roesller.rb +0 -55
- data/examples/gallery/roesller.rb +0 -39
- data/examples/gallery/scarabaeus.rb +0 -14
- data/examples/histogram/cauchy.rb +0 -27
- data/examples/histogram/cauchy.sh +0 -2
- data/examples/histogram/exponential.rb +0 -19
- data/examples/histogram/gauss.rb +0 -16
- data/examples/histogram/gsl-histogram.rb +0 -40
- data/examples/histogram/histo2d.rb +0 -31
- data/examples/histogram/histo3d.rb +0 -34
- data/examples/histogram/histogram-pdf.rb +0 -27
- data/examples/histogram/histogram.rb +0 -26
- data/examples/histogram/integral.rb +0 -28
- data/examples/histogram/poisson.rb +0 -27
- data/examples/histogram/power.rb +0 -25
- data/examples/histogram/rebin.rb +0 -17
- data/examples/histogram/smp.dat +0 -5
- data/examples/histogram/xexp.rb +0 -21
- data/examples/integration/ahmed.rb +0 -21
- data/examples/integration/cosmology.rb +0 -75
- data/examples/integration/friedmann.gp +0 -16
- data/examples/integration/friedmann.rb +0 -35
- data/examples/integration/gamma-zeta.rb +0 -35
- data/examples/integration/integration.rb +0 -22
- data/examples/integration/qag.rb +0 -8
- data/examples/integration/qag2.rb +0 -14
- data/examples/integration/qag3.rb +0 -8
- data/examples/integration/qagi.rb +0 -28
- data/examples/integration/qagi2.rb +0 -49
- data/examples/integration/qagiu.rb +0 -29
- data/examples/integration/qagp.rb +0 -20
- data/examples/integration/qags.rb +0 -14
- data/examples/integration/qawc.rb +0 -18
- data/examples/integration/qawf.rb +0 -41
- data/examples/integration/qawo.rb +0 -29
- data/examples/integration/qaws.rb +0 -30
- data/examples/integration/qng.rb +0 -17
- data/examples/interp/demo.gp +0 -20
- data/examples/interp/demo.rb +0 -45
- data/examples/interp/interp.rb +0 -37
- data/examples/interp/points +0 -10
- data/examples/interp/spline.rb +0 -20
- data/examples/jacobi/deriv.rb +0 -40
- data/examples/jacobi/integrate.rb +0 -34
- data/examples/jacobi/interp.rb +0 -43
- data/examples/jacobi/jacobi.rb +0 -11
- data/examples/linalg/HH.rb +0 -15
- data/examples/linalg/HH_narray.rb +0 -13
- data/examples/linalg/LQ_solve.rb +0 -73
- data/examples/linalg/LU.rb +0 -84
- data/examples/linalg/LU2.rb +0 -31
- data/examples/linalg/LU_narray.rb +0 -24
- data/examples/linalg/PTLQ.rb +0 -47
- data/examples/linalg/QR.rb +0 -18
- data/examples/linalg/QRPT.rb +0 -47
- data/examples/linalg/QR_solve.rb +0 -78
- data/examples/linalg/QR_solve_narray.rb +0 -13
- data/examples/linalg/SV.rb +0 -16
- data/examples/linalg/SV_narray.rb +0 -12
- data/examples/linalg/SV_solve.rb +0 -49
- data/examples/linalg/chol.rb +0 -29
- data/examples/linalg/chol_narray.rb +0 -15
- data/examples/linalg/complex.rb +0 -57
- data/examples/linalg/invert_narray.rb +0 -10
- data/examples/math/const.rb +0 -67
- data/examples/math/elementary.rb +0 -35
- data/examples/math/functions.rb +0 -41
- data/examples/math/inf_nan.rb +0 -34
- data/examples/math/minmax.rb +0 -22
- data/examples/math/power.rb +0 -18
- data/examples/math/test.rb +0 -31
- data/examples/matrix/a.dat +0 -0
- data/examples/matrix/add.rb +0 -45
- data/examples/matrix/b.dat +0 -4
- data/examples/matrix/cat.rb +0 -31
- data/examples/matrix/colvectors.rb +0 -24
- data/examples/matrix/complex.rb +0 -41
- data/examples/matrix/det.rb +0 -29
- data/examples/matrix/diagonal.rb +0 -23
- data/examples/matrix/get_all.rb +0 -159
- data/examples/matrix/hilbert.rb +0 -31
- data/examples/matrix/iterator.rb +0 -19
- data/examples/matrix/matrix.rb +0 -57
- data/examples/matrix/minmax.rb +0 -53
- data/examples/matrix/mul.rb +0 -39
- data/examples/matrix/rand.rb +0 -20
- data/examples/matrix/read.rb +0 -29
- data/examples/matrix/rowcol.rb +0 -47
- data/examples/matrix/set.rb +0 -41
- data/examples/matrix/set_all.rb +0 -100
- data/examples/matrix/view.rb +0 -32
- data/examples/matrix/view_all.rb +0 -148
- data/examples/matrix/write.rb +0 -23
- data/examples/min.rb +0 -29
- data/examples/monte/miser.rb +0 -47
- data/examples/monte/monte.rb +0 -47
- data/examples/monte/plain.rb +0 -47
- data/examples/monte/vegas.rb +0 -46
- data/examples/multimin/bundle.rb +0 -66
- data/examples/multimin/cqp.rb +0 -109
- data/examples/multimin/fdfminimizer.rb +0 -40
- data/examples/multimin/fminimizer.rb +0 -41
- data/examples/multiroot/demo.rb +0 -36
- data/examples/multiroot/fdfsolver.rb +0 -50
- data/examples/multiroot/fsolver.rb +0 -33
- data/examples/multiroot/fsolver2.rb +0 -32
- data/examples/multiroot/fsolver3.rb +0 -26
- data/examples/narray/histogram.rb +0 -14
- data/examples/narray/mandel.rb +0 -27
- data/examples/narray/narray.rb +0 -28
- data/examples/narray/narray2.rb +0 -44
- data/examples/narray/sf.rb +0 -26
- data/examples/ntuple/create.rb +0 -17
- data/examples/ntuple/project.rb +0 -31
- data/examples/odeiv/binarysystem.gp +0 -23
- data/examples/odeiv/binarysystem.rb +0 -104
- data/examples/odeiv/demo.gp +0 -24
- data/examples/odeiv/demo.rb +0 -69
- data/examples/odeiv/demo2.gp +0 -26
- data/examples/odeiv/duffing.rb +0 -45
- data/examples/odeiv/frei1.rb +0 -109
- data/examples/odeiv/frei2.rb +0 -76
- data/examples/odeiv/legendre.rb +0 -52
- data/examples/odeiv/odeiv.rb +0 -32
- data/examples/odeiv/odeiv2.rb +0 -45
- data/examples/odeiv/oscillator.rb +0 -42
- data/examples/odeiv/sedov.rb +0 -97
- data/examples/odeiv/whitedwarf.gp +0 -40
- data/examples/odeiv/whitedwarf.rb +0 -158
- data/examples/ool/conmin.rb +0 -100
- data/examples/ool/gencan.rb +0 -99
- data/examples/ool/pgrad.rb +0 -100
- data/examples/ool/spg.rb +0 -100
- data/examples/pdf/bernoulli.rb +0 -5
- data/examples/pdf/beta.rb +0 -7
- data/examples/pdf/binomiral.rb +0 -10
- data/examples/pdf/cauchy.rb +0 -6
- data/examples/pdf/chisq.rb +0 -8
- data/examples/pdf/exponential.rb +0 -7
- data/examples/pdf/exppow.rb +0 -6
- data/examples/pdf/fdist.rb +0 -7
- data/examples/pdf/flat.rb +0 -7
- data/examples/pdf/gamma.rb +0 -8
- data/examples/pdf/gauss-tail.rb +0 -5
- data/examples/pdf/gauss.rb +0 -6
- data/examples/pdf/geometric.rb +0 -5
- data/examples/pdf/gumbel.rb +0 -6
- data/examples/pdf/hypergeometric.rb +0 -11
- data/examples/pdf/landau.rb +0 -5
- data/examples/pdf/laplace.rb +0 -7
- data/examples/pdf/logarithmic.rb +0 -5
- data/examples/pdf/logistic.rb +0 -6
- data/examples/pdf/lognormal.rb +0 -6
- data/examples/pdf/neg-binomiral.rb +0 -10
- data/examples/pdf/pareto.rb +0 -7
- data/examples/pdf/pascal.rb +0 -10
- data/examples/pdf/poisson.rb +0 -5
- data/examples/pdf/rayleigh-tail.rb +0 -6
- data/examples/pdf/rayleigh.rb +0 -6
- data/examples/pdf/tdist.rb +0 -6
- data/examples/pdf/weibull.rb +0 -8
- data/examples/permutation/ex1.rb +0 -22
- data/examples/permutation/permutation.rb +0 -16
- data/examples/poly/bell.rb +0 -6
- data/examples/poly/bessel.rb +0 -6
- data/examples/poly/cheb.rb +0 -6
- data/examples/poly/cheb_II.rb +0 -6
- data/examples/poly/cubic.rb +0 -9
- data/examples/poly/demo.rb +0 -20
- data/examples/poly/eval.rb +0 -28
- data/examples/poly/eval_derivs.rb +0 -14
- data/examples/poly/fit.rb +0 -21
- data/examples/poly/hermite.rb +0 -6
- data/examples/poly/poly.rb +0 -13
- data/examples/poly/quadratic.rb +0 -25
- data/examples/random/diffusion.rb +0 -34
- data/examples/random/gaussian.rb +0 -9
- data/examples/random/generator.rb +0 -27
- data/examples/random/hdsobol.rb +0 -21
- data/examples/random/poisson.rb +0 -9
- data/examples/random/qrng.rb +0 -19
- data/examples/random/randomwalk.rb +0 -37
- data/examples/random/randomwalk2d.rb +0 -19
- data/examples/random/rayleigh.rb +0 -36
- data/examples/random/rng.rb +0 -33
- data/examples/random/rngextra.rb +0 -14
- data/examples/roots/bisection.rb +0 -25
- data/examples/roots/brent.rb +0 -43
- data/examples/roots/demo.rb +0 -30
- data/examples/roots/newton.rb +0 -46
- data/examples/roots/recombination.gp +0 -11
- data/examples/roots/recombination.rb +0 -61
- data/examples/roots/steffenson.rb +0 -48
- data/examples/sf/ShiChi.rb +0 -6
- data/examples/sf/SiCi.rb +0 -6
- data/examples/sf/airy_Ai.rb +0 -8
- data/examples/sf/airy_Bi.rb +0 -8
- data/examples/sf/bessel_IK.rb +0 -12
- data/examples/sf/bessel_JY.rb +0 -13
- data/examples/sf/beta_inc.rb +0 -9
- data/examples/sf/clausen.rb +0 -6
- data/examples/sf/dawson.rb +0 -5
- data/examples/sf/debye.rb +0 -9
- data/examples/sf/dilog.rb +0 -6
- data/examples/sf/ellint.rb +0 -6
- data/examples/sf/expint.rb +0 -8
- data/examples/sf/fermi.rb +0 -10
- data/examples/sf/gamma_inc_P.rb +0 -9
- data/examples/sf/gegenbauer.rb +0 -8
- data/examples/sf/hyperg.rb +0 -7
- data/examples/sf/laguerre.rb +0 -19
- data/examples/sf/lambertW.rb +0 -5
- data/examples/sf/legendre_P.rb +0 -10
- data/examples/sf/lngamma.rb +0 -5
- data/examples/sf/psi.rb +0 -54
- data/examples/sf/sphbessel.gp +0 -27
- data/examples/sf/sphbessel.rb +0 -30
- data/examples/sf/synchrotron.rb +0 -5
- data/examples/sf/transport.rb +0 -10
- data/examples/sf/zetam1.rb +0 -5
- data/examples/siman.rb +0 -44
- data/examples/sort/heapsort.rb +0 -23
- data/examples/sort/heapsort_vector_complex.rb +0 -21
- data/examples/sort/sort.rb +0 -23
- data/examples/sort/sort2.rb +0 -16
- data/examples/stats/mean.rb +0 -17
- data/examples/stats/statistics.rb +0 -18
- data/examples/stats/test.rb +0 -9
- data/examples/sum.rb +0 -34
- data/examples/tamu_anova.rb +0 -18
- data/examples/vector/a.dat +0 -0
- data/examples/vector/add.rb +0 -56
- data/examples/vector/b.dat +0 -4
- data/examples/vector/c.dat +0 -3
- data/examples/vector/collect.rb +0 -26
- data/examples/vector/compare.rb +0 -28
- data/examples/vector/complex.rb +0 -51
- data/examples/vector/complex_get_all.rb +0 -85
- data/examples/vector/complex_set_all.rb +0 -131
- data/examples/vector/complex_view_all.rb +0 -77
- data/examples/vector/connect.rb +0 -22
- data/examples/vector/decimate.rb +0 -38
- data/examples/vector/diff.rb +0 -31
- data/examples/vector/filescan.rb +0 -17
- data/examples/vector/floor.rb +0 -23
- data/examples/vector/get_all.rb +0 -82
- data/examples/vector/gnuplot.rb +0 -38
- data/examples/vector/graph.rb +0 -28
- data/examples/vector/histogram.rb +0 -22
- data/examples/vector/linspace.rb +0 -24
- data/examples/vector/log.rb +0 -17
- data/examples/vector/logic.rb +0 -33
- data/examples/vector/logspace.rb +0 -25
- data/examples/vector/minmax.rb +0 -47
- data/examples/vector/mul.rb +0 -49
- data/examples/vector/narray.rb +0 -46
- data/examples/vector/read.rb +0 -29
- data/examples/vector/set.rb +0 -35
- data/examples/vector/set_all.rb +0 -121
- data/examples/vector/smpv.dat +0 -15
- data/examples/vector/test.rb +0 -43
- data/examples/vector/test_gslblock.rb +0 -58
- data/examples/vector/vector.rb +0 -110
- data/examples/vector/view.rb +0 -35
- data/examples/vector/view_all.rb +0 -73
- data/examples/vector/where.rb +0 -29
- data/examples/vector/write.rb +0 -24
- data/examples/vector/zip.rb +0 -34
- data/examples/wavelet/ecg.dat +0 -256
- data/examples/wavelet/wavelet1.rb +0 -50
- data/ext/gsl_native/alf.c +0 -206
- data/ext/gsl_native/array.c +0 -553
- data/ext/gsl_native/array_complex.c +0 -245
- data/ext/gsl_native/blas.c +0 -28
- data/ext/gsl_native/blas1.c +0 -733
- data/ext/gsl_native/blas2.c +0 -1088
- data/ext/gsl_native/blas3.c +0 -880
- data/ext/gsl_native/block.c +0 -40
- data/ext/gsl_native/block_source.h +0 -885
- data/ext/gsl_native/bspline.c +0 -122
- data/ext/gsl_native/bundle.c +0 -3
- data/ext/gsl_native/cdf.c +0 -740
- data/ext/gsl_native/cheb.c +0 -531
- data/ext/gsl_native/combination.c +0 -275
- data/ext/gsl_native/common.c +0 -293
- data/ext/gsl_native/complex.c +0 -1002
- data/ext/gsl_native/const.c +0 -331
- data/ext/gsl_native/const_additional.c +0 -99
- data/ext/gsl_native/cqp.c +0 -283
- data/ext/gsl_native/deriv.c +0 -187
- data/ext/gsl_native/dht.c +0 -353
- data/ext/gsl_native/diff.c +0 -164
- data/ext/gsl_native/dirac.c +0 -388
- data/ext/gsl_native/eigen.c +0 -2322
- data/ext/gsl_native/error.c +0 -193
- data/ext/gsl_native/extconf.rb +0 -118
- data/ext/gsl_native/fft.c +0 -1095
- data/ext/gsl_native/fit.c +0 -204
- data/ext/gsl_native/fresnel.c +0 -312
- data/ext/gsl_native/function.c +0 -518
- data/ext/gsl_native/geometry.c +0 -139
- data/ext/gsl_native/graph.c +0 -1590
- data/ext/gsl_native/gsl.c +0 -259
- data/ext/gsl_native/gsl_narray.c +0 -794
- data/ext/gsl_native/histogram.c +0 -1964
- data/ext/gsl_native/histogram2d.c +0 -1042
- data/ext/gsl_native/histogram3d.c +0 -884
- data/ext/gsl_native/histogram3d_source.c +0 -749
- data/ext/gsl_native/histogram_find.c +0 -99
- data/ext/gsl_native/histogram_oper.c +0 -150
- data/ext/gsl_native/ieee.c +0 -88
- data/ext/gsl_native/include/rb_gsl.h +0 -136
- data/ext/gsl_native/include/rb_gsl_array.h +0 -214
- data/ext/gsl_native/include/rb_gsl_cheb.h +0 -19
- data/ext/gsl_native/include/rb_gsl_common.h +0 -348
- data/ext/gsl_native/include/rb_gsl_complex.h +0 -25
- data/ext/gsl_native/include/rb_gsl_const.h +0 -23
- data/ext/gsl_native/include/rb_gsl_dirac.h +0 -6
- data/ext/gsl_native/include/rb_gsl_eigen.h +0 -17
- data/ext/gsl_native/include/rb_gsl_fft.h +0 -49
- data/ext/gsl_native/include/rb_gsl_fit.h +0 -23
- data/ext/gsl_native/include/rb_gsl_function.h +0 -23
- data/ext/gsl_native/include/rb_gsl_graph.h +0 -68
- data/ext/gsl_native/include/rb_gsl_histogram.h +0 -63
- data/ext/gsl_native/include/rb_gsl_histogram3d.h +0 -97
- data/ext/gsl_native/include/rb_gsl_integration.h +0 -17
- data/ext/gsl_native/include/rb_gsl_interp.h +0 -41
- data/ext/gsl_native/include/rb_gsl_linalg.h +0 -21
- data/ext/gsl_native/include/rb_gsl_math.h +0 -20
- data/ext/gsl_native/include/rb_gsl_odeiv.h +0 -18
- data/ext/gsl_native/include/rb_gsl_poly.h +0 -67
- data/ext/gsl_native/include/rb_gsl_rational.h +0 -30
- data/ext/gsl_native/include/rb_gsl_rng.h +0 -20
- data/ext/gsl_native/include/rb_gsl_root.h +0 -22
- data/ext/gsl_native/include/rb_gsl_sf.h +0 -110
- data/ext/gsl_native/include/rb_gsl_statistics.h +0 -17
- data/ext/gsl_native/include/rb_gsl_tensor.h +0 -43
- data/ext/gsl_native/include/rb_gsl_with_narray.h +0 -31
- data/ext/gsl_native/include/templates_off.h +0 -87
- data/ext/gsl_native/include/templates_on.h +0 -241
- data/ext/gsl_native/integration.c +0 -1154
- data/ext/gsl_native/interp.c +0 -499
- data/ext/gsl_native/jacobi.c +0 -733
- data/ext/gsl_native/linalg.c +0 -3915
- data/ext/gsl_native/linalg_complex.c +0 -726
- data/ext/gsl_native/math.c +0 -706
- data/ext/gsl_native/matrix.c +0 -36
- data/ext/gsl_native/matrix_complex.c +0 -1733
- data/ext/gsl_native/matrix_double.c +0 -557
- data/ext/gsl_native/matrix_int.c +0 -255
- data/ext/gsl_native/matrix_source.h +0 -2708
- data/ext/gsl_native/min.c +0 -219
- data/ext/gsl_native/monte.c +0 -978
- data/ext/gsl_native/multifit.c +0 -1862
- data/ext/gsl_native/multimin.c +0 -778
- data/ext/gsl_native/multimin_fsdf.c +0 -156
- data/ext/gsl_native/multiroots.c +0 -952
- data/ext/gsl_native/multiset.c +0 -210
- data/ext/gsl_native/ndlinear.c +0 -320
- data/ext/gsl_native/nmf.c +0 -171
- data/ext/gsl_native/nmf_wrap.c +0 -75
- data/ext/gsl_native/ntuple.c +0 -469
- data/ext/gsl_native/odeiv.c +0 -947
- data/ext/gsl_native/ool.c +0 -879
- data/ext/gsl_native/permutation.c +0 -598
- data/ext/gsl_native/poly.c +0 -39
- data/ext/gsl_native/poly2.c +0 -265
- data/ext/gsl_native/poly_source.h +0 -1871
- data/ext/gsl_native/qrng.c +0 -160
- data/ext/gsl_native/randist.c +0 -1848
- data/ext/gsl_native/rational.c +0 -480
- data/ext/gsl_native/rng.c +0 -595
- data/ext/gsl_native/root.c +0 -407
- data/ext/gsl_native/sf.c +0 -1446
- data/ext/gsl_native/sf_airy.c +0 -200
- data/ext/gsl_native/sf_bessel.c +0 -871
- data/ext/gsl_native/sf_clausen.c +0 -28
- data/ext/gsl_native/sf_coulomb.c +0 -206
- data/ext/gsl_native/sf_coupling.c +0 -121
- data/ext/gsl_native/sf_dawson.c +0 -29
- data/ext/gsl_native/sf_debye.c +0 -148
- data/ext/gsl_native/sf_dilog.c +0 -43
- data/ext/gsl_native/sf_elementary.c +0 -46
- data/ext/gsl_native/sf_ellint.c +0 -206
- data/ext/gsl_native/sf_elljac.c +0 -30
- data/ext/gsl_native/sf_erfc.c +0 -89
- data/ext/gsl_native/sf_exp.c +0 -169
- data/ext/gsl_native/sf_expint.c +0 -201
- data/ext/gsl_native/sf_fermi_dirac.c +0 -148
- data/ext/gsl_native/sf_gamma.c +0 -343
- data/ext/gsl_native/sf_gegenbauer.c +0 -97
- data/ext/gsl_native/sf_hyperg.c +0 -203
- data/ext/gsl_native/sf_laguerre.c +0 -113
- data/ext/gsl_native/sf_lambert.c +0 -47
- data/ext/gsl_native/sf_legendre.c +0 -368
- data/ext/gsl_native/sf_log.c +0 -105
- data/ext/gsl_native/sf_mathieu.c +0 -235
- data/ext/gsl_native/sf_power.c +0 -47
- data/ext/gsl_native/sf_psi.c +0 -89
- data/ext/gsl_native/sf_synchrotron.c +0 -48
- data/ext/gsl_native/sf_transport.c +0 -76
- data/ext/gsl_native/sf_trigonometric.c +0 -210
- data/ext/gsl_native/sf_zeta.c +0 -115
- data/ext/gsl_native/signal.c +0 -303
- data/ext/gsl_native/siman.c +0 -713
- data/ext/gsl_native/sort.c +0 -207
- data/ext/gsl_native/spline.c +0 -377
- data/ext/gsl_native/stats.c +0 -787
- data/ext/gsl_native/sum.c +0 -168
- data/ext/gsl_native/tamu_anova.c +0 -56
- data/ext/gsl_native/tensor.c +0 -35
- data/ext/gsl_native/tensor_source.h +0 -1122
- data/ext/gsl_native/vector.c +0 -35
- data/ext/gsl_native/vector_complex.c +0 -2241
- data/ext/gsl_native/vector_double.c +0 -1433
- data/ext/gsl_native/vector_int.c +0 -202
- data/ext/gsl_native/vector_source.h +0 -3321
- data/ext/gsl_native/wavelet.c +0 -923
- data/lib/gsl.rb +0 -8
- data/lib/gsl/gnuplot.rb +0 -41
- data/lib/gsl/oper.rb +0 -43
- data/lib/gsl/version.rb +0 -3
- data/lib/ool.rb +0 -22
- data/lib/ool/conmin.rb +0 -30
- data/lib/rbgsl.rb +0 -1
- data/rdoc/alf.rdoc +0 -77
- data/rdoc/blas.rdoc +0 -269
- data/rdoc/bspline.rdoc +0 -42
- data/rdoc/changes.rdoc +0 -159
- data/rdoc/cheb.rdoc +0 -99
- data/rdoc/cholesky_complex.rdoc +0 -46
- data/rdoc/combi.rdoc +0 -125
- data/rdoc/complex.rdoc +0 -210
- data/rdoc/const.rdoc +0 -546
- data/rdoc/dht.rdoc +0 -122
- data/rdoc/diff.rdoc +0 -133
- data/rdoc/ehandling.rdoc +0 -50
- data/rdoc/eigen.rdoc +0 -401
- data/rdoc/fft.rdoc +0 -535
- data/rdoc/fit.rdoc +0 -284
- data/rdoc/function.rdoc +0 -94
- data/rdoc/graph.rdoc +0 -137
- data/rdoc/hist.rdoc +0 -409
- data/rdoc/hist2d.rdoc +0 -279
- data/rdoc/hist3d.rdoc +0 -112
- data/rdoc/integration.rdoc +0 -398
- data/rdoc/interp.rdoc +0 -231
- data/rdoc/intro.rdoc +0 -27
- data/rdoc/linalg.rdoc +0 -681
- data/rdoc/linalg_complex.rdoc +0 -88
- data/rdoc/math.rdoc +0 -276
- data/rdoc/matrix.rdoc +0 -1093
- data/rdoc/min.rdoc +0 -189
- data/rdoc/monte.rdoc +0 -234
- data/rdoc/multimin.rdoc +0 -312
- data/rdoc/multiroot.rdoc +0 -293
- data/rdoc/narray.rdoc +0 -177
- data/rdoc/ndlinear.rdoc +0 -250
- data/rdoc/nonlinearfit.rdoc +0 -348
- data/rdoc/ntuple.rdoc +0 -88
- data/rdoc/odeiv.rdoc +0 -378
- data/rdoc/perm.rdoc +0 -221
- data/rdoc/poly.rdoc +0 -335
- data/rdoc/qrng.rdoc +0 -90
- data/rdoc/randist.rdoc +0 -233
- data/rdoc/ref.rdoc +0 -93
- data/rdoc/rng.rdoc +0 -203
- data/rdoc/roots.rdoc +0 -305
- data/rdoc/sf.rdoc +0 -1622
- data/rdoc/siman.rdoc +0 -89
- data/rdoc/sort.rdoc +0 -94
- data/rdoc/start.rdoc +0 -16
- data/rdoc/stats.rdoc +0 -219
- data/rdoc/sum.rdoc +0 -65
- data/rdoc/tensor.rdoc +0 -251
- data/rdoc/tut.rdoc +0 -5
- data/rdoc/use.rdoc +0 -177
- data/rdoc/vector.rdoc +0 -1243
- data/rdoc/vector_complex.rdoc +0 -347
- data/rdoc/wavelet.rdoc +0 -218
- data/test/gsl/blas_test.rb +0 -79
- data/test/gsl/bspline_test.rb +0 -63
- data/test/gsl/cdf_test.rb +0 -1512
- data/test/gsl/cheb_test.rb +0 -80
- data/test/gsl/combination_test.rb +0 -100
- data/test/gsl/complex_test.rb +0 -20
- data/test/gsl/const_test.rb +0 -29
- data/test/gsl/deriv_test.rb +0 -62
- data/test/gsl/dht_test.rb +0 -79
- data/test/gsl/diff_test.rb +0 -53
- data/test/gsl/eigen_test.rb +0 -563
- data/test/gsl/err_test.rb +0 -23
- data/test/gsl/fit_test.rb +0 -101
- data/test/gsl/histo_test.rb +0 -14
- data/test/gsl/index_test.rb +0 -61
- data/test/gsl/integration_test.rb +0 -274
- data/test/gsl/interp_test.rb +0 -27
- data/test/gsl/linalg_test.rb +0 -463
- data/test/gsl/matrix_nmf_test.rb +0 -37
- data/test/gsl/matrix_test.rb +0 -98
- data/test/gsl/min_test.rb +0 -89
- data/test/gsl/monte_test.rb +0 -77
- data/test/gsl/multifit_test.rb +0 -753
- data/test/gsl/multimin_test.rb +0 -157
- data/test/gsl/multiroot_test.rb +0 -135
- data/test/gsl/multiset_test.rb +0 -52
- data/test/gsl/odeiv_test.rb +0 -275
- data/test/gsl/oper_test.rb +0 -98
- data/test/gsl/poly_test.rb +0 -338
- data/test/gsl/qrng_test.rb +0 -94
- data/test/gsl/quartic_test.rb +0 -28
- data/test/gsl/randist_test.rb +0 -122
- data/test/gsl/rng_test.rb +0 -303
- data/test/gsl/roots_test.rb +0 -78
- data/test/gsl/sf_test.rb +0 -2079
- data/test/gsl/stats_test.rb +0 -122
- data/test/gsl/sum_test.rb +0 -69
- data/test/gsl/tensor_test.rb +0 -396
- data/test/gsl/vector_test.rb +0 -223
- data/test/gsl/wavelet_test.rb +0 -130
- data/test/gsl_test.rb +0 -321
- data/test/test_helper.rb +0 -42
- data/uncrustify.cfg +0 -1693
data/rdoc/ndlinear.rdoc
DELETED
@@ -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
|
-
#
|
data/rdoc/nonlinearfit.rdoc
DELETED
@@ -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
|
-
#
|