Class: GSL::MultiFit::MultidLMNumDiff
- Defined in:
- lib/gsl_extras.rb
Instance Attribute Summary
Attributes inherited from MultidLM
#chi2, #covar, #dof, #my_chi2, #position
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(yproc, ndata, ndims, nparams) ⇒ MultidLMNumDiff
constructor
A new instance of MultidLMNumDiff.
- #set_data(xstart, delt, *gridpoints, y, sigma) ⇒ Object
Methods inherited from MultidLM
Constructor Details
#initialize(yproc, ndata, ndims, nparams) ⇒ MultidLMNumDiff
Returns a new instance of MultidLMNumDiff.
934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 |
# File 'lib/gsl_extras.rb', line 934 def initialize(yproc, ndata, ndims, nparams) fproc = Proc.new do |x, *gridpoints, y, sigma, f| # gridpoints = (0...@ndims).to_a.map do |i| # @gridpoints.col(i) # end for i in 0...ndata.size do f[i] = (@yproc.call(x, *gridpoints.map{|vec| vec[i]}) - y[i])/sigma[i] end end dfproc = Proc.new do |x, *gridpoints, y, sigma, jac| for j in 0...nparams do xj = x[j] xplus = x.dup xplus[j] = xj + @delt[j] xminus = x.dup xminus[j] = xj - @delt[j] for i in 0...ndata do gp = gridpoints.map{|vec| vec[i]} yplus = @yproc.call(xplus, *gp) yminus = @yproc.call(xminus, *gp) #p "delt", @delt, "sigma", @sigma, "jac", jac, "jac.shape", jac.shape, "result", (yplus - yminus)/2*@delt[j]/sigma[i] jac.set(i, j, (yplus - yminus)/2*@delt[j]/sigma[i]) end end end super(yproc, fproc, dfproc, ndata, ndims, nparams) end |
Class Method Details
.alloc(*params) ⇒ Object
930 931 932 |
# File 'lib/gsl_extras.rb', line 930 def self.alloc(*params) new(*params) end |