je cherche à implémenter la régression linéaire par écart de distances de ce papier : https://fr.scribd.com/document/14819165 ... -spherique
Sur ces images je cherche à faire coller une droite sur les points verts :
http://sylvain-ard.fr/temp/regression_l ... euille.jpg
http://sylvain-ard.fr/temp/regression_l ... euille.jpg
Vous pouvez voir les droites calculées en rouge.
L'image de départ est :
http://sylvain-ard.fr/temp/regression_l ... /IMAGE.jpg
Les listes de points sont :
http://sylvain-ard.fr/temp/regression_l ... droite.csv
http://sylvain-ard.fr/temp/regression_l ... gauche.csv
et mon code est :
- Code: Tout sélectionner
double moyX = 0;
for (int i = 0; i < points.size(); i++) {
moyX += points[i].x;
}
moyX /= points.size();
double sommeA=0;
for (int i = 0; i < points.size(); i++) {
sommeA+=points[i].y*points[i].y;
}
double sommeB=0;
for (int i = 0; i < points.size(); i++) {
sommeB+=points[i].y;
}
double sommeC=0;
for (int i = 0; i < points.size(); i++) {
sommeC+=points[i].x*points[i].x;
}
double sommeD=0;
for (int i = 0; i < points.size(); i++) {
sommeD+=points[i].x;
}
double sommeE=0;
for (int i = 0; i < points.size(); i++) {
sommeE+=points[i].x*points[i].y;
}
double numerateur=0.5*(points.size()*sommeA-sommeB*sommeB-points.size()*sommeC+
sommeD*sommeD);
double denominateur=points.size()*sommeE-sommeB*sommeD;
if (denominateur == 0)
{
this->vertical = true;
this->x = moyX;
}
else
{
double c = numerateur / denominateur;
this->slope = c+sqrt(c*c+1);
this->originOrdinate = (1/points.size())*(sommeB-(this->slope)*sommeD);
this->vertical = false;
}
SVP aidez-moi à voir ce qui ne va pas
Merci
Bien cordialement