Page 1 sur 2
Ecriture dans un fichier C
Publié : lun. mai 04, 2009 8:20 am
par mollet
Bonjour,
Existe-t-il une fonctionnalité de Xcas qui permettrait d'exporter les résultats de calculs formels en respectant la syntaxe C?
Exemple: exposant, ...
Merci d'avance,
Publié : lun. mai 04, 2009 8:43 am
par parisse
Pas encore, mais j'ai prevu dans la librairie giac la possibilite pour le futur (dans unary.h, la fonction printfunction cprint est prevue pour ca). L'idee serait de pouvoir un jour compiler les fonctions utilisateurs Xcas, cprint effectuerait la traduction xcas->C++ puis le fichier C++ serait compile en une librairie dynamique qui serait chargee par insmod dans Xcas ou utilisable depuis un programme se linkant avec cette librairie. Ca permettrait de pouvoir creer des fonctions de calcul formel assez facilement, et de gagner la vitesse langage interprete->langage compile.
Quelle genre de fonctionnalites d'export recherchez-vous?
Publié : lun. mai 04, 2009 8:48 am
par mollet
L'idée est d'utiliser Xcas pour effectuer toutes une série de calculs symboliques avant de mettre les résultats et effectuer une étude numérique. Domaine résolutions d'équations du mouvement.
A ce sujet j'avais une 2eme question:
L'option tlin qui permet de linéariser des expressions trigonométriques ne s'enregistre pas dans la variable? Est-ce possible de mémoriser l'expression linéarisée?
Publié : lun. mai 04, 2009 11:53 am
par parisse
mollet a écrit :L'idée est d'utiliser Xcas pour effectuer toutes une série de calculs symboliques avant de mettre les résultats et effectuer une étude numérique. Domaine résolutions d'équations du mouvement.
donc il vous suffirait pour l'instant d'un traducteur algebrique? Le principal probleme est-il du au ^ au lieu de pow?
A ce sujet j'avais une 2eme question:
L'option tlin qui permet de linéariser des expressions trigonométriques ne s'enregistre pas dans la variable? Est-ce possible de mémoriser l'expression linéarisée?
Il faut a nouveau stocker le resultat, par exemple si t est votre expression tlin(t) calcule le linearise de t et affiche le resultat mais ne modifie pas t, t:=tlin(t) remplace t par son linearise.
Publié : lun. mai 04, 2009 12:01 pm
par mollet
En effet, pour l'instant, le principal probleme est-il du au ^ au lieu de pow car les expressions de sin, cos, etc sont de syntaxe identique au C si je ne me trompe pas.
Publié : lun. mai 04, 2009 3:36 pm
par parisse
ok, je vais essayer de faire un proto de fonction de traduction cpp qui marche pour les algebriques, je vous tiens au courant.
Publié : mar. mai 05, 2009 10:16 am
par mollet
Merci beaucoup. Vous m'étonnez de part votre réactivité, rapidité et efficacité!!!
J'ai d'autres petites questions concernant l'écriture dans un fichier en général:
1) Peut-on dans la même instruction fprint écrire du texte et une variable?
2) Peut-on dans un fichier écrire des symboles tels #?
3) Le retour à la ligne \n est-il possible?
4) Y a-t-il un doc plus complète concerant les opérations concernant les fichiers? Ou puis-je trouver un exmple d'écriture dans un fichier de résultats?
Merci d'avance. Si vous n'avez pas le temps ou si vous trouvez mes questions trop basiques, dites-le moi. Je chercherai par moi-même.
Publié : mar. mai 05, 2009 10:47 am
par parisse
oui, on peut faire tout ca, voici un exemple de session:
Code : Tout sélectionner
x:=2 ;
f:=fopen("essai") ;
fprint(f,'x') ;
fprint(f,Unquoted," ") ;
fprint(f,x) ;
fprint(f,Unquoted,char(10)) ;
fprint(f,Unquoted,"#") ;
fclose(f) ;
Publié : mar. mai 05, 2009 12:22 pm
par parisse
Je viens de rajouter une fonction pour controler la facon d'imprimer les puissances (uniquement en mode texte), il s'agit de printpow
printpow(0) affichage pow(a,b)
printpow(1) affichage normal a^b
printpow(-1) affichage a l'ancienne a**b
Les differentes versions seront mises a jour en principe d'ici jeudi.
Mise à jour
Publié : mar. mai 12, 2009 1:15 pm
par mollet
Bonjour,
Suite à votre possibilité d'afficher les puissances en différents formats, avez-vous une idée de la prochaine mise à jour de Xcas?
Cette question est purement à titre informatif, il n'y a aucune impatience dans celle-ci. Je vous rassure!
Bien à vous
Publié : mar. mai 12, 2009 2:53 pm
par parisse
Normalement, c'est fait pour printpow. Je mettrai à nouveau à jour en principe avant la fin de la semaine, avec une modif pour le tableur et qques corrections de bugs d'interface (noms de fichiers de sauvegarde de figures).
Encore 2 petites questions
Publié : lun. mai 25, 2009 9:07 am
par mollet
Bonjour,
J'ai 2 petites questions concernant Xcas:
- Vous m'avez dit que la fonction 'printpow' était mise à jour, or sur le site, la dernière mise à jour date du 30 avril? Je développe sous windows, le dernier .exe contient-il la modification?
- Je vous ai expliqué que mon but était de générer un fichier C++. Or quand j'imprime les valeurs dans mon fichier. Lorsqu'il s'agit d'une valeur entière, elle s'affiche "0" ou "1" ou "2". J'aimerai avoir l'affichage de "0.0" ou "1.0" ou "2.0". Est-ce possible?
Merci d'avance,
Alexandre Mollet
Re: Encore 2 petites questions
Publié : lun. mai 25, 2009 9:28 am
par parisse
mollet a écrit :Bonjour,
J'ai 2 petites questions concernant Xcas:
- Vous m'avez dit que la fonction 'printpow' était mise à jour, or sur le site, la dernière mise à jour date du 30 avril? Je développe sous windows, le dernier .exe contient-il la modification?
Bonjour,
En effet, c'est la date qui n'est pas a jour sur le site, la derniere mise a jour de xcasinst.exe date du 14 mai.
- Je vous ai expliqué que mon but était de générer un fichier C++. Or quand j'imprime les valeurs dans mon fichier. Lorsqu'il s'agit d'une valeur entière, elle s'affiche "0" ou "1" ou "2". J'aimerai avoir l'affichage de "0.0" ou "1.0" ou "2.0". Est-ce possible?
Oui, il vous suffit de faire evalf() de toutes les expressions que vous voulez imprimer dans votre fichier.
Re: Ecriture dans un fichier C
Publié : mar. juin 23, 2009 8:32 am
par mollet
Bonjour,
2 petites questions concernant mon projet avec XCAS:
- Y a-t-il une variable qui permet de donner l'environnement sous lequel on travaille? Exemple: dans ma procédure, je crée différents fichiers et dans un de ceux-ci, il me faut savoir si je suis sous windows ou sous linux.
- Le but de mon projet est de créer des fichiers de sorties dans lesquels toute une série de calculs symboliques ont été fait en amont. Serait-il possible de stocker toutes ces lignes de commande quelques part fin que l'utilisateur n'aie qu'à lancer une commande de type Charger(Mon_programme). Ceci empecherait l'utilisateur final de voir les centaines de ligne de code dans Xcas...
Merci d'avance
Re: Ecriture dans un fichier C
Publié : mar. juin 23, 2009 11:36 am
par parisse
bonjour,
- pour l'instant il n'y a pas de commandes renvoyant le type d'OS sous-jacent, mais c'est facile a rajouter. Par exemple os_version? Je pense que le mieux serait de renvoyer une chaine par exemple parmi "win32","macos","linux", a moins que vous n'ayez d'autres suggestions.
- pour executer une suite de commandes lues dans un fichier dans Xcas, vous pouvez utiliser la commande read("nom_fichier").