#!/usr/bin/env ruby
require("rbgsl")
include GSL
include GSL::Siman
N_TRIES = 200
ITERS_FIXED_T = 10
STEP_SIZE = 10
K = 1.0
T_INITIAL = 0.002
MU_T = 1.005
T_MIN = 2.0e-6
params = Siman::Params.alloc(N_TRIES, ITERS_FIXED_T, STEP_SIZE, K, T_INITIAL,
MU_T, T_MIN)
efunc = Efunc.alloc { |vx|
x = vx[0]
s = (x - 1.0)
Math::exp(-s*s)*Math::sin(8*x)
}
metric = Metric.alloc { |vx, vy|
(x[0] - y[0]).abs
}
step = Step.alloc { |rng, vx, step_size|
r = rng.uniform
old_x = vx[0]
a = r * 2 * step_size - step_size + old_x
vx[0] = a
}
simanprint = Print.alloc { |vx|
printf("%12g", vx[0])
}
x = GSL::Vector.alloc([15.5])
GSL::Rng.env_setup()
r = GSL::Rng.alloc()
Siman::solve(r, x, efunc, step, metric, simanprint, params)
#Siman::solve(r, x, efunc, step, metric, nil, params)
p x
syntax highlighted by Code2HTML, v. 0.9.1