Я использую пользовательскую функцию для подгонки набора данных в ROOT. Объявление класса TF1 в моем коде:
double t=1000;
double a=0.1*t, b=0.9*t;
...
TF1 *ffit = new TF1("ffit",fit,a,b,2);
ffit->FixParameter(0,t);
ffit->SetParameter(1,1);
...
TGraph *g = new TGraph(n,x,y);
g->Fit("ffit","R");
Я ожидаю, что это будет работать, но на самом деле это не так. Существует нарушение сегментации вместе с беспорядком, появляющимся, когда я запускаю этот код. Однако, когда я просто помещаю 100 и 900 вместо a и b в объявлении функции TF1, это работает хорошо.
Итак, в чем здесь проблема? Как я могу преодолеть эту проблему?
Функция fit
выглядит следующим образом:
double fit(double *x, double *par)
{
double y=par[0], g=par[1], y0=x[0];
double r=(y0*(y-y0))/y;
return (pow(r,1.5)*g);
}
P / s: я использую ROOT v6.14