Sha256: a0955c0556c3d5835a3efbc5177650ebc63dd6bfdf648433731558d602b1fced

Contents?: true

Size: 958 Bytes

Versions: 16

Compression:

Stored size: 958 Bytes

Contents

#!/usr/bin/env ruby
require("gsl")
solver = GSL::Root::FSolver.alloc(GSL::Root::FSolver::BISECTION)
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
IO.popen("graph -T X -C -g 3 -X Iterations -Y 'Root'\
         --toggle-rotate-y-label\
         -L 'x^2 - 5 = 0, #{solver.name}' -I e -S 4", "w") do |io|
  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)
    io.printf("%d %e %e\n", iter, r, (xu-xl)/2)
  end
end


Version data entries

16 entries across 16 versions & 4 rubygems

Version Path
rb-gsl-1.16.0.4 examples/roots/demo.rb
rb-gsl-1.16.0.3 examples/roots/demo.rb
rb-gsl-1.16.0.3.rc1 examples/roots/demo.rb
gsl-nmatrix-1.15.3.2 examples/roots/demo.rb
gsl-nmatrix-1.15.3.1 examples/roots/demo.rb
rb-gsl-1.16.0.2 examples/roots/demo.rb
rb-gsl-1.16.0.1 examples/roots/demo.rb
rb-gsl-1.16.0 examples/roots/demo.rb
rb-gsl-1.15.3.2 examples/roots/demo.rb
rb-gsl-1.15.3.1 examples/roots/demo.rb
blackwinter-gsl-1.15.3.2 examples/roots/demo.rb
gsl-nmatrix-1.15.3.0 examples/roots/demo.rb
gsl-1.15.3 examples/roots/demo.rb
gsl-1.14.7 examples/roots/demo.rb
gsl-1.14.6 examples/roots/demo.rb
gsl-1.14.5 examples/roots/demo.rb