ROOT でカイ 2 乗関数を最小化しようとしています。これは FCN コードです。
void myFCNres( int &npar , double * gin , double &f , double * par , int flag ) {
double chi2 = 0;
for ( int i = 1 ; i <= datasetNHres->GetSize()-2 ; ++i ) {
par[7] = Emin + (Emax-Emin)/(2*N_div) + (i-1)*(Emax-Emin)/N_div;
chi2 += pow( ( integrand->Integral( 1.804 , 8 , par , 1E-15) - datasetNHres->GetBinContent(i)) / datasetNHres->GetBinError(i) ,2);
}
chi2 += pow( (par[0] - p[0]) / sig[0] ,2) +
pow( (par[1] - p[1]) / sig[1] ,2) +
pow( (par[2] - p[2]) / sig[2] ,2) +
pow( (par[3] + p[3]) / sig[3] ,2);
f = chi2;
}
実行の結果、私の関数がどのパラメーターにも依存しないのと同じように、どのパラメーターも変更されていません。FCN ロジックに問題がありますか、それとも他の場所でバグを探す必要がありますか?
ありがとう、ルイージ