Exception en point flottant (core dumped)

Pour toute demande d'aide sur des exemples non finalisés, c'est ici.
Les exemples aboutis et intéressants seront ajoutés aux sous-forums qui suivent.

Règles du forum
Pour toute demande d'aide pour la conception (ou la confirmation d'un code) d'une figure Asymptote, c'est ici.

J'invite ceux qui ont régulièrement des questions à poser à aller dans leur panneau de l'utilisateur pour indiquer dans la signature de leurs messages :

  1. Nom du système d'exploitation (W7 ou Ubuntu 12.04 ou ...)
  2. Version d'Asymptote et éditeur utilisé pour les figures Asymptote
  3. Distribution LaTeX et éditeur utilisé pour les tex.


On va gagner du temps dans les réponses !
OG
V.I.P.
V.I.P.
Messages : 142
Enregistré le : dim. 7 mars 2010, 22:27

Re: Exception en point flottant (core dumped)

Message non lu par OG » lun. 28 juin 2010, 20:50

Idem, chez moi (svn d'hier sur ubuntu lucid) ça marche.
Merci de bien vérifier le nom du fichier, préciser la version
d'asymptote et avec un asy -vv.

O.G.

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1512
Enregistré le : dim. 7 mars 2010, 14:50

Re: Exception en point flottant (core dumped)

Message non lu par GM » lun. 28 juin 2010, 21:20

maurice a écrit :J'ai modifié le script pour faire apparaitre les calculs :

Code : Tout sélectionner

//Fonction étudiée et ses zéros
pair f(pair z) {return z^5-1;}
pair fprime(pair z) {return 5*z^4;}
pair[] racine;
       racine[0]=(-0.809,0.588);
       racine[1]=(0.309,0.951);
       racine[2]=(1,0);
       racine[3]=(0.309,-0.951);
       racine[4]=(-0.809,-0.588);

//Coloration des solutions
void newton(pair c, pair[] racine, pair f(pair z), pair fprime(pair z), real r, int count=50) {
   int i=0;
   pair z=c;
   do {
       ++i;
       z=z-(f(z)/fprime(z));
       write("Re(z)"+string(z.x));
       write("Im(z)"+string(z.y));
   } while (length(z-racine[0])>r && length(z-racine[1])>r && length(z-racine[2])>r && length(z-racine[3])>r && length(z-racine[4])>r && i<count);
   pen p;
   real step=0.01;
   path sq=scale(step)*unitsquare;
   if (length(z-racine[0])<=r) {p=(i/count)*green;
                 //filldraw(shift(z.x,z.y)*sq,p,p);}
                 write("z0="+string(length(z)));}
   else {
      if (length(z-racine[1])<=r){p=(i/count)*red;
                    //filldraw(shift(z.x,z.y)*sq,p,p);}
                    write("z1="+string(length(z)));}
      else {
         if (length(z-racine[2])<=r) {p=(i/count)*blue;
                       //filldraw(shift(z.x,z.y)*sq,p,p);}
                       write("z2="+string(length(z)));}
         else {
            if (length(z-racine[3])<=r) {p=(i/count)*yellow;
                          //filldraw(shift(z.x,z.y)*sq,p,p);}
                          write("z3="+string(length(z)));}
            else {
               if (length(z-racine[4])<=r) {p=(i/count)*orange;
                    //filldraw(shift(z.x,z.y)*sq,p,p);}
                    write("z4 = "+string(length(z)));}
               else //filldraw(shift(z.x,z.y)*sq,black,black);
               write("aucun"+string(length(z)));
            }
         }
      }
   }
}

//
real r=0.1;
real step=.01;
real xmin=-1.5, xmax=1.5;
real ymin=-1, ymax=1;

real x=xmin, y=ymin;
int xloop=round((xmax-xmin)/step);
int yloop=round((ymax-ymin)/step);

for(int i=0; i < xloop; ++i) {
  for(int j=0; j < yloop; ++j) {
    if((x,y)!=(0,0)) {
      newton((x,y),racine,f,fprime,r,30);}
    y += step;
  }
  x += step;
  y=ymin;
}


Cette fois-ci, pour moi... cela tourne, sans s'arrêter (apparemment - j'ai interrompu le processus tellement cela durait) et donc je n'ai pas non plus la fin que tu indiques.
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

maurice
Messages : 262
Enregistré le : jeu. 25 mars 2010, 13:00
Contact :

Re: Exception en point flottant (core dumped)

Message non lu par maurice » lun. 28 juin 2010, 21:58

Voici ce que retourne la commande asy -vv :

Code : Tout sélectionner

