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.

Exception en point flottant (core dumped)

Messagepar maurice » Lun 28 Juin 2010, 15:24

Bonjour,

lorsque je compile :
Code: Tout sélectionner
pair f(pair z) {return z^5-1;}
int i=0;
pair z=c;
do {
    ++i;
    z=z-((z^5+1)/(5*z^4));
} while ....


j'obtiens le message d'erreur suivant :
Code: Tout sélectionner
$ asy Newton.asy
Newton.asy: 18.7: runtime: Exception en point flottant (core dumped)

Quelqu'un peut-il m'éclairer sur la signification (et la cause probable) de ce message.

Merci d'avance

Maurice
maurice
 
Messages: 86
Inscription: Jeu 25 Mar 2010, 13:00

Re: Exception en point flottant (core dumped)

Messagepar GM » Lun 28 Juin 2010, 15:26

Code: Tout sélectionner
while ....


Comment veux-tu que l'on teste ???? :shock:
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)

Messagepar OG » Lun 28 Juin 2010, 15:27

Il faudrait le code entier, la variable c n'est pas définie...

Sinon asymptote possède une fonction Newton-Raphson.

A+
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)

Messagepar maurice » Lun 28 Juin 2010, 15:30

GM a écrit:Comment veux-tu que l'on teste ???? :shock:


avec ca :
Code: Tout sélectionner
//Méthode de Newton avec Asymptote 1.98

//Fonction étudiée et ses zéros
pair f(pair z) {return z^5-1;}
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), real r, int count=50) {
   int i=0;
   pair z=c;
   do {
       ++i;
       z=z-((z^5+1)/(5*z^4));
   } 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(c.x,c.y)*sq,p,p);}
   else {
      if (length(z-racine[1])<=r){p=(i/count)*red;
                    filldraw(shift(c.x,c.y)*sq,p,p);}
      else {
         if (length(z-racine[2])<=r) {p=(i/count)*blue;
                       filldraw(shift(c.x,c.y)*sq,p,p);}
         else {
            if (length(z-racine[3])<=r) {p=(i/count)*yellow;
                       filldraw(shift(c.x,c.y)*sq,p,p);}
            else {
               if (length(z-racine[4])<=r) {p=(i/count)*orange;
                    filldraw(shift(c.x,c.y)*sq,p,p);}
               else filldraw(shift(c.x,c.y)*sq,black,black);
            }
         }
      }
   }
}

//
real r=0.1;
real step=.05;
real xmin=-1, xmax=1;
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,r);}
    y += step;
  }
  x += step;
  y=ymin;
}


Brouillon de la méthode de Newton largement inspiré de Philippe Ivaldi : http://www.piprime.fr/821/Fractals-with-asymptote-fig0080/

maurice
maurice
 
Messages: 86
Inscription: Jeu 25 Mar 2010, 13:00

Re: Exception en point flottant (core dumped)

Messagepar GM » Lun 28 Juin 2010, 15:37

maurice a écrit:avec ca :

... si c'est cela qui a produit l'erreur pour toi, je précise que moi, je n'ai pas d'erreur mais je ne comprends pas ce que je j'obtiens.
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)

Messagepar maurice » Lun 28 Juin 2010, 15:48

Il y a une erreur dans le code (c'est un brouillon), il faut remplacer les :
Code: Tout sélectionner
filldraw(shift(c.x,c.y)*sq,p,p);}

par :
Code: Tout sélectionner
filldraw(shift(z.x,z.y)*sq,p,p);}


Cela ne marche toujours pas chez moi.

Maurice
maurice
 
Messages: 86
Inscription: Jeu 25 Mar 2010, 13:00

Re: Exception en point flottant (core dumped)

Messagepar GM » Lun 28 Juin 2010, 16:02

J'obtiens cela (en ayant ajouté un size(5cm)) :

2010-06-28_170143.png
2010-06-28_170143.png (3.13 Kio) Vu 76 fois


C'est ce qu'il faut ?

Pas d'erreur de compilation en tout cas.
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)

Messagepar maurice » Lun 28 Juin 2010, 16:08

GM a écrit:J'obtiens cela (en ayant ajouté un size(5cm)) :

C'est ce qu'il faut ?

Pas d'erreur de compilation en tout cas.


Non, pas vraiment, je vais regarder de plus près.
Et toujours une erreur de compilation ici.

Maurice
maurice
 
Messages: 86
Inscription: Jeu 25 Mar 2010, 13:00

Re: Exception en point flottant (core dumped)

Messagepar maurice » Lun 28 Juin 2010, 18:58

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;
}


J'obtiens :

Code: Tout sélectionner
$asy assai.asy
....
Im(z)-1.23942180300241e-05
aucun30948.5009821438
Re(z)-3.12614582236207e+58
Im(z)-3.90525278483203e+58
essai.asy: 17.7: runtime: Exception en point flottant (core dumped)


puis avec
Code: Tout sélectionner
$ asy
Welcome to Asymptote version 2.00 (to view the manual, type help)
> (-3.13e+58,-3.91e+58)-((-3.13e+58,-3.91e+58)^5-1)/(5*(-3.13e+58,-3.91e+58)^4)
(-nan,-nan)


C'est donc que les nombres sont trop grands ?!
Comment cela se fait-il que le code marche chez Gaétan ?

Maurice
maurice
 
Messages: 86
Inscription: Jeu 25 Mar 2010, 13:00

Re: Exception en point flottant (core dumped)

Messagepar chellier » Lun 28 Juin 2010, 19:36

maurice a écrit:C'est donc que les nombres sont trop grands ?!
Comment cela se fait-il que le code marche chez Gaétan ?

Maurice


Chez moi ça fonctionne bien aussi, pas de problème de nombres trop grands (asymptote 2.00svn)

Christophe
Avatar de l’utilisateur
chellier
 
Messages: 86
Inscription: Jeu 18 Mar 2010, 17:30

Suivante

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