Page 1 sur 2

Bug solve

Publié : mer. févr. 16, 2011 8:51 pm
par magicvinni
Bonsoir,

Je voulais résoudre (2+x)*ln(x-3)=0 (à la main j'ai réussit !)

J'ai tapé

Code : Tout sélectionner

solve((2+x)*ln(x-3)=0,x)
et là ça me retourne [-2,4], car il résout dans C a priori.
Comment lui préciser que l'on veut résoudre dans R ?

J'ai essayé fsolve ou nsolve car j'ai vu que solve était plutôt pour les polynômes, mais c'est pareil

Merci,

Vincent

Re: Bug solve

Publié : mer. févr. 16, 2011 10:52 pm
par frederic han
Bonjour,
C'est plutot un Pb d'ensemble de definition non donne.

assume(x>3)
puis
solve((2+x)*ln(x-3)=0,x)

a+

Re: Bug solve

Publié : jeu. févr. 17, 2011 11:55 am
par parisse
En fait, solve resoud selon le mode dans R ou dans C, mais resoudre dans R ne signifie pas que les calculs intermediaires restent dans R, le solver teste juste a la fin si les solutions trouvees sont reelles. Donc il faut suivre la suggestion de Frederic, c'est-a-dire imposer soi-meme le domaine de definition du ln.

Re: Bug solve

Publié : sam. févr. 19, 2011 11:04 am
par magicvinni
En effet...

Le "problème" c'est plutôt en fait que les fonctions ln et sqrt, ne sont pas définies sur les ensembles usuels du lycée

Merci,

Vincent

Re: Bug solve

Publié : sam. févr. 19, 2011 11:08 am
par magicvinni
Bon, fourbe comme je suis :roll: , j'ai essayé

Code : Tout sélectionner

solve((x-1)*2/(x^2-1)=0) 
Et là, ça me retourne [1]...flûte

Re: Bug solve

Publié : sam. févr. 19, 2011 1:00 pm
par parisse
oui, parce que solve résoud en fait le numérateur = 0 sans se préoccuper du dénominateur. Ce qui montre bien qu'utiliser un logiciel de calcul formel ne dispense absolument pas de réfléchir, ça dispense simplement des calculs fastidieux qu'on délègue à la machine (pour se garder son énergie pour réfléchir!).

Re: Bug solve

Publié : sam. févr. 19, 2011 1:03 pm
par magicvinni
100% d'accord avec cet argument !

Merci,

Vincent

Re: Bug solve

Publié : sam. févr. 19, 2011 1:28 pm
par alb
supposons(x>1);resoudre(x-1=0); qui renvoie [1] c'est un bug ou pas ?

Re: Bug solve

Publié : sam. févr. 19, 2011 4:16 pm
par parisse
c'est un petit bug, j'espère pouvoir le résoudre un jour, mais le traitement des cas particuliers est toujours assez problématique.

Re: Bug solve

Publié : jeu. févr. 24, 2011 11:25 am
par alb
supposons(k>-1 and k<0);max(k,1/k); renvoie max(k,1/k) donc xcas ne décide pas
Cela fait-il aussi partie des cas particuliers non résolus ?

Re: Bug solve

Publié : jeu. févr. 24, 2011 11:50 am
par parisse
oui, car le systeme recherche le signe de (k^2-1)/k en utilisant les suites de Sturm reelles, et il se refuse a conclure parce qu'il y a 1 changement de signe au sens de ce theoreme sur ]-1,0] (en fait c'est k qui pose probleme a cause de 0, pas k^2-1)

Re: Bug solve

Publié : jeu. févr. 24, 2011 1:18 pm
par alb
Est-ce la même explication pour ces deux résultats ?
supposons(k>1);solve((x-k)*(x-1/k)<0); qui renvoie la liste vide.
supposons(k>1);solve((x-k)*(x-1/k)>0); qui renvoie [x<(1/k),((x>(1/k)) && (x<k)),x>k].

Re: Bug solve

Publié : jeu. févr. 24, 2011 2:15 pm
par parisse
la par contre c'est un bug dans l'algo de recherche de signe, je viens de le corriger (dans le source pour le moment).

Re: Bug solve

Publié : jeu. févr. 24, 2011 2:46 pm
par alb
Ce qui expliquerait (?) les remarques que j'ai mentionnées dans ce fil: http://pcm1.e.ujf-grenoble.fr/XCAS/view ... f=13&t=795

Re: Bug solve

Publié : jeu. févr. 24, 2011 4:15 pm
par parisse
Partiellement mais il faut que je rajoute un test quand il y a des paramètres. En effet, l'algo utilisé pour résoudre des inégalités consiste à résoudre l'égalité, à trier les racines par ordre croissant et à déterminer le signe dans chaque intervalle. Or le tri n'est pas forcément croissant s'il y a des paramètres ce qui explique les bizarreries (il faut dire que je n'avais jamais testé des inégalités avec paramètres... c'est bien d'avoir un oeil neuf là-dessus!!!).