[maurice@localhost ~]$ asy -vv
Using configuration directory /home/maurice/.asy
Welcome to Asymptote version 2.00 (to view the manual, type help)
cd /home/maurice
Loading plain from /usr/local/share/asymptote/plain.asy
Including plain_constants from /usr/local/share/asymptote/plain_constants.asy
Loading version from /usr/local/share/asymptote/version.asy
Including plain_strings from /usr/local/share/asymptote/plain_strings.asy
Including plain_pens from /usr/local/share/asymptote/plain_pens.asy
Including plain_paths from /usr/local/share/asymptote/plain_paths.asy
Including plain_filldraw from /usr/local/share/asymptote/plain_filldraw.asy
Including plain_margins from /usr/local/share/asymptote/plain_margins.asy
Including plain_picture from /usr/local/share/asymptote/plain_picture.asy
Loading simplex from /usr/local/share/asymptote/simplex.asy
Including plain_Label from /usr/local/share/asymptote/plain_Label.asy
Including plain_shipout from /usr/local/share/asymptote/plain_shipout.asy
Including plain_xasy from /usr/local/share/asymptote/plain_xasy.asy
Including plain_arcs from /usr/local/share/asymptote/plain_arcs.asy
Including plain_boxes from /usr/local/share/asymptote/plain_boxes.asy
Including plain_markers from /usr/local/share/asymptote/plain_markers.asy
Including plain_arrows from /usr/local/share/asymptote/plain_arrows.asy
Including plain_debugger from /usr/local/share/asymptote/plain_debugger.asy
>

j'ai mis à jour asymptote (1.98 --> 2.00) cet après midi.

J'ai réessayé le code. Toujours la même erreur avec les mêmes valeurs :

Code : Tout sélectionner

Re(z)-3.12614582236207e+58
Im(z)-3.90525278483203e+58
essai.asy: 17.7: runtime: Exception en point flottant (core dumped)


Peut être je devrais essayer avec une autre fonction.

Maurice
Doc 3D
Si ça ne marche pas, essayez la version pdf

Fedora 23 -- Asymptote 2.35 -- TeXlive 2013 -- emacs et/ou gedit

maurice
Messages : 262
Enregistré le : jeu. 25 mars 2010, 13:00
Contact :

Re: Exception en point flottant (core dumped)

Message non lu par maurice » lun. 28 juin 2010, 22:17

Oups ! Encore une erreur de code :

remplacer les :

Code : Tout sélectionner

filldraw(shift(z.x,z.y)*sq,p,p)

par :

Code : Tout sélectionner

filldraw(shift(c)*sq,p,p)


J'ai remplacé la fonction x^5-1 par x^4-1 qui a pour racines 1, i, -1, -i.
Comme cela, ça fonctionne et j'obtiens ce que je voulais :

Code : Tout sélectionner

//Méthode de Newton avec Asymptote 1.98

//Taille de l'image
size(8cm,0);

//Fonction étudiée et ses zéros
pair f(pair z) {return z^4-1;}
pair fprime(pair z) {return 4*z^3;}
pair[] racine;
       //racine[0]=(-0.809,0.588);
       //racine[1]=(0.309,0.951);
       //racine[2]=(1,0);
       //racine[3]=(0.309,-0.951);
       //racine[4]=(-0.809,-0.588);
       racine[0]=(1,0);
       racine[1]=(0,1);
       racine[2]=(-1,0);
       racine[3]=(0,-1);

//Coloration des solutions
void newton(pair c, pair[] racine, pair f(pair z), pair fprime(pair z), real r, int count=50) {
   int i=0;
   pair z=c;
   do {
       ++i;
       z=z-(f(z)/fprime(z));
   } while (length(fprime(z))>r && length(z-racine[0])>r && length(z-racine[1])>r && length(z-racine[2])>r && length(z-racine[3])>r);
   // && length(z-racine[4])>r && i<count);
   pen p;
   real step=0.01;
   path sq=scale(step)*unitsquare;
   if (length(z-racine[0])<=r) {p=(1-i/count)*green;
                 filldraw(shift(c)*sq,p,p);}
   else {
      if (length(z-racine[1])<=r){p=(1-i/count)*red;
                    filldraw(shift(c)*sq,p,p);}
      else {
         if (length(z-racine[2])<=r) {p=(1-i/count)*blue;
                       filldraw(shift(c)*sq,p,p);}
         else {
            if (length(z-racine[3])<=r) {p=(1-i/count)*yellow;
                       filldraw(shift(c)*sq,p,p);}
            else {
               //if (length(z-racine[4])<=r) {p=(i/count)*orange;
               //     filldraw(shift(z.x,z.y)*sq,p,p);}
               //else
               filldraw(shift(c)*sq,black,black);
            }
         }
      }
   }
}

//
real r=0.1;
real step=.01;
real xmin=-1.5, xmax=1.5;
real ymin=-1, ymax=1;

