Tema 10: Tablou bidimensional (Matrice)
Definiţie:
Tablou bidimensional (matrice) = succesiune de locaţii de memorie recunoscute prin acelaşi identificator şi prin poziţia fiecăruia în cadrul şirului. Poziţia este dată printr-o suită de două numere pozitive, care reprezintă cele două dimensiuni (linie şi coloană).
Valorile atribuite elementelor tabloului trebuie să fie de acelaşi tip.
Declararea variabilelor de tip matrice
tip_data nume matrice[nr1] [nr2]
Unde
- tip data este tipul elementelor matricei
- nume matrice este identificatorul matricei
- nr1 este numărul de linii
- nr2 este numărul de coloane
Exemplu:
int a[4] [5];
Matricea a are elemente de tip int, 4 linii şi 5 coloane.
Acces la componentele tabloului
Pentru a folosi componentele individuale scriem numele tabloului urmat de o expresie indice între []. Expresia specifică numărul componentei accesate şi poate fi atât constantă cât şi variabilă ori o expresie mai complicată. Oricare ar fi, însă, forma indicelui, acesta trebuie să fie o valoare întreagă.
Matrice pătratica = matricea care are numărul de linii egal cu numărul de coloane.
Exemplu:
m=3 n=3
1 0 0
3 5 6
2 0 1
Diagonala principală într-o matrice pătratică:
1 0 0
3 5 6
2 0 1
Diagonala secundară într-o matrice pătratică:
1 0 0
3 5 6
2 0 1
- Exemplu în Turbo Pascal
|
- Exemplu în C++
|
type id_tip_tablou_bidimensional =
array [id_tip_sc_1, id_tip_sc_2]
unde: id_tip_tablou_bidimensional este un tip de dată definit ca tablou bidimensional, iar id_tip_sc_1 şi id_tip_sc_2 sunt indici în domenii scalare
|
double q[3][2];
// declararea matricei q, cu maxim3 linii şi 2 coloane, tip double
|
Ca şi variabile simple, variabilele tablou trebuie declarate înainte de utilizare.
Operaţii specifice
- Citirea tablourilor bidimensionale (matricelor)
Citirea elementelor unui tablou nu este posibilă decât prin citirea fiecărui element. De aceea, la fel ca şi în cazul vectorilor operaţia de citire a matricelor impune folosirea a două secvenţe ciclice suprapuse. Acestea corespund indicilor liniei (i), respectiv coloanei (j).
Pentru a citi elementele unei matrice avem nevoie de un indice pentru linii i şi unul pentru coloane j. Trebuie specificat că m reprezintă numărul de linii al matricei, iar n numărul de coloane.
Astfel citirea se realizează în trei etape:
a. se citeşte numărul de linii;
b. se citeşte numărul de coloane;
c. se citesc pe rând toate componentele.
Exemplu în Turbo Pascal:
var a: array[1..5][1..5] of integer;
m,n, i, j: integer;
Write (’Numărul de linii’);
readln(n);
write(’Numărul de coloane’);
readln(m);
for i := 1 to n do
for j:=1 to m do
begin
write(’Componenta=’);
readln(a[i,j]);
end;
- Afişarea matricelor se face componentă cu componentă.
For i:= 1 to n do
For j:=1 to m do
Write(a[i,j], ’ ’);
Operaţii aritmetice
- Adunare, scădere
Pentru a aduna/ scădea două matrice condiţia care trebuie respectată este că dimensiunea celor doua matrice să fie aceeaşi. Prin dimensiunea unei matrice înţelegem numărul de linii şi de coloane pe care aceasta le are. În aceste condiţii adunarea/scăderea matricelor se face termen cu termen.
Pentru i:=1 pana la n
Pentru j:= 1 pana la n
Sfârşit pentru
Sfârşit pentru
C[i,j]:= 0
Pentru i:=1 pana la n
Pentru j:= 1 pana la n
C[i,j]:= A[i,j] + B[i,j]
Sfârşit pentru
Sfârşit pentru
- înmulţire
Înmulţirea matricelor cu un scalar real se realizează pe acelaşi principiu de calcul ca şi adunarea matricilor: Se înmulţeşte primul element al matricei cu scalarul real dorit.
Pentru i:=1 până la n
Pentru j:= 1 până la n
C[i,j]:= 0;
Sfârşit pentru
Sfârşit pentru
Pentru i:=1 până la n
Pentru j:= 1 până la n
C[i,j]:= nr*A[i,j]
Sfârşit pentru
Sfârşit pentru
Înmulţirea matricilor
După cum se cunoaşte din algebra elementară operaţia de înmulţire a doua matrice se realizează prin procedeul “linii prin coloane”. Există o singură restricţie asupra celor doua matrice ce se înmulţesc, legată de numărul de linii şi coloane pe care le au cele două matrice: adică numărul de coloane a primei matrice să fie egal cu numărul de linii a celei de a doua matrice.
- Calculul determinantului unei matrice pătratice
Determinantul unei matrice pătratice (matrice cu număr egal de linii şi coloane) este un număr ce se asociază matricei A, de dimensiune n.
- Inversarea matricilor
Operaţiunea de inversare a matricilor se poate aplica doar matricilor pătratice nesingulare, adică cu determinantul diferit de zero.
Utilitate
Cu ajutorul matricei (de adiacenţă) se pot reprezenta grafurile. Grafurile sunt reprezentări sub forma unor scheme a unor obiecte abstracte cu ajutorul cărora se pot modela diferite realităţi concrete.
Matricea de adiacenţă este o matrice pătratică, linia şi coloana i corespunzând vârfului i al grafului.
Elementele matricei de adiacenţă se definesc astfel:
Pentru graful reprezentat mai sus, matricea de adiacenţă este:
Sisteme de ecuaţii
Prin sistem de ecuaţii înţelegem un sistem de ecuaţii polinomiale liniare cu număr egal de necunoscute şi ecuaţii în care determinantul asociat sistemului este diferit de zero.
Un astfel de sistem de ecuaţii poate privit şi sub forma lui matriceală:
A X = B
unde
A este matricea sistemului formată din coeficienţii necunoscutelor
X reprezintă vectorul necunoscutelor
B este coloana termenilor liberi
Cu aceste notaţii, soluţia sistemului se poate exprima matriceal:
X = A-1 B prin înmulţirea ecuaţiei la stânga cu inversa matricei A.
Vectorul necunoscutelor se obţine astfel prin înmulţirea inversei matricei sistemului cu coloana termenilor liberi, în această ordine. Ordinea acestor operaţii este esenţială întrucât înmulţirea matricilor nu este comutativa.
Sugestii metodologice
UNDE PREDĂM? Conţinutul poate fi predat în:
- laboratorul de informatică
- sală de clasă dotată cu video-proiector
CUM PREDĂM?
Metode:
Profesorul defineşte noţiunile legate de tablou bidimensional: definirea, sintaxa, operaţiile specifice.
Profesorul propune ca exemplu un program care citeşte elementele unei matrice.
Se recomandă utilizarea calculatoarelor pentru activităţile de fixare a noilor cunoştinţe.
Ca materiale de evaluare se pot folosi:
-
Probe orale, scrise şi practice
|
Dostları ilə paylaş: |