Bonjour,
Je suis étudiant et je fais un peut de c++ et je souhaite coder une regression polynomiale y = ax² + bx + c à partir des points de données Xi et Yi avec des incertitudes de mesures sur les Yi
j'ai écrit quelque chose dans ce gout là pour trouver a b et c :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
long double *least_square_fitting(int NB_DATA, long double* x, long double* y, long double* Erreur ){
 
long double M=0, N=0, P=0, Q=0, R=0, S=0;                  //coefficients du système linéaire
long double det_inv=0;                                       //inverse du déterminant
long double a=0, b=0, c=0;                                 //coefficients du polynome
long double x_square = 0;
long double  x_cube = 0;
 
long double *coeff = new long double [3];
 
c = y[0];
 
for(int i=0 ; i<NB_DATA ; ++i ){
	x_square = (x[i]*x[i]);
	x_cube   = (x[i]*x[i]*x[i]);
	M += x_square*x_square;
	N += x_cube ;
	P += x_square * (c-y[i]) ;
	Q += x_cube ;
	R += x_square ;
	S += x[i] * (c-y[i]);
	}
 
//résolution du système
det_inv = 1 / (M*R - N*Q);
a = det_inv * ( N*S - R*P );
b = det_inv * ( Q*P - M*S );
 
coeff[0]=c;
coeff[1]=b;
coeff[2]=a;
 
  return coeff;
}
Mais ce code ne prend pas en compte les erreur sur yi.
Une idée sur la façon de procéder?