package org.freehep.math.minuit.example.tutorial; import junit.framework.TestCase; import org.freehep.math.minuit.FunctionMinimum; import org.freehep.math.minuit.MinosError; import org.freehep.math.minuit.MnMigrad; import org.freehep.math.minuit.MnMinos; import org.freehep.math.minuit.MnUserParameters; /** * * @version $Id: Quad1FMainTest.java 8584 2006-08-10 23:06:37Z duns $ */ public class Quad1FMainTest extends TestCase { public Quad1FMainTest(String testName) { super(testName); } public static junit.framework.Test suite() { junit.framework.TestSuite suite = new junit.framework.TestSuite(Quad1FMainTest.class); return suite; } /** * Test of main method, of class org.freehep.math.minuit.tests.tutorial.Quad1FMain. */ public void testQuad1F1() { Quad1F fcn = new Quad1F(); MnUserParameters upar = new MnUserParameters(); upar.add("x", 1., 0.1); MnMigrad migrad = new MnMigrad(fcn, upar); migrad.setUseAnalyticalDerivatives(false); FunctionMinimum min = migrad.minimize(); assertTrue(min.isValid()); assertEquals(13,min.nfcn()); assertEquals(6.83776e-21,min.fval(),1e-26); assertEquals(6.83776e-21,min.edm(), 1e-26); } public void testQuad1F2() { // using VariableMetricMinimizer, analytical derivatives Quad1F fcn = new Quad1F(); double[] par = {1.}; double[] err = {0.1}; MnMigrad migrad = new MnMigrad(fcn,par,err); FunctionMinimum min = migrad.minimize(); assertTrue(min.isValid()); assertEquals(15,min.nfcn()); assertEquals(4.43734e-31,min.fval(),1e-35); assertEquals(4.43734e-31,min.edm(), 1e-35); } public void testQuad1F3() { // test Minos for one parameter Quad1F fcn = new Quad1F(); double[] par = {1.}; double[] err = {0.1 }; MnMigrad migrad = new MnMigrad(fcn,par, err); FunctionMinimum min = migrad.minimize(); MnMinos minos = new MnMinos(fcn, min); MinosError me = minos.minos(0); assertTrue(me.isValid()); assertEquals(min.userState().value(0),6.66134e-16,1e-20); assertEquals(me.lower(),-1,1e-7); assertEquals(me.upper(),+1,1e-7); MnMinos minos2 = new MnMinos(fcn, min); MinosError me2 = minos.minos(0,4); assertTrue(me2.isValid()); assertEquals(min.userState().value(0),6.66134e-16,1e-20); assertEquals(me2.lower(),-2,1e-7); assertEquals(me2.upper(),+2,1e-7); } }