New class ROOT::Math::GSLMultiRootFinder for finding the root of system of functions.
The class is based on the GSL multi-root algorithm
(see the GSL online
manual) and it is used to solve a non-linear system of equations:
f1(x1,....xn) = 0
f2(x1,....xn) = 0
..................
fn(x1,....xn) = 0
The available GSL algorithms require the derivatives of the supplied functions or not (they are
computed internally by GSL). In the first case the user needs to provide a list of multidimensional functions implementing the
gradient interface (ROOT::Math::IMultiGradFunction) while in the second case it is enough to supply a list of
functions implementing the ROOT::Math::IMultiGenFunction interface.
The available algorithms requiring derivatives (see also the GSL
documentation )
are the followings:
- ROOT::Math::GSLMultiRootFinder::kHybridSJ with name "HybridSJ": modified Powell's hybrid
method as implemented in HYBRJ in MINPACK
- ROOT::Math::GSLMultiRootFinder::kHybridJ with name "HybridJ": unscaled version of the
previous algorithm
- ROOT::Math::GSLMultiRootFinder::kNewton with name "Newton": Newton method
- ROOT::Math::GSLMultiRootFinder::kGNewton with name "GNewton": modified Newton method
The algorithms without derivatives (see also the GSL
documentation )
are the followings:
- ROOT::Math::GSLMultiRootFinder::kHybridS with name "HybridS": same as HybridSJ but using
finate difference approximation for the derivatives
- ROOT::Math::GSLMultiRootFinder::kHybrid with name "Hybrid": unscaled version of the
previous algorithm
- ROOT::Math::GSLMultiRootFinder::kDNewton with name "DNewton": discrete Newton algorithm
- ROOT::Math::GSLMultiRootFinder::kBroyden with name "Broyden": Broyden algorithm