dimanche 12 juillet 2009

SCILAB à la place de MATLAB ?












Mise en situation

Scialb est un logiciel libre de calcul numérique qu’est conçu pour les applications des mathématiques. C’est un gros logiciel qui comporte plusieurs dizaines de milliers de fichiers pour plus de 1 200 000 lignes de code : en FORTRAN et C pour les fonctions de base, en langage Scilab pour les librairies spécialisées et en anglais en français pour l'aide en ligne (help) et les documentations. La gestion représente à elle seule plus de 20 000 lignes de code (fichiers de configuration, scripts ...) [1].

Scilab comporte un interpréteur, des objets et des fonctions bien adaptés au calcul numérique et à la visualisation des données. En plus des vecteurs et des matrices (qui peuvent contenir des nombres réels ou complexes, des entiers, des chaînes de caractères, des polynômes, ...), on peut définir dans Scilab des objets plus complexes à partir de structures et surcharger les opérations correspondantes. De plus, l'utilisateur peut rajouter à Scilab des fonctions écrites en langage C, C++ ou FORTRAN en les connectant dynamiquement à Scilab[1].

Scilab contient aussi de nombreux outils de visualisation graphique : des graphiques 2D et 3D, des tracés de contours, des tracés paramétriques, des animations, etc. Les graphiques peuvent être exportés aux formats Xfig, Postscript, Gif Latex PPM ainsi que EMF (format vectoriel spécifique à Windows). En plus des boîtes de dialogues prédéfinies, l'interface avec Tcl-Tk permet de construire des boites de dialogues complexes [1].

[1] Introduction à SCILAB By J -P Chancelier, F Delebecque, C Gomez, M. Goursat, S. Steer, R. Nikoukhah.

Ceux qui sont avec Scilab :
  • Scilab accepte 90% de la syntaxe Matlab et qui est libre (et gratuit).
  • Scilab n'est pas seulement gratuit mais aussi "opensource". On a donc la possibilité de modifier le code source (corriger de bugs, ajout de fonction...).
  • Pourquoi payer une licence Matlab pour un particulier si Scilab a les mêmes fonctionnalités ?
  • C’est sûr que dans Matlab il y a des fonctions très avancées qui ne seront peut-être pas dans Scilab, mais pour 99% des utilisateurs, Scilab suffit amplement.
  • Il y a pour Scilab, la possibilité de l'interfacer avec Java et TCL/TK.
  • Scilab hérite du toolbox CGLAB. CGLAB dérivé de la grosse librairie C++.

Ceux qui sont avec Matlab:
  • MATLAB repose sur des bibliothèques (LINPACK, BLAS, FFTW...) disponibles sur internet.
  • C'est vrai aussi pour d'autres domaines comme les maillages par exemple : la fonction "Delaunay" dans Matlab n'existe pas (encore) sous Scilab, cette fonction est indispensable pour le maillage.
  • Les fonctions de reconstruction de surface 3D avec Matlab n'existaient pas encore en Scilab.
  • Quant à Scilab, il est de mieux en mieux, c'est évident et rattrape petit à petit son retard mais reste encore assez loin de Matlab pour son ergonomie, puissance et homogénéité.
  • Ce qui est intéressant dans Matlab c'était la maturité du ce logiciel, sa bibliothèque mathématique validée, et la toolbox Compiler pour créer des applications stand-alone. Ce qui ne devait pas être le cas de Scilab.

mercredi 24 juin 2009

C'est quoi MATLAB ?

Historique

MATLAB est une abréviation de Matrix LABoratory. Écrit à l’origine, en Fortran, par C. Moler, MATLAB était destiné à faciliter l’accès au logiciel matriciel développé dans les projets LINPACK et EISPACK. La version actuelle, écrite en C par the MathWorks Inc., existe en version professionnelle et en version étudiant. Sa disponibilité est assurée sur plusieurs plates-formes : Sun, Bull, HP, IBM, compatibles PC (DOS, Unix ou Windows), Macintoch, iMac et plusieurs machines parallèles.

MATLAB est un environnement puissant, complet et facile à utiliser destiné au calcul scientifique. Il apporte aux ingénieurs, chercheurs et à tout scientifique un système interactif intégrant calcul numérique et visualisation. C'est un environnement performant, ouvert et programmable qui permet de remarquables gains de productivité et de créativité.

MATLAB est un environnement complet, ouvert et extensible pour le calcul et la visualisation. Il dispose de plusieurs centaines (voire milliers, selon les versions et les modules optionnels autour du noyeau Matlab) de fonctions mathématiques, scientifiques et techniques. L'approche matricielle de MATLAB permet de traiter les données sans aucune limitation de taille et de réaliser des calculs numériques et symboliques de façon fiable et rapide. Grâce aux fonctions graphiques de MATLAB, il devient très facile de modifier interactivement les différents paramètres des graphiques pour les adapter selon nos souhaits.

L'approche ouverte de MATLAB permet de construire un outil sur mesure. On peut inspecter le code source et les algorithmes des bibliothèques de fonctions (Toolboxes), modifier des fonctions existantes et ajouter d’autres.

