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 :

Problème d'optimisation des commandes


Sujet :

Calcul scientifique Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2016
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Problème d'optimisation des commandes
    Bonjour à tous,

    Je suis actuellement en prépa scientifique et je débute donc la programmation sur Python.
    J'ai un exercice à faire et je n'arrive pas à le mener à terme.

    L'exercice :

    On pose u[0]=1 et, pour tout n dans N,

    u[n+1] = 0.5* (u[n] + (n+1)/(u[n]))
    et v[n] = somme de : 1/(u[k])^5 pour k allant de 0 à n

    Ecrire une fonction f(n) retournant la valeur de v[n]. On fera attention à ce que le calcul de f[n] ne demande pas trop de (re)calculs inutiles. Ainsi, f(10**6) doit être calculer en largement moins d'une minute.


    Ce que j'ai déjà fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def suite_u(n): 
        u = 1
        for k in range(n):
             u = 0.5*(u + (k+1)/u)
        return u

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def f(n):
        v = 0
        for t in range(n+1):
             v += 1/(suite_u(t))**5
        return v

    Cependant, mon problème est que ces algorithmes ne sont pas assez optimisés pour répondre à la nécessité temporelle associée au calcul de f(10**6).
    Pourriez-vous donc m'indiquer des techniques de les optimiser ???
    Je suis très novice dans la matière.


    MERCI !

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Si j'ai bien compris les 2 formules, le code présenté a 3 problèmes:
    - dans la fonction suite_u, il faut que range aille jusqu'à n+1 pour atteindre n
    - dans les 2 fonctions, si on part de u0 et v0, la boucle doit commencer à 1 et non 0.
    - dans la fonction f, v0=1 et non 0.

    Pour optimiser, il y a quelque chose de facile à faire: éviter de recalculer suite_u(n) à chaque boucle pour v.

    Par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def fn(n):
        u, v = 1, 1
        for k in range(1, n+1):
            u = 0.5*(u + (k+1)/u)
            v += 1/u**5
        return v
    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    n = 5
    print(n, "=>", fn(n))
    5 => 1.251062944898583
    On peut vérifier que ça donne la même chose que les 2 fonctions présentées après les 3 corrections ci-dessus, mais la quantité de calculs est moins grande.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2016
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Merci !
    Je te remercie pour ta réponse. Elle est la clé du succès.

Discussions similaires

  1. [PrestaShop] Export des commandes
    Par chrozak dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 05/02/2015, 10h29
  2. [Python 3.X] Problème avec invite des commandes [Python]
    Par yo2607 dans le forum Général Python
    Réponses: 2
    Dernier message: 07/01/2015, 18h12
  3. Problème d'utilisation des commandes mysql
    Par Drogba11 dans le forum MySQL
    Réponses: 2
    Dernier message: 17/12/2008, 13h48
  4. Réponses: 5
    Dernier message: 31/05/2007, 14h08
  5. [Client FTP][C++] Problème au niveau des commandes
    Par agent007se dans le forum Développement
    Réponses: 4
    Dernier message: 19/04/2006, 15h15

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