Sha256: 191fce73f6d91f1c98578abc41fdcbcbb48b01d3fcab4fd2e031883520b0239a

Contents?: true

Size: 767 Bytes

Versions: 6

Compression:

Stored size: 767 Bytes

Contents

#!/usr/bin/env ruby
require("gsl")
solver = GSL::Root::FSolver.alloc(GSL::Root::FSolver::BISECTION)
puts "Using #{solver.name} method"
f = GSL::Function.alloc { |x, params|
  a = params[0];  b = params[1];  c = params[2]
  (a*x + b)*x + c
}
f.set_params(1, 0, -5)
expected = Math::sqrt(5.0)
printf("%5s [%9s, %9s] %9s %10s %9s\n",
       "iter", "lower", "upper", "root",  "err", "err(est)")
solver.set(f, 0.0, 5.0)
iter = 0
status = nil
while status != GSL::SUCCESS
  iter += 1
  status = solver.iterate
  r = solver.root;  xl = solver.x_lower;  xu = solver.x_upper
  status = solver.test_interval(0, 0.001)
  if status == GSL::SUCCESS; printf("Converged:\n"); end
  printf("%5d [%.7f, %.7f] %.7f %+.7f %.7f\n",
         iter, xl, xu, r, r - expected, xu - xl)
end

Version data entries

6 entries across 6 versions & 2 rubygems

Version Path
gsl-2.1.0.3 examples/roots/bisection.rb
gsl-2.1.0.2 examples/roots/bisection.rb
gsl-2.1.0.1 examples/roots/bisection.rb
gsl-2.1.0 examples/roots/bisection.rb
gsl-1.16.0.6 examples/roots/bisection.rb
rb-gsl-1.16.0.5 examples/roots/bisection.rb