Page 1 sur 1

Calcul exact

Publié : mar. nov. 06, 2012 5:07 pm
par Billy the Kid
Bonjour,
Pouvez-vous m'expliquer pourquoi l'instruction sqrt(12)==2*sqrt(3) renvoie 1 alors que l'instruction 2*sqrt(12)==4*sqrt(3) renvoie 0???
C'est embêtant à expliquer à un élève non ? et je ne comprends pas pourquoi Xcas se comporte ainsi.
Pouvez-vous éclairer ma lanterne ?
Merci de votre collaboration.

Re: Calcul exact

Publié : mar. nov. 06, 2012 5:34 pm
par alb
Pour comparer A et B le mieux est de comparer simplifier(A−B) et 0
2*sqrt(12) renvoie 2*2*sqrt(3)
4*sqrt(3) renvoie 4*sqrt(3)
ces deux expressions ne sont pas identiques avant simplification.

Re: Calcul exact

Publié : mar. nov. 06, 2012 6:40 pm
par parisse
La différence de comportement vient de la simplification automatique effectuée, sqrt(entier) est automatiquement simplifié en factorisant l'entier pour extraire les facteurs carrés, donc sqrt(12) devient 2*sqrt(3) ce qui explique que sqrt(12) soit identique à 2*sqrt(3). Par contre, 2*sqrt(12) devient 2*(2*sqrt(3)) qui n'est pas identique à 4*sqrt(3). D'ailleurs 2*(2*sqrt(3)) n'est pas identique à 2*2*sqrt(3) qui vaut 4*sqrt(3)...

Re: Calcul exact

Publié : mar. nov. 06, 2012 7:47 pm
par Billy the Kid
Merci pour vos réponses.
J'aimerais quand même comprendre pourquoi 2*2*sqrt(3) n'est pas égal à 4*sqrt(3) ?...
D'autres logiciels de calcul formel concluent à l'égalité. Pourquoi pas Xcas?
Pouvez-vous m'expliquer sommairement ?
Je sais que cela est lié au codage des nombres réels avec Xcas mais j'ai un peu de mal à suivre.
Merci pour votre collaboration.
:roll:

Re: Calcul exact

Publié : mar. nov. 06, 2012 8:08 pm
par parisse
En fait 2*2*sqrt(3) est identique à 4*sqrt(3) parce que 2*2*sqrt(3) est parsé en (2*2)*sqrt(3) (parce que * est déclaré comme un opérateur associatif gauche dans les règles grammaticales de l'interpréteur) et 2*2 est automatiquement simplifié en 4, mais 2*(2*sqrt(3)) n'est pas identique parce que 2*sqrt(3) est évalué avant et qu'il n'y a pas de règle de simplification automatique d'une expression quand on la multiplie par 2.