Example #1
0
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!"
Example #2
0
File: roots.py Project: pygsl/pygsl
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!"
Example #3
0
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!"
Example #4
0
File: roots.py Project: pygsl/pygsl
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!"
Example #5
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), 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])
Example #6
0
 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)
Example #7
0
 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)
Example #8
0
 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)
Example #9
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)
Example #11
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)
Example #12
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)
Example #13
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)
Example #14
0
 def f(x, params):
     alpha = params
     return Numeric.log(alpha * x) / Numeric.sqrt(x)
Example #15
0
 def f(x, params):
     alpha = params
     return Numeric.log(alpha *x) / Numeric.sqrt(x)