Régression parabolique non triviale

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
sylvain231
Membre Relatif
Messages: 301
Enregistré le: 07 Avr 2020, 13:20

Re: régression parabolique non triviale

par sylvain231 » 22 Juin 2023, 13:31

a=-0.061857, b=-0.0941683, c=-0.112667



Avatar de l’utilisateur
leon1789
Membre Transcendant
Messages: 5475
Enregistré le: 27 Nov 2007, 16:25

Re: régression parabolique non triviale

par leon1789 » 22 Juin 2023, 13:37

et ton t ?

sylvain231
Membre Relatif
Messages: 301
Enregistré le: 07 Avr 2020, 13:20

Re: régression parabolique non triviale

par sylvain231 » 22 Juin 2023, 13:41

t=0.581195

sylvain231
Membre Relatif
Messages: 301
Enregistré le: 07 Avr 2020, 13:20

Re: régression parabolique non triviale

par sylvain231 » 22 Juin 2023, 13:43

désolé je n'avais pas mis le sommet en (0,0) voici mes résultats :
a= 1.91461 b= 2.14439 c= 2.87474 t=0.728849

Avatar de l’utilisateur
leon1789
Membre Transcendant
Messages: 5475
Enregistré le: 27 Nov 2007, 16:25

Re: régression parabolique non triviale

par leon1789 » 22 Juin 2023, 13:49

le t est bon (le plus compliqué), mais pas le c (le plus simple !)
Fais voir à nouveau ton code s'il te plait.

sylvain231
Membre Relatif
Messages: 301
Enregistré le: 07 Avr 2020, 13:20

Re: régression parabolique non triviale

par sylvain231 » 22 Juin 2023, 13:49

Code: Tout sélectionner
void Parabole::fit2(std::vector<cv::Point2d> points, cv::Point2d sommet) {
    this->sommet = sommet;
    int n = points.size();
    cout << "sommet = " << sommet << endl;
    points = translatePoint2ds(points, sommet);
    double bestTheta = 0;
    double minimum = std::numeric_limits<double>::infinity();
    for (double theta = 0; theta <= CV_PI; theta += CV_PI / 1000) {

        vector<Point2d> rotated = rotatePoint2ds(points, theta);
        double E1 = 0;
        for (int i = 0; i < n; i++) {
            E1 += pow(rotated[i].x, 4);
        }
        double E2 = 0;
        for (int i = 0; i < n; i++) {
            E2 += pow(rotated[i].x, 2) * rotated[i].y;
        }

        double E3 = 0;
        for (int i = 0; i < n; i++) {
            E3 += pow(rotated[i].y, 2);
        }

        double delta = E1 - (pow(E2, 2) / E3);
        if (delta < minimum) {
            minimum = delta;
            bestTheta = theta;
        }
    }

    this->theta_radians = bestTheta;
    this->theta = bestTheta * 180 / CV_PI;
    vector<Point2d> rotated = rotatePoint2ds(points, bestTheta);
    double E2 = 0;
    for (int i = 0; i < n; i++) {
        E2 += pow(rotated[i].x, 2) * rotated[i].y;
    }
    double E3 = 0;
    for (int i = 0; i < n; i++) {
        E3 += pow(rotated[i].y, 2);
    }
    this->c = E2 / E3;
    this->a = sin(theta_radians) * c;
    this->b = cos(theta_radians) * c;
    cout << "a= " << a << " b= " << b << " c= "<<c<<" t="<<bestTheta<<endl;

}

sylvain231
Membre Relatif
Messages: 301
Enregistré le: 07 Avr 2020, 13:20

Re: régression parabolique non triviale

par sylvain231 » 22 Juin 2023, 13:50

c'est un peu comme tout à l'heure le theta était bon mais pas le a

Avatar de l’utilisateur
leon1789
Membre Transcendant
Messages: 5475
Enregistré le: 27 Nov 2007, 16:25

Re: régression parabolique non triviale

par leon1789 » 22 Juin 2023, 13:55

Je ne comprends pas vraiment d'où vient le souci. J'ai remplacé E2 et E3 (déjà utilisées avant dans le programme) par F2 et F3

Code: Tout sélectionner
 (...)
    this->theta = bestTheta * 180 / CV_PI;
    vector<Point2d>rotated = rotatePoint2ds(points, bestTheta);
    double F2 = 0;
    for (int i = 0; i < n; i++) {
        F2 += pow(rotated[i].x, 2) * rotated[i].y;
    }
    double F3 = 0;
    for (int i = 0; i < n; i++) {
        F3 += pow(rotated[i].y, 2);
    }
    this->c = F2 / F3;


