Cahiers. MACROTEX : UN GÉNÉRATEUR DE CODE LAT E X IMPLÉMENTÉ EN MACSYMA J. Ph. Chancelier, A. Sulem. Cahiers GUTenberg, no 3 (1989), p. 32-39.



Documents pareils
< _17_0>

Correction de l examen de la première session

Mathématiques I Section Architecture, EPFL

Filtrage stochastique non linéaire par la théorie de représentation des martingales

3 Approximation de solutions d équations

Exercices - Fonctions de plusieurs variables : corrigé. Pour commencer

Continuité et dérivabilité d une fonction

Le modèle de Black et Scholes

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Python - introduction à la programmation et calcul scientifique

Petit guide pour les débutants en L A TEX

Exercices - Nombres complexes : corrigé. Formes algébriques et trigonométriques, module et argument

Calcul Formel et Numérique, Partie I

Résolution d équations non linéaires

MATHS FINANCIERES. Projet OMEGA

Corps des nombres complexes, J Paul Tsasa

Modèles à Événements Discrets. Réseaux de Petri Stochastiques

Fonctions de plusieurs variables, intégrales multiples, et intégrales dépendant d un paramètre


Sujet proposé par Yves M. LEROY. Cet examen se compose d un exercice et de deux problèmes. Ces trois parties sont indépendantes.

CHAPITRE 10. Jacobien, changement de coordonnées.

Analyse fonctionnelle Théorie des représentations du groupe quantique compact libre O(n) Teodor Banica Résumé - On trouve, pour chaque n 2, la classe

Premiers pas avec Mathematica

Mathématique et Automatique : de la boucle ouverte à la boucle fermée. Maïtine bergounioux Laboratoire MAPMO - UMR 6628 Université d'orléans

Cours 7 : Utilisation de modules sous python

Carl-Louis-Ferdinand von Lindemann ( )

Initiation à l algorithmique

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

IT203 : Systèmes de gestion de bases de données. A. Zemmari zemmari@labri.fr

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Chapitre 11. Séries de Fourier. Nous supposons connues les formules donnant les coefficients de Fourier d une fonction 2 - périodique :

Master IAD Module PS. Reconnaissance de la parole (suite) Alignement temporel et Programmation dynamique. Gaël RICHARD Février 2008

Correction du baccalauréat S Liban juin 2007

La fonction exponentielle

Notes du cours MTH1101 Calcul I Partie II: fonctions de plusieurs variables

Initiation à la Programmation en Logique avec SISCtus Prolog

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Introduction. Mathématiques Quantiques Discrètes

FONCTIONS DE PLUSIEURS VARIABLES (Outils Mathématiques 4)

Les travaux doivent être remis sous forme papier.

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Etude de fonctions: procédure et exemple

Contents. 1 Introduction Objectifs des systèmes bonus-malus Système bonus-malus à classes Système bonus-malus : Principes

Bases de programmation. Cours 5. Structurer les données

AGASC / BUREAU INFORMATION JEUNESSE Saint Laurent du Var Tel : bij@agasc.fr Word: Les tableaux.

Équations non linéaires

Rappels sur les suites - Algorithme

Introduction au pricing d option en finance

Le Guide Pratique des Processus Métiers

Continuité en un point

Introduction à l étude des Corps Finis

Corrigé des TD 1 à 5

Maple: premiers calculs et premières applications

Introduction à MATLAB R

Probabilités sur un univers fini

Introduction au Génie Logiciel

LE MODELE CONCEPTUEL DE DONNEES

< _1_0>

Utiliser des fonctions complexes

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Chapitre 1 Régime transitoire dans les systèmes physiques

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Chafa Azzedine - Faculté de Physique U.S.T.H.B 1

Principe de symétrisation pour la construction d un test adaptatif

Découverte du tableur CellSheet

Présentation du langage et premières fonctions

F411 - Courbes Paramétrées, Polaires

Enoncé et corrigé du brevet des collèges dans les académies d Aix- Marseille, Montpellier, Nice Corse et Toulouse en Énoncé.

