def run_fsolver(): mysys = minimize.gsl_function(fn1, None) m = 2.0 a = 0.0 b = 6.0 m_expected = numx.pi minimizer = minimize.brent(mysys) #minimizer = minimize.goldensection(mysys) minimizer.set(m, a, b) print "# Using minimizer ", minimizer.name() print "# %5s [%9s %9s] %9s %10s %9s" % ("iter", "upper", "lower", "min", "err", "err(est)") for iter in range(100): status = minimizer.iterate() a = minimizer.x_lower() b = minimizer.x_upper() m = minimizer.minimum() status = minimize.test_interval(a, b, 0.001, 0) if status == errno.GSL_SUCCESS: print "# Converged: " print " %5d [%.7f %.7f] %.7f + % .6f % .6f" %(iter, a, b, m, m -m_expected, b - a) if status == errno.GSL_SUCCESS: break else: raise ValueError, "Number of Iterations exceeded!"
def run_fsolver(): mysys = minimize.gsl_function(fn1, None) m = 2.0 a = 0.0 b = 6.0 m_expected = numx.pi minimizer = minimize.brent(mysys) #minimizer = minimize.goldensection(mysys) minimizer.set(m, a, b) print "# Using minimizer ", minimizer.name() print "# %5s [%9s %9s] %9s %10s %9s" % ("iter", "upper", "lower", "min", "err", "err(est)") for iter in range(100): status = minimizer.iterate() a = minimizer.x_lower() b = minimizer.x_upper() m = minimizer.minimum() status = minimize.test_interval(a, b, 0.001, 0) if status == errno.GSL_SUCCESS: print "# Converged: " print " %5d [%.7f %.7f] %.7f + % .6f % .6f" % (iter, a, b, m, m - m_expected, b - a) if status == errno.GSL_SUCCESS: break else: raise ValueError, "Number of Iterations exceeded!"
def setUp(self): self.sys = minimize.gsl_function(fn1, None)
# set the initali parameters if the file exists ggdFile = '%s_M-%04d' %(ggdPath,fbinX) if os.path.exists(ggdFile): print 'read initial parameters from %s' %ggdFile cggdEstimator.readParam( ggdFile, zeroMean=True, fixValues=False ) else: print '%f is the initial value of the shape parameter' %initialP cggdEstimator = calcVariance( cggdEstimator, fbinX, dataDir, segListFile, M, m, r ) # seek the shape parameter which provides the ML with the linear search for iterX1 in range(nIter1): low = initialLow high = initialHigh mysys = minimize.gsl_function( calcNegLogLikelihood, [cggdEstimator, fbinX, dataDir, segListFile, M, m, r ] ) mid = cggdEstimator.getShapePar() if ( mid < low ) and ( mid > high ): mid = 0.7 print "Start %d : %e %e %e" %(iterX1, low, high, mid) #minimizer = minimize.brent(mysys) minimizer = minimize.goldensection(mysys) minimizer.set(mid, low, high) #print "# Using minimizer ", minimizer.name() for iterX2 in range(nIter2): try: status = minimizer.iterate() except: print "Unexpected error:"