testMinimization1D.cxx

Go to the documentation of this file.
00001 #include "Math/Polynomial.h"
00002 #include "Math/GSLMinimizer1D.h"
00003 #include "Math/Functor.h"
00004 //#include "TF1.h"
00005 #include <iostream>
00006 
00007 
00008 
00009 
00010 void testMinimization1D() {
00011 
00012 
00013   ROOT::Math::Polynomial *polyf = new ROOT::Math::Polynomial(2);
00014 
00015   std::vector<double> p(3);
00016   p[0] = 1;
00017   p[1] = -4;
00018   p[2] = 1;
00019   polyf->SetParameters(&p[0]);
00020   //ROOT::Math::Functor1D<ROOT::Math::Base> func(*polyf);
00021   ROOT::Math::IGenFunction & func = *polyf;
00022 
00023 
00024   { 
00025      // default (Brent) 
00026      ROOT::Math::GSLMinimizer1D min;
00027      min.SetFunction(func,1,-10,10); 
00028      min.Minimize(100,0.01,0.01); 
00029      std::cout << "test Min1D " << min.Name() << "  Return code " << min.Status() << std::endl; 
00030      
00031      std::cout.precision(20);
00032   
00033      std::cout << "Found minimum: x = " << min.XMinimum() << "  f(x) = " << min.FValMinimum() << std::endl;
00034 
00035   }
00036   {
00037      // Golden Section
00038      ROOT::Math::GSLMinimizer1D min(ROOT::Math::Minim1D::kGOLDENSECTION);
00039      min.SetFunction(func,1,-10,10); 
00040      min.Minimize(100,0.01,0.01); 
00041      std::cout << "test Min1D " << min.Name() << "  Return code " << min.Status() << std::endl; 
00042      
00043      std::cout.precision(20);
00044   
00045      std::cout << "Found minimum: x = " << min.XMinimum() << "  f(x) = " << min.FValMinimum() << std::endl;
00046 
00047   }
00048 
00049  
00050 }
00051 
00052 
00053 
00054 int main() {
00055 
00056   testMinimization1D();
00057   return 0;
00058 
00059 }

Generated on Tue Jul 5 14:34:58 2011 for ROOT_528-00b_version by  doxygen 1.5.1