TP n°1: PRISE EN MAIN DE MATLAB/SCILAB - Laurent Dumas

Dans cette deuxième séance d'initiation à Scilab, l'accent est mis sur les
différentes possibilités de construction et de manipulation de vecteurs et de
matrices, ...

Part of the document


Laurent Dumas & Adel Blouza
http://www.ann.jussieu.fr/~dumas/epf.html TP SCILAB n°2 : ALGEBRE LINEAIRE
EPF 3ème année, 2007-2008
Dans cette deuxième séance d'initiation à Scilab, l'accent est mis
sur les différentes possibilités de construction et de manipulation de
vecteurs et de matrices, ainsi que sur la résolution de systèmes linéaires. 1. Construction de vecteurs Différentes possibilités de construire un vecteur (appelé v par la
suite) sont offertes à l'utilisateur : ( lorsque la taille du vecteur est connue et est petite, en écrivant par
exemple v=[1,2] pour un vecteur ligne et v=[1;2] pour un vecteur colonne.
( lorsque les valeurs du vecteur suivent une progression arithmétique, en
écrivant par exemple v=2:0.1:4
( en initialisant le vecteur au vecteur nul (avec l'instruction zeros) ou
au vecteur formé de 1 (avec l'instruction ones) puis en effectuant une
boucle sur les indices avec des affectations du type v(i)=2
( en initialisant v au vecteur vide : v=[] puis en concaténant dans une
boucle chaque nouvel élément avec des affectations du type v=[v,2]
( en effectuant des opérations de somme (instruction +), de multiplication
(instruction .*) et de division (instruction ./) terme à terme à partir de
vecteurs simples EXERCICE 1 : construire de trois manières différentes, le vecteur
ligne de taille 100 qui comporte les 100 premiers carrés des nombres
entiers. 2. Construction de matrices
Les vecteurs étant pour Scilab des cas particuliers de matrices de
taille n*1 ou 1*n, il est naturel que la construction d'une matrice A
s'effectue de manière similaire à celle d'un vecteur, en l'occurrence :
( lorsque la taille de la matrice est connue et petite, en écrivant par
exemple A=[1,2,3 ;3,4,5] pour une matrice de taille 2*3
( en initialisant A à la matrice nulle (ou à la matrice identité avec eye)
puis en effectuant une double boucle sur les indices avec des affectations
du type A(i,j)=2
( en initialisant A à un vecteur ligne (ou colonne) puis en concaténant
dans une boucle chaque nouvelle ligne (ou colonne) avec des affectations du
type A=[A ;v] (respectivement A=[A,v]). A noter que cette méthode s'étend à
la concaténation entre matrices
( en effectuant des opérations de somme (instruction +), de multiplication
terme à terme (instruction .*) ou de multiplication matricielle
(instruction *), de division terme à terme (instruction ./) à partir de
matrices simples EXERCICE 2: construire sans effectuer de boucles la matrice 10*10
donnant les résultats de la table de multiplication 3. Extraction de sous-matrices
Il est possible d'extraire facilement avec Scilab une sous matrice
d'une matrice quelconque simplement en construisant le vecteur formé par
les indices de lignes et celui formé par les indices de colonnes à
sélectionner. Par exemple, l'instruction B=A(1 :2 :5,1 :3) extraira de la
matrice A, les lignes 1,3 et 5 et les colonnes 1,2 et 3 pour former une
matrice 3*3. EXERCICE 3 : à partir de la matrice de l'exercice 2, construire la
matrice formée de la table de multiplication des 4 premiers entiers
impairs (en ligne) par les 4 premiers entiers pairs (en colonnes). 4. Résolution de système linéaires EXERCICE 4 : écrire une fonction u=fct_gauss(A,b) permettant de résoudre
tout système cramérien Au=b par la méthode de Gauss avec stratégie de
pivot. On pourra utiliser la fonction de remontée suivante pour résoudre
un système triangulaire supérieur Au=b : function u=remontée(A,b)
[n,m]=size(A);
u=zeros(n,1);
u(n)=b(n)/A(n,n);
for j=n-1:-1:1,
u(j)=(b(j)-A(j,,j+1:n)*u(j+1:n))/A(j,j);
end
endfunction
Appliquer cette fonction sur des exemples utilisant des matrices et des
second membres aléatoires de taille élevé (100 par exemple) et comparer les
résultats et les temps de calcul obtenus avec ceux issus de l'instructions
préprogrammée linsolve de Scilab (pour comparer les temps de calcul, on
pourra utiliser l'instruction timer). EXERCICE 5 : Comparer les solutions obtenues par Scilab avec la méthode de
Gauss avec ou sans stratégie de pivot pour le système Au=b avec A=[10-
20,1 ;1,1] et b=[1 ;2]. Commenter. Remarque importante : L'influence des erreurs d'arrondis sur la précision
du résultat d'un système linéaire peut être quantifié par la valeur du
conditionnement de la matrice A associée (en utilisant par exemple
l'instruction cond de Scilab). Il s'avère donc indispensable d'estimer
cette valeur avant toute résolution de système linéaire par un logiciel de
calcul numérique comme Scilab (même avec une méthode « exacte », comme la
méthode de Gauss).