Vous êtes sur la page 1sur 18

Universit e Pierre et Marie Curie Bases des m ethodes num eriques Master de Sciences & Technologies MM006 Mention

Math ematiques & Applications Cours : E. Godlewski et E. Tr elat Ann ee universitaire 20112012 Travaux dirig es et t el e-enseignement : C. Audiard Travaux pratiques Scilab N 0 Familiarisation avec Scilab Note : lobjet de cette premi` ere s eance de TP (num ero 0) est de vous familiariser avec le logiciel Scilab. Il ny a pas beaucoup dint er et a ` faire les calculs propos es ` a la main. Ceux qui connaissent d eja le logiciel Scilab (ou Matlab ou Octave) peuvent passer directement a ` la feuille de TP num ero 1. Exercice 1 On note u, v et w les vecteurs suivants u = (1, 1, 2)T , v = (10, 1, 3)T , w = (5, 1, 4)T . 1. Calculer 3u, u 2 , 2u v + 5w, 2u v + 5w 1 , w 4v 2. D eterminer langle form e par les vecteurs v et w. Exercice 2 On note u et v les nombres complexes u = 11 7i, v = 1 + 3i.
.

1. Calculer les modules de u et de v , les produits uv et v u , la partie r eelle et la partie 3 2 imaginaire de u + v . 2. On pose u v A= . u v Calculer AA et A A. Exercice 3 On d enit les vecteurs u1 , u2 , u3 et u4 de R5 par 2 3 1 0 3 1 5 4 u1 = 3 , u2 = 2 , u3 = 1 , u4 = 5 . 5 4 6 2 4 3 1 0 Soit A la matrice dont les colonnes sont form ees des vecteurs u1 , . . . , u4 . Quel est le rang de A ? M eme question si on remplace u4 par le vecteur (3, 11, 4, 13, 4)T . D eterminer le noyau de A. Exercice 4 On note A, 1 5 A= 10 1 B et C les matrices suivantes 3 2 3 1 , B = 1 2 5 0 3 6 1 1 0 2 1

, C=

10 5 3 1

1. Calculer les matrices AB, BA et AB T . 2. Calculer les matrices D = I2 BB T . 3. Calculer les d eterminants des matrices A, B , C , D et E = AAT . 4. Calculer les inverses des matrices A, B , C , D et E = AAT . 5. Calculer les valeurs propres de la matrice E . Quel est le rayon spectral de E ? 6. D eterminer les vecteurs propres de la matrice E . Exercice 5 On pose 1 1 7 3 2 1 A = 4 2 11 , B = 7 8 6 . 8 0 3 5 1 3 Que font les instructions suivantes 3*A; A.*B; A./B; A.^B; cos(A); exp(B); C=[A B]; D=[A,B]; E=[A;B]; Exercice 6 Pour chacune des matrices 1 2 3 .75 0. .25 A1 = 3 2 1 , A2 = 0. 1. 0. , 4 2 1 .25 0. .75 .375 0 .125 .25 0. .75 A3 = 0 .5 0 , A4 = 0. 1. 0. , .125 0 .375 .75 0. .25
n calculer An i , pour n = 1, 2, 3 . . . Que vaut lim A ? n+

Exercice 7 Soient A et B les matrices 1 3 2 1 2 5 7 5 5 1 A= 10 0 3 , B = 6 1 1 3 . 1 3 4 2 1 1 2 1. On note u la deuxi` eme colonne de A et v la derni` ere ligne de B , d eterminer la matrice uv . 2. On note C la matrice obtenue a ` partir de la matrice A en remplacant u par u, d eterminer C . 3. On pose C = AB . Que font les instructions suivantes x=A(3); y=B(4); x*y C(2:3,1:3) C(:) 4. Que font les instructions suivantes 2

E=A(2:3,1:3) find(E>0) if find(E>0) then s=1 end; Exercice 8 Que font les instructions suivantes for i=1:3:11, i, end; u=[1,4,7,10]; for i=u, i, end; v=1:3:11; for i=v, i, end; Exercice 9 On pose 1 1 7 3 2 1 A = 4 2 11 , B = 7 8 6 . 8 0 3 5 1 3 Que font les instructions suivantes v=[1, 2, 4, 7]; A(v)=A(v) + 0.01; B(v)=abs(B(v)); Exercice 10 Ecrire une fonction qui, etant donn es un entier k et une matrice X , calcule les entiers i et j tels que X (i, j ) = X (k ). Exercice 11 Ecrire une fonction qui remplace les coecients ai,j strictement positif dune matrice par 0 et laisse inchang es les autres. Exercice 12 1. Ecrire une fonction qui renvoie les indices i et j des el ements Xi,j dune matrice X de taille n m, qui sont plus grands quune valeur donn ee a. 2. Ecrire une fonction qui renvoie les indices i et j des el ements Xi,j qui sont compris entre une valeur a et une valeur b. Exercice 13 Les programmes suivants doivent etre ecrits dans un chier et ex ecut es ` a partir de fen etre Scilab. 1. Ecrire une fonction qui renvoie un r eel a = |ai,j | tel que |ai,j | = max |al,k |. Les nombres
l,k

complexes al,k sont les composantes dune matrice A de taille m n envoy ee en argument dentr ee de la fonction. 2. Ecrire une fonction qui renvoie des indices i et j correspondants au a pr ec edent.

Universit e Pierre et Marie Curie Bases des m ethodes num eriques Master de Sciences & Technologies MM006 Mention Math ematiques & Applications Cours : E. Godlewski et E. Tr elat Ann ee universitaire 20112012 Travaux dirig es et t el e-enseignement : C. Audiard Corrig e des travaux pratiques N 0 Corrig e 1 On commence par d enir les vecteurs u, v et w -->u=[1;-1; 2] u = ! 1. ! ! - 1. ! ! 2. ! -->v=[10;-1; 3]; -->w=[5;-1; 4]; Noter que le r esultat dune instruction termin ee par ; nest pas ach e` a lecran. 1. Noter que norm(u) et norm(u,2) renvoient la m eme valeur u -->3*u ans = ! 3. ! ! - 3. ! ! 6. ! -->norm(u) ans = 2.4494897 -->2*u-v+5*w ans = ! 17. ! ! - 6. ! ! 21. ! -->norm(ans,1) ans = 44. -->norm(w-4*v,inf) ans = 35. 2. Rappelons que cos(v, w) = < v, w > . La matrice tranpos ee dune matrice A est obv 2 w 2 tenue par A., la matrice adjointe (conjugu ee, transpos ee) est not ee A. Le produit scalaire < v, w > des deux vecteurs est donc egal a ` (w*v), -->(w*v)/norm(v)/norm(w) ans = .9268716 5
2

La fonction r eciproque de cos est not ee acos. Langle recherch e vaut donc (en radians) -->acos(ans) ans = .3848052 Soit, en degr es, -->ans*180/3.14 ans = 22.058897 Corrig e 2 On d enit les deux nombres u et v. Se servir de laide de Scilab pour apprendre a noter un nombre complexe. -->u=11-7*%i;v=-1+3*%i; 1. Le module dun nombre complexe est donn e par la fonction norm (ou la fonction abs), la fonction conj renvoie le nombre complexe conjugu e. Les fonctions imag et real renvoient respectivement les parties r eelles et imaginaires. -->norm(u) ans = 13.038405 -->norm(v) ans = 3.1622777 -->u*conj(u) ans = 170. -->u*conj(v) ans = - 32. - 26.i -->v*conj(u) ans = - 32. + 26.i -->real(u^3+v^2) ans = - 294. -->imag(u^3+v^2) ans = - 2204. 2. A=[u,v;conj(u),conj(v)] A = ! 11. - 7.i - 1. + 3.i ! ! 11. + 7.i - 1. - 3.i ! -->A*A ans = !180. 64. - 160.i! 6

!64. + 160.i 180. -->A*A ans = ! 340. - 64. ! ! - 64. 20. !

Corrig e 3 On d enit les vecteurs u1, u2, u3 et u4 par -->u1=[1; -->u2=[0; -->u3=[2; -->u4=[3; -3; 3; 5; 4]; 1; 2; 4; 3]; -5; -1; -6; 1]; 4; 5; -2; 0];

La matrice A peut etre d enie par linstruction A=[u1,u2,u3,u4] qui concatene les quatre matrices. Les fonctions rank(X) renvoie le rang de la matrice X, cest-` a-dire la dimension de limage de X, vue comme application lin eaire. On obtient les r esultats suivants. -->rank(A) ans = 4. -->u4=[-3; 11 ;4 ;13 ;4]; -->A=[u1,u2,u3,u4] A = ! 1. 0. 2. - 3. ! - 3. 1. - 5. 11. ! 3. 2. - 1. 4. ! 5. 4. - 6. 13. ! 4. 3. 1. 4. -->rank(A) ans = 3.

! ! ! ! !

Corrig e 4 On d enit les trois matrices A, B et C -->A=[1, 3, 2; -5, 3, 1; -10, 0, 3; 1, 0, -2]; -->B=[1,-2, 5; 6, 1, -1]; -->C=[10, -5 ; 3, 1]; 1. -->A*B !--error 10 inconsistent multiplication -->B*A !--error 10 inconsistent multiplication -->A*B ans = ! 5. 7. ! 7

! - 6. ! 5. ! - 9.

- 28. ! - 63. ! 8. !

2. La fonction eye(n,m) (ou eye(A)) renvoie une matrice de taille n m (dimensions de A) ayant des 1 sur sa diagonale et 0 ailleurs. eye(n,n) d esigne donc la matrice unit e In . -->D=eye(2,2)-2*B*B D = ! - 59. 2. ! ! 2. - 75. ! 3. Les matrices A et B ne sont pas carr ees, les matrices C et D sont inversibles et la T matrice AA est singuli` ere puisque -->det(C) ans = 25. -->det(D) ans = 4421. -->det(A*A) ans = 9.451E-12 4. Les matrices C et D sont donc inversibles, leur inverse est calcul ee par la fonction inv. Ce qui surprend, cest que Scilab d enit linverse de la matrice AAT qui pourtant est une matrice singuli` ere. -->inv(C) ans = ! .04 .2 ! ! - .12 .4 ! -->inv(D) ans = ! - .0169645 - .0004524 ! ! - .0004524 - .0133454 ! -->inv(A*A) ans = 1.0E+14 * ! 2.7520981 - 2.7520981 2.1045456 ! - 2.7520981 2.7520981 - 2.1045456 ! 2.1045456 - 2.1045456 1.6093584 ! 4.5328675 - 4.5328675 3.4663104

4.5328675 - 4.5328675 3.4663104 7.4658993

! ! ! !

Si on eectue le produit des matrices A*A et inv(A*A), on nobtient pas la matrice ` m identit e. A editer. -->inv(A*A)*A*A 8

ans ! ! ! !

= .9375 .1875 .0625 .375

1.6875 .46875 1.34375 2.

.375 1.78125 1.40625 - 1.375

.28125 .65625 .125 1.625

! ! ! !

5. La fonction spec(X) renvoie un vecteur dont les composantes sont form ees des valeur propres de la matrice X. -->spec(A*A) ans = ! 0. ! 5.2695581 ! 18.824461 ! 138.90598

! ! ! !

Le rayon spectral de la matrice X peut etre calcul e par norm(spec(X),inf) -->norm(ans,inf) ans = 138.90598 6. Pour une matrice diagonalisable X , linstruction [D,P]=bdiag(X) renvoie une matrice diagonale D qui contient les valeurs propres de la matrice X et une matrice P contenant les vecteurs propres de X , on a X = P DP 1 . On traitera, dans un autre exemple, des matrices qui ne sont pas diagonalisables. -->[D,P]=bdiag(E) P = ! .8469760 .4344715 - .3063600 - .0031121 ! .4525418 - .4344715 .6303149 .4573221 ! - .2502810 .3322429 - .229698 .8798937 ! - .1232760 .7156002 .675341 - .1289727 D = ! 18.824461 0. 0. 0. ! ! 0. 0. 0. 0. ! ! 0. 0. 5.2695581 0. ! ! 0. 0. 0. 138.90598 ! Corrig e5 A=[1, -1, 7; -4, 2, 11; 8, 0, 3]; B=[3, -2, -1; 7, 8, 6; 5, 1, 3]; -->3*A ans = ! 3. - 3. 21. ! ! - 12. 6. 33. ! ! 24. 0. 9. ! -->A.*B ans = ! 3. 2. - 7. ! 9

! ! ! !

! - 28. 16. 66. ! ! 40. 0. 9. ! -->A./B ans = ! .3333333 .5 - 7. ! ! - .5714286 .25 1.8333333 ! ! 1.6 0. 1. ! -->cos(A) ans = ! .5403023 .5403023 .7539023 ! - .6536436 - .4161468 .0044257 ! - .1455000 1. - .9899925 -->exp(B) ans = ! 20.085537 .1353353 .3678794 ! 1096.6332 2980.958 403.42879 ! 148.41316 2.7182818 20.085537

! ! !

! ! !

A.*B est une matrice dont l element dindices (i,j) est egal a ` Ai,j Bi,j . Attention a ` ne pas confonde avec la multiplication uselle des matrices A*B. De m eme A./B (resp. A.^B) est B une matrice dont l element dindices (i,j) est egal ` a Ai,j /Bi,j (resp. Ai,ji,j ). La notation cos(A) (resp. exp(B)) d esigne une matrice dont les el ements sont les cosinus (resp. les exponentielles) des el ements de la matrice A (resp. B ). Il sagit de notations propres ` a Scilab, a ` ne pas confondre avec les notations math ematiques. Plus g en eralement, si f est une fonction d enie dans Scilab, linstruction f(X) o` u X est une matrice, d enit une matrice dont les composantes sont obtenues en appliquant f aux composantes de X (f (X ))i,j = f (Xi,j ). Noter enn que fonction exponentielle dune matrice X , qui est d eni math ematiquement + k X est not ee par Scilab expm(X). par eX = k ! k=0 -->C=[A B] C = ! 1. - 1. ! - 4. 2. ! 8. 0.

7. 11. 3.

3. 7. 5.

- 2. 8. 1.

- 1. ! 6. ! 3. !

La matrice C est obtenue par concat enation des matrices A et B : la premi` ere colonne de C est egale a ` A et la deuxi` eme colonne de C est egale a ` B . Les matrices C et D sont les m emes. La matrice E est aussi obtenue par concat enation des matrices A et B : la premi` ere ligne de E est egale a ` A et la deuxi` eme ligne de E est egale a ` B. Corrig e 6 Pour la matrice A1 10

A1=[1,2,3;3,2,1;4,2,1]; A1*A1 A1*ans A1*ans la limite est (semble etre !) une matrice dont tous les coecients tendent vers +. On peut aussi utiliser la fonction puissance, par exemple calculer A1^100. Pour la matrice A2 on obtient A2=[.75,0,.25;0,1,0;.25,0,.75] A2*A2 A2*ans A2*ans et la limite est la matrice ! ! ! .5 0. .5 0. 1. 0. .5 ! 0. ! .5 !

Pour la matrice A3 on obtient A3=[.375,0,-.125;0,.5,0;-.125,0,.375] A3*A3 A3*ans A3*ans la limite etant la matrice nulle. Pour la matrice A4 , la limite alterne entre la matrice ans = ! - .5 ! 0. ! - .5 et la matrice -->A4*ans ans = ! .5 ! 0. ! .5 0. 1. 0. .5 ! 0. ! - .5 !

0. 1. 0.

.5 ! 0. ! .5 !

Remarque : chacune des matrices Ai est diagonalisable et s ecrit Ai = Pi Di Pi1 . Les puissances de Ai sont donc egales ` a k i,1 0 k 1 = Pi 0 k Ak 0 Pi1 . i = Pi D i Pi i,2 0 0 k i,3 Le comportement, ` a linni, des puissances des quatre matrices sexplique en etudiant les valeurs propres de ces matrices : 11

