Hi,
I changed my program. Now I’m using a MultiRootFinder.
But now there is an other Problem.
It says:
Error in ROOT::Math::GSLMultiRootFinder::Solve: Error initializing the solver
This is the Part of my program, where is use the RootFinder:
[code] const char * algo =0;
int printlevel = 3;
#ifndef R__HAS_MATHMORE
Error("exampleMultiRoot","libMathMore is not available - cannot run this tutorial");
#else
// kHybridS,kHybrid,kDNewton,kBroyden
ROOT::Math::MultiRootFinder r(ROOT::Math::MultiRootFinder::kHybridS);
//defining the function
ROOT::Math::ParamFunctor f1(this, &helloWorldPlugin::UAbl_R);
ROOT::Math::ParamFunctor f2(this, &helloWorldPlugin::VAbl_R);
TF1 * _UAbl = new TF1("UAbl",f1);
TF1 * _VAbl= new TF1("VAbl", f2);
_UAbl->SetParameters(0,1);
_VAbl->SetParameters(0,1);
// wrap the functions
ROOT::Math::WrappedMultiTF1 g1(_UAbl,2);
ROOT::Math::WrappedMultiTF1 g2(_VAbl,2);
r.AddFunction(g1);
r.AddFunction(g2);
r.SetPrintLevel(printlevel);
for (float j=0;j<1.1;j=j+0.1)
{
for (float i=0;i<1.1;i=i+0.1)
{
_punkt = flaeche->getPointPercent(j,i);
Werte++;
cout << "--------------------------------------------------------------------" << endl;
float Startwertu=0, Startwertv=0;
const double *us;
for (Startwertu=0;Startwertu<1.1;Startwertu=Startwertu+0.1)
{
for (Startwertv=0;Startwertv<1.1;Startwertv=Startwertv+0.1)
{
if (Startwertu > 1 && Startwertv > 1)
{
cout << "Kein Startwert gefunden, für den der Algorithmus konvergiert" << endl;
break;
}
// starting point
double x0[2]={Startwertu,Startwertv};
r.Solve(x0);
us = r.X();
[/code]
Did I something wrong there?
Thanks