| > | restart;
|
| > | Exercice 4 |
question a)
On modifie la procédure Gauss_systeme en ajoutant la possibilité de permuter les colonnes afin d'obtenir un pivot non nul sur la diagonale concernée
| > | Gauss_rang:=proc(A)
local T,i,j,k,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 à A for j from 1 to min(t[1],t[2]) do i:=CherchePivot_colonne(T,j); k:=j+1; k est lindice de la colonne susceptible d'être permutée avec la colonne j étudiée while(i=0 and k<t[2]+1) do tant que l'on ne trouve pas de pivot non nul sous le coefficient a(jj) et tant qu'il reste des colonnes avec qui permuter T:=Permut_colonne(j,k,T); on permute la colonne étudiée et avec une des colonnes suivantes i:=CherchePivot_colonne(T,j); on chercher un pivot dans notre nouvelle colonne j k:=k+1 od; if i<>0 then T:=Permut_ligne(i,j,T); T:=zero_sous_pivot(j,T); fi; od; evalm(T); end: |
| > |
| > |
| > | B:=array(1..4,1..3,[[0,0,4],[0,0,5],[0,1,1],[0,1,1]]): |
| > | B=evalm(B); |
| > | Gauss_rang(B); |
question b)
| > | rang:=proc(A)
local t,k,B; t:=taille(A); B:=Gauss_rang(A); sum(B[k,k],k=1..min(t[1],t[2])); le rang est égal au nombre (donc la somme) des coefficients valant 1 sur la diagonale après Gaussianisation end: |
| > | rang(B); |
| > |