/****************  exo 3 ***************/
/*
 * Created on 18 févr. 2008
 *
 * To change the template for this generated file go to
 * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
 */

public class exo3{
    
  /** display on the screan the table of values of abscisses and ordonnées
    * @param abscs the table of abscices 
    * @param ords the table of ordonnates 
    * @return void. 
    **/
   public static void displayData(double[] abscs, double[] ords){
	  int i;
	  System.out.printf("%n-------------------------------------%n");
	  for( i=0; i < abscs.length - 1 ; i++ )
	       System.out.printf(" %fl |", abscs[i]);
	  System.out.printf("%n-------------------------------------%n"); 		 
	  for( i=0; i < ords.length - 1 ; i++ )
	       System.out.printf(" %fl |", ords[i]); 
	  System.out.printf("%n-------------------------------------%n");
	}
       
   /** calcule la moyenne . 
    * 
    * @param abscs le tableau des abscices 
    * @param ords le tableau des ordonnées 
    * @return un tableau double qui renvoie les ordonnées de la dérivée. 
    **/ 
   public static double[] computeAverage(double[] abscs){ 
      int i;
      double moyenne = 0;
	for( i=0; i < abscs.length - 1 ; i++ )
      moyenne = moyenne + abscs[i];
      return(moyenne/abscs.length) ;
   } 
   
   /** calcule du coefficient de regression(pente a). 
    * 
    * @param abscs le tableau des abscices 
    * @param ords le tableau des ordonnées 
    * @return la value du coefficient de regression lineaire. 
    **/ 
   public static double computeCoeffRegression(double[] abscs, double[] ords){ 
      
        //TODO
   } 

/** calcule du coefficient de correlation). 
    * 
    * @param abscs le tableau des abscices 
    * @param ords le tableau des ordonnées 
    * @return la value du coefficient de corellation. 
    **/ 
   public static double computeCoeffCorrelation(double[] abscs, double[] ords){ 
      
        //TODO
   } 

 /** calcule des points corriges, droite lineaire 
    * @param abscs le tableau des abscices 
    * @param coeffRegression la value du coefficient de regression
    * @param coeffDecalage la value du decalage sur les y
    * @return la value du coefficient de corellation. 
    **/ 

   double[] valuesCorrigees(double[] abscs, double coeffRegression, double valueDecalage){

      //TODO
   }

      
   /** affiche une courbe suivant plusieurs modes 
    * @param abscs le tableau des abscices 
    * @param ords le tableau des ordonnées 
    * @return void 
    **/ 
   public static void printCurve(double[] abscs, double[] ords){ 
         
       //TODO
   } 
   
   public static void main(String[] arg){ 

      // initialiser une courbe 

      double[] year = {1990,1992,1994,1996,1998,2000,2002,2004,2006};
      double[] value = {1517.93, 1757.78, 1981.1, 2215.73, 2942.66, 3558.32,4063.91,4521.16,5101.76};
      
      //on affiche le tableau de values;
	displayData(year, value);

      //on trace la courbe
      displayData(year, tabvaluesCorrigees);

      // on calcule les différentes moyennes
      double MoyenneX = computeAverage(double[] year);
      double MoyenneY = computeAverage(double[] value);

      // on calcule les différents coefficients
      double coeffRegression = computeCoeffRegression(double[] year, double[] value);
      double coeffCorrelation = computeCoeffCorrelation(double[] year, double[] value);

      // on calcule la value du decalage b
      double valueDecalage = computeDecalage(double MoyenneX, double MoyenneY, double coeffRegression);
      
      // on corrige tous les points values pour avoir une droite lineaire
      double[] tabvaluesCorrigees=valuesCorrigees(double[] year, double coeffRegression, double valueDecalage);

      //on trace cette droite lineaire
      displayData(year, tabvaluesCorrigees);

      double value2008 = Estimation(int year2008, double coeffRegression, double valueDecalage);
   }
}