Hi,
I was wondering if there’s a way to constrain the pol2 function to the (0,0) point.
Thanks!
Hi,
I was wondering if there’s a way to constrain the pol2 function to the (0,0) point.
Thanks!
Hi Salamong,
welcome to the ROOT forum!
I don’t think ROOT can do this out of the box (@StephanH or @moneta might correct me).
Depending on your actual usecase, one of the threads here might be of help.
Cheers,
Enrico
Try:
{
TF1 *f = ((TF1*)(gROOT->GetFunction("pol2")));
f->FixParameter(0, 0.0); // 0 = "p0"
// ...
f->ReleaseParameter(0); // 0 = "p0"
}
Hey, thanks guys! Actually think I figured it out. As long as the points are on a TGraph (originally I had them on a TGraphErrors w/ errorbars but maybe the errorbars was throwing my code off). I ended up doing:
c1 = new TCanvas(“c1”,"",200,10,700,500);
c1->SetGrid();
int n = 6;
// x and y
float x[n] = {2.348E-07,0.000001935,2.52324E-06,3.13388E-06,3.76564E-06,8.5805E-06}
float y[n] = {1.30,10.37,13.95,17.74,22.162,59.54}
TGraph *gr1 = new TGraph(n,x,y);
gr1->SetMarkerColor(1);
gr1->SetMarkerStyle(6);
gr1->Draw(“AP”);
w/ the fit function :
TF1 *fit2 = new TF1(“fit2”,"[1]*x**2 + [0]*x",0,10e-6)
gr->Fit(“fit2”)
which has (0,0) built in as a constraint. What do y’all think?
I don’t see a constraint. But if you want (0,0) to be a part of your dataset, just add it to the data like this:
n = 7;
float x[n] = {0, 2.348E-07,0.000001935,2.52324E-06,3.13388E-06,3.76564E-06,8.5805E-06}
float y[n] = {0, 1.30,10.37,13.95,17.74,22.162,59.54}
EDIT:
Oh, now I see what you mean. Technically, you didn’t add a constraint, at least some people would understand that differently.
But you certainly wrote down a function that will always go through (0,0)!
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.