Cours d Analyse. Fonctions de plusieurs variables

Formula Negator, Outil de négation de formule.

PACKZ System Requirements. Version: Version: Copyright 2015, PACKZ Software GmbH. 1

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Cours3. Applications continues et homéomorphismes. 1 Rappel sur les images réciproques

Fonctions de deux variables. Mai 2011

Commun à tous les candidats

Calcul Formel et Numérique, Partie I

Optimisation et programmation mathématique. Professeur Michel de Mathelin. Cours intégré : 20 h

Nom de l application

Uniformiser la mise en forme du document. Accélère les mises à jour. Permets de générer des tables de matières automatiquement.

STAGE IREM 0- Premiers pas en Python

Examen optimisation Centrale Marseille (2008) et SupGalilee (2008)

ANALYSE NUMERIQUE ET OPTIMISATION. Une introduction à la modélisation mathématique et à la simulation numérique

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

Polynômes à plusieurs variables. Résultant

Représentation géométrique d un nombre complexe

Programmation d un contrôleur via une liaison téléphonique Note d application

WIMS. Découvrir et utiliser

Définitions. Numéro à préciser. (Durée : )

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle.

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

OM 1 Outils mathématiques : fonction de plusieurs variables

Chapitre 6. Fonction réelle d une variable réelle

Système binaire. Algèbre booléenne

Algorithmique et Programmation, IMA

1 Comment faire un document Open Office /writer de façon intelligente?

Les algorithmes de base du graphisme

Chapitre 2. Matrices

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Les structures. Chapitre 3

Transcription:

Cahiers GUTenberg GUT MACROTEX : UN GÉNÉRATEUR DE CODE LAT E X IMPLÉMENTÉ EN MACSYMA J. Ph. Chancelier, A. Sulem Cahiers GUTenberg, no 3 (1989), p. 32-39. <http://cahiers.gutenberg.eu.org/fitem?id=cg_1989 3_32_0> Association GUTenberg, 1989, tous droits réservés. L accès aux articles des Cahiers GUTenberg (http://cahiers.gutenberg.eu.org/), implique l accord avec les conditions générales d utilisation (http://cahiers.gutenberg.eu.org/legal.html). Toute utilisation commerciale ou impression systématique est constitutive d une infraction pénale. Toute copie ou impression de ce fichier doit contenir la présente mention de copyright.

