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.

Re: Exception en point flottant (core dumped)

Message non lupar 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.
OG
V.I.P.
V.I.P.
 
Messages: 108
Inscription: Dim 7 Mar 2010, 22:27

Re: Exception en point flottant (core dumped)

Message non lupar 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://gmaths.net/asy/index/?filtre=arc triple
Avatar de l’utilisateur
GM
Administrateur du site
Administrateur du site
 
Messages: 627
Inscription: Dim 7 Mar 2010, 14:50

Re: Exception en point flottant (core dumped)

Message non lupar 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
maurice
 
Messages: 86
Inscription: Jeu 25 Mar 2010, 13:00

Re: Exception en point flottant (core dumped)

Message non lupar 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
maurice
 
Messages: 86
Inscription: Jeu 25 Mar 2010, 13:00

Re: Exception en point flottant (core dumped)

Message non lupar 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://gmaths.net/asy/index/?filtre=arc triple
Avatar de l’utilisateur
GM
Administrateur du site
Administrateur du site
 
Messages: 627
Inscription: Dim 7 Mar 2010, 14:50

Re: Exception en point flottant (core dumped)

Message non lupar ctop » Mar 29 Juin 2010, 06:48

Oui, c'est un bel exemple de polynomographie...
ctop
 
Messages: 8
Inscription: Jeu 18 Mar 2010, 20:32

Re: Exception en point flottant (core dumped)

Message non lupar 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
maurice
 
Messages: 86
Inscription: Jeu 25 Mar 2010, 13:00

Re: Exception en point flottant (core dumped)

Message non lupar 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
maurice
 
Messages: 86
Inscription: Jeu 25 Mar 2010, 13:00

Précédente

Retourner vers Les demandes d'aide

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron