Procédure sous Maple
-
- Modérateur général
- Messages : 8156
- Inscription : vendredi 06 janvier 2006, 15:32
- Statut actuel : Enseignant
- Localisation : Le Mans
Je ne sais pas si c'est la syntaxe de Maple, mais il faut lui expliquer qu'à chaque tour de la boucle FOR, il doit effectuer les deux tâches (évaluation de m puis combinaison des lignes) sinon il risque de ne prendre en compte que la première (calcul de m) et alors, comme i0=n+1 à l'issue de la boucle, il ne peut combiner donc il attend, attend, attend, ... (du moins je l'imagine ainsi).
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
Tu le postes ici, un copier/coller devrait faire l'affaire pour celui/celle qui veut le tester.
J'essairais avec Maxima (sans garantie de réussite).
J'essairais avec Maxima (sans garantie de réussite).
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 honoraire
- Messages : 7095
- Inscription : lundi 28 août 2006, 13:18
- Localisation : Allemagne
Le rang d'une matrice de $M_{m,\ n}(\R)$ est inférieur à $\min \{m,\ n\}$.
En gros on regarde le rang d'une matrice carrée la plus grande possible dans la matrice rectangulaire.
C'est mal dit, mais c'est ça.
On regarde d'abord les termes diagonaux ( $B[i,i]$ ) et si c'est non-nul on élimine tout ce qui est en dessous avec.
Sinon on cherche un autre terme "en-dessous" de $B[i,i]$ qui est non-nul pour le faire à sa place.
En gros on regarde le rang d'une matrice carrée la plus grande possible dans la matrice rectangulaire.
C'est mal dit, mais c'est ça.
On regarde d'abord les termes diagonaux ( $B[i,i]$ ) et si c'est non-nul on élimine tout ce qui est en dessous avec.
Sinon on cherche un autre terme "en-dessous" de $B[i,i]$ qui est non-nul pour le faire à sa place.
-
- Modérateur honoraire
- Messages : 7095
- Inscription : lundi 28 août 2006, 13:18
- Localisation : Allemagne
The RowOperation(A, K, s) (ColumnOperation(A, K, s)) function, where K is an integer, returns a Matrix which has the same entries as A except that the Kth row (column) is multiplied by s.
$\begin{pmatrix}1&4&7\\2&5&8\\3&6&9\end{pmatrix}$
$\begin{pmatrix}1&4&7\\2&5&8\\9&18&27\end{pmatrix}$
c'est peut être plus clair ainsi ?
Code : Tout sélectionner
> with(LinearAlgebra):
> A := <<1,2,3>|<4,5,6>|<7,8,9>>;
Code : Tout sélectionner
RowOperation(A, 3, 3);
c'est peut être plus clair ainsi ?
-
- Modérateur honoraire
- Messages : 7095
- Inscription : lundi 28 août 2006, 13:18
- Localisation : Allemagne
Hum, cela n'explique pas ce genre d'opérations :
De plus, je t'ai expliqué la méthode général utilisée dans le programme, cela ne t'a pas suffit à en comprendre les grandes lignes ?
Code : Tout sélectionner
B:=RowOperation(B,[i,j]);
P:=RowOperation(P,[j,i],-B[j,i]/B[i,i]);
Kazik a écrit :Oui c'est bien cela Alphonse :Alphonse BC a écrit :Il te suffit de créer un programme qui reduit ta matrice grace à l'algorithme de Gauss (par exemple) et ensuite tu compte le nombre de ligne de ta matrice qui possède au moins un élément non nul. C'est enfantin. Il faut juste connaitre le langage de programmation de Maple et il n'est pas très compliqué!!!
Sinon je pense également que Maple possède déjà une fonction qui calcul le rang d'une matrice.
Alphonse \$BC\$
la procéduire doit renvoyer $PAQ=B$
où $Q\in Gl_n(\mathbb{R})$, $P\in Gl_m(\mathbb{R})$ et $B\in M_{(n,m)}(\mathbb{R})$
C'est enfantin, mais pas pour moi :(
Le sujet est un peu vieux, mais sait-on jamais, ca peut encore intéresser !
On peut avoir directement le résultat avec :
Code : Tout sélectionner
travail := proc(A) ;
jordan(A,'P');
print(jordan(A,P)=inverse(P)*A*evalm(P));
end;