Logiciels libres et enseignement

Favoriser l’usage de logiciels libres et de formats ouverts

Scilab

dimanche 4 avril 2004

- Auteur : L’équipe scilab de l’INRIA

  • Licence : libre
  • Langue : Anglais
  • Environnement requis : Linux, Windows, HP-UX
  • Site web : http://www.scilab.org/

Tous ces articles en ligne sur Scilab ont été écrits pour LINUX MAGAZINE FRANCE par les développeurs du Scilab Group. Les articles sont sous licence FDL (Free Documentation Licence).

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 pré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...

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 compilateurs gcc 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.

3 Comment démarrer ?

On lance Scilab en tapant la commande ``scilab’’ dans le répertoire bin. Le script ``scilab’’ définit quelques variables d’environnment et lance le code exécutable.

Figure 1 : La fenêtre principale Scilab

Figure 1 : La fenêtre principale Scilab

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.

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

5 Le graphique

Figure 2 : Un plot3d

Figure 2 : Un plot3d

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

6 Les boites à outils

Figure 3 : Un schéma Scicos

Figure 3 : Un schéma Scicos

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. 7 La documentation À la documentation en ligne, s’ajoute un manuel ``Introduction à Scilab’’ d’une centaine de pages, qui se trouve dans le répertoire doc. 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.scilab

Enfin l’équipe de Scilab à l’Inria s’efforce dans la mesure du possible de répondre aux mails envoyés à mailto:scilab@inria.fr...

Le présent article, paru dans linux-magazine france, est disponible ici avec de nombreux autres textes concernant scilab.

Recherche avancée