real x=xmin, y=ymin;
int xloop=round((xmax-xmin)/step);
int yloop=round((ymax-ymin)/step);

for(int i=0; i < xloop; ++i) {
  for(int j=0; j < yloop; ++j) {
    if((x,y)!=(0,0)) {
      newton((x,y),racine,f,fprime,r,30);}
    y += step;
  }
  x += step;
  y=ymin;
}


Mais pour f(x)=x^5-1 toujours le core dumped.

Maurice
Doc 3D
Si ça ne marche pas, essayez la version pdf

Fedora 23 -- Asymptote 2.35 -- TeXlive 2013 -- emacs et/ou gedit

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1512
Enregistré le : dim. 7 mars 2010, 14:50

Re: Exception en point flottant (core dumped)

Message non lu par GM » mar. 29 juin 2010, 01:11

maurice a écrit :Comme cela, ça fonctionne et j'obtiens ce que je voulais :


Donc... cela, si je reprends ton code, sans les commentaires :

Figure asymptote 3fab0fd06edec2c02a519eef7abdeed6
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1. size(8cm,0);
  2. pair f(pair z) {return z^4-1;}
  3. pair fprime(pair z) {return 4*z^3;}
  4. pair[] racine;
  5. racine[0]=(1,0);
  6. racine[1]=(0,1);
  7. racine[2]=(-1,0);
  8. racine[3]=(0,-1);
  9. void newton(pair c, pair[] racine, pair f(pair z), pair fprime(pair z), real r, int count=50) {
  10. int i=0;
  11. pair z=c;
  12. do {
  13. ++i;
  14. z=z-(f(z)/fprime(z));
  15. } while (length(fprime(z))>r && length(z-racine[0])>r && length(z-racine[1])>r && length(z-racine[2])>r && length(z-racine[3])>r);
  16. pen p;
  17. real step=0.01;
  18. path sq=scale(step)*unitsquare;
  19. if (length(z-racine[0])<=r) {p=(1-i/count)*green;
  20. filldraw(shift(c)*sq,p,p);}
  21. else {
  22. if (length(z-racine[1])<=r){p=(1-i/count)*red;
  23. filldraw(shift(c)*sq,p,p);}
  24. else {
  25. if (length(z-racine[2])<=r) {p=(1-i/count)*blue;
  26. filldraw(shift(c)*sq,p,p);}
  27. else {
  28. if (length(z-racine[3])<=r) {p=(1-i/count)*yellow;
  29. filldraw(shift(c)*sq,p,p);}
  30. else {
  31. filldraw(shift(c)*sq,black,black);
  32. }
  33. }
  34. }
  35. }
  36. }
  37. real r=0.1;
  38. real step=.01;
  39. real xmin=-1.5, xmax=1.5;
  40. real ymin=-1, ymax=1;
  41. real x=xmin, y=ymin;
  42. int xloop=round((xmax-xmin)/step);
  43. int yloop=round((ymax-ymin)/step);
  44. for(int i=0; i < xloop; ++i) {
  45. for(int j=0; j < yloop; ++j) {
  46. if((x,y)!=(0,0)) {
  47. newton((x,y),racine,f,fprime,r,30);}
  48. y += step;
  49. }
  50. x += step;
  51. y=ymin;
  52. }
  53.  
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

ctop
Messages : 8
Enregistré le : jeu. 18 mars 2010, 20:32

Re: Exception en point flottant (core dumped)

Message non lu par ctop » mar. 29 juin 2010, 06:48

Oui, c'est un bel exemple de polynomographie...

maurice
Messages : 262
Enregistré le : jeu. 25 mars 2010, 13:00
Contact :

Re: Exception en point flottant (core dumped)

Message non lu par maurice » mar. 29 juin 2010, 09:30

C'est ca. mais je ne comprends toujours pas pourquoi sur certains ordinateurs ca marche avec f(x)=x^5-1 et pas sur d'autres.
Maurice
Doc 3D
Si ça ne marche pas, essayez la version pdf

Fedora 23 -- Asymptote 2.35 -- TeXlive 2013 -- emacs et/ou gedit

maurice
Messages : 262
Enregistré le : jeu. 25 mars 2010, 13:00
Contact :

Re: Exception en point flottant (core dumped)

Message non lu par maurice » mar. 29 juin 2010, 11:18

La compilation marche si j'ajoute comme condition dans le while :

Code : Tout sélectionner

length(z)<realMax^(1/6)

mais le résultat manque un peu de couleur.

Maurice
Doc 3D
Si ça ne marche pas, essayez la version pdf

Fedora 23 -- Asymptote 2.35 -- TeXlive 2013 -- emacs et/ou gedit

Répondre