Ecriture dans un fichier C

Utilisation de Xcas

Modérateur : xcasadmin

mollet
Messages : 13
Inscription : lun. mai 04, 2009 7:31 am

Ecriture dans un fichier C

Message par mollet » lun. mai 04, 2009 8:20 am

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,
Alexandre Mollet

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

Message par parisse » lun. mai 04, 2009 8:43 am

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?

mollet
Messages : 13
Inscription : lun. mai 04, 2009 7:31 am

Message par mollet » lun. mai 04, 2009 8:48 am

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?
Alexandre Mollet

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

Message par parisse » lun. mai 04, 2009 11:53 am

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.

mollet
Messages : 13
Inscription : lun. mai 04, 2009 7:31 am

Message par mollet » lun. mai 04, 2009 12:01 pm

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.
Alexandre Mollet

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

Message par parisse » lun. mai 04, 2009 3:36 pm

ok, je vais essayer de faire un proto de fonction de traduction cpp qui marche pour les algebriques, je vous tiens au courant.

mollet
Messages : 13
Inscription : lun. mai 04, 2009 7:31 am

Message par mollet » mar. mai 05, 2009 10:16 am

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.
Alexandre Mollet

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

Message par parisse » mar. mai 05, 2009 10:47 am

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

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

Message par parisse » mar. mai 05, 2009 12:22 pm

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.

mollet
Messages : 13
Inscription : lun. mai 04, 2009 7:31 am

Mise à jour

Message par mollet » mar. mai 12, 2009 1:15 pm

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
Alexandre Mollet

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

Message par parisse » mar. mai 12, 2009 2:53 pm

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

mollet
Messages : 13
Inscription : lun. mai 04, 2009 7:31 am

Encore 2 petites questions

Message par mollet » lun. mai 25, 2009 9:07 am

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
Alexandre Mollet

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

Re: Encore 2 petites questions

Message par parisse » lun. mai 25, 2009 9:28 am

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.

mollet
Messages : 13
Inscription : lun. mai 04, 2009 7:31 am

Re: Ecriture dans un fichier C

Message par mollet » mar. juin 23, 2009 8:32 am

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
Alexandre Mollet

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

Re: Ecriture dans un fichier C

Message par parisse » mar. juin 23, 2009 11:36 am

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

Répondre