Peux tu me montrer les valeurs des 2*3 = 6 coordonnées de rotated suite au calcul rotatePoint2ds(points, bestTheta)
?
Modifié en dernier par leon1789 le 22 Juin 2023, 13:57, modifié 1 fois.

sylvain231
Membre Relatif
Messages: 301
Enregistré le: 07 Avr 2020, 13:20

Re: régression parabolique non triviale

par sylvain231 » 22 Juin 2023, 13:57

je te donne l'affichage du rotated juste avant le calcul du c :
rotated=[6.79339958680754, 7.406059819766725;
6.766821943292685, 19.44762506805838;
-5.168236383494186, 8.791435189110304]

sylvain231
Membre Relatif
Messages: 301
Enregistré le: 07 Avr 2020, 13:20

Re: régression parabolique non triviale

par sylvain231 » 22 Juin 2023, 13:59

à mon avis c'est le même problème que dans l'ancien algo, un problème obscur de variables en C++

Avatar de l’utilisateur
leon1789
Membre Transcendant
Messages: 5475
Enregistré le: 27 Nov 2007, 16:25

Re: régression parabolique non triviale

par leon1789 » 22 Juin 2023, 14:00

sylvain231 a écrit:je te donne l'affichage du rotated juste avant le calcul du c :
rotated=[6.79339958680754, 7.406059819766725;
6.766821943292685, 19.44762506805838;
-5.168236383494186, 8.791435189110304]

Ca, c'est bon.
Modifié en dernier par leon1789 le 22 Juin 2023, 14:01, modifié 2 fois.

sylvain231
Membre Relatif
Messages: 301
Enregistré le: 07 Avr 2020, 13:20

Re: régression parabolique non triviale

par sylvain231 » 22 Juin 2023, 14:00

une ligne par point, le premier nombre est le x, le deuxième le y séparés par une virgule

Avatar de l’utilisateur
leon1789
Membre Transcendant
Messages: 5475
Enregistré le: 27 Nov 2007, 16:25

Re: régression parabolique non triviale

par leon1789 » 22 Juin 2023, 14:01

Il faut tracer après chaque opération, car on ne voit rien de rien :mrgreen: :mrgreen:

Quelles sont les valeurs de F2 et de F3 au moment du calcul de c ?

sylvain231
Membre Relatif
Messages: 301
Enregistré le: 07 Avr 2020, 13:20

Re: régression parabolique non triviale

par sylvain231 » 22 Juin 2023, 14:03

E2=1467.12
E3=510.349

Avatar de l’utilisateur
leon1789
Membre Transcendant
Messages: 5475
Enregistré le: 27 Nov 2007, 16:25

Re: régression parabolique non triviale

par leon1789 » 22 Juin 2023, 14:04

sylvain231 a écrit:E2=1467.12
E3=510.349

C'est bon aussi !
alors que ton c doit valoir 2.8747 .... non ?

sylvain231
Membre Relatif
Messages: 301
Enregistré le: 07 Avr 2020, 13:20

Re: régression parabolique non triviale

par sylvain231 » 22 Juin 2023, 14:04

mais vérifie aussi le rotated

sylvain231
Membre Relatif
Messages: 301
Enregistré le: 07 Avr 2020, 13:20

Re: régression parabolique non triviale

par sylvain231 » 22 Juin 2023, 14:05

oui il vaut cela

Avatar de l’utilisateur
leon1789
Membre Transcendant
Messages: 5475
Enregistré le: 27 Nov 2007, 16:25

Re: régression parabolique non triviale

par leon1789 » 22 Juin 2023, 14:06

sylvain231 a écrit:oui il vaut cela

ah !! c'est tout bon alors.
Avant il valait cela :
sylvain231 a écrit:c=-0.112667


Maintenant, redonne les valeurs de t,c,a,b s'il te plait.

sylvain231
Membre Relatif
Messages: 301
Enregistré le: 07 Avr 2020, 13:20

Re: régression parabolique non triviale

par sylvain231 » 22 Juin 2023, 14:06

je viens de prendre la calculette Windows et c'est bon !

sylvain231
Membre Relatif
Messages: 301
Enregistré le: 07 Avr 2020, 13:20

Re: régression parabolique non triviale

par sylvain231 » 22 Juin 2023, 14:07

a= 1.91461 b= 2.14439 c= 2.87474 t=0.728849
tu n'as pas dû voir mon message quand je disais que j'avais oublié de mettre le sommet en (0,0)

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 32 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite