TP 2 : calcul matriciel sous Scilab 1. Construction d’une matrice 1 En se reportant, si besoin, au premier TP, construire les matrices suivantes (qui seront affectées aux variables dont les noms sont donnés ci-dessous). 1 A = 4 7 2 2 3 5 6 8 9 B= 1 2 2 5 6 1 Quelques constructions particulières bien pratiques : (a) La matrice nulle se fait à l’aide de la commande zeros(n,p), où n et p sont deux entiers désignant respectivement le nombre de lignes et de colonnes. Construire C = 04 . (b) De même, la matrice composée uniquement de 1 se fait à l’aide de la commande ones(n,p), où n et p sont deux entiers désignant respectivement le nombre de lignes et de colonnes. Construire une matrice D à 4 lignes et 3 colonnes composée uniquement de 3. (c) La matrice identité se fait à l’aide de la commande eye(n,n), où n désigne le nombre de lignes. On peut également construire des matrices non carrée à l’aide de cette commande. Essayer les commandes suivantes : eye(3,3), eye(2,3), eye(3,2). (d) La commande diag(v), où v est une matrice (ligne ou colonne) permet de construire une matrice diagonale dont la diagonale est v. Inversement, la commande diag(A), où A est une matrice (pas nécessairement diagonale) permet de construire une matrice colonne dont les composantes sont celles de la diagonale de la matrice. Enfin, en tapant diag(v,1), on construire une matrice diagonale de taille adaptée en conséquence dont la première sur-diagonale est v (on aussi peut taper diag(v,2) pour la deuxième sur-diagonale, diag(v,-1) pour la première sous-diagonale, etc... Construire une matrice E carrée de taille 10 dont tous les coefficients sont nuls à l’exception ceux de la diagonale, qui valent -2, et de ceux de la première sur-diagonale et de la première sous-diagonale, qui valent 1. Indication : on additionnera 3 matrices obtenues à l’aide de la commande diag. 2. Opérations sur les matrices 1 L’addition, la multiplication par un réel et la multiplication matricielle et la puissance nième d’une matrice carrée se font respectivement à l’aide de +, *, * et ^n. Les précautions d’usage quant aux dimensions des matrices concernées sont à prendre, sinon un message d’erreur s’affiche. Effectuer B+A, A*B, B*A, A^10 et B ^10 en anticipant les messages d’erreur. 2 On peut également faire des opérations coefficients par coefficients (qui ne sont pas des « vraies »opérations sur les matrices). Par exemple : (a) A + 2 ajoute 2 à chaque coefficients de A. (b) A.*B multiplie deux à deux les coefficients de deux matrices A et B de même dimension (l’opération ./ existe aussi). (c) A.^n élève chaque coefficient de A à la puissance n Comparer A.*A,A*A, A^2 et A.^2 et anticiper les résultats. (d) On peut appliquer n’importe qu’elle fonction prédéfinie de Scilab à une matrice, le calcul d’image s’effectue coefficient par coefficient Effectuer sqrt(A). 3 L’inverse d’une matrice M se calcule via la commande inv(M) qui laisse un message d’erreur lorsque la matrice n’est pas inversible. Attention toutefois, il faut se rappeler que Scilab ne fait que des calculs approchés, ce qui donne parfois des erreurs de la part du logiciel. www.franck-madigou.fr ECE 1 2015-2016, TP 2 : calcul matriciel sous Scilab 1/2 3 Donner l’inverse de F = 2 1 Effectuer inv(B), inv(A) et 4 1 4 5 7, puis calculer le produit F −1 F et commenter. 0 0 commenter. La transposée d’une matrice M est obtenue à partir de M’ Vérifier l’instruction en effectuant A’. A partir de la matrice ligne t contenant les entiers de 1 à 10, créer une matrice de taille 10 qui contient les résultats des tables de multplication. Indication : penser à la transposée de t 3. Accès aux coefficients des matrices et modifications de ceux-ci 1 M(2,4) donne le coefficient correspondant de la matrice. M(2,4)=8 affecte la valeur 8 à ce coefficient à la place de la valeur précédente. 2 M(2,:) donne la matrice ligne constitué de la deuxième ligne de la matrice M, M(:,2) donne la matrice colonne constitué de la deuxième colonne de la matrice M. On peut également le modifier par affectation comme pour les coefficients. Remplacer la deuxième ligne de la matrice A par une ligne de 1, puis remplacer la deuxième colonne de la matrice A par la première colonne de la matrice A. Echanger les colonnes 1 et 2 de la matrice B. 4. Matrices aléatoires 1 rand(n,p) permet de générer une matrice contenant des nombres aléatoires, chacun étant tiré au hasard indépendamment des autres selon une loi uniforme dans l’intervalle [0; 1[. Construire une matrice G carrée de taille 100 du type précédent (sans l’afficher) et calculer la moyenne des coefficients. Interpréter le résultat. 2 grand(n,p,'uin', 1, 6) permet de créer une matrice de taille n*p donc les coefficients sont des nombres entiers compris entre 1 et 6, chacun étant tiré indépendamment des autres selon une loi uniforme dans l’ensemble J1 ; 6K. C’est l’instruction 'uin' qui permet de coder le fait que la loi est uniforme et elle peut être remplacée par de nombreuses autres options (voir l’aide de grand) comme par exemple la loi binomiale, normale, exponentielle, etc... Simuler à l’aide d’une seule matrice H une série de 20 expériences aléatoires similaires, chacune de ces expériences consistant à lancer 100 fois un dé (équilibré), le résultat d’une expérience correspondant à une colonne de H. A l’aide de l’instruction mean(H,'r'), qui calcule la moyenne de chaque colonne de H et sort le résultat sous la forme d’une matrice ligne la moyenne du score obtenu. Refaire plusieurs fois l’expérience et commenter le résultat en terme de fluctuation d’échantillonnage (si votre mémoire le permet). www.franck-madigou.fr ECE 1 2015-2016, TP 2 : calcul matriciel sous Scilab 2/2