package org.freehep.math.minuit.example.tutorial;
import java.util.List;
import org.freehep.math.minuit.FunctionMinimum;
import org.freehep.math.minuit.MnContours;
import org.freehep.math.minuit.MnMigrad;
import org.freehep.math.minuit.MnUserParameters;
import org.freehep.math.minuit.Point;
/**
*
* @version $Id: Quad2FMain.java 8584 2006-08-10 23:06:37Z duns $
*/
public class Quad2FMain
{
public static void main(String[] args)
{
{
//test constructor
Quad2F fcn = new Quad2F();
MnUserParameters upar = new MnUserParameters();
upar.add("x", 1., 0.1);
upar.add("y", 1., 0.1);
MnMigrad migrad = new MnMigrad(fcn, upar);
migrad.setUseAnalyticalDerivatives(false);
FunctionMinimum min = migrad.minimize();
System.out.println("min= "+min);
}
{
// using VariableMetricMinimizer, analytical derivatives
Quad2F fcn = new Quad2F();
MnUserParameters upar = new MnUserParameters();
upar.add("x", 1., 0.1);
upar.add("y", 1., 0.1);
MnMigrad migrad = new MnMigrad(fcn, upar);
FunctionMinimum min = migrad.minimize();
System.out.println("min= "+min);
}
{
// test Contours for two parameters
Quad2F fcn = new Quad2F();
MnUserParameters upar = new MnUserParameters();
upar.add("x", 1., 0.1);
upar.add("y", 1., 0.1);
MnMigrad migrad = new MnMigrad(fcn, upar);
FunctionMinimum min = migrad.minimize();
MnContours contours = new MnContours(fcn, min);
//1-sigma around the minimum
List<Point> cont = contours.points(0, 1, 1, 20);
// the minimum
System.out.println("1-sigma contours");
for(Point ipair : cont)
{
System.out.printf("x,y %g,%g\n",ipair.first,ipair.second);
}
//2-sigma around the minimum
System.out.println("2-sigma contours");
List<Point> cont4 = contours.points(0, 1, 4, 20);
for(Point ipair : cont4)
{
System.out.printf("x,y %g,%g\n",ipair.first,ipair.second);
}
}
}
}