chimie
 
Accueil arrow Forums
wimsedu le forum
Bienvenue, Invité
Merci de vous identifier ou de vous inscrire.    Mot de passe perdu?
Re:maxima : solve (1 lecteur(s)) (1) Invité(s)
Aller en bas Répondre Ajouté aux favoris : 0
SUJET: Re:maxima : solve
#1280
damien (Utilisateur)
Fresh Boarder
Messages: 10
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
maxima : solve Il y a 14 Années, 7 Mois Karma: 0  
Bonjour,

J'essaie de créer un exercice OEF qui fait appel à la fonction "solve" de maxima, mais les commandes ne fonctionnent pas.
Voici ce que j'ai écrit :

Code :

\title{test-solve} \language{fr} \author{Damien Delwarde} \format{html} \text{f=3*x+2} \text{sol=maxima(solve(3*x+2,x))} \statement{ f=\f sol=\sol résoudre \(\f=0) : \embed{r1} } \answer{x1=}{\sol}{}
Lorsque je remplace la ligne
Code :

\text{sol=maxima(solve(3*x+2,x))}
par
Code :

\text{sol=wims( exec maxima solve(3*x+2,x); )}
cela ne fonctionne pas beaucoup mieux... Je précise que la commande " solve(3*x+2,x); " fonctionne très bien lorsque j'exécute maxima dans une console. Avez-vous une idée de ce qu'il se passe ou une alternative à me proposer ? Cordialement, Damien Delwarde.
 
 
Dernière édition: 12-11-2009 à 15:38 Par damien.
  L'administrateur a désactivé l'accès public en écriture.
#1288
bernadette (Admin)
Administrateur
Messages: 638
graph
Personne n'est connecté Cliquez ici pour voir le profil de cet utilisateur
Re:maxima : solve Il y a 14 Années, 7 Mois Karma: 23  
Il me semble que c'est un problème du même type que celui soulevé avec linsolve :

wims lance maxima avec un certain nombre de paramètres par défaut. En particulier :

Code :

keepfloat:true;
Si je lance maxima (au terminal) avec cette valeur
Code :

Maxima 5.16.3 http://maxima.sourceforge.net Using Lisp SBCL 1.0.20 Distributed under the GNU Public License. See the file COPYING. Dedicated to the memory of William Schelter. The function bug_report() provides bug reporting information. (%i1) keepfloat ; (%o1) false (%i2) keepfloat:true; (%o2) true (%i3) solve(3*x-2,x)
Je n'ai aucune réponse de maxima pour les versions récentes. Si quelqu'un habitué de maxima trouve quelque chose sur le sujet, cela serait intéressant. Bernadette
 
  L'administrateur a désactivé l'accès public en écriture.
#1292
damien (Utilisateur)
Fresh Boarder
Messages: 10
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Re:maxima : solve Il y a 14 Années, 7 Mois Karma: 0  
Cela marche chez moi avec keepfloat:true

Code :

Maxima 5.13.0 http://maxima.sourceforge.net Using Lisp GNU Common Lisp (GCL) GCL 2.6.8 (aka GCL) Distributed under the GNU Public License. See the file COPYING. Dedicated to the memory of William Schelter. This is a development version of Maxima. The function bug_report() provides bug reporting information. (%i1) keepfloat; (%o1) false (%i2) keepfloat:true; (%o2) true (%i3) solve(3*x+2); 2 (%o3) [x = - -] 3 (%i4)
peut-être as-tu oublié le point-virgule après la commande solve ? J'ai fait quelques recherches sur le sujet et il semble que maxima n'utilise pas keepfloat, ni ratfac pour les résolutions. Pour mon problème, je vais me tourner vers la commande solve de wims (qui retourne un réel et non un rationnel comme maxima) et tester la commande solve de Pari. Merci pour ton aide, Damien.
 
  L'administrateur a désactivé l'accès public en écriture.
#1293
bernadette (Admin)
Administrateur
Messages: 638
graph
Personne n'est connecté Cliquez ici pour voir le profil de cet utilisateur
Re:maxima : solve Il y a 14 Années, 7 Mois Karma: 23  
Tu as raison ! j'étais obsédée par linsolve qui posait un problème !

