Donne le début de ce que tu as, on va l'amender.Kazik a écrit :C'est pas grave !
Oui, j'ai bien trouver des fonctions telle que swapcol qui permet d'échanger des colonnes, etc.
Mais j'ai vraiment du mal sur la mise en forme!
Procédure sous Maple
-
- Modérateur général
- Messages : 8156
- Inscription : vendredi 06 janvier 2006, 15:32
- Statut actuel : Enseignant
- Localisation : Le Mans
Pas d'aide par MP : les questions sont publiques, les réponses aussi.
Tu as apprécié l'aide qui t'a été fournie ? Alors n'hésite pas à rendre la pareille à quelqu'un d'autre.
Un peu d'autopromotion.
Tu as apprécié l'aide qui t'a été fournie ? Alors n'hésite pas à rendre la pareille à quelqu'un d'autre.
Un peu d'autopromotion.
Code : Tout sélectionner
> procedure:=proc(A)
> local k;
> for k from 1 do
> pivot:=cherchelepivot(A);
> end do;
> end proc;
Code : Tout sélectionner
for j from 1 to coldim(A) do
for i from 1 to rowdim(A) do
> if A[i,j]<>0 then
> return([i,j]);
> end if;
> end do;
> end do;
-
- Modérateur général
- Messages : 8156
- Inscription : vendredi 06 janvier 2006, 15:32
- Statut actuel : Enseignant
- Localisation : Le Mans
Pour $(i,j)$ fixé, tu cherches $i_0$ tel que $a[i_0,j]\neq0$ puis tu permutes les lignes $i_0$ et $i$ (si $i_0\neq i$) ensuite tu combines les lignes $i+1$ à $n$ avec la ligne $i$. Tu passes alors à $(i+1,j+1)$ (si pas de $i_0$ alors tu passes à $(i,j+1)$).
Pas d'aide par MP : les questions sont publiques, les réponses aussi.
Tu as apprécié l'aide qui t'a été fournie ? Alors n'hésite pas à rendre la pareille à quelqu'un d'autre.
Un peu d'autopromotion.
Tu as apprécié l'aide qui t'a été fournie ? Alors n'hésite pas à rendre la pareille à quelqu'un d'autre.
Un peu d'autopromotion.
Code : Tout sélectionner
for j from 1 to coldim(A) do
for i from 1 to rowdim(A) do
if A[i,j]<>0 then swaprow(A, i, i)
end if;
end do;
end do;
-
- Modérateur général
- Messages : 8156
- Inscription : vendredi 06 janvier 2006, 15:32
- Statut actuel : Enseignant
- Localisation : Le Mans
Code : Tout sélectionner
i := 1 ; j := 1 ;
TANT QUE ( i<=n ET j<=p )
FAIRE
i0 := i ;
TANTQUE ( a[i0,j]=0 ET i0<n ) FAIRE i0 := i0+1 ; FINFAIRE ;
SI i0 <> i ALORS permuter(ligne_i,ligne_i0) ;
SI a[i,j]<>0 ALORS FAIRE toutes_les_combinaisons ; i := i+1 ; FINFAIRE ;
j := j+1 ;
FINFAIRE ;
Pas d'aide par MP : les questions sont publiques, les réponses aussi.
Tu as apprécié l'aide qui t'a été fournie ? Alors n'hésite pas à rendre la pareille à quelqu'un d'autre.
Un peu d'autopromotion.
Tu as apprécié l'aide qui t'a été fournie ? Alors n'hésite pas à rendre la pareille à quelqu'un d'autre.
Un peu d'autopromotion.
J'ai compris jusqu'à :
que je ne saisi pas
Code : Tout sélectionner
SI a[i,j]<>0 ALORS FAIRE toutes_les_combinaisons ;
-
- Modérateur général
- Messages : 8156
- Inscription : vendredi 06 janvier 2006, 15:32
- Statut actuel : Enseignant
- Localisation : Le Mans
si a[i,j]<>0 alors on a un pivot (car non nul) et on peut combiner les lignes i+1 à n avec la ligne i pour obtenir des 0 en dessous de a[i,j].
Pas d'aide par MP : les questions sont publiques, les réponses aussi.
Tu as apprécié l'aide qui t'a été fournie ? Alors n'hésite pas à rendre la pareille à quelqu'un d'autre.
Un peu d'autopromotion.
Tu as apprécié l'aide qui t'a été fournie ? Alors n'hésite pas à rendre la pareille à quelqu'un d'autre.
Un peu d'autopromotion.
-
- Modérateur général
- Messages : 8156
- Inscription : vendredi 06 janvier 2006, 15:32
- Statut actuel : Enseignant
- Localisation : Le Mans
Oui.
Pas d'aide par MP : les questions sont publiques, les réponses aussi.
Tu as apprécié l'aide qui t'a été fournie ? Alors n'hésite pas à rendre la pareille à quelqu'un d'autre.
Un peu d'autopromotion.
Tu as apprécié l'aide qui t'a été fournie ? Alors n'hésite pas à rendre la pareille à quelqu'un d'autre.
Un peu d'autopromotion.
Donc :
pour faire toutes_les_combinaisons il faut faire une boucle ?
Code : Tout sélectionner
i := 1 ;
j := 1 ;
while i<=n and j<=p do
i0 := i ;
while a[i0,j]=0 and i0<n do
i0 := i0+1 ;
end do;
if i0 <> i then swaprow(A,i,i0) ;
else if a[i,j]<>0 then do toutes_les_combinaisons ;
i := i+1 ;
end do ;
j := j+1 ;
end do ;
-
- Modérateur général
- Messages : 8156
- Inscription : vendredi 06 janvier 2006, 15:32
- Statut actuel : Enseignant
- Localisation : Le Mans
Je ne suis pas d'accord avec le ELSE.
Oui, il faut une autre boucle pour les combinaisons.
Oui, il faut une autre boucle pour les combinaisons.
Pas d'aide par MP : les questions sont publiques, les réponses aussi.
Tu as apprécié l'aide qui t'a été fournie ? Alors n'hésite pas à rendre la pareille à quelqu'un d'autre.
Un peu d'autopromotion.
Tu as apprécié l'aide qui t'a été fournie ? Alors n'hésite pas à rendre la pareille à quelqu'un d'autre.
Un peu d'autopromotion.
-
- Modérateur général
- Messages : 8156
- Inscription : vendredi 06 janvier 2006, 15:32
- Statut actuel : Enseignant
- Localisation : Le Mans
Sinon on peut pas faire i0+1 (on déborde).Kazik a écrit :Mais par contre je n'est pas compris pourquoi i0 doit être strictement inférieur à n. Si i0=n, cela change quoi ?
Pas d'aide par MP : les questions sont publiques, les réponses aussi.
Tu as apprécié l'aide qui t'a été fournie ? Alors n'hésite pas à rendre la pareille à quelqu'un d'autre.
Un peu d'autopromotion.
Tu as apprécié l'aide qui t'a été fournie ? Alors n'hésite pas à rendre la pareille à quelqu'un d'autre.
Un peu d'autopromotion.
-
- Modérateur général
- Messages : 8156
- Inscription : vendredi 06 janvier 2006, 15:32
- Statut actuel : Enseignant
- Localisation : Le Mans
Euh, tu as peut être raison après tout. A vérifier. (je corrige des copies donc difficile de bien réfléchir à ton problème en même temps).
Pas d'aide par MP : les questions sont publiques, les réponses aussi.
Tu as apprécié l'aide qui t'a été fournie ? Alors n'hésite pas à rendre la pareille à quelqu'un d'autre.
Un peu d'autopromotion.
Tu as apprécié l'aide qui t'a été fournie ? Alors n'hésite pas à rendre la pareille à quelqu'un d'autre.
Un peu d'autopromotion.
Ok, j'vais essayer.
Par contre pour la boucle :
est-ce bien :
?
Par contre pour la boucle :
est-ce bien :
Code : Tout sélectionner
for i from 1 to rowdim(A) do addrow(A,i+1,i,-A[i+1,j]/[i,j]);
-
- Modérateur général
- Messages : 8156
- Inscription : vendredi 06 janvier 2006, 15:32
- Statut actuel : Enseignant
- Localisation : Le Mans
je ne connais pas le langage maple.
il doit manquer un A pour désigner le coefficient en fin de ligne et je dirai :
il doit manquer un A pour désigner le coefficient en fin de ligne et je dirai :
Code : Tout sélectionner
FOR i0 FROM i+1 TO rowdim(A) ...
La boucle semble ne pas fonctionner :
voici la syntaxe
Par exemple , si $A:=\begin{pmatrix}1&2&3\\2&3&4\\3&4&5\end{pmatrix}$
va retourner $A:=\begin{pmatrix}1&2&3\\12&23&34\\3&4&5\end{pmatrix}$
(on fait $10\times L_1+\L_2$)
voici la syntaxe
Code : Tout sélectionner
addrow(A, r1, r2, m)
Code : Tout sélectionner
addrow(A,1,2,10);
(on fait $10\times L_1+\L_2$)
-
- Modérateur général
- Messages : 8156
- Inscription : vendredi 06 janvier 2006, 15:32
- Statut actuel : Enseignant
- Localisation : Le Mans
Je ne comprends pas où se situe le problème. Que voulais-tu obtenir ?
Pas d'aide par MP : les questions sont publiques, les réponses aussi.
Tu as apprécié l'aide qui t'a été fournie ? Alors n'hésite pas à rendre la pareille à quelqu'un d'autre.
Un peu d'autopromotion.
Tu as apprécié l'aide qui t'a été fournie ? Alors n'hésite pas à rendre la pareille à quelqu'un d'autre.
Un peu d'autopromotion.
Je voulais donc obtenir la boucle !
pourquoi mettre i0 ? on a pas que i0:=i ?
Code : Tout sélectionner
for i from i+1 to rowdim(A) do addrow(A,i0,i+1,2);
pourquoi mettre i0 ? on a pas que i0:=i ?