def run_fdfsolver(): a = 1.0 b = 0.0 c = -5.0 solver = roots.newton() #solver = roots.secant() #solver = roots.steffenson() x = 5.0 solver.set(quadratic, quadratic_deriv, quadratic_fdf, x, (a,b,c)) r_expected = Numeric.sqrt(5.0) print "# Using solver ", solver.name() print "# %5s %9s %10s %9s" % ("iter", "root", "err", "err(est)") ok = 1 for iter in range(10): status = solver.iterate() x0 = x x = solver.root() status = roots.test_delta(x, x0, 0.0, 1e-3) r = solver.root() if status == 0: print "# Convereged :" print "%5d %.7f % .6f % .6f" %(iter, r, r -r_expected, x - x0) if status == 0: break else: raise ValueError, "Exeeded maximum number of iterations!"
def run_fdfsolver(): a = 1.0 b = 0.0 c = -5.0 mysys = roots.gsl_function_fdf(quadratic, quadratic_deriv, quadratic_fdf, numx.array((a, b, c))) solver = roots.newton(mysys) #solver = roots.secant(mysys) #solver = roots.steffenson(mysys) x = 5.0 solver.set(x) r_expected = numx.sqrt(5.0) print "# Using solver ", solver.name() print "# %5s %9s %10s %9s" % ("iter", "root", "err", "err(est)") ok = 1 for iter in range(10): status = solver.iterate() x0 = x x = solver.root() status = roots.test_delta(x, x0, 0.0, 1e-3) r = solver.root() if status == errno.GSL_SUCCESS: print "# Convereged :" print "%5d %.7f % .6f % .6f" % (iter, r, r - r_expected, x - x0) 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 solver = roots.brent() #solver = roots.bisection() #solver = roots.falsepos() solver.set(quadratic, 0.0, 5, -5.0, (a,b,c)) iter = 0 r_expected = Numeric.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 = solver.test_interval(0, 0.001) r = solver.root() if status == 0: print "# Convereged :" print " %5d [%.7f %.7f] %.7f % .6f % .6f" %(iter, x_lo, x_up, r, r -r_expected, x_up - x_lo) if status == 0: 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_fdfsolver(): A = 1. lambda_ = .1 b = .5 n = 40 p = 3 t = numx.arange(n); y = testfunc(t, A, lambda_, b) sigma = numx.ones(n) * 0.1 data = numx.array((t,y,sigma), numx.Float) #mysys = multifit_nlin.gsl_multifit_function_fdf(exp_f, exp_df, exp_fdf, # data, n,p) pygsl.set_debug_level(0) solver = multifit_nlin.lmsder(n, p) pygsl.set_debug_level(0) #solver = multifit_nlin.lmder(mysys, n, p) x = numx.array((1.0, 0.0, 0.0)) pygsl.set_debug_level(0) solver.set(exp_f, exp_df, exp_fdf, x, data) pygsl.set_debug_level(0) print "# Testing solver ", solver.name() print "# %5s %9s %9s %9s %10s" % ("iter", "A", "lambda", "b", "|f(x)|") for iter in range(20): status = solver.iterate() x = solver.x() dx = solver.dx() f = solver.f() J = solver.J() #tdx = multifit_nlin.gradient(J, f) #status = multifit_nlin.test_delta(dx, x, 1e-8, 1e-8) status = solver.test_delta(1e-8, 1e-8) fn = numx.sqrt(numx.sum(f*f)) if status == 0: print "# Convereged :" if status == 0: break print " %5d % .7f % .7f % .7f % .7f" %(iter, x[0], x[1], x[2], fn) else: raise ValueError, "Number of Iterations exceeded!" J = solver.J() covar = multifit_nlin.covar(solver.J(), 0.0) print "# A = % .5f +/- % .5f" % (x[0], covar[0,0]) print "# lambda = % .5f +/- % .5f" % (x[1], covar[1,1]) print "# b = % .5f +/- % .5f" % (x[2], covar[2,2])
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)
def _run(self, solver): #x = Numeric.array((1.0, .4, .1)) x = Numeric.array((1.0, 0.0, 0.0)) solver.set(x) #g.title('Start') #g.plot(Gnuplot.Data(self.data[0], self.data[1]), # Gnuplot.Data(self.data[0], testfunc(self.data[0]), # with = 'line'), # ) #raw_input() #print "Testing solver ", solver.name() #print "%5s %9s %9s %9s %10s" % ("iter", "A", "lambda", "b", "|f(x)|") for iter in range(20): status = solver.iterate() assert (status == 0 or status == -2) x = solver.getx() dx = solver.getdx() f = solver.getf() J = solver.getJ() tdx = multifit_nlin.gradient(J, f) status = multifit_nlin.test_delta(dx, x, 1e-8, 1e-8) #status = multifit_nlin.test_gradient(dx, 1e-4) fn = Numeric.sqrt(Numeric.sum(f * f)) #g.title('Iteration') if status == 0: break #print "%5d % .7f % .7f % .7f % .7f" %(iter, x[0], x[1], x[2], fn) #g.plot(Gnuplot.Data(self.data[0], self.data[1]), # Gnuplot.Data(self.data[0], # testfunc(self.data[0], x[0], x[1], x[2]), # with = 'line', title='iteration ' + str(iter)), # ) #raw_input() else: raise ValueError, "Number of Iterations exceeded!" #print "Convereged :" #print "%5d % .7f % .7f %.7f % .7f" %(iter, x[0], x[1], x[2], fn) assert (Numeric.absolute(x[0] - self.A) < _eps) assert (Numeric.absolute(x[1] - self.lambda_) < _eps) assert (Numeric.absolute(x[2] - self.b) < _eps) #J = solver.getJ() #print "shape = ", J.shape covar = multifit_nlin.covar(solver.getJ(), 0.0)
def run_fdfsolver(): A = 1. lambda_ = .1 b = .5 n = 40 p = 3 t = numx.arange(n) y = testfunc(t, A, lambda_, b) sigma = numx.ones(n) * 0.1 data = numx.array((t, y, sigma), ) mysys = multifit_nlin.gsl_multifit_function_fdf(exp_f, exp_df, exp_fdf, data, n, p) solver = multifit_nlin.lmsder(mysys, n, p) #solver = multifit_nlin.lmder(mysys, n, p) x = numx.array((1.0, 0.0, 0.0)) solver.set(x) print("# Testing solver ", solver.name()) print("# %5s %9s %9s %9s %10s" % ("iter", "A", "lambda", "b", "|f(x)|")) for iter in range(20): status = solver.iterate() x = solver.getx() dx = solver.getdx() f = solver.getf() J = solver.getJ() tdx = multifit_nlin.gradient(J, f) status = multifit_nlin.test_delta(dx, x, 1e-8, 1e-8) fn = numx.sqrt(numx.sum(f * f)) if status == errno.GSL_SUCCESS: print("# Convereged :") if status == errno.GSL_SUCCESS: break print(" %5d % .7f % .7f % .7f % .7f" % (iter, x[0], x[1], x[2], fn)) else: raise ValueError("Number of Iterations exceeded!") J = solver.getJ() covar = multifit_nlin.covar(solver.getJ(), 0.0) print("# A = % .5f +/- % .5f" % (x[0], covar[0, 0])) print("# lambda = % .5f +/- % .5f" % (x[1], covar[1, 1])) print("# b = % .5f +/- % .5f" % (x[2], covar[2, 2]))
def _run(self, solver): #x = Numeric.array((1.0, .4, .1)) x = Numeric.array((1.0, 0.0, 0.0)) solver.set(x) #g.title('Start') #g.plot(Gnuplot.Data(self.data[0], self.data[1]), # Gnuplot.Data(self.data[0], testfunc(self.data[0]), # with = 'line'), # ) #raw_input() #print "Testing solver ", solver.name() #print "%5s %9s %9s %9s %10s" % ("iter", "A", "lambda", "b", "|f(x)|") for iter in range(20): status = solver.iterate() assert(status == 0 or status == -2) x = solver.getx() dx = solver.getdx() f = solver.getf() J = solver.getJ() tdx = multifit_nlin.gradient(J, f) status = multifit_nlin.test_delta(dx, x, 1e-8, 1e-8) #status = multifit_nlin.test_gradient(dx, 1e-4) fn = Numeric.sqrt(Numeric.sum(f*f)) #g.title('Iteration') if status == 0: break #print "%5d % .7f % .7f % .7f % .7f" %(iter, x[0], x[1], x[2], fn) #g.plot(Gnuplot.Data(self.data[0], self.data[1]), # Gnuplot.Data(self.data[0], # testfunc(self.data[0], x[0], x[1], x[2]), # with = 'line', title='iteration ' + str(iter)), # ) #raw_input() else: raise ValueError, "Number of Iterations exceeded!" #print "Convereged :" #print "%5d % .7f % .7f %.7f % .7f" %(iter, x[0], x[1], x[2], fn) assert(Numeric.absolute(x[0] - self.A) < _eps) assert(Numeric.absolute(x[1] - self.lambda_) < _eps) assert(Numeric.absolute(x[2] - self.b) < _eps) #J = solver.getJ() #print "shape = ", J.shape covar = multifit_nlin.covar(solver.getJ(), 0.0)
def _run(self, solver): x = Numeric.array((1.0, 0.0, 0.0)) solver.set(x) for iter in range(20): status = solver.iterate() assert (status == 0 or status == -2) x = solver.getx() dx = solver.getdx() f = solver.getf() J = solver.getJ() tdx = multifit_nlin.gradient(J, f) status = multifit_nlin.test_delta(dx, x, 1e-8, 1e-8) fn = Numeric.sqrt(Numeric.sum(f * f)) if status == 0: break else: raise ValueError("Number of Iterations exceeded!") assert (Numeric.absolute(x[0] - self.A) < _eps) assert (Numeric.absolute(x[1] - self.lambda_) < _eps) assert (Numeric.absolute(x[2] - self.b) < _eps) covar = multifit_nlin.covar(solver.getJ(), 0.0)
def _run(self, solver): x = 5.0 solver.set(x) r_expected = Numeric.sqrt(5.0) #print "Testing solver ", solver.name() #print "%5s %9s %10s %9s" % ("iter", "root", "err", "err(est)") ok = 1 for iter in range(10): status = solver.iterate() x0 = x x = solver.root() status = roots.test_delta(x, x0, 0.0, 1e-3) r = solver.root() if status == 0: #print "Convereged :" ok = 0 #print "%5d %.7f % .6f % .6f" %(iter, r, r -r_expected, x - x0) if ok == 0: break else: raise ValueError("Exeeded maximum number of iterations!") assert (Numeric.absolute(r - r_expected) < _eps)
def _run(self, solver): x = 5.0 solver.set(x) r_expected = Numeric.sqrt(5.0) #print "Testing solver ", solver.name() #print "%5s %9s %10s %9s" % ("iter", "root", "err", "err(est)") ok = 1 for iter in range(10): status = solver.iterate() x0 = x x = solver.root() status = roots.test_delta(x, x0, 0.0, 1e-3) r = solver.root() if status == 0: #print "Convereged :" ok = 0 #print "%5d %.7f % .6f % .6f" %(iter, r, r -r_expected, x - x0) if ok == 0: break else: raise ValueError, "Exeeded maximum number of iterations!" assert(Numeric.absolute(r-r_expected) < _eps)
def f(x, params): alpha = params return Numeric.log(alpha * x) / Numeric.sqrt(x)
def f(x, params): alpha = params return Numeric.log(alpha *x) / Numeric.sqrt(x)