Introduction à Scilab

Commandes et fonctions générales

Index Scilab

Généralités

Scilab (pour Scientific laboratory, semble-t'il) est un logiciel et langage de programmation de calcul scientifique.
Scilab propose de nombreuses commandes et fonctions permettant, entre autre,
  • de résoudre des équations, linéaires ou non;
  • de manipuler aisément des vecteurs et matrices, et de résoudre des système linéaires (ou systèmes matriciels)
  • de tracer des graphiques, courbes de fonctions, courbes paramétriques, surfaces, …;
  • de calculer des intégrales, résoudre des équations différentielles;
  • de programmer et donc de résoudre des problèmes scientifiques complexes
Scilab permet de taper directement des commandes au prompt --> et d'en obtenir le résutat, si tout se passe bien:
-->3+2
 ans  =
 
    5.  
Aucune ponctuation en fin d'instruction n'est nécessaire. Néanmoins, une virgule peut être utilisée pour séparer plusieurs instructions consécutives sur la même ligne, tandis qu'un point-virgule après une instruction indique à Scilab d'effectuer la commande normalement mais de ne pas en afficher le résultat.

Les noms des constantes sont précédés d'un pourcentage %:
-->%pi,%i,%e,%eps
 %pi  =
 
    3.1415927  
 %i  =
 
    i    
 %e  =
 
    2.7182818  
 %eps  =
 
    2.220D-16  
On peut naviguer dans l'historique des commandes déjà exécutées avec les flèches "haut" et "bas". La flèche vers le haut permet de remonter de commandes en commandes dans l'historique (et d'en redescendre avec celle vers le bas).
De plus la navigation peut de faire après avoir taper quelques lettres d'une commande: la navigation dans l'historique se fait alors uniquement parmi les commandes de l'historique commençant par ces lettres.

Fonctions mathématiques

Comme logiciel scientifique, Scilab connaît évidemment les opérations mathématiques élémentaires: +, -, /, *, ^,
-->2/3,3^2
 ans  =
 
    0.6666667  
 ans  =
 
    9. 
et possède bien sûr aussi un vaste catalogue de fonctions mathématiques: sin, cos, tan, exp, log (logarithme népérien, ou ln), log10 (logarithme décimal),

Aide sur les fonctions

D'une manière générale, la commande help donne la liste des aides disponibles (ou ouvre cette liste dans une fenêtre dédiée); la commande help fun permet d'accéder quant à elle à l'aide concernant la fonction fun. Enfin, si on ne connaît par le nom exact de la fonction, ou qu'on recherche une fonction effectuant une opération particulière, on peut se tourner vers la commande apropos key_word et Scilab affichera une liste de toutes ses fonctions qui citent le mot clé key_word dans leur description (analogue de lookfor de Matlab).

Variables

Scilab permet bien sûr de définir et utiliser des variables.
À peu près n'importe quelle suite de caractères peut servir de nom de variable, ne commençant pas par un caractère spécial ou un chiffre:
-->a=2
 a  =
 
    2.  
on peut ensuite afficher la valeur d'une variable simplement en l'appelant par son nom:
-->a
 a  =
 
    2.  
puis la manipuler, la faire varier…
-->2*a
 ans  =
 
    4.  
 
-->a=a+3;2*a
 ans  =
 
    10.  
On peut effacer la variable a avec la commande clear('a'), et, tout aussi interessant la commande clear seule efface toutes les variables de l'espace de travail.
-->a=2,b=3
 a  =
 
    2.  
 b  =
 
    3.  
 
-->clear('a')
 
-->a
  !--error 4 
Variable non définie : a
 
 
-->b
 b  =
 
    3.  
 
-->clear
-->b
  !--error 4 
Enfin la commande clc (clear command window) permet d'effacer la fenêtre de commandes. L'historique des commandes n'est pas effacer pour autant avec clc et les commandes antérieures restent accessibles avec les flèches du "haut" et "bas" du clavier.

Matrices

En calcul scientifique (et en programmation d'une manière plus générale), les matrices, ou tableaux de données, sont des objets fondamentaux.
Avec Scilab, on définit une matrice selon:
-->M=[1 2 3;12,0,%pi]
 M  =
 
    1.     2.    3.         
    12.    0.    3.1415927
Les lignes sont séparées par un point virgule, les colonnes par un espace ou une virgule.

Création de matrices / vecteurs

On peut définir, comme précédemment, une matrice terme à terme, par exemple avec une formule explicite: (voir aussi les boucles for en Scilab).
-->for i=1:3,for j=1:5, F(i,j)=j+(i-1)*5;end;end;
 
-->F
 F  =
 
    1.     2.     3.     4.     5.   
    6.     7.     8.     9.     10.  
    11.    12.    13.    14.    15.  
Quelques commandes génèrent aussi rapidement des matrices particulières: zeros(n,m), ones(n,m), eye(n,m), et rand(n,m) permettent de définir des matrices à n lignes et m colonnes respectivement de zeros, de uns, la matrice identité, et une matrice de nombres aléatoires.
Enfin, le cas courant d'un vecteur dont les éléments sont en progression arithmétique se fait avec linspace(a,b,N): vecteurs à N éléments régulièrement distribués entre a et b:
-->linspace(1,7,4)
 ans  =
 
    1.    3.    5.    7.  
 
-->linspace(0,4,9)
 ans  =
 
    0.    0.5    1.    1.5    2.    2.5    3.    3.5    4.  
Ce type de vecteur peut aussi se définir en donnant le pas entre les éléments:
-->1:2:7
 ans  =
 
    1.    3.    5.    7.  
 
-->0:0.5:4
 ans  =
 
    0.    0.5    1.    1.5    2.    2.5    3.    3.5    4.  

Opérations usuelles sur les matrices

Les opéations mathématiques usuelles, de l'algèbre des matrices, sont là aussi bien sûr disponibles: addition matricielle +, produit matriciel *, puissance matricielle ^, lorsque les dimensions des matrices permettent bien ces opérations.
-->A=[1 2;3 4;5 6];B=[9 8;7 6;5 4];A+B
 ans  =
 
    10.    10.  
    10.    10.  
    10.    10.  
ou encore
-->A=[1 2;3 4];A^2
 ans  =
 
    7.     10.  
    15.    22.  
et même pour l'inverse (même s'il vaut largement mieux utiliser la commande inv(A)):
-->A=[1 2;3 4];A^-1,A^-1*A
 ans  =
 
  - 2.     1.   
    1.5  - 0.5  
 ans  =
 
    1.           0.  
    2.220D-16    1.  

Opérations matricielles terme à terme

Les matrices peuvent aussi être utilisées commes de simples tableaux de données sur lesquelles on veut effectuer des opérations.
D'une manière générale, pour effectuer des opérations terme à terme sur des matrices, on préfixe les opérations usuelles précédentes d'un point:
-->A=[1 2;3 4;5 6];B=[9 8;7 6;5 4];A.*B
 ans  =
 
    9.     16.  
    21.    24.  
    25.    24.  
ou encore
-->A=[1 2;3 4];A.^-1
 ans  =
 
    1.           0.5   
    0.3333333    0.25  
ou encore, avec des puissances terme à terme:
-->[1 2 3].^[1 2 3]
 ans  =
 
    1.    4.    27.  
Enfin, les fonctions mathématiques usuelles opèrent aussi généralement sur des matrices, par exemple
-->x=1:0.8:3
 x  =
 
    1.    1.8    2.6  
 
-->exp(x)
 ans  =
 
    2.7182818    6.0496475    13.463738  

Commandes usuelles et pratiques pour définir et manipuler des matrices

Parmi les commandes les plus usuelles:
  • lenght(V): retourne la longueur (nombre d'éléments) de V
  • size(A): retourne les dimensions de la matrice A
  • repmat(A,p,q): retourne la matrice obtenu en répétant la matrice A p fois en ligne et q fois en colonne
    -->A=[1 2;3 4]
     A  =
     
        1.    2.  
        3.    4.  
     
    -->size(A)
     ans  =
     
        2.    2.  
     
    -->B=repmat(A,2,3)
     B  =
     
        1.    2.    1.    2.    1.    2.  
        3.    4.    3.    4.    3.    4.  
        1.    2.    1.    2.    1.    2.  
        3.    4.    3.    4.    3.    4.  
     
    -->size(B)
     ans  =
     
        4.    6.  
    
  • det(A): retourne le déterminant de la matrice A
  • inv(A): retrourne la matrice inverse de A (si celle-ci est inversible…)
  • diag(A): retourne la diagonale de A (i.e. le vecteur V=[A(i,i)])

Extraction d'éléments dans une matrice

Pour une matrice donnée M, M(i,j) désigne simplement le terme de la i-ème ligne et j-ième colonne.
L'opérateur : désigne tous les éléments de la dimension où il se trouve:
-->for i=1:3,for j=1:5, M(i,j)=j+(i-1)*5;end;end;
 
-->M
 M  =
 
    1.     2.     3.     4.     5.   
    6.     7.     8.     9.     10.  
    11.    12.    13.    14.    15.  
 
-->M(2,4)
 ans  =
 
    9.  
 
-->M(:,3)
 ans  =
 
    3.   
    8.   
    13.  
 
-->M(2,:)
 ans  =
 
    6.    7.    8.    9.    10.  
On peut aussi sélectionner plus finement, M(V,W) où V et W sont deux vecteurs d'entiers: par exemple avec
  • V=[1:3]: on extrait dans M les 1ère et 3ème lignes
  • W=1:2:5, soit W=[1 3 5], on extrait les 1ère, 3ème et 5ème colonnes
-->M
 M  =
 
    1.     2.     3.     4.     5.   
    6.     7.     8.     9.     10.  
    11.    12.    13.    14.    15.  
 
-->M([1 3],1:2:5)
 ans  =
 
    1.     3.     5.   
    11.    13.    15.  
À noter que le même indice peut être utilisé plusieurs fois, permettant ainsi de répéter, ou répliquer, des éléments de la matrice:
-->A=[1 2;3 4]
 A  =
 
    1.    2.  
    3.    4.  
 
-->A([1 1 1],:)
 ans  =
 
    1.    2.  
    1.    2.  
    1.    2.  

Voir aussi: Index Scilab
LongPage: h2: 5 - h3: 6