restart;
<Text-field layout="Heading 1" style="Heading 1"/>taille:=proc(A) local t,u,n,p; t:=[op(2,evalm(A))]; n:=op(2,t[1]);p:=op(2,t[2]); [n,p]; end:Permut_ligne:=proc(i,j,A) local B,k,t; t:=taille(A); B:=array(1..t[1],1..t[2]); B:=evalm(A); for k from 1 to t[2] do B[i,k]:=A[j,k]; B[j,k]:=A[i,k]; od; evalm(B); end: Dilat_ligne:=proc(a,i,A) local k,t,B; t:=taille(A); B:=array(1..t[1],1..t[2]); B:=evalm(A); for k from 1 to t[2] do B[i,k]:=a*A[i,k]; od; evalm(B); end:Transvect_ligne:=proc(i,a,j,A) local k,t,B; t:=taille(A); B:=array(1..t[1],1..t[2]); B:=evalm(A); for k from 1 to t[2] do B[i,k]:=A[i,k]+a*A[j,k]; od; evalm(B); end:CherchePivot_colonne:=proc(A,i) local t,k; t:=taille(A); if is(i>t[1])then RETURN(IMPOSSIBLE); fi; for k from i to t[1] do if is(A[k,i]<>0) then RETURN(k); fi; od; RETURN(0); end:Permut_colonne:=proc(i,j,A) local B,k,t; t:=taille(A); B:=array(1..t[1],1..t[2]); B:=evalm(A); for k from 1 to t[1] do B[k,i]:=A[k,j]; B[k,j]:=A[k,i]; od; evalm(B); end:
Exercice 3question a)A:=array(1..3,1..4): for i from 1 to 3 do for j from 1 to 4 do A[i,j]:=i+j: od:od:A=evalm(A);NiMvSSJBRzYiLUknbWF0cml4R0YlNiM3JTcmIiIjIiIkIiIlIiImNyZGLEYtRi4iIic3JkYtRi5GMCIiKA==A1:=Dilat_ligne(1/2,1,A); L2 <-- L2/2NiM+SSNBMUc2Ii1JJ21hdHJpeEdGJTYjNyU3JiIiIiMiIiQiIiNGLiMiIiZGLjcmRi0iIiVGMCIiJzcmRjJGMEYzIiIoA2:=Transvect_ligne(2,-3,1,A1); L2 <-- L2- 3*L1NiM+SSNBMkc2Ii1JJ21hdHJpeEdGJTYjNyU3JiIiIiMiIiQiIiNGLiMiIiZGLjcmIiIhIyEiIkYuRjQjISIkRi43JiIiJUYwIiInIiIoA3:=Transvect_ligne(3,-4,1,A2); L3 <-- L3- 4*L1NiM+SSNBM0c2Ii1JJ21hdHJpeEdGJTYjNyU3JiIiIiMiIiQiIiNGLiMiIiZGLjcmIiIhIyEiIkYuRjQjISIkRi43JkYyRjQhIiNGNg==question b)Gauss1:=proc(A) local t,B,k; t:=taille(A); B:=array(1..t[1],1..t[2]); B:=evalm(A); B contient une copie exact de A, mais B est modifiable contrairement \340 A B:=Dilat_ligne(1/B[1,1],1,B); L1 <--1/a(11) *L1 for k from 2 to t[1] do B:=Transvect_ligne(k,-B[k,1],1,B); Lk <-- Lk- a(k1)*L1 od; evalm(B); end: Gauss1(A); On retrouve comme pr\351vu:NiMtSSdtYXRyaXhHNiRJKnByb3RlY3RlZEdGJkkoX3N5c2xpYkc2IjYjNyU3JiIiIiMiIiQiIiNGLyMiIiZGLzcmIiIhIyEiIkYvRjUjISIkRi83JkYzRjUhIiNGNw==question c)zero_sous_pivot:=proc(i,A) local t,B,k; t:=taille(A); B:=array(1..t[1],1..t[2]); B:=evalm(A); B contient une copie exact de A, mais B est modifiable contrairement \340 A la proc\351dure ne marche que si l'indice i ne d\351passe pas la taille de la matrice et le pivot a(ii) est NON NUL if is(i>t[2]) or is(i>t[1]) or is(B[i,i]=0) then RETURN(IMPOSSIBLE); fi; B:=Dilat_ligne(1/B[i,i],i,B); Li <--1/a(ii) *Li for k from i+1 to t[1] do k parcourt les indice de ligne en dessous du pivot B:=Transvect_ligne(k,-B[k,i],i,B); Lk <-- Lk- a(ki)*Li od; evalm(B); end: question d)Gauss_systeme:=proc(A) local T,i,j,t; t:=taille(A); T:=array(1..t[1],1..t[2]); T:=evalm(A); T contient une copie exact de A, mais T est modifiable contrairement \340 A for j from 1 to min(t[1],t[2]) do on parcourt les \351l\351ments de la diagonale d'indice jj i:=CherchePivot_colonne(T,j); On cherche un pivot non nul dans la colonne j if i<>0 then T:=Permut_ligne(i,j,T); Au cas o\371 l'on trouve ce pivot, on permute avec la ligne actuel et on annule les coefficients sous celui-ci T:=zero_sous_pivot(j,T); fi; sinon on passe \340 la colonne suivante od; evalm(T); end:question e)B:=array(1..4,1..5): for i from 1 to 4 do for j from 1 to 5 do B[i,j]:=i+j: od:od:B=evalm(B);NiMvSSJCRzYiLUknbWF0cml4RzYkSSpwcm90ZWN0ZWRHRilJKF9zeXNsaWJHRiU2IzcmNyciIiMiIiQiIiUiIiYiIic3J0YvRjBGMUYyIiIoNydGMEYxRjJGNCIiKTcnRjFGMkY0RjYiIio=Gauss_systeme(B);NiMtSSdtYXRyaXhHNiRJKnByb3RlY3RlZEdGJkkoX3N5c2xpYkc2IjYjNyY3JyIiIiMiIiQiIiNGLyMiIiZGL0YuNyciIiFGLEYvRi4iIiU3J0YzRjNGM0YzRjNGNQ==Ainsi, puisque les deux derni\350res \351quations sont compatibles, il ne nous reste plus qu'\340 \351tudier le syst\350mex+3*y/2+2*z+5*t/2=3; y+2*z+3*t=4;NiMvLCpJInhHNiIiIiJJInlHRiYjIiIkIiIjSSJ6R0YmRitJInRHRiYjIiImRitGKg==NiMvLChJInlHNiIiIiJJInpHRiYiIiNJInRHRiYiIiQiIiU=o\371 les inconnues z et t jouent le r\364le de param\350tres