Aller au menu - Aller au contenu

Icône Les Matrices

Avatar
Mise à jour : 22/08/2008
1 010 visites depuis 7 jours, dont 70 sur ce chapitre classé 126/786
Comme je vous l'ai dit, on va maintenant maintenant manier un type de liste un peu plus compliqué mais oh combien utile. Ce sont les matrices!

(Non nous allons pas apprendre à nous rendre dans le monde de Néo... :D )



Alors, j'ai envie de dire : à l'assaut ! ^^

Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Utilisation

Bon les tableaux à une seule dimension, c'était bien utile ! Mais vous remarquerez que les tableaux que vous utilisez la plupart du temps sont à plusieurs entrées. On écrit les valeurs de quelque chose en fonction d'autre chose.

Imaginez que vous vouliez coder un jeu de dames (si c'est possible, mais il faut être fou :D ), il faudrait que vous puissiez gérer l'état de chaque case dans un tableau représentant les lignes et les colonnes du damier. Et c'est là qu'interviennent les matrices !

Qu'est ce qu'une matrice ?


C'est très simple, une matrice est un tableau à deux dimensions.

La matrice est divisée en un nombre fini de lignes et de colonnes. Chaque intersection peut contenir uniquement des nombres réels (pas de complexes par exemple).

Mais regardez plutôt ce schéma ^^ !

Image utilisateur


Je pense qu'il n' y a pas grand chose à dire de plus !

Comment faire pour créer une matrice ?


Il y a deux façons de faire ça : manuellement (hors programme) et directement dans le programme.

Manuellement



Toutes les choses ayant rapport avec les matrices sont disponibles en faisant [2nd]+[x-1]. Vous arrivez alors au menu MATRX.

Qu'aperçoit-on alors ?

Image utilisateur


Une liste de lettres entre crochets. Ce sont toutes les matrices à votre disposition. Elles sont au nombre de 10 de [A] à [J].

Mais intéressons nous d'abord au menu EDIT en faisant 2 fois [>].
La listes des 10 matrices réapparait. Cliquez sur l'un d'elles et vous verrez alors ceci.

Image utilisateur


Dans cet écran, vous pouvez manipuler votre matrice comme vous le voulez.
Les deux chiffres à coté de MATRIX définissent les dimensions de celle-ci.

Utilisez ensuite votre curseur pour modifier les valeurs (0 par défaut).
Vous pouvez ensuite l'afficher en passant par le menu NAMES puis en cliquant sur la matrice désirée puis encore une fois sur [Enter].

Code : Console
[A]
        [[7 8 9]
        _[4 5 6]]


Dans le programme



Si vous voulez créer une nouvelle matrice dans votre programme, il vous faudra (comme pour les listes) passer par la fonction dim(). Elle se trouve en faisant [2nd]+[x-1]+[>]+[3]. Indiquez alors le nombre de lignes et de colonnes que vous voulez entre crochets. Par défaut, tous les éléments de la matrice valent 0.

Code : Pascal
1
:{4,4}->[A]


Vous pouvez aussi créer une matrice ainsi (ici chaque élément de la matrice est multiplié par 3). Attention à toujours écrire des lignes de même taille.

Code : Pascal
1
:3*[[1,2,3][3,2,1][4,5,6]]->[A]


Pour accéder ou modifier un élément particulier de votre matrice, il suffit d'indiquer sa position entre parenthèses.

Code : Pascal
1
2
3
4
:{4,4}->[A]
:5->[A](2,2)
:Disp [A]
:Disp [A](2,2)


Code : Console
[[0 0 0 0]
_[0 5 0 0]
_[0 0 0 0]
_[0 0 0 0]]
 
5


Vous pouvez tout à fait transférer une matrice dans une autre avec la flèche STO.

Code : Pascal
1
:[A]->[B]

Calculs

La plupart des fonctions mathématiques que vous pouvez trouvez dans le menu MATH sont utilisables avec les matrices !

En voici une liste rapide ^^ .




OpérationDescriptionSyntaxe
Addition/Soustraction Additionner ou soutraire chaque élément de même position deux matrices.
Attention : Les matrices doivent posséder exactement le même nombre de colonnes & de lignes.
Code : Pascal
1
2
:[A]+[B]
:[A]-[B]
Multiplication/Division Multiplier deux matrices.
Attention : le produit se fait uniquement entre une matrice avec x colonnes et y lignes et une autre matrice à y colonnes et x lignes
Code : Pascal
1
2
:[A]*[B]
:[A]/[B]
Multiplication par une constante Chaque valeur X de [A] vaut T*X. Code : Pascal
1
:T*[A]
Puissances Pour éléver chaque nombre de la matrice à une puissance (touche [^] (entre 0 et 255)).
La matrice doit être carré : même nombres de lignes et de colonnes
Code : Pascal
1
:[A]^4
Valeur absolue Chaque valeur X de la matrice vaut |X|. Code : Pascal
1
:abs([A]
Arrondi Chaque valeur de la matrice est arrondi à la décimale près (10 par défaut). Code : Pascal
1
2
:round(matrice[,décimales]
:round([A],2
Partie entière/décimale iPart renvoie la partie entière de chaque nombre et fPart la partie décimale. Code : Pascal
1
2
:iPart([A]
:fPart([B]
Relations Vous pouvez ,entre deux matrices de même taille (même nombre de lignes et de colonnes), vérifier leur égalité ou leur inégalité. Les autres opérateurs ne marchent pas. Code : Pascal
1
2
:[A]=[B]
:[A]!=[B]

Des fonctions bien utiles

Toutes ces fonctions sont disponibles sous la Ti en faisant [2nd]+[MATRX]+[>].



det(



Cette fonction donne le déterminant d'une matrice.
Code : Pascal
1
det([A]



T



T permet de transposer la matrice. Un peu comme si elle tournait sur elle-même. En fait chaque élément à l'emplacement (x,y) est transposé à l'emplacement (y,x). Si la matrice faisait n colonnes et m lignes, elle fait maintenant m colonnes et n lignes.
Non transposée

Code : Console
[[1 2 3]
_[3 2 1]]


Transposée

Code : Console
[[1 3]
_[2 2]
_[3 1]]



dim(



dim peut renvoyer les dimensions de la matrice.

Code : Pascal
1
:dim([A])->L1 // {nb de lignes, nb de colonnes}

On a aussi vu qu'on pouvait créer une matrice avec.

Mais on peut aussi la redimensionner après coup. Tout élément supplémentaire vaut 0. Tous les éléments non compris dans les nouvelles dimensions sont supprimés.

Code : Pascal
1
:{3,3}->dim([A])



Fill(



Fill remplit toute une matrice par la même valeur :) .

Code : Pascal
1
2
:Fill(2,[A]
:Disp [A]

Code : Console
[[2 2]
_[2 2]]



identity(



Identity donne la matrice identité d?ordre n.
Code : Pascal
1
identity(2)->[A]

Code : Console
[[1 0]
_[0 1]]



randM(



randM( permet de créer une matrice remplie d'entiers aléatoires (entre -9 et 9). Les arguments sont respectivement le nombre de lignes et le nombre de colonnes.
Code : Pascal
1
2
:randM(lignes,colonnes
:randM(2,3

Code : Console
[[2 -5 1]
_[3 -1 4]]



augment(



Cette fonction juxtapose deux matrices (qui ont le même nombre de lignes).
[A]
Code : Console
[[1 2]
_[3 4]]

[B]
Code : Console
[[5 6]
_[7 8]]

Code : Pascal
1
augment([A],[B]

Code : Console
[[1 2 5 6]
_[3 4 7 8]]



Matr>list(



Matr>list remplit une (ou plusieurs listes) à partir des données d'une matrice.
Chaque liste est remplie avec les valeurs d'une colonne de la matrice.

1er cas



Toutes les colonnes sont renvoyées dans une liste. Le nombre de listes modifiables par la fonction n'est pas limité. Si il y a plus de colonnes que de listes, la fonction ignore les colonnes en trop.

Code : Pascal
1
2
3
4
5
// [A] est égal à [[1,2,3][4,5,6]]
:Matr>list([A],L1,L2,L3)
// L1 = {1,4}
// L2 = {2,5}
// L3 = {3,6}


2eme cas



On peut accéder à une colonne spécifique de la matrice ainsi.

Code : Pascal
1
:Matr>list([A],3,L1



List>Matr(



Cette fonction permet de créer une matrice à partir de listes. Chaque liste remplit une colonne. Si les listes n'ont pas tous la même longueur, la fonction remplit les lignes par des zéros.

Code : Pascal
1
2
3
4
5
6
7
8
:{1,2,3}->L1
:{4,5,6}->L2
:{7,8,9}->L3
:List>matr(L1,L2,L3,[A]
// [A] vaut:
// [[1 4 7]   
//  _[2 5 8] 
//  _[3 6 9]]



cumSum(



Cette fonction permet d'additionner les élément d'une matrice. Chaque élément est la somme des valeurs située au-dessus de l'élément (+ lui-même) dans la même colonne.

[A]

Code : Console
[[1 2]
_[3 4]
_[5 6]]


cumSum([A])

Code : Console
[[1 2]
_[4 6]
_[9 12]]



ref(



Elle donne la forme réduite de Gauss d'une matrice (nombre de colonnes supérieur ou égal au nombre de lignes)
Code : Pascal
1
:ref([B])



rref(



Cette fonction donne la forme réduite de Gauss-Jordan d'une matrice (nombre de colonnes supérieurs ou égal au nombre de lignes).
En clair, elle vous permet de résoudre des équations linéaires par exemple :

Vous voulez résoudre ce système d'équations
Citation : Système
{ 3x+5y = 2
{ 2x+3y = 1

Il faut créer une matrice de cette forme :
Code : Console
[[3 5 2]
_[2 3 1]]

Ensuite :
Code : Pascal
1
:rref([A]

Et voilà le résultat :
Code : Console
[[1 0 -1]
_[0 1 1]]

Soit :
Citation : Système
{ 1x+0y = -1
{ 0x+1y = 1

Donc x = -1 et y = 1 :D !


rowSpaw(



Très utile ! On peut permuter deux lignes d'une matrice.
Code : Pascal
1
2
:rowSpaw(matrice,ligne1,ligne2
:rowSpaw([A],1,3



row+(



Cette fonction additionne la ligne 1 et ligne 2 et mémorise le tout dans la ligne 2.
Code : Pascal
1
2
:row+(matrice,ligne1,ligne2
:row+([A],1,2

[A]
Code : Console
[[3 5 2]
_[2 3 1]]

row+([A]
Code : Console
[[3 5 2]
_[5 8 3]]



*row(



Cette fonction multiplie toutes les valeurs d'une ligne par le même nombre.
Code : Pascal
1
2
:*row(nombre,matrice,ligne
:*row(4,[A],2

[A]
Code : Console
[[3 5 2]
_[2 3 1]]

*row([A]
Code : Console
[[3  5  2]
_[20 32 12]]



*row+(



Cette fonction multiplie toutes les valeurs d'une ligne 1 par le même nombre, l'additionne à une ligne 2 et mémorise le tout dans la ligne 2.
Code : Pascal
1
2
:*row+(nombre,matrice,ligne1,ligne2
:*row+(4,[A],1,2

[A]
Code : Console
[[3 5 2]
_[2 3 1]]

*row+([A]
Code : Console
[[ 3  5  2]
_[14 23 17]]
C'était le dernier chapitre pour cette partie !

Vous pouvez maintenant attaquer la partie III !


:)
Chapitre précédent Sommaire Chapitre suivant

Partager

14 commentaires pour "Les Matrices"
Note moyenne : 3.82 / 4 (60 votes)
Pseudo Commentaire
Hors ligne Algero4 # Posté le 28/10/2008 à 23:15:30

C'est très bien rédigé ce tutoriel. Cependant je ne vois pas comment on peut copier des lignes du programme qu'on a déjà tapé sans devoir les retaper à la main.


Au fait, je veux savoir si c'est possible de faire du copier-coller de lignes du programme.
:-° ;)
Hors ligne Luigix # Posté le 20/11/2008 à 18:33:30
Avatar

Salut, je met 18, ce tuto est vraiment exelent :) ! Mais j'ai une question :
A quand la partie sur les graphismes ?

:p
Hors ligne ced-fr- # Posté le 07/04/2009 à 20:14:20

très bon tuto je trouve même si certaines fonctions ne marchent pas comme je le voudrait (pourquoi ref([A])->[B] ne marche pas !?)

pour la multiplication de matrice, la définition mathématique est assez compliqué par exemple si:
[3 2 1]=[A] et
[1 2 3]

[6 5]=[B]
[4 3]
[2 1]
(nb colonnes de [B]=nb lignes de [A])

[28 22]=[A]*[B]
[20 14]

car:
28=3*6+2*4+1*2=[A](1,1)*[B](1,1)+[A](1,2)*[B](2,1)+[A](1,3)*[B](3,1)
22=3*5+2*3+1*1=[A](1,1)*[B](1,2)+[A](1,2)*[B](2,2)+[A](1,3)*[B](3,2)
20=1*6+2*4+3*2=[A](2,1)*[B](1,1)+[A](2,2)*[B](2,1)+[A](2,3)*[B](3,1)
14=1*5+2*3+3*1=[A](2,1)*[B](1,2)+[A](2,2)*[B](2,2)+[A](2,3)*[B](3,2)

voilà donc la multiplication de matrice mathématiquement parlant et je suppose que c'est le résultat que donne la calculette.(n'est-ce pas 11TLP?).
Hors ligne JeromeJ # Posté le 28/04/2010 à 21:23:26
Cet espace est trop petit pour
Avatar

Même remarques que 11TLP ...

Chouette j'ai appris quelques trucs en lisant le tuto mais:

1) Rempli d'erreurs
2) De conneries (tel que la multiplication des matrices et d'autres >.<)

Donc, bravo *ironie* à l'auteur et aussi au validateur.

PS: En plus de la faute {3, 3} = dim([A]), je rajouterais que cela ne fonctionne que si la matrice n'existe pas au préalable ;) ainsi pour être sur que ça fonctionne, veillez bien à d'abord faire delVar [A] (delVar se situe en mode édition de programme dans PGRM > CTL > G: DelVar)

www.olissea.com
Site communautaire et multi-thème

Olissea recrute ! Cliquer ici pour voir le sujet.

Olissea c'est: Tchat (à venir), Forums, Articles, Programmes, etc. (+ Tout ce que vous souhaitez)
 
Hors ligne MisterXtrem # Posté le 13/01/2012 à 10:57:09

J'ai une question si quelqu'un peut y répondre :
Est-il possible de renvoyer la colonne ou ligne d'un chiffre X dans une matrice?
Je m'explique, ma matrice est créée, et je souhaite faire une recherche d'un certain nombre X dans cette matrice(çà je sais comment faire) pour au final me renvoyer la ligne et la colonne de ce nombre X...(et çà je sais pas faire :euh: )

Voir tous les commentaires