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 : 8191
- Inscription : vendredi 06 janvier 2006, 15:32
- Statut actuel : Enseignant
- Localisation : Le Mans
- Contact :
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 : 8191
- Inscription : vendredi 06 janvier 2006, 15:32
- Statut actuel : Enseignant
- Localisation : Le Mans
- Contact :
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 : 8191
- Inscription : vendredi 06 janvier 2006, 15:32
- Statut actuel : Enseignant
- Localisation : Le Mans
- Contact :
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 : 8191
- Inscription : vendredi 06 janvier 2006, 15:32
- Statut actuel : Enseignant
- Localisation : Le Mans
- Contact :
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 : 8191
- Inscription : vendredi 06 janvier 2006, 15:32
- Statut actuel : Enseignant
- Localisation : Le Mans
- Contact :
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 : 8191
- Inscription : vendredi 06 janvier 2006, 15:32
- Statut actuel : Enseignant
- Localisation : Le Mans
- Contact :
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 : 8191
- Inscription : vendredi 06 janvier 2006, 15:32
- Statut actuel : Enseignant
- Localisation : Le Mans
- Contact :
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 : 8191
- Inscription : vendredi 06 janvier 2006, 15:32
- Statut actuel : Enseignant
- Localisation : Le Mans
- Contact :
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 : 8191
- Inscription : vendredi 06 janvier 2006, 15:32
- Statut actuel : Enseignant
- Localisation : Le Mans
- Contact :
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 : 8191
- Inscription : vendredi 06 janvier 2006, 15:32
- Statut actuel : Enseignant
- Localisation : Le Mans
- Contact :
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 ?