
from org.freehep.math.minuit import FCNBase,MnUserParameters,MnMigrad 
from java.lang.Math import *

class func(FCNBase): # define user functions  
  def valueOf(self, par):
     return 100*(par[1]-par[0]*par[0])*(par[1]-par[0]*par[0]) + (1- par[0])*(1-par[0])
     
Par = MnUserParameters()
Par.add("x", 1., 0.1)  # initial parameters
Par.add("y", 3., 0.1)
migrad = MnMigrad(func(), Par)
vmin = migrad.minimize()
state=vmin.userState()
print "Min value=:",vmin.fval(), "function calls=",vmin.nfcn()
print state.params()
