Introduction à Scilab - Listes et matrices
Avec Scilab on manipule des matrices c'est à dire des tableaux de nombres.On peut également définir des listes horizontales (matrice avec 1 seule ligne) ou des listes verticales (matrice avec 1 seule colonne).
Définition d'une liste horizontale
Une liste horizontale est une matrice comportant 1 seule ligne et n colonnes.a=[0,1,2,3]
Les éléments sont séparés par des virgules. On peut également séparer les éléments par des espaces au lieu des virgules.
On obtient à l'écran
-->a=[0,1,2,3]
a =
0. 1. 2. 3.
--> désigne l'invite de commande de Scilab.
Les commandes sont tapées après ce symbole et sont exécutées lorsque l'on tape sur Entrée.
Le symbole = entre a et [0,1,2,3] indique que l'on affecte à la variable a la liste [0,1,2,3]. Une telle opération porte le nom d'affectation.
Lorsque l'on tape la même commande mais que l'on termine la ligne par un point-virgule ";" l'affectation est réalisée mais on ne visualise pas le résultat à l'écran. Il faut alors demander explicitement l'affichage du contenu de la variable a.
Exemple :
-->a=[0,1,2,3];
-->a
a =
0. 1. 2. 3.
Cela permet d'éviter d'afficher certains résultats intermédiaires (notamment lorsqu'on réalise des scripts en Scilab).
Attention, Scilab distingue les majuscules des minuscules (la variable A peut être différente de la variable a).
Définition d'une liste verticale
Une liste verticale est une matrice comportant 1 seule colonne et n lignes.b=[0;1;2;3]
Chaque ligne est séparée par des points-virgules.
Transposition
Pour passer d'une liste verticale à une liste horizontale on utilise l'opérateur de transposition 'prime' : 'a' donne donc [0;1;2;3] c'est à dire une liste verticale (alors que a était une liste horizontale)
Définition d'une matrice
c=[0,1,2;3,4,5;6,7,8]Les éléments sont séparés par des virgules (ou des espaces). Les lignes sont séparées par des points virgules.
Fonctions mathématiques de base
sqrt(5) désigne la racine carré de 5.abs(-2) désigne la valeur absolue de -2.
On peut obtenir des informations complémentaires sur une fonction en tapant :
help la_fonction
Opérations
Les opérateurs +, -, * désignent des opérations matricielles (ou scalaires).L'opérateur / permet de diviser deux nombres scalaires (ou une matrice par un nombre).
.+ .- .* ./ : opérations entre éléments de la liste (on peut ainsi multiplier deux vecteurs ligne ou deux vecteurs colonne)
Création d'une liste linéaire
[0:0.1:2] crée une liste de nombres allant de 0 jusqu'à 2 dans l'ordre croissant et par pas de 0.1.Cela crée donc la liste horizontale (vecteur ligne) suivante :
[0,0.1,0.2,0.3,...,1.8,1.9,2]
Lorsque l'on omet le pas en tapant par exemple [0:10] on obtient un vecteur ligne allant de 0 à 10 par pas de 1.
Remarque on peut également utiliser la fonction linspace.
Pour un vecteur ligne dont les éléments sont espacés logarithmiquement on utilise la fonction logspace.
Manipulation de matrices
On définit la matrice A suivante :-->A = [0,1;1,2;2,3]
A =
0. 1.
1. 2.
2. 3.
Extraction élément
On peut extraire un élément de la matrice à l'aide de la commande :A(ligne,colonne) (attention on doit bien mettre ligne,colonne dans cet ordre !)
Exemple :
-->A(3,2)
ans =
3.
Les éléments sont indexés à partir de 1 (et non de 0 comme les tableaux en C). C'est à dire que dans la matrice A précédemment définie l'élément 0 est positionné sur la ligne 1 et la colonne 1.
Extraction ligne 1
Il est possible d'extraire un ensemble d'éléments (par exemple une ligne entière).-->A(1,:)
ans =
0. 1.
Extraction colonne 1
Il est possible d'extraire un ensemble d'éléments (par exemple une colonne entière)-->A(:,1)
ans =
0.
1.
2.
Informations sur les variables
On peut connaitre la taille d'une liste ou d'une matrice, c'est à dire son nombre de ligne et de colonne à l'aide de la commande size(mat)Exemple :
-->size(A)
ans =
3. 2.
size(A) renvoie le résultat sous la forme d'une liste horizontale comportant 2 éléments : nombre de lignes et nombres de colonnes (dans cet ordre).
Cela signifie que la matrice A comporte 3 lignes et 2 colonnes.
Nombre de lignes
Si l'on souhaite connaître uniquement le nombre de lignes on pourrait taper-->s=size(A);
-->s(1,1)
ans =
3.
C'est relativement fastidieux donc on peut éviter ça en tapant :
-->size(A,'r')
ans =
3.
'r' signifie "row" c'est à dire ligne en anglais.
Nombre de colonnes
De même, peut connaitre le nombre de colonnes de la matrice avec size(mat,'c').Exemple :
-->size(A,'c')
ans =
2.
'c' signifie "column" c'est à dire colonne en anglais.
Nombre d'éléments d'une liste (horizontale ou verticale)
On peut connaitre le nombre d'éléments d'une liste (horizontale ou verticale).-->a=[0,1,2,3];
-->length(a)
ans =
4.
Autres informations sur les variables
who affiche le nom de chaque variable utilisée.whos affiche le nom et la taille (nombre d'éléments et d'octets) de chaque variable.
clear efface toutes les variables définis par l'utilisateur de la mémoire (on commence généralement un script Scilab par cette fonction).
clear X Y efface uniquement les variables X et Y.
Matrice identité
On peut obtenir une matrice identité (matrice remplie de 1 selon la diagonale) avec-->eye(5,5)
ans =
1. 0. 0. 0. 0.
0. 1. 0. 0. 0.
0. 0. 1. 0. 0.
0. 0. 0. 1. 0.
0. 0. 0. 0. 1.
Matrice remplie de 1
On peut obtenir une matrice remplie de 1 avec-->ones(5,4)
ans =
1. 1. 1. 1.
1. 1. 1. 1.
1. 1. 1. 1.
1. 1. 1. 1.
1. 1. 1. 1.
Matrice remplie de 0
On peut obtenir une matrice remplie de 0 avec-->zeros(5,4)
ans =
0. 0. 0. 0.
0. 0. 0. 0.
0. 0. 0. 0.
0. 0. 0. 0.
0. 0. 0. 0.
Ajout d'un élément dans une liste
Il est possible d'ajouter un élément à la suite d'une liste.Exemple :
-->a=[0,1,2,3];
-->a(7)=11
a =
0. 1. 2. 3. 0. 0. 11.
Sous-liste et sous-matrice
On peut définir une liste à partir de sous-liste.-->a=[0,1,2,3]
a =
0. 1. 2. 3.
-->b=[4,5]
b =
4. 5.
-->[a,5,6,b]
ans =
0. 1. 2. 3. 5. 6. 4. 5.
On peut aussi définir une matrice à partir de plusieurs listes
-->[a;b,10,11]
ans =
0. 1. 2. 3.
4. 5. 10. 11.
Attention toutefois à respecter les dimensions des matrices.
Exemple :
-->[a;b]
!--error 6
inconsistent row/column dimensions
b ne comporte pas assez d'éléments par rapport à a.
Autres fonctions pour les matrices
Inversion d'une matrice
inv(A) (si A carré)Déterminant d'une matrice
det(A)Trace de d'une matrice
trace(A)Autres fonctions pour les vecteurs (listes)
Produit scalaire (dot product)
Le produit scalaire entre 2 vecteurs n'existe pas explicitement dans Scilab. Il faut utiliser le produit matriciel (et la transposition) pour le réaliser.-->a=[0;1;2]
a =
0.
1.
2.
-->b=[3;4;5]
b =
3.
4.
5.
-->a'*b
ans =
14.
On obtient ici 14 car 0*3+1*4+2*5 = 14
There are no comments on this page. [Add comment]