MAXIMA et les logiciels libres de calcul formel

05/09/2017
Publication REE REE 2005-11
OAI : oai:www.see.asso.fr:1301:2005-11:19822
DOI :

Résumé

MAXIMA et les logiciels libres de calcul formel

Métriques

18
6
1.3 Mo
 application/pdf
bitcache://21d8569495a95718708fb1fefc636ed0593eda64

Licence

Creative Commons Aucune (Tous droits réservés)
<resource  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xmlns="http://datacite.org/schema/kernel-4"
                xsi:schemaLocation="http://datacite.org/schema/kernel-4 http://schema.datacite.org/meta/kernel-4/metadata.xsd">
        <identifier identifierType="DOI">10.23723/1301:2005-11/19822</identifier><creators><creator><creatorName>François Ollivier</creatorName></creator></creators><titles>
            <title>MAXIMA et les logiciels libres de calcul formel</title></titles>
        <publisher>SEE</publisher>
        <publicationYear>2017</publicationYear>
        <resourceType resourceTypeGeneral="Text">Text</resourceType><dates>
	    <date dateType="Created">Tue 5 Sep 2017</date>
	    <date dateType="Updated">Tue 5 Sep 2017</date>
            <date dateType="Submitted">Tue 22 May 2018</date>
	</dates>
        <alternateIdentifiers>
	    <alternateIdentifier alternateIdentifierType="bitstream">21d8569495a95718708fb1fefc636ed0593eda64</alternateIdentifier>
	</alternateIdentifiers>
        <formats>
	    <format>application/pdf</format>
	</formats>
	<version>33620</version>
        <descriptions>
            <description descriptionType="Abstract"></description>
        </descriptions>
    </resource>
.

