Scilab : un logiciel libre pour le calcul scientifique
Linux, c'est aussi des logiciels professionnels qui passent du monde de la recherche ou de l'industrie vers le grand public. Le logiciel Scilab en est une belle illustration. Ce premier article, qui pésente les grandes lignes du logiciel, sera suivi d'autres pésentations plus détaillées et comportant des exemples d'utilisation.
1 Calcul scientifique, symbolique ou numérique ?
On trouve sur le marché deux types de logiciels de calcul scientifique, les logiciels de calcul symbolique qui, en gros, ``font des maths'' et les logiciels de calcul numérique, qui sont faits plutôt pour les applications des maths. Dans la première catégorie on trouve entre autres Maple, Mathematica et MuPad. Ce dernier offre des licences gratuites aux étudiants et aux chercheurs. Ces logiciels sont utilisés depuis quelques années dans les classes prépas scientifiques. Dans la deuxième catégorie, où le marché est plus large, on trouve essentiellement les logiciels commerciaux (et très chers !) Matlab et Xmath et maintenant Scilab qui est un logiciel libre (et tout aussi puissant que ses concurrents), distribué avec son code source. Scilab a été développé par des chercheurs de l'INRIA et de l'ENPC dans un environnement Unix pour des applications industrielles et comme outil de recherche (développement et tests d'algorithmes). Scilab est bien entendu compatible avec Linux et son essor doit beaucoup à Linux (et à d'autres programmes libres qui sont incorporés dans l'environnement Scilab...). Une version Windows est aussi disponible. Alors que les logiciels de calcul symbolique font des calculs exacts avec des gros nombres entiers (des ``bignums'' selon la terminologie anglosaxonne), les logiciels numériques font eux leurs calculs avec des nombres flottants et la vitesse de calcul est essentielle. Par exemple, pour inverser une matrice de polynômes de taille 10 x 10 contenant des nombres flottants, Maple va vite jeter l'éponge alors que Scilab va donner le résultat immédiatement. Au contraire Scilab est incapable de trouver la dérivée symbolique de la fonction sinus ! A chacun son domaine...2 Comment se procurer Scilab ?
Si vous avez un accès à Internet avec un débit raisonnable, vous pouvez télécharger Scilab depuis son site à l'Inria :http://www-rocq.inria.fr/scilabSachez que la version binaire, une fois installée fait environ 25 Mégas et que la version compressée
.tgz du source
environ 7 Mégas (le rpm fait lui environ 6 Mégas).
Scilab est aussi distribué sur le CD-Rom des logiciels libres à
l'INRIA Rocquencourt. On peut obtenir gratuitement ce CD-Rom en écrivant
à :
INRIA - SICS Diffusion
Distribution de Scilab
Domaine de Voluceau, B.P. 105
78153 Le Chesnay CEDEX
Il vous faut alors fournir une enveloppe (appropriée à contenir
un CD-ROM) portant vos nom et adresse, et 4 timbres français au tarif
lettre (ou un coupon-réponse international).3 Qu'est-ce que Scilab ?
Scilab est un puissant environnement de programmation interactif pour le calcul numérique. C'est un gros logiciel : environ 13 000 fichiers, plus de 400 000 lignes de code source (en C et Fortran), 70 000 lignes de code Scilab (librairies spécialisées), 80 000 lignes de ``man'' (help en ligne et doc), le tout géré sous Linux par 18 000 lignes de fichiers de configuration (scripts et Makefiles). Scilab comporte un langage de programmation et un interpréteur qui travaille sur des objets de type numériques mais pouvant être structurés selon les besoins de l'utilisateur. C'est un système complètement ouvert, puisque c'est l'utilisateur qui définit ses propres fonctions à partir des puissantes primitives de calcul qui sont fournies. Scilab est distribué sous forme binaire pour les PC-Linux, Windows et les stations Unix ``classiques'' (Sun HP, DEC, SGI, ...), mais construire Scilab sous Linux à partir de la version source ne pose aucun problème car les compilateursgcc et g77 sont dans les distributions
standards. Un ``configure'' suivi d'un ``make all'' et c'est parti pour la
compilation : 10 à 15 minutes plus tard (avec un pentium assez
récent !) Scilab est prêt à démarrer. Le code
exécutable (scilex) se trouve dans le sous répertoire
bin et fait à peu près 5 Mégas. Evidemment,
les sources et les Makefiles étant disponibles, l'utilisateur plus
courageux peut même se recompiler un Scilab personnalisé à
son goût.
4 Comment démarrer ?
On lance Scilab en tapant la commande ``scilab'' dans le répertoirebin. Le script ``scilab'' définit quelques variables
d'environnment et lance le code exécutable. On obtient la fenêtre de la figure 1, un peu austère certes mais Scilab est un logiciel de type professionnel, pas un jeu en 3D ! Vu la taille du logiciel, l'utilisateur novice risque d'être un peu dérouté. Cependant, Scilab peut tout d'abord être utilisé comme une simple calculette (de luxe !). A l'invite (le ``prompt'') notée
![]()
-->, on passe une commande, Scilab
donne le résulat puis redonne -->. Après avoir
passé quelques commandes, les premiers pas se font en cliquant sur le
bouton ``démos''. En observant les démos, on commence à
voir les capacités du logiciel. On comprend vite que les objets
manipulés sont surtout des vecteurs et des matrices numériques,
ce qui donne un code très compact avec des notations matricielles
naturelles. En fait, la syntaxe de Scilab est identique à la syntaxe de
Matlab pour tout ce qui concerne les manipulations sur les vecteurs et les
matrices. Le gain par rapport à un codage en C (ou Fortran) est
énorme : pas de déclaration de types, pas de compilation, ni
d'allocation de mémoire, tout est automatique. Le prix à payer
est bien sûr celui de l'interprétation qui peut devenir
très cher pour certaines applications. Un help en ligne est disponible;
il donne la syntaxe d'appel des différentes fonctions (il y en a plus de
mille...). La plupart des fonctions sont illustrées par un exemple qu'on
peut faire tourner par un simple copier-coller à la souris depuis la
fenêtre de help vers la fenêtre Scilab. Les démos donnent
des exemples de graphiques, de traitement du signal, de commande, et de
simulation de systèmes dont la célèbre démo du
vélo, qui montre la simulation d'un vélo à partir des
équations mathématiques d'un vélo idéal se
déplaçant sans frottement sur une surface plane. Les
équations du vélo ont été obtenues à l'aide
de Maple qui génère aussi le programme numérique
exploité directement par Scilab.5 Un système ouvert
Scilab se veut avant tout un système ouvert. Pour tirer profit au mieux du logiciel, l' utilisateur doit apprendre à utiliser le langage Scilab pour développer ses applications. En général, un programme Scilab se compose de quelques lignes car les primitives de calcul et de manipulation d'objets fournies sont nombreuses et puissantes. Ces programmes sont définis dans des fichiers que l'utilisateur construit à l'aide de son éditeur préféré (sous Linux, il s'agit en général d'emacs pour lequel existe
d'ailleurs un mode scilab), puis chargés dans Scilab. Celà se
fait à la souris (Menu File operations) ou directement par
la commande getf. Un fichier peut bien sûr contenir un
nombre arbitraire de fonctions Scilab. L'utilisateur standard de Scilab passe
souvent l'essentiel de son temps à définir et mettre au point ses
fonctions en faisant de nombreux allers-retours entre son éditeur et
Scilab.En plus des vecteurs et des matrices (qui peuvent contenir des nombres réels ou complexes, des chaines de caractères, des polynômes, ...), on peut définir des objets plus complexes à partir de listes typées ou non. Ces objets peuvent être manipulés à leur tour par des opérateurs définis par l'utilisateur. Enfin l'utilisateur peut rajouter à Scilab des fonctions écrites en langage C (ou Fortran). Il peut alors linker dynamiquement son application à Scilab. Un répertoire
examples donne (comme son nom l'indique) de nombreux exemples de
fonctions linkées dynamiquement à Scilab. Les utilisateurs
habitués à Matlab y trouveront même des fonctions
émulant les fonctions d'interfacage Matlab.
6 Le graphique
Le graphique sous Scilab est assez déroutant pour le débutant et un investissement important est nécessaire pour appréhender l'ensemble des primitives graphiques dont l'usage ``brut'' semble peu convivial. La meilleure façon de démarrer est encore de faire tourner les démos graphiques, de repérer celle qui ressemble le plus à ce que l'on veut faire, puis de modifier le script proposé dans la démo pour l'adapter à ses besoins dans une nouvelle fonction. On peut faire des graphiques 2D et 3D, des tracés de contours, des tracés paramétriques, des animations, etc. Le graphique Scilab supporte bien sûr un driver X qui interface la plupart des primitives X11. Les graphiques peuvent être exportés au format Xfig, Postscript, Gif et Postscript-Latex. La figure 2 est tirée d'une des démo graphique est obtenue en quelques lignes de code par la commande primitive graphique
![]()
plot3d2.L'application Scicos, qui est une boite à outils dont l'éditeur graphique est entièrement écrit en Scilab illustre bien les puissantes capacités du graphique. Cette application est une interface bloc-diagramme pour la simulation de systèmes dynamiques interconnectés. C'est l'analogue du logiciel Simulink de Matlab (mais Simulink n'est pas fourni en standard dans la distribution de Matlab : il faut payer une licence supplémentaire spécifique). Cet outil est très utilisé en milieu industriel (par exemple à EDF) pour simuler des systèmes complexes. La figure 3 montre un très simple diagramme Scicos. La première préoccupation de l'utilisateur est de définir un modèle de simulation pour le système qu'il étudie (ce qui peut être aussi bien un moteur de voiture qu'une centrale électrique) et de regarder si les simulations faites avec son modèle correspondent bien à la réalité...
7 Les boites à outils
En plus de Scicos, Scilab fournit des boites à outils dans la plupart des domaines de l'ingénierie : traitement du signal, commande, optimisation, graphes, analyse fractale, calcul parallèle, statistique, etc... Ces boites à outils sont bien sûr fournies avec la version distribuée de Scilab. À ces boites à outils s'ajoutent des contributions extérieures : l' objectif de Scilab est bien de fournir une structure d'accueil gratuite pour toutes sortes d' applications scientifiques. Les bonnes volontés sont donc mises à contribution. C'est le principe du logiciel libre : qualité et mise en commun des efforts. Une interface Tk-Tcl permet de définir des applications où l'interaction avec l'utilisateur se fait avec cet outil et les calculs numériques par les fonctions Scilab.
![]()
8 La documentation
À la documentation en ligne, s'ajoute un manuel ``Introduction à Scilab'' d'une centaine de pages, qui se trouve dans le répertoiredoc. Un livre (en Anglais et cher...) ``Engineering and Scientific
Computing with Scilab'' est paru récemment chez Birkhauser. Le site Web
de Scilab cité plus haut contient aussi de la documentation en ligne au
format HTML ou PDF et un FAQ. Il existe un Newsgroup dédié
à Scilab : comp.soft-sys.math.scilabEnfin l'équipe de Scilab à l'Inria s'efforce dans la mesure du possible de répondre aux mails envoyés à
scilab@inria.fr... Dans le prochaine article nous vous montrerons tous pour manipuler les matrices sous Scilab.
Scilab Group.
This document was translated from LATEX by HEVEA.
