float inputFormular(float x0, float x1, float x2) { float p0 = 0; float p1 = 1; float p2 = 2; float p3 = 3; float p4 = 4; float p5 = 5; float p6 = 6; float p7 = 7; float p8 = 8; return p0 +x0*p1 + x1*p2 + x2*p3 + x0*x0*p4 + x1*x1*p5 + x0*x1*p6 + x1*x2*p7 + x0*x2*p8; //1 ++ x[0] ++ x[1] ++ x[2] ++ x[0]*x[0] ++ x[1]*x[1] ++ x[0]*x[1] ++ x[1]*x[2] ++ x[0]*x[2] } float GetError(TF1 *f, Double_t x) { float error = sqrt( std::pow(f->GetParError(0),2) + std::pow(f->GetParError(1)*x,2) + std::pow(f->GetParError(3)*x*x,2) ); return error ; } int fitTest() { TGraph *gr = new TGraph(); auto rng = new TRandom(); float sigm = 1000; for (int i = 0; i < 100; i++) { gr->SetPoint(gr->GetN(),10, inputFormular(10,10,1)+ rng->Gaus(0,sigm)); gr->SetPoint(gr->GetN(),20,inputFormular(20,10,1)+ rng->Gaus(0,sigm)); gr->SetPoint(gr->GetN(),30,inputFormular(30,10,1)+ rng->Gaus(0,sigm)); } TF1 *f = new TF1("f","pol2",0,100); gr->Draw("a*"); gr->Fit("f"); TGraph *gul = new TGraph(); TGraph *gll = new TGraph(); for (int i = 0; i < 10; i++) { float pt = 5+i*3; gul->SetPoint(gul->GetN(),pt, f->Eval(pt) + GetError(f,pt)); gll->SetPoint(gll->GetN(),pt,f->Eval(pt)- GetError(f,pt)); } gul->Draw("l"); gll->Draw("l"); std::cout << "Error at 20 is " << GetError(f,20) << std::endl;; return 0; }