(le ; n'est pas obligatoire dans wims(maxima ...) !)

Bernadette
 
  L'administrateur a désactivé l'accès public en écriture.
#1295
bernadette (Admin)
Administrateur
Messages: 638
graph
Personne n'est connecté Cliquez ici pour voir le profil de cet utilisateur
Re:maxima : solve Il y a 14 Années, 7 Mois Karma: 23  
Si on regarde le code généré par wims (ou plutôt Oef2wims) au moment de la compilation d'un exercice oef, le morceau qui nous intéresse est
Code :

tmp=!replace internal .. by , in 2*x-1,x !distribute items $tmp into tmp1,tmp2,tmp3 tmp2=!replace internal = by , in $tmp2 !distribute items $tmp2 into tmp4,tmp5 tmp0=!solve $tmp1 for $tmp4 = $tmp5 to $tmp3 t_=!replace internal \( by ( in $(tmp0); tmp1=!exec maxima $t_
Et en effet, en voyant solve, Oef2wims transforme solve pour aller chercher la fonction solve de wims. Je suppose que c'était pour éviter des demandes trop couteuses. Ce qui veut dire que maxima(solve) est vraiment interdit dans les exos oef. Si on met la commande dans Direct exec, il n'y a pas de problèmes. Le résultat est correct. Il faut peut-être documenter (finalement, il n'y a nulle part de documentation technique dans wims/oef relatif à l'emploi des logiciels. Par exemple : les options par défaut pour maxima dans wims en général sont
Code :

display2d:false; letrat:true; keepfloat:true; rombergmin:5; rombergtol:1.E-6; rombergit:13; simpsum:true; triginverses:true; logabs:true; e:%e;pi:%PI;Pi:%PI;PI:%PI;I:%I;i:%I; ln:log;sh:sinh;ch:cosh;th:tanh; arctan:atan;arcsin:asin;arccos:acos; tg:tan;arctg:atan; argsh:asinh;argch:acosh;argth:atanh; Argsh:asinh;Argch:acosh;Argth:atanh; cotan:cot;ctg:cot; log10(x):=block([],return(log(x)/log(10.0))); log2(x):=block([],return(log(x)/log(2.0))); lg(x):=log10(x); sgn:sign; nolabels:true; kill(labels);
Pour les exercices oef, il faut rajouter
Code :

expon:0; expop:0; factlim:6; prederror:false; maxnegex:20; maxposex:20; ratfac:true; keepfloat:true;
Il y a d'ailleurs le même problème si on essaie d'utiliser la fonction solve dans pari. Dans pari, si on veut avoir la fonction random de pari, je me souviens qu'il faut écrire
Code :

\text{a=pari(random\(5)}
avec un \ . Et cela marche avec maxima aussi !!
Code :

\text{a=maxima(solve\(2*x+1,x))} \text{b=pari(solve\(x=-2,4,2*x+1))} \statement{\a<p>\b}
donne le résultat
Code :

x = -1/2 -0.5
C'est un peu un hack qu'a fait Gang Xiao mais bon ! Je précise bien : tout cela ne vaut que pour les exercices oef (ou les documents), pas pour les modules écrits directement dans wims, puisque cela intervient au moment où les fichiers sont traduits en langage wims. Bernadette
 
  L'administrateur a désactivé l'accès public en écriture.
#1314
damien (Utilisateur)
Fresh Boarder
Messages: 10
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Re:maxima : solve Il y a 14 Années, 7 Mois Karma: 0  
Bon, j'ai envoyé un long message, mais il a disparu, semble-t-il. Je recommence donc, mais en abrégé.

Merci de ton aide Bernadette. Cependant, ta réponse fort détaillée m'amène à te poser d'autres questions :

* puis-je utiliser "text{sol=maxima(solve\( 3*x+2,x))}" dans un oef sans risquer de consommer trop de ressource ?

* est-ce que l'utilisation du solve de maxima dans un module est préférable ?

* quels sont les commandes qui demandent trop de ressources ?

* où as-tu trouvé le code généré par oef2wims et les paramètres par défaut de maxima ?

* il y avait une autre question, mais je l'ai oubliée !

Merci encore pour ton aide,

Damien.
 
  L'administrateur a désactivé l'accès public en écriture.
#1316
bernadette (Admin)
Administrateur
Messages: 638
graph
Personne n'est connecté Cliquez ici pour voir le profil de cet utilisateur
Re:maxima : solve Il y a 14 Années, 7 Mois Karma: 23  
QUOTE:
puis-je utiliser "text{sol=maxima(solve\( 3*x+2,x))}" dans un oef sans risquer de consommer trop de ressource ?


Maxima utilise pas mal de ressource et est un peu lent à l'ouverture (il y en a de plus rapide). On est par exemple obligé d'augmenter à chaque version la taille de paramètres dans le noyau pour qu'il veuille bien répondre.
Donc, si on peut éviter, c'est mieux (je conseille pari si on peut, bien sûr pour ce qui est calcul vraiment formel, cela ne va pas).

QUOTE:
où as-tu trouvé le code généré par oef2wims et les paramètres par défaut de maxima ?


Dans le répertoire def du module ou de la classe.
Il n'est pas visible mais est dans les sauvegardes.

Pour le reste, je n'ai pas de réponse facile !

Bernadette
 
  L'administrateur a désactivé l'accès public en écriture.
Revenir en haut Répondre
Développé par FireBoardObtenir les derniers messages directement sur votre PC
© 2024 WimsEdu
Joomla! est un logiciel libre distribué sous licence GNU/GPL.