fonction solve (

Utilisation de Xcas

Modérateur : xcasadmin

Répondre
scientifix
Messages : 16
Inscription : mer. mars 06, 2013 6:16 pm

fonction solve (

Message par scientifix » lun. févr. 24, 2014 12:00 pm

Bonjour a tous,
Je voudrais savoir ce que permet de resoudre la fonction solve ( , dites moi quelles types d equations elle peut ou ne peut pas resoudre.
Ma deuxieme question est la suivante, serait il possible d obtenir les lignes de codes de cette fonction en C++ ? j entend pas la le code source de cette fonctionnalité, l algorithme en C++ qui quand on entre l equation la resoud.
Merci d avance
Scientifix

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

Re: fonction solve (

Message par parisse » lun. févr. 24, 2014 7:35 pm

solve résoud les équations polynomiales, et des équations qui s'y ramènent, soit par changement de variable, soit par réécriture et changement de variables, soit en ajoutant des inconnues et en résolvant un système polynomial. Tout ça se trouve dans solve.cc, mais il n'y a pas un algorithme "simple"...

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

Re: fonction solve (

Message par frederic han » lun. févr. 24, 2014 8:32 pm

NB:
j'ai remarque qu'il ne faisait pas les polynomes de degre 3 ou 4.
csolve va un peu plus loin en sortant les racines via un rootof pour les polynomes de degre 3.


En revanche solve fait pas mal d'inequations ce qui me semble plus rare chez les autres logiciels libres.

par exemple le solve de sage ou maxima ne me semble pas repondre a ce genre d'inequations.

Code : Tout sélectionner

solve(log(2*x-1)-log(1-x)>log(3),x)

Code : Tout sélectionner

assume(x>-pi and x<pi);
solve(sin(2*x)>sin(x),x)

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

Re: fonction solve (

Message par parisse » mar. févr. 25, 2014 8:52 am

Degre 4 pas pour le moment, peut-etre dans un futur proche avec une extension de degre jusqu'a 24. En degre 3, en effet il ne renvoie pas la solution reelle si elle est unique, ca vient du fait que le alpha de l'extension Q[alpha] est complexe. Il faut que je reflechisse si on peut ameliorer. En attendant on peut utiliser csolve ou la session cardan.xws du menu Aide>Exemples>poly

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

Re: fonction solve (

Message par parisse » mar. févr. 25, 2014 12:02 pm

Une possibilite pour "ameliorer" ce serait de renvoyer l'unique solution sous forme d'un rootof de l'equation elle-meme (pas sur que ce soit considere comme ameliore par tout le monde...).

scientifix
Messages : 16
Inscription : mer. mars 06, 2013 6:16 pm

Re: fonction solve (

Message par scientifix » mar. févr. 25, 2014 12:29 pm

Donc solve ( ne resoud que tres peu de choses et ne supporte pas les equations trigonométriques, logarithmiques, avec exposants etc ... c est bien cela ? Cette fonction ne marche que pour les polynômes ?
Merci de votre reponse.
Scientifix

Ps: connaissez vous un algorithme en C++ qui soit capable de resoudre tout types d equation ?? Si oui, pouvez vous me le donner en format .cpp ?
Merci d avance

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

Re: fonction solve (

Message par parisse » mar. févr. 25, 2014 12:34 pm

Non, ce n'est pas exact. solve traite aussi certaines equations logarithmiques ou avec exp, etc. pour peu qu'elles se ramenent a des equations polynomiales. De toutes facons sinon on ne sait essentiellement rien faire en exact.

scientifix
Messages : 16
Inscription : mer. mars 06, 2013 6:16 pm

Re: fonction solve (

Message par scientifix » mar. févr. 25, 2014 1:19 pm

*Pourriez vous me donner la partie du code solve en .cpp ou me dire où l'obtenir ?

*Connaissez vous un algorithme en C++ qui soit capable de resoudre tout types d equation ?? Si oui, pouvez vous me le donner en format .cpp ?

Cheval
Messages : 66
Inscription : mar. sept. 24, 2013 7:51 pm

Re: fonction solve (

Message par Cheval » mer. févr. 26, 2014 8:40 pm

Donc solve ( ne resoud que tres peu de choses
Justement, ce matin, je m'amusais avec le système suivant :

Code : Tout sélectionner

solve([x*y+z*t=6,x+y-z*t=5,x*z-y/t=4,x*y*z-t=2],[x,y,z,t])
j'étais persuadé que ça ne marcherait pas… grave erreur, ça marche !

Code : Tout sélectionner

[[5.55752656542,0.829958274707,0.806557001312,1.72025639585],[0.0272521479286,10.6816499476,-2.1694334313,-2.63151752579]]
Je n'ai pas essayé à la main, mais ça doit faire au moins de l'ordre 3 une fois substitué, non ?

A part ça, Xcas ne résoud pas e^x+2x = 3 par exemple, mais il n'est pas le seul !!

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

Re: fonction solve (

Message par parisse » jeu. févr. 27, 2014 7:19 am

Il faudrait rajouter une fonction speciale pour resoudre ce type d'equations. Peut-etre un jour!

scientifix
Messages : 16
Inscription : mer. mars 06, 2013 6:16 pm

Re: fonction solve (

Message par scientifix » ven. févr. 28, 2014 12:59 pm

Whaou, joli système !
Pour la fonction solve, casio a un tres bon algorithme qui resout toutes les equations a ma connaissance et qui donne les resultats en valeur exacte quand il peut (sous forme de racine, fraction...) la commande s'appelle SolvN (
Si cela vous interesse, demandez a Casio leur algorithme pour rendre Xcas encore plus performant !! (Il l est deja ;) )
Bonne continuation et merci !

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

Re: fonction solve (

Message par parisse » ven. févr. 28, 2014 1:15 pm

Cheval a écrit :
Donc solve ( ne resoud que tres peu de choses
Justement, ce matin, je m'amusais avec le système suivant :

Code : Tout sélectionner

solve([x*y+z*t=6,x+y-z*t=5,x*z-y/t=4,x*y*z-t=2],[x,y,z,t])
j'étais persuadé que ça ne marcherait pas… grave erreur, ça marche !

Code : Tout sélectionner

[[5.55752656542,0.829958274707,0.806557001312,1.72025639585],[0.0272521479286,10.6816499476,-2.1694334313,-2.63151752579]]
Je n'ai pas essayé à la main, mais ça doit faire au moins de l'ordre 3 une fois substitué, non ?
C'est d'ordre 6: gbasis([x*y+z*t-6,x+y-z*t-5,x*z-y/t-4,x*y*z-t-2],[x,y,z,t])

Répondre