Le rayon spectral de la matrice A1 est > 1, il existe donc une valeur propre 1,j de module > 1 et |k 1,j | tend vers +. Le rayon spectral de la matrice A3 est lui < 1. Pour tout j , |k 2,j | tend vers 0, il en est de k m eme de A3 . k tend vers la matrice Les valeurs propres de A2 sont 1/2, 1 et 1, on en d eduit que D2 diagonale diag (0, 1, 1). Les valeurs propres de A4 sont 1, 1/2 et 1. La pr esence de la valeur propre 1 explique k les oscillations de la matrice A . Corrig e7 A=[1, 3, 2; -5, 5, 1; -10, 0, 3; 1, 1, -2] B=[1, -2, 5, 7; 6, 1, -1, 3; 1, -3, 4, 2] 1. u=A(:,2) v=B(3,:) -->u*v ans = ! 3. ! 5. ! 0. ! 1. 2. C=A C(:,2)=-u 3. On peut acc eder a ` un el ement de la matrice X en d esignant ses deux indices, comme dans X(i,j) ou un seul indice comme dans X(k), la matrice X est alors parcourue colonne par colonne. On a donc si X est une matrice de taille n m, k = i + (j 1)n. -->x=A(3) x = - 10. -->y=B(4) y = - 2. -->x*y ans = 20. X(i1:i2,j1:j2) renvoie une matrice dont les el ements sont les el ements de la matrice X dont lindice de ligne est compris entre i1 et i2 et lindice de colonne est compris entre j1 et j2. La commande X(:,j1:j2) renvoie les colonnes de j1 a ` j2. De m eme, la commande X(i1:i2,:) renvoie les lignes de i1 a ` i2. -->C=A*B C = ! 21. - 5. ! 26. 12. ! - 7. 11. ! 5. 5.

9. 15. 0. 3.

12. 20. 0. 4.

6. 10. 0. 2.

! ! ! !

10. - 26. - 38. - 4.

20. ! - 18. ! - 64. ! 6. ! 12

-->C(2:3,1:3) ans = ! 26. 12. ! - 7. 11. -->C(:) ans = ! 21. ! ! 26. ! ! - 7. ! ! 5. ! ! - 5. ! ! 12. ! ! 11. ! ! 5. ! ! 10. ! ! - 26. ! ! - 38. ! ! - 4. ! ! 20. ! ! - 18. ! ! - 64. ! ! 6. !

- 26. ! - 38. !

4. E=A(2:3,1:3) find(X>a) renvoie lindice des el ements de la matrice X qui sont plus grands que a. find(E>0) if find(E>0) then s=1, end;

Corrig e 8 Il sagit de trois mani` eres deectuer une boucle for. Toutes produisent le r esultat suivant i i i i = 1. = 4. = 7. = 10. Corrig e9 -->A=[1, -1, 7; -4, 2, 11; 8, 0, 3] A = ! 1. - 1. 7. ! ! - 4. 2. 11. ! ! -->B=[3, -2, -1; -7, 8, 6; -5, 1, 3] B = 13

8.

0.

3.

! 3. - 2. - 1. ! ! - 7. 8. 6. ! ! - 5. 1. 3. ! -->v=[1, 2, 4, 7] v = ! 1. 2. 4. 7. ! La commande A(v)=A(v) + 0.01 est equivalente ` a la boucle for i=v, A(i)=A(i)+0.01 end -->A(v)=A(v) + 0.01 A = ! 1.01 - .99 7.01 ! ! - 3.99 2. 11. ! ! 8. 0. 3. ! Un moyen compact d ecrire la boucle for i=v, B(i)=abs(B(i)) end est -->B(v)=abs(B(v)) B = ! 3. 2. 1. ! ! 7. 8. 6. ! ! - 5. 1. 3. ! Corrig e 10 On peut d enir une fonction in-line, la syntaxe est alors la suivante deff([args1,...,argsm]=toto(arge1,...,argen),[instr1;...;instrp]) o` u toto est le nom de la fonction, arge1,...,argen sont les n arguments dentr ee, args1,...,argsm sont les m arguments de sortie, instr1,...,instrp sont les di erentes instructions. Voici lexemple dune fonction qui calcule les somme, produit et dierence de deux scalaires deff([s,d,p]=sodipr(a,b),[s=a+b,d=a-b,p=a*b]) Comparons les di erents appels de la fonction sodipr -->x=3;y=5; -->[c,d,e]=sodipr(x,y); -->c,d,e c = 14

