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 :

Des problèmes de graphes et de mémoire vive


Sujet :

Calcul scientifique Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Des problèmes de graphes et de mémoire vive
    Bonsoir à tous !

    Je suis un débutant en python, et en programmation en règle générale. Je me suis fixé pour projet de représenter l'ensemble de Mandelbrot, avec une très bonne résolution, et dans un second temps avec des couleurs.
    Après un premier essai, je me suis vite aperçu que j'avais de gros problèmes avec la mémoire vive quand j'exécutais mon programme.

    Pour réduire les ralentissements, j'ai modifié mon programme de telle sorte à ce qu'il écrive dans un fichier .txt les données qui m'intéressent.
    Ensuite vient mon principal souci : j'ai écrit un second programme permettant de représenter, à l'aide de matplotlab.pyplot ce qu'il y a dans mon fichier .txt (c'est à dire des couples de réels, suivi d'un nombre, précisant si la suite converge, et si oui quand). Toutefois, cela ne règle pas mon problème parce que mon ordinateur freeze toujours autant.

    Ce que je voudrais pouvoir faire : faire en sorte que le graphe que je constitue soit fait dans un fichier, et ne soit pas stocké comme c'est le cas dans ma mémoire vive. En outre, j'aimerais pouvoir fixer la résolution du graphe selon la précision que j'ai établi. Enfin (et après je vous promets d'arrêter), j'ai un autre problème qui n'a rien à voir : dans ma première partie du programme, quand je convertis mes couple de flottants en chaîne de caractère pour écrire le fichier .txt, il me semble que je perds quasi systématiquement en précision. Y'a-t-il un moyen d'y remédier ?

    Je sais pas si je suis tout à fait clair, mais j'ai pensé qu'il valait mieux expliquer ce qui me bloquait plutôt que de copier coller les programmes, qui mine de rien commencent à être denses ^^.
    En vous remerciant,

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 388
    Points : 692
    Points
    692
    Par défaut
    Salut,
    Si tu ne l'as pas déjà fait, je te conseille de lire ce post.
    Il tourne sans problème sur un PC familial.
    Montre nous maintenant ton code si tu veux de l'aide.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Ouais, je vois que je me suis bien pris la tête, notamment avec le fichier mais bon, vu que c'est mon 2eme programme, il m'aura au moins permis de m'améliorer !
    Le voila :
    Programme pour créer le fichier
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    def bvert(x,y,prec,reit,Fichiercalcul):
         while y<=1.2:
             c=complex(x,y)
             z=0
             i=0
             while abs(z)<=2 and i in range(reit):
                 i+=1
                 z=z*z+c
             if i==reit :
                 prefix="aaa"
             else:
                 prefix=(str(i)).zfill(3)
             Fichiercalcul.write("\n"+prefix+"_"+str((x,y)))
             y+=prec
         x+=prec
         return x
    import os.path
    prec=float(input("Quelle précision pour le programme ?"))
    reit=int(input("Combien de réitérations ?"))
    binf=float(input("Borne inférieure ?"))
    bsup=float(input("Borne supérieure ?"))
    intervalle=tuple((binf,bsup))
    try :
        len(intervalle)==2
        intervalle[0]<intervalle[1]
    except:
        print("L'intervalle n'est pas valide.")
    Nomfichier="M"+"_"+str(prec)+"_"+str(intervalle)+str(reit)+"reit"+".txt"
    Fichiercalcul=open(Nomfichier,"a")
    if os.path.getsize(Nomfichier)!=0: 
        for ligne in Fichiercalcul:
            pass
        derniercouple=str(ligne[4:])
        derniercouple=tuple([float(x) for x in derniercouple.split(",")])
        x,y=derniercouple[0],derniercouple[1]
        x=bvert(x,y,prec,reit,Fichiercalcul)
    else:
        x=intervalle[0]
    while x<=intervalle[1]:
        print("{} % effectués",(x+2.1)/(0.6+2.1))
        y=-1.2
        x=bvert(x,y,prec,reit,Fichiercalcul)
     
     
     
     
    #NOMENCLATURE: 000_(x,y)

    Et voila le programme sensé afficher le graphe, et qui freeze complètement mon ordi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import matplotlib.pyplot as repere
    Nomfichier=str(input("indiquer le nom exact du fichier à convertir en image"))
    #ligne suivante Test, a enlever
    Nomfichier="M_0.001_(-2.1, 0.6)50reit.txt"
    repere.axis([-2.1,0.6,-1.2,1.2])
    Fichiercalcul=open(Nomfichier,"r")
    for ligne in Fichiercalcul:
       if ligne !="\n":
                    prefix=str(ligne[:3])
                    n=int(ligne.find(",")+1)
                    x,y=float(ligne[5:ligne.find(",")]),float(ligne[n:ligne.find(")")])
                    if prefix=="aaa":
                            repere.plot(x,y,",")
    repere.show()
    Voilà, j'ai conscience que ce que j'ai fait est loin d'être top (je me plongerai demain sur le code que tu m'as donné), mais il m'aura au moins permis de me plonger (ou au moins d'en avoir l'impression) dans la programmation !

Discussions similaires

  1. Mémoire vive (alzheimer des ordis)
    Par DIC SA Ingénieurs dans le forum Windows Vista
    Réponses: 3
    Dernier message: 20/05/2008, 19h01
  2. Problème mémoire vive et Java.
    Par Greg.shogun dans le forum Général Java
    Réponses: 3
    Dernier message: 09/05/2008, 10h41
  3. Encore des problèmes avec le BDE
    Par Flint dans le forum C++Builder
    Réponses: 19
    Dernier message: 31/12/2007, 23h26
  4. Réponses: 8
    Dernier message: 14/03/2007, 21h45
  5. Hum XMLRad RC2 deja des problèmes ?!
    Par [DreaMs] dans le forum XMLRAD
    Réponses: 2
    Dernier message: 25/02/2003, 12h23

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