# Solving set of equations

___Dear all,
I am trying to solve a set of equations and I am using the “ROOT::Math::MultiRootFinder”
But I am not sure about the final output.

I wrote the following script

`````` ROOT::Math::MultiRootFinder* r = new ROOT::Math::MultiRootFinder();

double R_Au = 5.46698;  //N_activation per atom per sec (Nact/N0/ta/sigma0)     6.74002
double R_Cr = 5.36218;  //N_activation per atom per sec (Nact/N0/ta/sigma0)     5.40852
double R_Co = 5.36700;  //N_activation per atom per sec (Nact/N0/ta/sigma0)     5.38338
double R_Mo = 5.51876;  //N_activation per atom per sec (Nact/N0/ta/sigma0)     5.03949

auto f_Au = [R_Au](const double * x)
{ return R_Au-x[1]-((15.47/pow(5.7,x[0]))+(0.429/(1+2*x[0])/(pow(0.55,x[0]))))*x[2];};

auto f_Cr = [R_Cr](const double * x)
{ return R_Cr-x[1]-((0.04/pow(7530,x[0]))+(0.429/(1+2*x[0])/(pow(0.55,x[0]))))*x[2];};

auto f_Co = [R_Co](const double * x)
{ return R_Co-x[1]-((1.61/pow(163,x[0]))+(0.429/(1+2*x[0])/(pow(0.55,x[0]))))*x[2];};

auto f_Mo = [R_Mo](const double * x)
{ return R_Mo-x[1]-((52.67/pow(241,x[0]))+(0.429/(1+2*x[0])/(pow(0.55,x[0]))))*x[2];};

// starting point
double x0[3]={0.18, 5.36, 0.0069};

int printlevel = 1;
r->SetPrintLevel(printlevel);

r->Solve(x0);
``````

the output are not accurate (x[0] = 0.240702 x[1] = 5.35869 x[2] = 0.0103042 ) compare to the initial value (They should be the correct results) .

In addition if I only changed the value of R_Au to 5.74002 the iteration does not approch to a solution.

Id there more accurate root finder with uncertainty value.

Thanks

Hi,

Thanks for the interesting post.