8. d = - 2. e = 15. -->[f,g]=sodipr(x,y); -->c,d c = 8. d = - 2. -->h=sodipr(x,y) h = 8. -->sodipr(x,y) ans = 8. Le premier appel aecte respectivement ` a c,d,e le contenu des arguments de sortie s,d,p. Le deuxi` eme (resp. troisi` eme) appel naecte que les deux premiers (resp. premier) arguments. Quant au dernier appel il aecte la valeur de largument s a ` la variable ans. Retour a ` lexercice 10 : Comme (voir corrig e pr ec edent) k=i +(j-1)n, on d etermine j-1 comme reste de la division euclidienne de k-1 par n, puis i par i=k-(j-1)n. La fonction indices denie ci-dessous calcule i et j connaissant k et n. Noter que la fonction int(a) renvoie la partie enti` ere du r eel a si celui-ci est positif. Que fait int(a) pour a<0 ? deff([i,j]=indices(k,A),[n=size(A,1),j= int((k-1)/n)+1,i=k-(j-1)*n]) Lappel de cette fonction se fait comme suit -->A=[2,-1,3;5,7,0;-3,-5,8;6,2,1] A = ! 2. - 1. 3. ! ! 5. 7. 0. ! ! - 3. - 5. 8. ! ! 6. 2. 1. ! -->k=5; -->[i0 j0]=indices(k,A) j0 = 2. i0 = 1. Noter que pour une matrice X de taille n m la commande size(X,1) renvoie n et la commande size(X,2) renvoie m. Corrig e 11 Autre exemple de fonction in-line 15

deff([A]=tronque(A),[u=find(A>0),for i=u, A(i)=0;end;]) -->A=[1, 3, 2; -5, 5, 1; -->-10, 0, 3; 1, 1, -2] A = ! 1. 3. 2. ! ! - 5. 5. 1. ! ! - 10. 0. 3. ! ! 1. 1. - 2. ! -->A=tronque(A) A = ! 0. 0. 0. ! ! - 5. 0. 0. ! ! - 10. 0. 0. ! ! 0. 0. - 2. ! On peut ecrire la fonction tronque de fa con plus concise deff([A]=tronque(A),[u=find(A>0),A(u)=0]) Encore plus concis ! deff([A]=tronque(A),[A(find(A>0))=0]) Corrig e 12 On va modier la fonction indices en deff([i,j]=indices(k,A),[n=size(A,1),j= int((k-1)/n)+1,i=k-(j-1)*n]) 1. La fonction suivante deff([ui,uj]=pgrands(X,a),[v=find(X>a), [ui,uj]=indices(v,X)]) retourne deux vecteurs contenant lun les indices i, lautre les indices j recherch es. Exemple -->A=[2,-1,3;5,7,0;-3,-5,8;6,2,1] A = ! 2. - 1. 3. ! ! 5. 7. 0. ! ! - 3. - 5. 8. ! ! 6. 2. 1. ! -->a=2.5; -->[u v]= pgrands(A,a); -->[u;v] ans = ! 2. 4. 2. 1. 3. ! ! 1. 1. 2. 3. 3. ! 2. Sut dans la d enition de pgrands de remplacer find(X>a) par find((X>a)&(X<ba)). Noter lop erateur logique &, qui signie bien s ur et (lop erateur logique ou se note |). 16

Corrig e 13 On va donc ecrire les programmes demand es dans un chier. La syntaxe dun tel programme est function [args1,...,argsn] = toto(arge1,...,argen) Si le chier contenant la fonction toto sappelle toto.sci, la fonction toto doit etre charg ee (loaded) dans lenvironnement de travail par la commande getf(toto.sci). Attention : il est n ecessaire de pr eciser le chemin pour acc eder au chier toto.sci. Dans cet exemple le chier en question se trouve dans le m eme r epertoire que Scilab. 1. Voici le contenu du chier pgm1.sci function a = pgrandecompo(A) a=norm(A(1)); for i=2:length(A) if a < norm(A(i)) then a= norm(A(i)); end end // // // // note: linstruction a=max(abs(A)) suffit pour repondre a la question

Noter lutilisation de la commande length, pour une matrice on a length(A)=size(A,1)*size(A,2). Lappel se fait par -->A=[2+%i,-1-3*%i,3;5,7-2*%i,0;-3,-5,-8*%i;6,2,1] A = ! 2. + i - 1. - 3.i 3. ! ! 5. 7. - 2.i 0 ! ! - 3. - 5. - 8.i ! ! 6. 2. 1. ! -->getf(pgm1.sci) -->pgrandecompo(A) ans = 8. 2. Il sut de rajouter au chier pgm1.sci (` a la suite de la d enition de la fonction pgrandecompo) les deux autres fonctions. pgrandecomoI et indices. Voici le nouveau contenu du chier pgm1.sci function [a] = pgrandecompo(A) a=norm(A(1)); for i=2:size(A,1)*size(A,2) if a < norm(A(i)) then a= norm(A(i)); end end function [i,j]=indices(k,A) n=size(A,1); j= int((k-1)/n)+1; i=k-(j-1)*n; 17

function [a,i,j] = pgrandecompoI(A) a=norm(A(1)); p=1; for k=2:size(A,1)*size(A,2) if a < norm(A(k)) then a= norm(A(k)); p=k; end end [i,j]=indices(p,A); Exemple dappel -->A=[2+%i,-1-3*%i,3;5,7-2*%i,0;-3,-5,-8*%i;6,2-9*%i,1] A = ! 2. + i - 1. - 3.i 3. ! ! 5. 7. - 2.i 0 ! ! - 3. - 5. - 8.i ! ! 6. 2. - 9.i 1. ! -->getf(pgm1.sci) -->[a,i,j] =pgrandecompoI(A) j = 2. i = 4. a = 9.2195445

18

Vous aimerez peut-être aussi