Repères LES APPLICATIONS INDUSTRIELLES DES LOGICIELS LIBRES MAXIMA et les logiciels libres de calcul formel Par François OLLIVIER L IX UMR CNRS no 7176) rkq7 - Calculformel, Calcul symbolique, Logiciellibre, Interface formel-numérique MAXIMA est un système de calcul formel généraliste sous licence GPL qui permet de résoudre simplement des problèmes de modélisation en vue de la simulation numérique. Introduction Le calcul formel, ou calcul symbolique, est un champ scientifique pluridisciplinaire à la frontière entre les mathématiques effectives et l'informatique. Son objet est la manipulation sur ordinateur de formules mathéma- tiques, de taille arbitraire, et non uniquement de nombres entiers ou flottants de taille fixe, comme le fait le calcul numérique traditionnel. Il s'est développé depuis les années 1960 pour répondre aux besoins des mathématiques, mais aussi de la physique, en profitant du développement des ordinateurs. Selon les pays, son développement fut assuré plutôt par des mathématiciens, des informaticiens ou des physiciens théoriciens. On distingue des systèmes généralistes, qui tentent de couvrir avec plus ou moins de succès l'essentiel du champ de la discipline : résolution de systèmes algébriques, intégration en formules closes (c'est-à-dire à l'aide d'expressions utilisant les fonctions élémentaires classiques : exponentielle, logarithmes, fonctions trigono- métriques...), factorisation, etc. et des systèmes spécialisés, qui se proposent d'aborder avec plus d'efficacité un domaine précis. Les principaux systèmes généralistes actuellement disponibles sont Maple et Mathematica. Il s'agit de systèmes commerciaux. De nouvelles versions peuvent inclure certains progrès des algorithmes, mais outre le coût des licences, l'absence d'accès aux sources et l'instabilité des implantations successives peuvent compromettre leur utilisation dans le cadre du dévelop- pement de projets logiciels, par exemple si l'on souhaite utiliser les fonctionnalités du calcul formel pour produire automatiquement du code numérique en C ou en FORTRAN. Pour cela, on pourra préférer un logiciel libre, gratuit, mais surtout dont les sources sont accessibles, ce qui garantit la pérennité des investissements de ses utilisateurs. 2. Panorama historique de Maxima et du calcul formel libre Ce système a été développé au MIT, dans le cadre du projet MAC (Machine Aided Cognition), de la fin de 1967 à 1982, sous le nom de Macsyma, grâce aux contri- butions du DOE (Department of Energy), de la NASA, de l'ARPA (Advanced Research Project Agency) et de divers contributeurs industriels. A l'époque, ce projet relevait de « l'intelligence artificielle ». Il a été le système de référence des années 1970 et a inspiré, tant par ses L'ESSENTIEL Le calcul formel permet de manipulerdes formules et non sim- plement des nombres, ce qui en fait un outil puissant pour de nombreux secteurs scientifiques et techniques : théorie des codes, automatique,théorie du signal,modélisation,etc. Maxima est un système de calcul formel généraliste rustique mais stable, offrant au modélisateur des capacités amplement suffisantes pour produire à peu de frais du code numérique. Sa disponibilité sous licenceGPLpermet de l'utiliser commodément dans des projets logicielsà longterme. YNOPSIS Computer algebra allows the manipulation of formulas and not only of numbers; it is thus a powerful tool in variousariasof scien- ce and technology: coding theory, control theory, signal theory, modeling,and so on. Maximais a generalpurposecomputer algebra system, rusticbut stableand offering for modeling farenough tools to producewith little effort numerical code. Its availability under GNU license allows an easy use in longterm programming projects. REE N°n Décembre2005 Repères ) LES APPLICATIONS INDUSTRIELLES DES LOGICIELS LIBRES possibilités que par ses limites, les concepteurs des sys- tèmes de la génération suivante, comme Maple ou Mathematica, créés dans les années 1980. Développé en LISP, il n'était disponible que sur des ordinateurs puissants et peu répandus, et accessible à une communauté restreinte d'utilisateurs via le précurseur d'Internet : Arpanet. En 1982, le MIT vend les droits de Macsyma, qui devient une marque déposée par Symbolics. Toutefois, le DOE, l'un des principaux contributeurs publics, impose le dépôt d'une copie du code source dans un centre de distribution gouvernemental américain : le NESC (National Energy Software Center) : c'est le DOE-Macsyma. Maxima est une variante développée et maintenue par William Frederick Schelter à partir de 1982. En 1998, il obtient du DOE la permission de le distribuer sous licen- ce GPL (GNU General Public Licence). Depuis sa mort en 2001, le logiciel est maintenu par un groupe d'utilisa- teurs et de développeurs. On peut trouver plus de détails historiques et une réflexion de fond sur les avantages et inconvénients de Macsyma dans le texte de Fateman [3]. Parmi les systèmes de cette génération, on peut citer REDUCE, particulièrement orienté vers les besoins de la physique, et qui est toujours disponible en version com- merciale. MuPAD (MultiProcessing Algebra Data), déve- loppé en Allemagne à l'université de Paderborn depuis 1989, n'est pas un logiciel libre. Les organismes de recherche et d'enseignement à but non lucratif peuvent toutefois disposer d'une licence gratuite. Il existe enfin un système généraliste original, AXIOM, disponible depuis peu en version libre, sous une version modifiée de la licence BSD (Berkley System Distribution), non « copyleftée ». Les différentes parties du code faisant parfois l'objet de restrictions particu- lières, on ne peut qu'inciter les utilisateurs à les étudier de près pour un usage professionnel (voir http ://savan- nah.nongnu.org/projects/axiom). Ce système a été déve- loppé par IBM à partir de 1971, sous le nom de Scratchpad. Il s'agit donc d'un système ancien, mais c'est en même temps, dans sa conception, un système très novateur. L'utilisation du typage permet l'écriture d'algorithmes, non pour un type particulier d'objets mathématiques (par exemple : entiers relatifs ou poly- nômes) mais pour toute une catégorie (par exemple : anneaux). Cette conception puissante et ambitieuse en rend le maniement difficile. En 1990, IBM a vendu les droits de Scratchpad à NAG (Numerical Algorithms Group), fournisseur bien connu de programmes numé- riques qui souhaitait compléter son offre par un logiciel formel. Faute de succès commercial, AXIOM a été reti- ré du marché en 2001 et NAG en a autorisé la diffusion comme logiciel libre. Signalons enfin l'existence de logiciels libres spécia- lisés de grande qualité : GP/Pari, conçu pour des calculs rapides en arithmétique (factorisations, théorie algébrique des nombres, courbes elliptiques... d'une grande impor- tance en théorie des codes notamment), développé à l'université de Bordeaux et disponible sous licence GPL ; Macaulay 2, spécialisé dans la résolution de systèmes algébriques, également sous GPL, etc. Une liste de logiciel de calculs formel « open source » est accessible sur : http ://web.usna.navy.mil/-wdj/ opensource_math.html. On peut aussi profiter de la synthèse [1]pour en savoir davantage sur le calcul formel libre. L'essentiel des logiciels de calcul formel est encore accessible gratuitement, sur simple demande, pour des travaux de recherche via le centre de calcul MEDICIS (http ://medicis.polytechnique.fr/medicis), dont la pérennité n'est pas certaine. Il faut vite en profiter ! 3. Caractéristiques et possibilités de Maxima Maxima peut être obtenu à l'adresse http ://maxima. sourceforge.net/. La version courante est la 5.9.1 qui est disponible sous Windows et Linux. Outre la documentation standard en anglais, on trouve à cette adresse une documentation et un tutorial en espagnol. Signalons aussi l'intéressante documentation en français accessible à l'adresse http ://www.maxima.fr.st/ La priorité pour le développement est de supprimer les bugs (à partir de la version 5.9.3). Cela peut sembler troublant, mais il faut garder à l'esprit que le développe- ment a été figé durant près de 20 ans, William Schelter n'ayant pu que maintenir vivant le code hérité du DOE. A bien des égards, Maxima est rustique. Il ne distingue pas (en principe !) majuscules et minuscules, un incon- vénient qui devrait disparaître avec la version 5.9.2. A plus long terme, une révision complète de la documen- tation est prévue avant la 6.0 (donc au cours des versions 5.9.x) et une amélioration des routines graphiques avec la 6.1. Maxima est implanté en LISP. Autrefois, Macsyma reposait sur MAC Lisp. Le travail de William Schelter a principalement consisté en un portage en AKCL (Austin Kyoto Common Lisp), devenu GCL (GNU Common Lisp). Les utilisateurs les plus compétents peuvent utiliser cette particularité pour écrire directe- ment leur code en LISP. Mais MAXIMA possède aussi son propre langage, dont la structure n'est pas très dif- férente de celle de Maple. Ce petit exemple (voir fig. 1) montre que dans la version 5.9.1 la distinction majus- cule minuscule peut avoir lieu de façon baroque et qu'il faut être prudent. Les réponses sont appelées dans l'ordre %ol, %o2, etc. ce qui permet de les réutiliser dans de nouvelles expressions. REE ! H Décembre2005 MAXIMA et les logiciels libres de calcul formel (%il) Pt (q) t= q^2 ; 2 (%01) (%i2) (%02) (%i3) (%o3) (%i4) (%o4) (%i5) (%o5) (%i6) (%06) pt (2) ; p (q) : =q2 ; P (2) ; p (2) ; %o5^2 ; PT (q) : = q 44 p (q) : = q P (2) 4 16 2 'ML x,té) r r/. p '' 1 Figure 1. Un evtrait d'bine session Maxiiiia. Figure 2. Le double pendule de Kapitsa. Code formel en MAXIMA : DT (exp) smdiff (exp,t) +diff (exp,alpha) *alpbal+diff (exp,alphal) *alpha2+ diff (exp,beta) *betal+dîff (exp,betal) *beta2 ; mlt3 ; ml ; lls2 ; 12tl ; gt9.81 ; xOtD.O ;yOtO.1*ooa (100*t) ; xltxO+11*con (alpha) ; x2sxl+12*cos (beta) ; yl : yO+11*sin (alpha) ; y2syl+12*sin (beta) ; LAlt (ml* (DT (xl) 2+DT (yl) 2) +m2* (DT (x2) e2+DT (y2) e2 »/2-g* (ml*yl+m2*y2) ; display2dsfalne ; solve ( [DT (diff (LAl.alphal » mdiff (Lhl,alpha),DT (diff (Lhl,betal » = diff (LAI.Imta)], [alpha2,beta2]) ; Résultat traduit grâce à Emacs et incorporé dans un fichier Scilab : fimctiondeiivees=DERIVEES (t,etat) alpha=cwt (i); alphal=etat (2), Beta=etat(3); Betal=etat(4) ; alpha2= (400000*cos (alpha) *sin(Beta)^2- IOM*sin (alpha) *cos (Beta) *sin(Beta)+300ffl*oes (alpha) *cos(Beta)^2) *oos (100*t) + (100*cos (alpha) *sin (Beta) ^3- 100*sin (alpha) *co4Beta) *sin (Beta) ^2+100*cos (alpha) *oos (Bcta) A2*sin (Beta)- 100*sin (alpha) *ços (Beta) ^3) *BetaIA2+ (200*oos (alpha) *sin (alpha) *alphall\2-3924*cos (alpha » *sin(Beta)A2- (- 200*sin(alpha) ^2*alphal^2+200*oos (alpha) ^2*alphall12ffll *sin (alpha » *cos (Beta) *sin (Beta) + (- 200*cos (alpha) *sin (alpha) *alphal^2-2943*cos (alpha » *ws(Beta)^2)/ « 600*sWalpha) ^2+800*co « alpha) ^2) *sin (Beu) " 2- 400*cos (alpha) *sin (alpha) *cosOkU) " sin (Beta) -+ (800*sin (a4) ha) 1\2+600*cos (alphar2) *Cos (Beta) ^2) ; Beta2=-« 100000*cos (alpha) *sin (alpha) *sin(Beta)- 100000*sin (alpha) ^2*oos (Beta » *c « 100*t) + (25*cos (alpha) *sin (alpha) *sin (Beta)'\2+ (25*cos (alphar2- 25*sin(alpha) ^2) *cos (Beta) *sin (Bieta)- 25*cos (alpha) *sin (alpha) *oos(Beta)^2) *Beta 1 ^2+ (200*cos (alpha) *sin(alpha)^2*alpha 1 ^2+200*cos (alpha) ^3 *alpha 1^2- 981 *cos (alpha) *sin (alpha » *sin(Beta)+(-200*sin (alpha) ^3 *alpha 1 ^2- 200*cos (alpha)^2*sin (alpha) *alpha IA2ffl 1 *sin(alpha)^2)*cos(Beta »/ « 75*sin (alpha) 1\2+100*cos (alpha) ^2) *sin (Beta) ^2. 50*cos (alpha) *sin (alpha) *oos (Beta) *sin (Ereta) - (100*sin (alpha) ^2+75*cos (alpha) ^2) *cos (Beta) ^2) ; derivees--falpha lalpha2;Beta I ; Beta2l ; endfunction; TFIN=iO, TINES-- [0:0.01:TFIN) ; resu=ode( [%pi/2+0.05;0.0-Yopi/2-f-0.0 1 -,0.0],O,TMSDERIVFES) -, plot2dCMOES'. [resu (l, :)'resu (3, :)'], [1,21, " l 11 ", PalphaBetaw, [0,1.4,TFIN,1.71); Figure 3. Code numérique complexe obtenu à partir de quelques commandes Maxiiiia. REE WII Décembre2005 Repères D LES APPLICATIONS INDUSTRIELLES DES LOGICIELS LIBRES Maxima est par ailleurs un peu lent. Une raison sup- plémentaire de bien réfléchir préalablement à la com- plexité des calculs envisagés. Le temps des calculs, sou- vent imposé par la taille même du résultat, ou des résul- tats intermédiaires, est la grande contrainte du calcul for- mel. Bien qu'il n'ait pas bénéficié des progrès algorith- miques les plus récents, ses possibilités sont amplement suffisantes pour des travaux de modélisation et de simu- lation numérique. 4. Production de code numérique grâce à MAXIMA Le logiciel CARINS développé avec la participation d'APPEDGE pour le compte du CNES et de l'ONERA est une illustration réussie de l'emploi de CARINS dans le cadre d'un projet logiciel ambitieux de modélisation et de simulation numérique. Nous n'insisterons pas sur cet exemple développé dans un autre article de ce numéro (voir aussi [4]). Nous allons en revanche illustrer la manière dont MAXIMA peut être utilisé comme calculette formelle par l'ingénieur, pour produire les équations de ses modèles physiques en vue de la simulation, en nous donnant pour règle de n'utiliser que des logiciels libres.Zn Nous considérons un exemple mécanique élémentaire, mais dont les équations sont néanmoins difficiles à calculer à la main : le double pendule de Kapitsa. Un pendule en position verticale haute, mais dont le point d'attache est affecté d'un mouvement vibratoire vertical à une fréquence assez élevée, devient stable. Ce phénomène, remarqué par Van der Pol en 1925, a été élégamment décrit et expé- rimentalement démontré par Pyotr Leonidovich Kapitsa en 1950. On peut généraliser le phénomène avec un pen- dule double (voir fig. 2).c 'e. ; il, 71 .-' "" ....''.'' " ..... ' '\ A -.. !..'-.-.. n, r I i ''\ "'/. "-'"'..,, ;/''\'"-.'" ...j'.' ! v.. ""< !''''-.' ii.''..'. ,, :' -.)',;7-/) '.'!'''L ! < JU') -'-' '.L. ;.'.'! ?.i-t ;;.' tfj.'M J yJ I I :, I_0 lf: I Yn I yly, `y'., 41 I71a957 y il tiit 1 Ii.139- Onconstatequelesdeuxangles (x et restentvoisinsdeTul2 le doublependuleeststabiliséenpositionverticalegrâceà l'oscillation dupointd'attachequipourunefréquencesuffisammentgrande100 Hzdanscetexemple)créeuneforcederappe ! « moyenne " fictive. compensantl'effetdelapesanteur.Lavibrationhautefréquenceest responsabledesfinesdenteluresdesdeuxcourbes. Le plus simple pour écrire les équations est d'utiliser le formalisme du Lagrangien. Mais, à la main, c'est fastidieux pour un calculateur du 210 siècle. Maxima nous permet de résoudre le problème en quelques lignes (voir fig. 3). Il faut ensuite traduire le résultat pour le réutiliser en Scilab (voir l'article de Claude Gomez dans ce numéro). Ceci peut être fait grâce à Emacs, l'éditeur fétiche sous licence GPL. La tâche principale est de remplacer les majuscules par des minuscules, Scilab faisant lui la distinction. Une subtilité : « beta » est réser- vé pour l'implantation en Scilab de la fonction B. On l'a donc remplacé par « Beta ». On obtient ainsi les courbes suivantes (voir fig. 4), qui montrent que les pendules restent en position verticale. Ce petit exemple donne un aperçu des vastes possibilités offertes dans le cadre d'une utilisation manuelle de type « supercalculette ». On devine les difficultés qu'il faut vaincre pour rendre le processus entièrement automatique dans le cadre d'un projet comme CARINS (choix des lois physiques, production rapide des équations, traduction en code numérique). Figtit-e 4. Coti ; -bes d'évoliitioti teiiil3oi-elle des ciiigles ci et . 5. Conclusion MAXIMA est un logiciel libre de calcul formel béné- ficiant d'une communauté d'utilisateurs suffisante pour en assurer la pérennité, le développement ainsi que l'aide à l'utilisateur débutant ou confirmé via les forums de dis- cussion. Son apprentissage peut être rapide et nécessite surtout, comme pour tout logiciel formel, de comprendre un peu la logique de ce type de calcul. « Quelle sera la taille du résultat ? » est une question de base. Que pourrait-on faire en effet d'un polynôme de degré 100 en 10 variables qui compte 515 409 669 827 91 monômes et ne saurait tenir sur aucun disque dur ? Pour la modélisation, un réflexe de base est de passer au plus vite au numé- rique, plus rapide et plus concis, et donc de limiter le recours au calcul formel à ce qui le rend véritablement indispensable. Les exemples considérés ici ne peuvent couvrir toute la variété des possibilités offertes par les programmes généralistes ou spécialisés. Il devient en fait de plus en plus difficile de faire une synthèse « du » calcul formel. L'ouvrage [2] permet néanmoins de se faire une idée des méthodes et outils de base, même s'il a vieilli, et si réécrire un équivalent à jour serait une entreprise témé- raire. Le Web est l'outil par excellence de documentation dans ce domaine mouvant. Si les principaux systèmes ont été développés en Amérique du Nord, l'Europe a lar- gement contribué à l'écriture des packages qu'ils contiennent, et la France possède une école très active, bien qu'il n'existe plus de structure académique permet- tant de fédérer la discipline, répartie entre l'INRIA et deux commissions du CNRS. L'association GAGE se REE N°H Déccmbre2005 MAXIMA et es logiciels libres de calcul formel propose, entre autres, d'être un lieu de contact dans ce domaine entre la recherche académique et l'industrie. (GAGE ; Il rue Crozatier ; 75012 Paris ; Courriel : g.a.ge@free.fr) Références [41 B. LEGRAND, J. MASSE, V. LEUDIERE, G. ALBANO, " CARINS. un logiciel de modélisation et de simulation pour des procédés industnels complexes ", Journée LMCS (Logiciel de Modélisation et de Calcul Scientifique), 24 novembre 2004, http ://aldebaran.devinci.fr/cs/imcs2OO4/ ENUGNE/Legrand_resume.pdf. [1] " Logiciels libres et calcul formel ", document collectif disponible à l'uri : http ://vvvvvv.lapcs.univ-lyonl.fr/-nthiery/ CalculFormelLibrel [2] J. DAVENPORT, Y. SIRET, E. TOURNIER, " Le calcul formel ", Masson, 1987. [3) R. J. FATEMAN, "An Overview of Macsyma ", 1982-1984, légèrement révisé en 2001, http ://www.csberkeley. edu/-fateman/papers/mac82b.pdf. a u e u François Ollivier, polytechnicien, débute au Laboratoire Laurent Schwartz, avant de rejoindre le LIX à sa création Il soutient sa thèse en 1990, sur la résolution de systèmes algébro-différentiels intervenant en automatique théorique Entré au CNRS en 1991, il a participé à l'Unité Mixte de Service CNRS-X MEDICS, puis rejoint le LiX, après la dispari- tion de cette structure. Il est membre du projet INRIA-Futurs ALIEN et préside l'association GAGE, destinée à promouvoir le calcul formel REE N°n Décembre 2005