Calculs et arrondis

Tout ce qui concerne l'utilisation ou l'installation d'Asymptote.

Modérateur: gdm_asy

Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.

Calculs et arrondis

Messagepar mumblee » Mardi 09 Février 2010, 13:02

Bonjour,

Est-ce que c'est normal qu'une rotation d'angle 90° dans asymptote ne donne pas le résultat escompté ? Testez le code suivant svp.

Code: Tout sélectionner
import three;
unitsize(1cm);

triple a=Y;
dot((string) a,(0,0),W);

a=rotate(90,X)*a;
dot((string) a,(1,0),E);


L'image de Y par la rotation d'angle 90° et d'axe X n'est pas Z. :(
Fabrice Eudes
mumblee
Déca-utilisateur
 
Messages: 32
Inscription: Lundi 07 Janvier 2008, 20:39
Localisation: Académie de Lille (chez les ch'ti!)
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: [Asymptote] Calculs et arrondis

Messagepar GMaths » Mardi 09 Février 2010, 14:59

Je n'ai pas compris l'intérêt des dots dans ta présentation du problème rencontré : write est pratique. ;-)

Effectivement, je confirme que

Code: Tout sélectionner
import three;
write(rotate(90,X)*(0,1,0));

donne (0,6.12323399573677e-17,1) au lieu de (0,0,1).

On n'est pas très loin... Pour une figure, je t'assure que cela ne se verra pas ! :lol:

Mais, si c'est pour afficher le triplet, il va falloir arrondir.

As-tu posé la question à J.Bowman ?
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Calculs et arrondis

Messagepar mumblee » Mardi 09 Février 2010, 15:10

GMaths a écrit:Je n'ai pas compris l'intérêt des dots dans ta présentation du problème rencontré : write est pratique. ;-)

write que je ne connaissais pas, merci !

donne (0,6.12323399573677e-17,1) au lieu de (0,0,1).

On n'est pas très loin... Pour une figure, je t'assure que cela ne se verra pas ! :lol:

Bien sûr, mais comme je testais si le vecteur obtenu était égal au triple "Z", j'ai mis un moment à réaliser qu'il n'y avait pas de bug dans mon code. Dans mon cas, je m'en suis sorti en remplaçant la rotation par un produit vectoriel.

As-tu posé la question à J.Bowman ?

Non, je ne savais pas si c'était un comportement normal ou à considérer comme un (tout relatif) bug.
Fabrice Eudes
mumblee
Déca-utilisateur
 
Messages: 32
Inscription: Lundi 07 Janvier 2008, 20:39
Localisation: Académie de Lille (chez les ch'ti!)
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Calculs et arrondis

Messagepar GMaths » Mardi 09 Février 2010, 15:24

mumblee a écrit:write que je ne connaissais pas, merci !
Il est bien pratique pour afficher l'état de variables pour déboguer.

mumblee a écrit:Non, je ne savais pas si c'était un comportement normal ou à considérer comme un (tout relatif) bug.
Si le triplet n'était pas si simple, on pourrait penser à un classique problème de précision mais c'est vrai que là...
Il y a peut-être une amélioration à apporter à rotate et peut-être que John B. serait content d'avoir ce retour.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Calculs et arrondis

Messagepar mumblee » Mardi 09 Février 2010, 15:38

GMaths a écrit:Il y a peut-être une amélioration à apporter à rotate et peut-être que John B. serait content d'avoir ce retour.

Ok, j'ai posté sur le forum de sf.net
Fabrice Eudes
mumblee
Déca-utilisateur
 
Messages: 32
Inscription: Lundi 07 Janvier 2008, 20:39
Localisation: Académie de Lille (chez les ch'ti!)
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Calculs et arrondis

Messagepar OG » Mardi 09 Février 2010, 17:12

Bonjour

Même si "c'est normal" est un peu rapide, c'est du calcul, il y a de l'approximation
de cosinus dans l'air.
Par exemple
cos(pi/2) retourne 6.12323399573677e-17

O.G.
OG
Modérateur
 
Messages: 2285
Inscription: Lundi 12 Mars 2007, 11:20
Localisation: Rouen
Statut actuel: Actif et salarié | Maître de conférence

Re: [Asymptote] Calculs et arrondis

Messagepar projetmbc » Mardi 09 Février 2010, 18:05

Les arrondis sont courants. mumblee renseignes-toi sur les nombres en virgules flottantes.
projetmbc
Péta-utilisateur
 
Messages: 1897
Inscription: Samedi 29 Décembre 2007, 00:58
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Calculs et arrondis

Messagepar mumblee » Mercredi 10 Février 2010, 11:13

Réponse de JC Bowman :
The problem is with your test; when comparing the results of floating point computations you need to include some fuzz:
Code:
if(abs(a-b) < 10realEpsilon*max(abs(a),abs(b))) write("close");

Vous aviez raison, ce n'est donc pas rotate qui est en cause, mais le fait de faire des calculs en virgule flottante. Comme déjà dit, pour mes besoins, un produit vectoriel à suffit à mon bonheur.
Fabrice Eudes
mumblee
Déca-utilisateur
 
Messages: 32
Inscription: Lundi 07 Janvier 2008, 20:39
Localisation: Académie de Lille (chez les ch'ti!)
Statut actuel: Actif et salarié | Enseignant


Retourner vers Asymptote

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités