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 :
Mais ce code ne prend pas en compte les erreur sur yi.
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; }
Une idée sur la façon de procéder?
Partager