float interp_linear1D(float abis, float val1, float val2, float a1, float a2)
{
    if(a1 == a2 || val1 == val2)
        return val1;
    else
        return pente(val1, val2, a1, a2)*(abis-a1)+val1;
}
예제 #2
0
double
Statistic::ordonnee(QVector<double> &Xi,QVector<double> &Yi,int n)
{
    double b = moyenne(Yi,n) - ( pente(Xi,Yi,n) * moyenne(Xi,n) );

    return (b);
}
예제 #3
0
double HrPwWindow::ordonnee(QVector<double> &Xi,QVector<double> &Yi,int n)
{
	double b = moyenne(Yi,n) - ( pente(Xi,Yi,n) * moyenne(Xi,n) );

	return (b);
}
void regression(float Xi[],float Yi[],int N,float result[],float ProduitXiYi[],float carre_ecart_a_moyenne_Xi[],float carre_ecart_a_moyenne_Yi[])

{

  float SommeXi;
  float SommeYi;
  float MoyenneXi;
  float MoyenneYi;
  float SommeProduitXiYi;
  float SommeCarreXiMoinMoyenneXi;
  float SommeCarreYiMoinMoyenneYi;
  float a;
  float b;
  double r;
  float tab_ecart_a_moyenne[MAX];
  float ecart_a_moyenne_Xi[MAX];
  float ecart_a_moyenne_Yi[MAX];
  int i=1;

  /*Calcul de la somme des Xi et Yi*/

  SommeXi= somme(Xi,N);
  SommeYi= somme(Yi,N);

  /*Calcul des moyennes des Xi et Yi*/

  MoyenneXi = moyenne(SommeXi,N);
  MoyenneYi = moyenne(SommeYi,N);

  /*Calcul de de la pente "a"de la droite et de l'ordonee à l'origine "b" */



  /*Somme des Xi*Yi*/

  produittab(Xi,Yi,ProduitXiYi,N);
  SommeProduitXiYi = somme(ProduitXiYi,N);



  /*calcul des (Xi- MoyenneXi)² et (Yi- MoyenneYi)² */

  ecart_a_moyenne(Xi,tab_ecart_a_moyenne,MoyenneXi,N);

  i=1;
  while (i<(N+1))
    {
      ecart_a_moyenne_Xi[i] = tab_ecart_a_moyenne[i];
      carre_ecart_a_moyenne_Xi[i] = ((ecart_a_moyenne_Xi[i])*(ecart_a_moyenne_Xi[i]));i++;
    };

  ecart_a_moyenne(Yi,tab_ecart_a_moyenne,MoyenneYi,N);

  i=1;
  while (i<(N+1))
    {
      ecart_a_moyenne_Yi[i] = tab_ecart_a_moyenne[i];
      carre_ecart_a_moyenne_Yi[i] = ((ecart_a_moyenne_Yi[i])*(ecart_a_moyenne_Yi[i]));i++;
    };


  /*Somme des (Xi- MoyenneXi)²*/


  SommeCarreXiMoinMoyenneXi = somme(carre_ecart_a_moyenne_Xi,N);
  SommeCarreYiMoinMoyenneYi = somme(carre_ecart_a_moyenne_Yi,N);


  /*Appel de la fonction de calcul de la pente "a" de la droite*/


  a=pente(SommeProduitXiYi,MoyenneXi,MoyenneYi,SommeCarreXiMoinMoyenneXi,N);


  /*Appel de la fonction de calcul de l'ordonee a l'orrigine "b"*/


  b=ordonee(MoyenneXi,MoyenneYi,a);


  /*Calcul du coefficient de corrélation "r"*/

  r=corr(SommeCarreXiMoinMoyenneXi,SommeCarreYiMoinMoyenneYi,a);

  /*Stockage des résultats dans une tableau de varialbes*/

  result[0]=SommeXi;
  result[1]=SommeYi;
  result[2]=MoyenneXi;
  result[3]=MoyenneYi;
  result[4]=SommeProduitXiYi;
  result[5]=SommeCarreXiMoinMoyenneXi;
  result[6]=SommeCarreYiMoinMoyenneYi;
  result[7]=a;
  result[8]=b;
  result[9]=r;

}