IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

calcul regression lineaire


Sujet :

C#

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 296
    Points : 99
    Points
    99
    Par défaut calcul regression lineaire
    Bonjour,
    Je cherche une solution en c# pour calculer dynamiquement la formule d'une régression linéaire (équivalent Courbe de tendance polynomiale sous Excel) avec seulement 3 points.
    Les points extrêmes sont statiques (0,0) et (100,100) seul le point central bouge entre (0,0) et (100,100).
    L'espace de travail est un repère cartésien qui va de 0 à 100 sur les 2 axes.
    J'arrive à trouver la formule sous excel mais c'est du coup par coup et je voudrais pouvoir calculer cette formule en temps réel.
    J'ai fait un petit fichier excel qui permet de bouger dans la colonne 3 mon point central et ça recalcule la formule.
    Merci pour votre aide
    Fichiers attachés Fichiers attachés

  2. #2
    Membre confirmé
    Avatar de nouanda
    Homme Profil pro
    Hobbyist
    Inscrit en
    Mai 2002
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Australie

    Informations professionnelles :
    Activité : Hobbyist

    Informations forums :
    Inscription : Mai 2002
    Messages : 246
    Points : 627
    Points
    627
    Par défaut
    C'est plus des maths que de la programmation.
    En gros, si je comprends bien, tu cherches l'équation du second degré qui satisfait les conditions suivantes:
    Passe par (0,0)
    Passe par (100,100)
    Passe par (x, y)

    La première condition fait que tu cherches une équation de la forme y = a.x² + b.x

    La seconde condition conduit à 100 = 100².a + 100.b, ou 1 = 100.a + b, ou encore b = 1 - 100a.

    Tu trouveras facilement que a = (y - x)/(x² - 100.x).

    Donc tu si tu connais ton point (x, y), tu peux facilement écrire une fonction qui calcule a, puis b.
    " Entre le Savoir et le Pouvoir, il y a le Vouloir "

    Desole pour les accents, je suis en QWERTY...

  3. #3
    Membre confirmé
    Avatar de nouanda
    Homme Profil pro
    Hobbyist
    Inscrit en
    Mai 2002
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Australie

    Informations professionnelles :
    Activité : Hobbyist

    Informations forums :
    Inscription : Mai 2002
    Messages : 246
    Points : 627
    Points
    627
    Par défaut
    version TRÈS brut de décoffrage (application console):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
            static void Main(string[] args)
            {
                Console.WriteLine("Rentrer les coordonnées du point (x, y) sur la courbe y=ax²+bx passant par (0,0) et (100,100)");
                Console.WriteLine("x = ?");
                float x = float.Parse(Console.ReadLine());
                Console.WriteLine("y = ?");
                float y = float.Parse(Console.ReadLine());
                float a = (y - x) / (x*x - 100*x);
                float b = 1 - 100*a;
                Console.WriteLine("a =" + a.ToString());
                Console.WriteLine("b =" + b.ToString());
                Console.ReadLine();
            }
    " Entre le Savoir et le Pouvoir, il y a le Vouloir "

    Desole pour les accents, je suis en QWERTY...

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 296
    Points : 99
    Points
    99
    Par défaut
    Bonjour,
    Merci pour votre aide , j'ai oublié de mettre la réponse à ma question.
    J'ai trouvé la solution : l'interpolation de Lagrange
    J'ai trouvé le code ici
    https://www.codeproject.com/Articles...-Interpolation
    Et ça marche super bien

    Merci

  5. #5
    Membre confirmé
    Avatar de nouanda
    Homme Profil pro
    Hobbyist
    Inscrit en
    Mai 2002
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Australie

    Informations professionnelles :
    Activité : Hobbyist

    Informations forums :
    Inscription : Mai 2002
    Messages : 246
    Points : 627
    Points
    627
    Par défaut
    Si ce n'est qu'avec trois points, l'interpolation de Lagrange donnera un polynôme du second degré, puisque pour n points, la solution est un polynôme de degré n-1.
    Et pour un polynôme du second degré, ma solution (et je la défendrai coûte que coûte!! ) est plus légère en ressources.
    " Entre le Savoir et le Pouvoir, il y a le Vouloir "

    Desole pour les accents, je suis en QWERTY...

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 296
    Points : 99
    Points
    99
    Par défaut
    Tu as raison mais le code est déjà fait .
    Et au final j'ai utilisé 5 points pour délimiter le mini et le maxi de ma courbe, seul 3 points servent à la dessiner.
    Nom : CourbeFinale.jpg
Affichages : 565
Taille : 12,0 Ko
    Voila la version finale.
    Merci pour ton aide

  7. #7
    Membre confirmé
    Avatar de nouanda
    Homme Profil pro
    Hobbyist
    Inscrit en
    Mai 2002
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Australie

    Informations professionnelles :
    Activité : Hobbyist

    Informations forums :
    Inscription : Mai 2002
    Messages : 246
    Points : 627
    Points
    627
    Par défaut
    Ha, c'est sur, pour plus de points, y'a pas le choix.
    " Entre le Savoir et le Pouvoir, il y a le Vouloir "

    Desole pour les accents, je suis en QWERTY...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Regression lineaire et coefficient de correlation
    Par fuyo2004 dans le forum MATLAB
    Réponses: 4
    Dernier message: 12/06/2009, 14h45
  2. regression lineaire SAS
    Par marion29 dans le forum SAS STAT
    Réponses: 5
    Dernier message: 06/05/2009, 11h06
  3. Régression linéaire
    Par tahoser dans le forum MATLAB
    Réponses: 5
    Dernier message: 21/08/2007, 15h18
  4. calcul regression lineaire
    Par mohcultiv dans le forum ASP
    Réponses: 2
    Dernier message: 08/06/2007, 11h31
  5. [regression lineair] Pourcentage de la regression
    Par Fabouney dans le forum Langage
    Réponses: 2
    Dernier message: 08/01/2007, 13h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo