Bug solve

Librairie C++ de calcul formel/ C++ symbolic computation library

Modérateur : xcasadmin

magicvinni
Messages : 40
Inscription : dim. août 26, 2007 7:07 am
Contact :

Bug solve

Message par magicvinni » mer. févr. 16, 2011 8:51 pm

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

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: Bug solve

Message par frederic han » mer. févr. 16, 2011 10:52 pm

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+

parisse
Messages : 5739
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: Bug solve

Message par parisse » jeu. févr. 17, 2011 11:55 am

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.

magicvinni
Messages : 40
Inscription : dim. août 26, 2007 7:07 am
Contact :

Re: Bug solve

Message par magicvinni » sam. févr. 19, 2011 11:04 am

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

magicvinni
Messages : 40
Inscription : dim. août 26, 2007 7:07 am
Contact :

Re: Bug solve

Message par magicvinni » sam. févr. 19, 2011 11:08 am

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

parisse
Messages : 5739
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: Bug solve

Message par parisse » sam. févr. 19, 2011 1:00 pm

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!).

magicvinni
Messages : 40
Inscription : dim. août 26, 2007 7:07 am
Contact :

Re: Bug solve

Message par magicvinni » sam. févr. 19, 2011 1:03 pm

100% d'accord avec cet argument !

Merci,

Vincent

alb
Messages : 1320
Inscription : ven. août 28, 2009 3:34 pm

Re: Bug solve

Message par alb » sam. févr. 19, 2011 1:28 pm

supposons(x>1);resoudre(x-1=0); qui renvoie [1] c'est un bug ou pas ?

parisse
Messages : 5739
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: Bug solve

Message par parisse » sam. févr. 19, 2011 4:16 pm

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.

alb
Messages : 1320
Inscription : ven. août 28, 2009 3:34 pm

Re: Bug solve

Message par alb » jeu. févr. 24, 2011 11:25 am

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 ?

parisse
Messages : 5739
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: Bug solve

Message par parisse » jeu. févr. 24, 2011 11:50 am

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)

alb
Messages : 1320
Inscription : ven. août 28, 2009 3:34 pm

Re: Bug solve

Message par alb » jeu. févr. 24, 2011 1:18 pm

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].

parisse
Messages : 5739
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: Bug solve

Message par parisse » jeu. févr. 24, 2011 2:15 pm

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).

alb
Messages : 1320
Inscription : ven. août 28, 2009 3:34 pm

Re: Bug solve

Message par alb » jeu. févr. 24, 2011 2:46 pm

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

parisse
Messages : 5739
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: Bug solve

Message par parisse » jeu. févr. 24, 2011 4:15 pm

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!!!).

Répondre