def run_fsolver(): a = 1.0 b = 0.0 c = -5.0 mysys = roots.gsl_function(quadratic, (a, b, c)) solver = roots.brent(mysys) #solver = roots.bisection(mysys) #solver = roots.falsepos(mysys) solver.set(0.0, 5.0) iter = 0 r_expected = numx.sqrt(5.0) print "# Using solver ", solver.name() print "# %5s [%9s %9s] %9s %10s %9s" % ("iter", "upper", "lower", "root", "err", "err(est)") for iter in range(100): status = solver.iterate() x_lo = solver.x_lower() x_up = solver.x_upper() status = roots.test_interval(x_lo, x_up, 0, 0.001) r = solver.root() if status == errno.GSL_SUCCESS: print "# Convereged :" print " %5d [%.7f %.7f] %.7f % .6f % .6f" % ( iter, x_lo, x_up, r, r - r_expected, x_up - x_lo) if status == errno.GSL_SUCCESS: break else: raise ValueError, "Exeeded maximum number of iterations!"
def run_fsolver(): a = 1.0 b = 0.0 c = -5.0 mysys = roots.gsl_function(quadratic, (a,b,c)) solver = roots.brent(mysys) #solver = roots.bisection(mysys) #solver = roots.falsepos(mysys) solver.set(0.0, 5.0) iter = 0 r_expected = numx.sqrt(5.0) print "# Using solver ", solver.name() print "# %5s [%9s %9s] %9s %10s %9s" % ("iter", "upper", "lower", "root", "err", "err(est)") for iter in range(100): status = solver.iterate() x_lo = solver.x_lower() x_up = solver.x_upper() status = roots.test_interval(x_lo, x_up, 0, 0.001) r = solver.root() if status == errno.GSL_SUCCESS: print "# Convereged :" print " %5d [%.7f %.7f] %.7f % .6f % .6f" %(iter, x_lo, x_up, r, r -r_expected, x_up - x_lo) if status == errno.GSL_SUCCESS: break else: raise ValueError, "Exeeded maximum number of iterations!"
def _run(self, solver): solver.set(0.0, 5.0) iter = 0 r_expected = Numeric.sqrt(5.0) #print "Testing solver ", solver.name() #print "%5s [%9s %9s] %9s %10s %9s" % ("iter", "upper", "lower", "root", "err", "err(est)") for iter in range(100): status = solver.iterate() x_lo = solver.x_lower() x_up = solver.x_upper() status = roots.test_interval(x_lo, x_up, 0, 0.001) r = solver.root() if status == 0: break else: raise ValueError("Exeeded maximum number of iterations!") assert (Numeric.absolute(r - r_expected) < _eps)
def _run(self, solver): solver.set(0.0, 5.0) iter = 0 r_expected = Numeric.sqrt(5.0) #print "Testing solver ", solver.name() #print "%5s [%9s %9s] %9s %10s %9s" % ("iter", "upper", "lower", "root", "err", "err(est)") for iter in range(100): status = solver.iterate() x_lo = solver.x_lower() x_up = solver.x_upper() status = roots.test_interval(x_lo, x_up, 0, 0.001) r = solver.root() if status == 0: break else: raise ValueError, "Exeeded maximum number of iterations!" assert(Numeric.absolute(r-r_expected) < _eps)