22 return (y - x**2)**2 + (1 - x)**2
35def NumericalMinimization(minimizerName="Minuit2",
42 "Cannot create minimizer \"{}\". Maybe the required library was not built?".format(minimizerName))
47 minimizer.SetMaxFunctionCalls(1000000)
49 minimizer.SetMaxIterations(10000)
50 minimizer.SetTolerance(0.001)
51 minimizer.SetPrintLevel(1)
58 x0 = np.array([-1., 2.])
59 print(
"f(-1,1.2) = ",
f(x0))
65 r = ROOT.TRandom2(randomSeed)
66 variable[0] = r.Uniform(-20, 20)
67 variable[1] = r.Uniform(-20, 20)
69 minimizer.SetFunction(f)
72 minimizer.SetVariable(0,
"x", variable[0], step[0])
73 minimizer.SetVariable(1,
"y", variable[1], step[1])
76 ret = minimizer.Minimize()
79 print(
"Minimum: f({} , {}) = {}".format(xs[0],xs[1],minimizer.MinValue()))
82 if (ret
and minimizer.MinValue() < 1.E-4):
83 print(
"Minimizer {} - {} converged to the right minimum!".format(minimizerName, algoName))
85 print(
"Minimizer {} - {} failed to converge !!!".format(minimizerName, algoName))
86 raise RuntimeError(
"NumericalMinimization failed to converge!")
89if __name__ ==
"__main__":
90 NumericalMinimization()
static ROOT::Math::Minimizer * CreateMinimizer(const std::string &minimizerType="", const std::string &algoType="")
static method to create the corresponding Minimizer given the string Supported Minimizers types are: ...
Documentation for class Functor class.