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

Calcul scientifique Python Discussion :

Minimiser une fonction


Sujet :

Calcul scientifique Python

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2020
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Minimiser une fonction
    Bonjour,
    Je travaille sur un projet d'infoprogrammation dont le but est de calculer une ellipse se rapprochant de la trajectoire d'une planète autour d'un trou noir.
    La fonction que nous devons utiliser est ci dessous, les x et y sont les positions de notre planète à chaque temps t.

    Nom : 86501287_184503532993162_7299214301561094144_n.png
Affichages : 174
Taille : 45,3 Ko

    Nous sommes censées trouver un alpha, un a et un e , en minimisant la somme d telle que d= sqrt(somme f(xi, yi)^2) (je vous joint ci dessous l'image également.)

    Nom : 86848836_195688025145254_2983870924794626048_n.png
Affichages : 162
Taille : 7,3 Ko

    C'est notre premier projet d'informatique et nous sommes un peu perdues, merci d'avance pour votre aide !

  2. #2
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 654
    Points : 1 150
    Points
    1 150
    Par défaut
    Bonjour,

    Ce problème est avant tout un problème algorithmique. Si vous séchez sur cet aspect, je ne peux que vous conseillez de vous tourner vers la section Algorithme du forum. Si ce n'est pas le cas, alors il vous faut plus expliciter votre problème et nous montrer du code.

    Ceci dit, Python est bien armé pour répondre à votre question. En somme il vous faut :
    1. définir une fonction objective. Cette fonction renvoie votre d
    2. Une fonction de minimisation prenant en paramètre votre fonction objective, une valeur initiale et des contraintes s'il y en a


    En python vous trouverez certainement votre bonheur dans la bibliothèque Scipy . En fonction du type de problème à minimiser, vous avez une méthode associée.

    J

  3. #3
    Membre habitué
    Homme Profil pro
    Vagabong étudiant en annalyse du signal.
    Inscrit en
    Avril 2019
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Vagabong étudiant en annalyse du signal.
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2019
    Messages : 123
    Points : 162
    Points
    162
    Par défaut
    Quelque chose comme ça?

    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
     
    X = [...] # la liste de Xi
    Y = [...] # la liste de Yi
     
    def erreur(X, Y, a, e):
        """
        retourne le carre de l'erreur d
        """
        return sum((f(xi, yi, a, e)**2 for xi, yi in zip(X, Y))
     
    # recherche de la plus petite erreur
    a_best, e_best = None,  None # les valeur de a et e qui minimisent l'erreur
    er_best = oo # la plus petite erreur rencontree qu'on initialise au dela de toute erreur possible, avec +infini on est tranquille...
    for a in range(amin, amax, pas):
        for e in range(emin, emax, pas):
            er = erreur(X, Y, a, e)
            if er < er_best:
                er_best = er
                a_best, e_best = a, e
    print("a:%f, e:%f" % (a_best, b_best))
    C'est l'algorithme le plus simple le plus bourrin celui qui à la pire complexité. Mais il à l'avantage d'être simple. Il faut l'adapter à ton cas.

Discussions similaires

  1. Réponses: 7
    Dernier message: 26/04/2009, 22h58
  2. Minimiser une fonction
    Par drfell dans le forum MATLAB
    Réponses: 2
    Dernier message: 22/03/2009, 13h18
  3. Minimiser une fonction
    Par Lucas2 dans le forum Calcul scientifique
    Réponses: 3
    Dernier message: 20/01/2009, 22h56
  4. minimiser une fonction complexe
    Par ciliaz dans le forum MATLAB
    Réponses: 3
    Dernier message: 01/12/2008, 12h03
  5. Réponses: 8
    Dernier message: 07/04/2008, 12h02

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