Exporter la page en format Open Document

Introduction

Scilab est un logiciel libre de calcul numérique multiplate-forme fournissant un environnement de calcul pour des applications scientifiques. Il possède un langage de programmation orienté calcul numérique de haut niveau. Il peut être utilisé pour le traitement du signal, l'analyse statistique, le traitement d'images, les simulations de dynamique des fluides, l'optimisation numérique, et la modélisation et simulation de systèmes dynamiques explicites et implicites.

La syntaxe et les possibilités offertes par Scilab sont similaires à celles de Matlab, mais les deux logiciels ne sont pas compatibles bien qu'un traducteur de Matlab vers Scilab existe.

  • Des centaines de fonctions mathématiques
  • Un langage de programmation haut niveau
  • Graphiques 2D et 3D
  • Structures de données avancées et types de données définis par l'utilisateur
  • Xcos : outil de modélisation et de simulation des systèmes hybrides et dynamiques

Calcul Numérique

  • Algèbre linéaire
  • Matrices creuses
  • Polynômes et fractions rationnelles
  • Simulation : solveurs de systèmes d’équations différentielles (explicites et implicites)
  • Commande robuste et classique
  • Optimisation différentiable et non différentiable

Analyse de données

  • Interpolation, approximation
  • Traitement du signal
  • Statistiques

Fonctionnalités étendues

  • Graphes et réseaux
  • Interface avec Fortran, C, C + +, Java
  • Fonctions pour appeler Scilab à partir de C, C + +, Fortran et Java
  • Passerelle LabVIEW
  • Un grand nombre de modules disponibles via ATOMS http://atoms.scilab.org/

Visualisation 2D et 3D

  • Lignes
  • Diagrammes circulaires
  • Histogrammes
  • Surfaces
  • Animations
  • Export des graphiques dans de nombreux formats: GIF, BMP, JPEG, SVG, PDF …

Utilisation

Pour utiliser Scilab il faut charger le module correspondant :

$ module load scilab

Mode interactif

Après avoir charger le module scilab, on lance la commande :

$ scilab

Il est possible de lancer Scilab sans fenêtres graphique en utilisant la commande scilab-cli

$ scilab-cli
        ___________________________________________        
                       scilab-5.2.2

                 Consortium Scilab (DIGITEO)
               Copyright (c) 1989-2010 (INRIA)
               Copyright (c) 1989-2007 (ENPC)
        ___________________________________________        
 
 
Startup execution:
  loading initial environment
 
-->

Mode batch

$ scilab-cli < program.sci > out

Exemple de script SGE

scilab.sge
#!/bin/bash -l
 
#$ -l h_rt=2:00:0
#$ -cwd
#$ -o $JOB_NAME.o$JOB_ID
#$ -e $JOB_NAME.e$JOB_ID
 
#$ -N job_scilab_2h_seq
 
#$ -q all.q               
 
#$ -V
 
# Demander 4 Go de memoire vive pour le job
#$ -l h_vmem=4G
 
module load scilab
 
scilab-cli < monprogramme.sci

Calcul de puissance

pow.sci
scilab.org/product/dic-mat-sci/M2SCI_doc.htm">function [y] = puissance(x,n)
  y = 1
   scilab.org/product/dic-mat-sci/M2SCI_doc.htm">if n > 0 then
     scilab.org/product/dic-mat-sci/M2SCI_doc.htm">for i = 1:n
       y = y*x
      scilab.org/product/dic-mat-sci/M2SCI_doc.htm">end
   scilab.org/product/dic-mat-sci/M2SCI_doc.htm">end 
scilab.org/product/dic-mat-sci/M2SCI_doc.htm">endfunction
 
puissance(2,3)

Système d'équations linéaires

résoudre : Ax=b

A=[3 1 ; 4 -1];
 
b=[-5 ; -9];
 
linsolve(A,b)
 
 ans  =
 
    2.
  - 1.

Équation différentielle ordinaire

On se place sur un segment [0,5;1] ; on veut déterminer les valeurs numériques de la fonction y vérifiant :

dy/dt = t et y(0) = 0

On a donc ƒ(t,y) = t , t0 = y0 = 0

 t=[0.5:0.1:1]; // points de [0,5;1] espacés de 0,1 le ; sert à ne pas afficher les 5 valeurs de t lors de l'exécution du code
 
 deff('[u] = f(t,y)', 'u = t') // définition de la fonction f
 
ode(0,0,t,f)
 
  ans  =
    0.125    0.18    0.245    0.32    0.405    0.5

qui sont bien les valeurs de 1/2×t²

Visualisation

//definition of the x-axis and the y values
x= [0: (%pi/20): 2*%pi];
y=sin(x);
//plot the data
plot2d(x,y);
plot2d(x,2*y); // will be plotted in the same figure

Tracés en 3D

function z=f(x,y),z=(2*x^2*y+y^2)/(x^2+2*y^2),endfunction
x=-7:0.55:7;
fplot3d(x,x,f)