ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/addin/outil/src/ot_statistique.cpp
Revision: 1156
Committed: Thu Jun 13 22:02:48 2024 UTC (14 months, 2 weeks ago) by francois
File size: 3121 byte(s)
Log Message:
compatibilité Ubuntu 22.04
Suppression des refeences à Windows
Ajout d'une banière

File Contents

# Content
1 //####//------------------------------------------------------------
2 //####//------------------------------------------------------------
3 //####// MAGiC
4 //####// Jean Christophe Cuilliere et Vincent FRANCOIS
5 //####// Departement de Genie Mecanique - UQTR
6 //####//------------------------------------------------------------
7 //####// MAGIC est un projet de recherche de l equipe ERICCA
8 //####// du departement de genie mecanique de l Universite du Quebec a Trois Rivieres
9 //####// http://www.uqtr.ca/ericca
10 //####// http://www.uqtr.ca/
11 //####//------------------------------------------------------------
12 //####//------------------------------------------------------------
13 //####//
14 //####// ot_statistique.cpp
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:54:00 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22
23 #pragma hdrstop
24
25 #include "ot_statistique.h"
26 #pragma package(smart_init)
27
28
29 double OT_STATISTIQUE::moyenne (double * x, int n)
30 {
31 int i;
32 double moyenne_x = 0;
33 for (i=0;i<n;i++)
34 moyenne_x += x[i];
35 moyenne_x /= n;
36 return moyenne_x;
37 }
38
39 double OT_STATISTIQUE::ecart_type (double * x, int n)
40 {
41 int i;
42 double moyenne_x = moyenne(x,n);
43
44 double moyenne_x2 = 0;
45 for (i=0;i<n;i++)
46 moyenne_x2 += x[i]*x[i];
47 moyenne_x2 /= n;
48
49 return sqrt(moyenne_x2-moyenne_x*moyenne_x);
50 }
51
52 double OT_STATISTIQUE::covariance (double * x, double * y, int n)
53 {
54 int i;
55
56 double moyenne_xy = 0;
57 for (i=0;i<n;i++)
58 moyenne_xy += x[i]*y[i];
59 moyenne_xy /= n;
60
61 double moyenne_x = 0;
62 for (i=0;i<n;i++)
63 moyenne_x += x[i];
64 moyenne_x /= n;
65
66 double moyenne_y = 0;
67 for (i=0;i<n;i++)
68 moyenne_y += y[i];
69 moyenne_y /= n;
70
71 return moyenne_xy - moyenne_x * moyenne_y;
72 }
73
74 double OT_STATISTIQUE::variance (double * x, int n)
75 {
76 int i;
77
78 double moyenne_carres = 0;
79 for (i=0;i<n;i++)
80 moyenne_carres += x[i]*x[i];
81 moyenne_carres /= n;
82
83 double moyenne = 0;
84 for (i=0;i<n;i++)
85 moyenne += x[i];
86 moyenne /= n;
87
88 return moyenne_carres - moyenne*moyenne;
89 }
90
91 void OT_STATISTIQUE::regression_lineaire(double *x, double *y, int n, double *pente, double *valY0)
92 {
93 int i;
94
95 // coef directeur de la droite
96 double a = variance(y,n) / covariance(x,y,n);
97
98 // b = valeur de y (0) par moindre carr�s
99 double b = 0;
100 for (i=0; i<n; i++)
101 b += y[i] - a*x[i];
102 b /= n;
103
104 *pente = a;
105 *valY0 = b;
106 }
107
108 double OT_STATISTIQUE::max(double *x, int n)
109 {
110 if (n==0)
111 return 0;
112
113 double max_x = x[0];
114 for (int i=0;i<n;i++)
115 if (x[i] > max_x)
116 max_x = x[i];
117
118 return max_x;
119 }
120
121 double OT_STATISTIQUE::min(double *x, int n)
122 {
123 if (n==0)
124 return 0;
125
126 double min_x = x[0];
127 for (int i=0;i<n;i++)
128 if (x[i] < min_x)
129 min_x = x[i];
130
131 return min_x;
132 }