un générateur de code BTEX implémenté en MACSYMA J.Ph. CHANCELIER et A. SULEM INRIA, Domaine de Voluceau, Rocquencourt, BP 105, 78153 Le Chesnay Cédez, France Abstract MA- is a code generator producing BTEX code from Macsyma, a system for symbolic calculus. MA- contains both translation functions from Macsyma into UTFX and paper generation facihties. SO it adds the power of Macsyma to the quality of texts edited through UTEX. MA- is written in Common-Lisp. Common Lisp [5] et sur Sun en Franz Lisp. MA- comprend un ensemble d instructions pour la traduction d expressions mathématiques Macsyma en syntaxe I&TEX (en particulier une instruction permettant de découper les grosses formules automatiquement). De plus, des facilités sont rajoutées pour générer un document I&TEX au niveau Macsyma. 1. Introduction Macsyma [4] est un langage de calcul formel conçu pour faire des calculs numé- riques et des manipulations algébriques (dérivation, intégration, résolution d équa- tions, simplification d expressions, calcul matriciel...). BTEX [l] est un programme permet- tant d obtenir une grande qualité d édition, en particulier d édition scientifique. (Rappelons que ~&TEX rajoute à T@ une collection de commandes permettant de simplifier l édition de texte). Notre but est de réunir Macsyma et I&TEX afin d obtenir un outil facile à utiliser associant la puissance de manipula- tion algébrique de Macsyma et la qualité d édition de I&TEX. Un utilisateur peut ainsi faire du calcul algébrique dans Macsyma et générer du code BTEX sans avoir à connaître la syntaxe Z&TEX. Nous avons donc écrit un générateur de code I~TEX en Common Lisp que nous avons appe- lé MACIUYQX. Ce programme tourne sur Machine Symbolics Lisp, release-7 en 2. Description de MA- 2.1. Le traducteur Macsyma-uTj+ On décrit ici les fonctions de base du traducteur illustrées d exemples (on donnera l instruction MA- suivie du code @TEX généré). Une documentation plus complète avec un manuel de référence se trouve en [a]. La fonction de base TEX( exp) a pour argument une expression mathématique en syntaxe Macsyma qu elle traduit en syntaxe I4TEX et facultativement une étiquette pour la numéroter. (Cl) TEX(SIN(X)+X/Y-IN'EGRATE (F(X),X,~,~),LABEL); -- x l F(X) dx + sin (X) (1) y J 0 *La fonction EXPTXT(ezp) est analogue à la fonction TEX pour une formule à insérer dans du texte. *La fonction FORMATT(string, args) est similaire à la fonction Lisp format [5], avec les directives de formattage supplémentaires suivantes : o-k- and -L traduisent des formules en UT$ utilisant respectivement les fonctions TEX et EXPTXT. 32

MA- O-N traduit des expressions non mathématiques en DTEX. s-y et -Z permettent d insérer respectivement des références d équations ou des références bibliographiques. (C3) FORMATT(" Exemple de -N dans du texte : -L.","foxmule", SUM(X(I),I,A,B)) ; Exemple de formule dans du texte : xf=, X(I) La fonction LISTEXPT a pour argument une liste d expressions mathématiques et facultativement un argument précisant l alignement et une étiquette. Elle écrit le système d expressions l une en dessous de l autre en syntaxe BTEX selon l alignement souhaité : centré (par défaut), rectifié à droite ou à gauche. (CS) LISTEXFT( [SUM(X(I> N3,I. Nl,N2), INTEGRATE(F(X), X,O,INF)I) ; E x 0 I N3 I=N1 J 0 t- F(X) ola fonction DECOUPET une longue formule. dx permet de découper (C6) DECMJPET(F(X), CCOS(Y),1.23* INTEGRATE(G(X),X,O.l), SIN(X)l,["+"."-'Il); F(X) = Cos 07 J 1 + 1.23 G(X) dx s91n (X) La macro-instruction DECOUPEM s utilise quand on ne sait pas a priori comment découper une longue formule. Elle a pour premier argument une formule Macsyma qu elle traduit en Latex apres l avoir découpée en sousformules dont la taille est contrôlée par la valeur d un deuxième argument (l étiquette est optionnelle). (~7) DECOUPEM (MATRIX ([SVM(SUM(XCI,JI,I,1,Nl), J,l,N2), INTEGRATE(F(X),X,0,1)1 > CDIFF(F(X),X[ll,N) > PRODUCT(X[Il,I,l,N)I) > LAB,601; L utilisateur peut lui-même définir des fonctions de traduction particulières d opérateurs Macsyma. f El E2 E2 = F(X) dx J 0 2.2. Le générateur de documents UTEX 2.2.1. Les instructions démentaires Ce sont les fonctions du traducteur Macsy- \ (2) ma-ut$ (TEX, EXPTXT, FORMATT,...) et des fonctions Macsyma qui génèrent une instruction LATEX particulière telles que décrites dans le tableau 1. On a également défini des instructions de mise à jour de listes, comme ADDJtEFERENCET et ADD-NOTATIONT qui permettent de stocker dans des piles les références et les notations utiles pour la génération d un document. L instruction CONTEXTT initialise ces piles et précise les paramètres de style du document. 2.2.2. Les macro-instructions Les macro-instructions sont des com- mandes qui génèrent plusieurs instruc- 33

J. Ph. Chancelier et A. Sulem Tableau 1 : Fonctions du traducteur MA. documentstylet( article 11) labelt ( Euler ) reft ( Newton ) citet ( aut 1 ) sectiont ( U méthode de ~N, résolution ) l&tex \documentstyle[llpt]{article} \label{euler} \ref{newton) \Cite{ aut 1) \Section[ méthode de résolution] { méthode de résolution1 Tableau 2 : Quelques macro-instructions MAW abstractm(prog) itemizem (item1...) stylem (doc,font,height,width,top,odd, even,par) citem([keyl,sourcel],...) notationm() bibliom() reportm(titre,auteurs,résumé,chapitres) BTEX \begin{abstract} wx \end{ abstract} \begin(itemize} \item item1... \end{itemize} \documentstyle[font]{doc} \textheight= height pt \textwidth=width \topmargin=top pt \oddsidemargin=odd \evensidemargin=even \marginparwidth=par pt pt pt pt \cite[keyl] et met à jour la pile des références \section{notation} \begin{itemize} notation1. *. \end{itemize} \begin{thebibliography}{3} \bibitem{keyl) source1.. D \end{thebibliography} style titre auteurs \begin{document} \maketitle \tableofcontents résumé notations chapitres références \end{document} tions élémentaires. Le tableau 2 en montre quelques-unes. 34

2.2.3. Génération du code l&tex Un programme MACROTEX est construit en programmant dans Macsyma. C est une liste Macsyma composée d instructions MA- (instructions élémentaires ou macro-instructions). Chaque instruction est une liste Macsyma dont le premier élément est une fonction MACRGQX et les suivants sont ses arguments. La traduction en BTEX est faite par l appel de la fonction EXECUTE sur cette liste Macsyma. Par exemple, ezectite([tez, a + b]) sera équiva- lent à tez(a + 6). Il est possible d envoyer directement le code généré dans un fichier. 3. Exemple de rapport généré L exemple suivant montre l utilisation de MA- pour générer un article. On définit pour cela la fonction décrite dans la figure 1. Macsyma Cette fonction utilise les constantes et les fonctions Macsyma montrée dans la figure 2. L appel de la fonction control(2, 2, v, [l,l], [u[l], u[2]], u[112 + 42], stochastique ) génère l article l&tex se trouvant en fin de cet article. Références bibliographiques 111 PI PI L. LAMPORT. I&TEX. A Document Preparation System. Addison- Wesley Publishing Company, 1986. J.P. CHANCELIER - A.SULEM. MACROl&X : A LATEX CODE GENERATOR IN MACSYMA. Rapport technique Inria no93 (décembre 1987). J.P. CHANCELIER - A.SULEM. MACROW : A LATEX CODE GENERATOR IN MACSYMA, MACSYMA newsletter, Volume 5, number 3, July 1988. [4] MACSYMA Reference Manual. Version 12 (1986). Symbolics, Inc. [5] G. STEELE. COMMON LISP. The Zanguage. Digital Press. 35

J. Ph. Chancelier et A. Sulem control(nl,n2,v,df,dr,cf,alea):=block( CONTEXTTO, ADD,REFERENCET(CFleming," FLEMING,W.H.-RISHEL,R.(l975). Deterministic and Stochastic Optimal Control. Springer Verlag, New York."]), ADD,NOTATIONT([FORMATT," variables d'\\'etat: '1.", xx], [FoRMATT, 11 variables de contr\\-ole: 'L ",uul, execute( CREPORTM, CTITLET, "Un probl\\ eme de contr\\-ole "N ", alea], [AUTHORT,l?J.P. Chancelier-A.Sulem", i'inria"]], CABSTRACTM, CFORMATT, "On consid\\'ere un probl\\'eme de contr\\-ole *N que l'on r\\'esout par la programmation dynamique. Il, alea 11, C CSXTI~NT, "M\\'ethode de la programmation dynamique"], CFORMATT, "Le co\\^ut optimal satisfait l'\\'equation de Bellman 'Y avec des conditions dirichlet homog\\ ene.",fleming], [TEX, minim(uu,auv+cf)-v = 0, eq], [FORMATT,"avec 'K", hamiltonien(df,dr,nl,v)l, CSOBSECTIONT, "Discr\\'etisation:"l, [FORMATT,"On note "L le i-\\'eme pas de discr\\'etisation. On d\\9efinit:",\h[\i]l], CLISTEXPT, translation(nl,~~,~)1, [FORMUT, "L'\\'equation de Bellman discr\\'etis\\'ee est obtenue en rempla\\c(c)ant l'op\\'erateur $A$ par 'L dans l'\\'equation -Z avec", A[\h], eql, [DECOUPEM, funmake(a[\h],uu).v = factorise(df,dr,nl,v)], CFORMATT, "Cela s'interpr\\ ete comme un probl\\'eme de contr\\^ole de cha\\-c\\i)ne de Markov. La matrice de transition est:'k", matrice(df,dr,nl,xx,v)]ll))$ Figure 1 : Fonction Macsyma utilisée dans l exemple 36

xx:makelist(\xcil,i,l,nl), uu:makelist(\uiil,i,l,n2), auv:funmake('a,uu).v, translation(n,xx,v):=makelist(scil(v) =funmake(v,subst(xx[i~+\h[i],xx[i],xx)),i,l,n~$ hamiltonien(aa,b,n,v):= auv=sum(aa[i].(d[i]'2>.v+b[i] SD[i3.v,i,l,n>$ discret(a,b,n,v):= expand(sum(a[il*d2(i,v)+b[i~*dl(i,v),i,l,n))$ factorise(a,b,n,v):= apply("+",map(lembda(cxl, coeff(discret(a,b,n,v),x).x), append(cvl,makelist(s[il.v,i,l,n), mak,elist(scil-'(-l).v,i,l,n))))$ matrice(a,b,n,xx,v):= apply(matrix, append( [['lpt-initial","pt-final", "Probabilit\\'e-transition"l p cxx,xx,011, makelist(lign(discret(a,b,n,v),i,\hcil, S[i].v,n,xx,v),i,l,n), makelist(lign(discret(a,b,n,v),i,-\hcil, S[i]--(-l>.v,n,xx,v>,i,l,n>>)$ lign(l,i,sl,s2,n,xx,v):=cxx, subst(xx[il+sl,xxcil,xx>, ratsimp(coeff(l,s2)/-coeff(l,v))l$ Figure 2 : Constantes et fonctions Macsyma utilisées par l'exemple 37

J. Ph. Chancelier et A. Sulem Un problème de contrôle stochastique J.P. Chancelier-A. Inria Sulem Résumé On considhe un probléme de contrôle stochastique que l on résout par la programmation dynamique. 1. Notations Variables d état: [zr,~] Variables de contrôle: [ur, u2] 2. Méthode de la programmation dynamique Le coût optimal V satisfait l équation de Bellman [l] avec des conditions de Dirichlet homogène. $; (A(w2)V i- u; + u:) - V = 0 (1) avec A(~I, U2)V = u&v + I?;v + UlDlV + D;2V 2.1. Discrétisation On note hi le i-ème pas de discrétisation. On définit: SI(V) = V(a + hl>d S2(V) = V(w3~2 + hz) L équation de Bellman discrétisée s obtient en remplaçant l opérateur A par Ah dans l équation (1) avec &(U1> U2)V = E5+E4+E3+E2+El El = E2 = E3 = -2hT2-2hF2) V ( E4 = f - 0.5Ul \ hl t ht2 > &V E5 = 38

Cela s interprète comme un problème de contrôle de chaîne de Markov. La matrice de transition est: Pt - Initial Pt - Final Probabilité - transition [Zl> 221 [a 7 321 0 b1921 h+h,z2] (hw + 2p; (4h$ + 4hf) h 221 [21>22 + h2] (qh2u2 + 2h3 (4h; + 4h:) k1921 bl - hl,z2] _ (hlw - 2)h; (4h; + 4hf) [a,~21 h>~2 - hz] _ (h:hw - 2h:) (4h; + 4h:) Références bibliographiques [l] FLEMING,W.H.-RISHEL,R.(1975). Deterministic and Stochastic Optimal Control. Springer Verlag, New York. 39