Esempi: Lezione 6

../_images/linea.png

6.0 Esempio di ricerca di zeri

/*
c++ -o main_04 main_04.cpp
*/

#include <cstdlib>
#include <iostream>
#include <cmath>


double func (double x) 
  {
    return cos (x) ; 
  }


double bisezione (
  double g (double),
  double xMin,
  double xMax,
  double precision = 0.0001
)
{
  double xAve = xMin ;
  while ((xMax - xMin) > precision)
    {
      xAve = 0.5 * (xMax + xMin) ;
      if (g (xAve) * g (xMin) > 0.) xMin = xAve ;
      else                          xMax = xAve ;
    }
  return xAve ;
}  


int main (int argc, char ** argv)
{
  std::cout << "Zero della funzione = " << bisezione (func, 0., 4.) << std::endl ;
  return 0 ;
}
../_images/linea.png

6.1 Esempio di bisezione ricorsiva

/*
c++ -o main_05 main_05.cpp
*/

#include <cstdlib>
#include <iostream>
#include <cmath>


double func (double x) 
  {
    return cos (x) ; 
  }


double bisezione_ricorsiva (
  double g (double),
  double xMin,
  double xMax,
  double precision = 0.0001
)
{
  double xAve = 0.5 * (xMax + xMin) ;
  if ((xMax - xMin) < precision) return xAve ;
  if (g (xAve) * g (xMin) > 0.) return bisezione_ricorsiva (g, xAve, xMax, precision) ;
  else                          return bisezione_ricorsiva (g, xMin, xAve, precision) ;
}  


int main (int argc, char ** argv)
{
  std::cout << "Zero della funzione = " << bisezione_ricorsiva (func, 0., 4.) << std::endl ;
  return 0 ;
}
../_images/linea.png

6.2 Esempio di disegno di un punto ed una funzione

/*
  c++ -o main_02 `root-config --glibs --cflags` main_02.cpp

*/

#include "TF1.h"
#include "TMarker.h"
#include "TCanvas.h"


int main (int argc, char ** argv)
{
  // https://root.cern.ch/root/html600/TF1.html
  TF1 fa1 ("fa1", "sin(x)/x", 0, 10) ;
  TCanvas c1 ;
  fa1.Draw () ;

  // https://root.cern.ch/root/html528/TMarker.html
  TMarker punto (5., 0.5, 20) ;
  punto.Draw () ;

  c1.Print ("main_02.png", "png") ;
}
../_images/linea.png