Partage
  • Partager sur Facebook
  • Partager sur Twitter

Fonction qui retourne un résultat sans s'arrêter?

Sujet résolu
    26 mai 2015 à 23:17:40

    Merci Dan mais ce n'est pas ça, le plt.pause ne change rien donc j'ai fini par l'enlever.

    Et te soucies pas pour la partie graphique, de ce côté tout est ok.

    -
    Edité par Jarka 26 mai 2015 à 23:24:46

    • Partager sur Facebook
    • Partager sur Twitter
      27 mai 2015 à 8:32:13

      En premier, je pense que le pause() est utile. Il permet d'afficher (dans mon cas) les images à chaque itération. Ensuite ton erreur provient sûrement des valeurs de u et v. Si tu regarde bien (avec le code suivant), tu verra que la première et la deuxième image ne sont pas les mêmes. Après les valeurs de u et v doivent devenir tellement grande que l'image ne change plus:

      def fonction(Nx,Ny,Nt):
      
      
          u = [[3+random()for j in range (Ny)] for i in range (Nx)]
          v = [[3+random()for j in range (Ny)] for i in range (Nx)]
      
      
          for t in xrange(Nt):
      
              if t %10 == 0:
                  print t, min(min(u)), max(max(u)), min(min(v)), max(max(v))
                  yield u,v
      
              for x in xrange(Nx):
                  for y in xrange(Ny):
                      u[x][y] +=v[x][y]+u[x][y]**(1/2)
                      v[x][y] +=u[x][y]-u[x][y]**(1/2)
              yield u,v
      
      
      for u, v in fonction (100,100,100):
          imag=plt.imshow(u,interpolation='nearest',cmap=cm.binary)
          plt.xticks([])
          plt.yticks([])
          imag.set_data(v)
          imag.autoscale()
          plt.draw()
          plt.pause(1e-6)

      -
      Edité par Olygrim 27 mai 2015 à 8:34:12

      • Partager sur Facebook
      • Partager sur Twitter
      Précepte: Le mieux est l'ennemi du bien
        27 mai 2015 à 12:06:04

        Olygrim, avec le code là tu as l'image qui s'affiche plusieurs fois dès que  "t %10 ==0" est vérifiée? Pour moi ce n'est pas le cas,l'image s'affiche toujours en toute fin et une seule fois. :waw:

        C'est dû au fait qu'on n'utilise pas les mêmes versions de Python? J'utilise la version 2.7 et toi?

        PS: Je ne comprend pas le problème avec les valeurs de u et v, c'est justement le but qu'elles changent et évoluent.

        -
        Edité par Jarka 27 mai 2015 à 12:10:35

        • Partager sur Facebook
        • Partager sur Twitter
          27 mai 2015 à 12:53:41

          J'ai testé ce code également en 2.7 ;) et j'ai bien une image mais elle n'évolue pas (elle reste la même). Essaie d'ajouter un plt.figure() juste après la condition. Et décale ton second yield pour le ramener à la même hauteur que ton premier for. Ainsi tu n'affichera vraiment qu'une image sur 10 et tu récupérera quand même la dernière.

          • Partager sur Facebook
          • Partager sur Twitter
          Précepte: Le mieux est l'ennemi du bien
            27 mai 2015 à 13:31:45

            Ah merci beaucoup ça marche maintenant! :ange:

            Je veux pas me montrer très gourmand, mais y'aurait pas moyen de les afficher au fur et à mesure plutôt que tout d'un seul coup?

            • Partager sur Facebook
            • Partager sur Twitter
              27 mai 2015 à 18:05:41

              Il suffit d'augmenter le temps de la pause. Il est en seconde: plt.pause(0.5)
              • Partager sur Facebook
              • Partager sur Twitter
              Précepte: Le mieux est l'ennemi du bien
                27 mai 2015 à 19:55:28

                Ca ne change rien, ça a marché pour toi?
                • Partager sur Facebook
                • Partager sur Twitter
                  27 mai 2015 à 20:03:59

                  Ouaip :lol:
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Précepte: Le mieux est l'ennemi du bien
                    27 mai 2015 à 21:15:42

                    J'ai fais quoi de travers alors pour ne pas obtenir les images une par une? :'(
                    (Il y'a une image qui accompagne ce post, elle met un peu de temps à s'afficher)

                    -
                    Edité par Jarka 27 mai 2015 à 21:22:50

                    • Partager sur Facebook
                    • Partager sur Twitter
                      27 mai 2015 à 21:25:53

                      Je lance mon code dans l'interpréteur python (la console). Peut-être que ça vient de là. De plus chaque image s'affiche entre chaque nombre, donc bien au fur et à mesure. Pas comme dans ton image, où on voit bien que tes images s'affichent après les nombres.
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Précepte: Le mieux est l'ennemi du bien
                        28 mai 2015 à 1:16:38

                        Merci beaucoup Olygrim, je passe en résolu :D
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Fonction qui retourne un résultat sans s'arrêter?

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown