Page 1 sur 1
supposons
Publié : mar. sept. 14, 2010 5:54 pm
par alb
C'est peut-être moi qui bugue ce soir mais il me semble que (0.8.6 sous linux):
Code : Tout sélectionner
supposons(a>=1);
E:=sqrt(a-sqrt(2a-1))-sqrt(a+sqrt(2a-1));
simplify(E^2);
devrait renvoyer en fin de séquence 2.
Or tout se passe comme si supposons(a>=1) était remplacé par supposons(a<=1) puisque on obtient 4a-2. Il n'est pas impossible que je me trompe.
Je voulais montrer aux élèves que sqrt(a-sqrt(2a-1))-sqrt(a+sqrt(2a-1)) est égal à -sqrt(2) pour a>=1.
Re: supposons
Publié : mar. sept. 14, 2010 6:22 pm
par parisse
en effet, il y a bien un problème, certainement une non prise en compte de l'hypothèse sur a lorsque xcas calcule l'extension algébrique commune. Je ne sais pas si je pourrai corriger, je verrai ça en fin de semaine. En attendant vous pouvez faire comme ça:
E:=sqrt(a-sqrt(2a-1))-sqrt(a+sqrt(2a-1));
a:=x^2+1; (ça permet d'éviter le assume)
simplify(simplify(E));
(on est obligé de faire 2 fois simplify à cause de la simplification qui se produit dans l'extension algébrique commune et permet de "réduire").
Il est toujours prudent de faire une vérification lorsqu'il y a des simplifications avec des extensions algébriques à paramètres, en faisant plot(E,a=0..3) par exemple.
Re: supposons
Publié : mar. sept. 14, 2010 7:55 pm
par alb
Merci pour l'idée du changement de variable et de la conjecture graphique, j'étais parti sur des vérifications du type:
simplify(subst(E,a=??))
A ce sujet que dire à des élèves constatant par exemple que si ??=12/5 ou ??=12/11 alors on obtient -sqrt(2) alors que si ??=12/7 on obtient (-(sqrt(3510717218)))/41897
Re: supposons
Publié : mer. sept. 15, 2010 5:38 am
par parisse
C'est parce qu'il y a une limite à la recherche de simplification de racine carrée d'entiers, pour éviter de passer trop de temps à factoriser un entier, ça doit être 2^32 si je ne m'abuse. Je peux bien sur augmenter la limite, mais le problème apparaitra plus tard.
Re: supposons
Publié : jeu. sept. 16, 2010 5:47 pm
par parisse
Bon, j'ai regardé le problème du supposons, et il n'est pas possible de corriger ça pour le moment: c'est en fait un choix de branche pour une racine d'un polynôme, le choix est fait correctement quand il n'y a pas de paramètres en faisant une évaluation numérique, mais avec des paramètres, ce n'est pas possible pour des raisons à la fois d'implémentation (ça nécessiterait d'assez gros changements pour accéder à l'hypothèse sur le paramètre à l'endroit du code où le choix de branche est fait) mais aussi théoriques (l'hypothèse éventuelle ne permet pas toujours de choisir la bonne branche, il peut y avoir un changement de branche dans le domaine, par exemple ici si on supposait a>=0).