MATLAB possède son propre langage, intuitif et naturel qui permet des gains de temps de CPU spectaculaires par rapport à des langages comme le C, le TurboPascal et le Fortran. Avec MATLAB, on peut faire des liaisons de façon dynamique, à des programmes C ou Fortran, échanger des données avec d'autres applications (via la DDE : MATLAB serveur ou client) ou utiliser MATLAB comme moteur d'analyse et de visualisation.

MATLAB comprend aussi un ensemble d'outils spécifiques à des domaines, appelés Toolboxes (ou Boîtes à Outils). Indispensables à la plupart des utilisateurs, les Boîtes à Outils sont des collections de fonctions qui étendent l'environnement MATLAB pour résoudre des catégories spécifiques de problèmes. Les domaines couverts sont très variés et comprennent notamment le traitement du signal, l'automatique, l'identification de systèmes, les réseaux de neurones, la logique floue, le calcul de structure, les statistiques, etc.

MATLAB fait également partie d'un ensemble d'outils intégrés dédiés au Traitement du Signal. En complément du noyau de calcul MATLAB, l'environnement comprend des modules optionnels qui sont parfaitement intégrés à l'ensemble :

  1. une vaste gamme de bibliothèques de fonctions spécialisées (Toolboxes)Simulink, un environnement puissant de modélisation basée sur les schémas-blocs et de simulation de systèmes dynamiques linéaires et non linéaires
  2. Des bibliothèques de blocs Simulink spécialisés (Blocksets)
  3. D'autres modules dont un Compilateur, un générateur de code C, un accélérateur,...
  4. Un ensemble d'outils intégrés dédiés au Traitement du Signal : le DSP Workshop.

Quelles sont les particularités de MATLAB ?

MATLAB permet le travail interactif soit en mode commande, soit en mode programmation ; tout en ayant toujours la possibilité de faire des visualisations graphiques. Considéré comme un des meilleurs langages de programmations (C ou Fortran), MATLAB possède les particularités suivantes par rapport à ces langages :

  • la programmation facile,
  • la continuité parmi les valeurs entières, réelles et complexes,
  • la gamme étendue des nombres et leurs précisions,
  • la bibliothèque mathématique très compréhensive,
  • l’outil graphique qui inclus les fonctions d’interface graphique et les utilitaires,
  • la possibilité de liaison avec les autres langages classiques de programmations (C ou Fortran).
Dans MATLAB, aucune déclaration n’est à effectuer sur les nombres. En effet, il n'existe pas de distinction entre les nombres entiers, les nombres réels, les nombres complexes et la simple ou double précision. Cette caractéristique rend le mode de programmation très facile et très rapide. En Fortran par exemple, une subroutine est presque nécessaire pour chaque variable simple ou double précision, entière, réelle ou complexe. Dans MATLAB, aucune nécessité n’est demandée pour la séparation de ces variables.

La bibliothèque des fonctions mathématiques dans MATLAB donne des analyses mathématiques très simples. En effet, l’utilisateur peut exécuter dans le mode commande n’importe quelle fonction mathématique se trouvant dans la bibliothèque sans avoir à recourir à la programmation.

Pour l’interface graphique, des représentations scientifiques et même artistiques des objets peuvent être créées sur l’écran en utilisant les expressions mathématiques. Les graphiques sur MATLAB sont simples et attirent l’attention des utilisateurs, vu les possibilités importantes offertes par ce logiciel.

MATLAB peut-il s’en passer de la nécessité de Fortran ou du C ?

La réponse est non. En effet, le Fortran ou le C sont des langages importants pour les calculs de haute performance qui nécessitent une grande mémoire et un temps de calcul très long. Sans compilateur, les calculs sur MATLAB sont relativement lents par rapport au Fortran ou au C si les programmes comportent des boucles. Il est donc conseillé d'éviter les boucles, sutout si celles-ci est grande.

Dans quels domaines utilisez-vous MATLAB ?

MATLAB (matrix laboratory) est à la fois un langage de programmation et un environnement de développement développé et commercialisé par la société américaine The MathWorks. MATLAB est utilisé dans :

  • Les domaines de l'éducation de la recherche et de l'industrie pour le calcul numérique mais aussi dans les phases de développement de projets.
  • Analyse et traitement de données 1D, 2D et 3D.
  • Utilisé essentiellement pour du prototypage avant de procéder a une implémentation dans un langage compile (pour des raisons de performances essentiellement).
  • Traitement signal sismique, gravimétrique, magnétique et de résistivité électrique, avec extrapolation, filtrage, passage du domaine fréquentiel au domaine temporel.
  • En géotechnique : modélisation des contraintes engendrées par des fondations de bâtiments, et la réponse du sol à ces contraintes en 1D, 2D et 3D. Ou la modélisation d'écoulements gravitaires.
  • En télédétection, traitement d'images satellites et de données thermiques dans le cadre d'une surveillance de volcans.
  • Finance de marché : pricing des options, calcul stochastique, méthode de transformée de Fourier, simulations Monte Carlo, ....
  • Système embarqué et automatisme.
  • Réseaux de neurones et les arbres de décision
  • Géométrie algorithmique.
  • L’aéronautique.
  • Photogrammétrie.
  • La spectroscopie.