TP n°4 AGREGATION 2003 APPLICATIONS DE SCILAB (Partie I / III) : Algèbre linéaire Après les trois premières séances d’initiation à Scilab ayant eu pour objet l’acquisition du maniement du logiciel puis l’apprentissage des instructions de base, les trois séances à venir sont plus axées sur les diverses applications possibles de Scilab en Mathématiques (algèbre linéaire, probabilités et statistiques, résolution d’équations). Dans cette première séance, les applications de Scilab en algèbre linéaire pour lequel cet outil est particulièrement conçu sont abordées. 1. Construction de vecteurs et de matrices Comme la phase d’initiation l’a déjà mis en évidence, Scilab est particulièrement conçu pour la construction de matrices et de vecteurs ainsi que pour leur manipulation. Outre le caractère : permettant de construire un vecteur ligne dont les coefficients sont équirépartis entre 2 valeurs, par exemple 0:0.1:3, les caractères [ ] , et ; permettent une affectation terme à terme, ligne après ligne d’une matrice, par exemple [1,0;0,1] pour construire la matrice identité de taille 2. Il existe également diverses instructions permettant de construire des matrices particulières comme eye (matrice identité), zeros (matrice nulle), ones (matrice constituée de 1), toeplitz (matrice tridiagonale) ou rand (matrice aléatoire). Enfin, il est possible également d’utiliser les caractères [ ] , et ; pour concaténer des matrices de taille compatible en ligne ou en colonne ainsi que le caractère : pour extraire des sous matrices ou les affecter en bloc. A=[ones(2,3),zeros(2,1);zeros(3,4)]désigne ainsi une matrice 5*4 (laquelle ?) et A(1:3,3:2:7) désigne la matrice formée des lignes 1 à 3 et des colonnes 3, 5 et 7 de A. EXERCICE 1 : Construire de manière judicieuse la matrice symétrique de taille (n2* n2) dite de discrétisation par différences finies du Laplacien sur un carré, tridiagonale par blocs de taille n : sur la diagonale : n matrices tridiagonales avec des 4 sur la diagonale et des 1 au dessus et en dessous. sur- et sous- diagonale : n matrices identité 2. Conditionnement et résolution de systèmes linéaires L’influence des erreurs d’arrondis sur la précision de la solution d’un système linéaire peut être quantifiée a priori 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 avec un logiciel de calcul numérique comme Scilab (même lorsqu’on utilise une méthode symbolique, donc « exacte », comme la méthode de Gauss). EXERCICE 2 : écrire un script permettant de résoudre tout système cramérien Au=b par la méthode de Gauss avec stratégie de pivot. Appliquer ce script sur des exemples utilisant une matrice bien conditionnée (comme la matrice construite dans l’exercice 1) puis une matrice mal conditionnée (comme la matrice de Hilbert). Comparer les résultats et les temps de calcul obtenus avec ceux issus de l’instructions préprogrammée linsolve de Scilab ou d’une résolution exacte. 3. Recherche d’éléments propres Scilab dispose d’instructions (en l’occurence spec et bdiag) permettant de déterminer rapidement les éléments propres d’une matrice. Les mêmes restrictions d’imposent de même cependant sur le conditionnement du problème. EXERCICE 3 : Ecrire un script permettant de calculer par la méthode de Jacobi les valeurs propres d’une matrice symétrique. Appliquer ce script à la matrice construite dans l’exercice 1 après s’être assuré de son bon conditionnée pour ce problème.