Tablice dwuwymiarowe

W przypadku tablicy jednowymiarowej mieliśmy określoną liczbę elementów n, oznaczanych indeksami od 0 do n - 1. Co stałoby się w sytuacji, gdybyśmy chcieli w jednej tablicy zapisać np. trzy tablice jednowymiarowe? Jest to możliwe – z pomocą przychodzi tablica dwuwymiarowa, którą możemy nazwać tablicą tablic o identycznej długości.

Załóżmy, że mamy wcześniej wspomniane trzy tablice o liczbie elementów równej 5. Wówczas rozmiar naszej tablicy dwuwymiarowej będzie określany przez liczbę 3 (liczba tablic jednowymiarowych) oraz 5 (liczba elementów w tych tablicach). Naszą tablicę można również opisać jako tabelę o trzech wierszach i pięciu kolumnach, przy czym każdy z wierszy jest niejako tablicą jednowymiarową.

Macierze

Matematycznym przykładem tablic dwuwymiarowych są macierze – prostokątne tablice liczb. Ich rozmiary, nazywane również wymiarem, określamy przez liczbę wierszy oraz liczbę kolumn , a więc identycznie jak w przypadku tablic. Przybliżymy sobie zatem podstawowe działania matematyczne, przeprowadzane na macierzach, a następnie napiszemy prosty program realizujący niektóre z nich.

Dodawanie

Dodawanie macierzy jest intuicyjnym działaniem. Polega ono na dodaniu do siebie liczb znajdujących się na tych samych pozycjach w dodawanych macierzach. W wyniku przeprowadzonych operacji otrzymamy nową, wypełnioną sumami macierz.

[ 5 2 7 3 1 4 ] + [ 5 1 1 11 3 2 ] = [ 0 3 8 14 4 6 ]

Możemy dodawać więcej niż dwie macierze.

[ 1 3 6 2 ] + [ 0 2 5 5 ] + [ 1 0 3 9 ] = [ 0 5 14 16 ]
Ważne!

Możemy dodawać tylko macierze o tych samych wymiarach!

Odejmowanie

Odejmowanie wykonujemy analogicznie do dodawania – obliczamy różnicę między liczbami znajdującymi się na tych samych pozycjach w odejmowanych od siebie macierzach.

[ 4 2 1 4 8 1 ] [ 5 3 6 2 3 0 ] = [ 1 1 5 2 5 1 ]
Ważne!

Możemy odejmować tylko macierze o tych samych wymiarach!

Mnożenie przez liczbę

Iloczyn macierzy i liczby wyliczamy, mnożąc – przez tę liczbę – każdy element rozpatrywanej macierzy.

1 2 · [ 2 6 2 10 2 12 2 18 8 ] = [ 1 3 1 5 1 6 1 9 4 ]

Mnożenie przez macierz

W celu policzenia iloczynu dwóch macierzy należy wymnożyć po kolei wiersze pierwszej macierzy przez kolumny drugiej. Liczba wierszy wynikowej macierzy będzie równa liczbie wierszy pierwszej macierzy. Natomiast liczba kolumn będzie identyczna jak w przypadku drugiej macierzy.

[ 1 3 1 5 2 6 ] [ 7 7 1 2 4 3 ] = [ a b c d ]

Wyliczając liczbę a znajdującą się w pierwszej kolumnie i pierwszym wierszu wynikowej macierzy, sumujemy iloczyny odpowiadających sobie liczb z pierwszego wiersza pierwszej macierzy oraz pierwszej kolumny drugiej macierzy.

a = 1 · 7 + 3 · 1 + 1 · 4 = 14

Analogicznie postępujemy z kolejnymi liczbami b, c, d.

b = 1 · 7 + 3 · 2 + 1 · 3 = 16
c = 5 · 7 + 2 · 1 + 6 · 4 = 61
d = 5 · 7 + 2 · 2 + 6 · 3 = 57

Wstawiamy teraz wyliczone wartości do wynikowej macierzy.

[ 1 3 1 5 2 6 ] [ 7 7 1 2 4 3 ] = [ 14 16 61 57 ]
Ważne!

Mnożenie dwóch macierzy możemy przeprowadzić jedynie w sytuacji, gdy liczba kolumn pierwszej macierzy jest identyczna, jak liczba wierszy drugiej macierzy.

Transponowanie

TransponowanietransponowanieTransponowanie polega na zamianie wierszy macierzy w jej kolumny – pierwszy wiersz staje się pierwszą kolumną, drugi wiersz drugą kolumną itd.

Macierz przekazana do transponowania:

M = [ 1 2 3 4 5 6 ]

Przetransponowana macierz:

M T = [ 1 4 2 5 3 6 ]

Program

Spróbujmy teraz stworzyć pseudokod opisujący operację dodawania i odejmowania macierzy. W tym celu posłużymy się tablicami dwuwymiarowymi. Rozpoczniemy od wczytania wartości dwóch macierzy o wymiarach 3 x 2, a następnie dodamy i odejmiemy je od siebie i wypiszemy uzyskane wyniki. Nasze operacje umieścimy w trzech osobnych funkcjach.

Linia 1. pierwszaMacierz otwórz nawias kwadratowy 1 kropka kropka 3 zamknij nawias kwadratowy otwórz nawias kwadratowy 1 kropka kropka 2 zamknij nawias kwadratowy przecinek drugaMacierz otwórz nawias kwadratowy 1 kropka kropka 3 zamknij nawias kwadratowy otwórz nawias kwadratowy 1 kropka kropka 2 zamknij nawias kwadratowy. Linia 3. funkcja wczytanieMacierzy otwórz nawias okrągły zamknij nawias okrągły dwukropek. Linia 4. dla i znak równości 1 przecinek 2 przecinek 3 wykonuj dwukropek. Linia 5. dla j znak równości 1 przecinek 2 wykonuj dwukropek. Linia 6. wyświetl cudzysłów podaj wartość pozycji otwórz nawias kwadratowy cudzysłów i cudzysłów zamknij nawias kwadratowy otwórz nawias kwadratowy cudzysłów j cudzysłów zamknij nawias kwadratowy dla pierwszej macierzy cudzysłów. Linia 7. wczytaj pierwszaMacierz otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias kwadratowy j zamknij nawias kwadratowy. Linia 8. wyświetl cudzysłów podaj wartość pozycji otwórz nawias kwadratowy cudzysłów i cudzysłów zamknij nawias kwadratowy otwórz nawias kwadratowy cudzysłów j cudzysłów zamknij nawias kwadratowy dla drugiej macierzy cudzysłów. Linia 9. wczytaj drugaMacierz otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias kwadratowy j zamknij nawias kwadratowy. Linia 11. funkcja dodawanie otwórz nawias okrągły macierzSumaJeden otwórz nawias kwadratowy 1 kropka kropka 3 zamknij nawias kwadratowy otwórz nawias kwadratowy 1 kropka kropka 2 zamknij nawias kwadratowy przecinek macierzSumaDwa otwórz nawias kwadratowy 1 kropka kropka 3 zamknij nawias kwadratowy otwórz nawias kwadratowy 1 kropka kropka 2 zamknij nawias kwadratowy zamknij nawias okrągły dwukropek. Linia 12. wyświetl cudzysłów wynik dodawania macierzy dwukropek cudzysłów. Linia 13. dla i znak równości 1 przecinek 2 przecinek 3 wykonuj dwukropek. Linia 14. dla j znak równości 1 przecinek 2 wykonuj dwukropek. Linia 15. wyświetl macierzSumaJeden otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias kwadratowy j zamknij nawias kwadratowy plus macierzSumaDwa otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias kwadratowy j zamknij nawias kwadratowy. Linia 16. koniec linii. Linia 18. funkcja odejmowanie otwórz nawias okrągły macierzMinusJeden otwórz nawias kwadratowy 1 kropka kropka 3 zamknij nawias kwadratowy otwórz nawias kwadratowy 1 kropka kropka 2 zamknij nawias kwadratowy przecinek macierzMinusDwa otwórz nawias kwadratowy 1 kropka kropka 3 zamknij nawias kwadratowy otwórz nawias kwadratowy 1 kropka kropka 2 zamknij nawias kwadratowy zamknij nawias okrągły dwukropek. Linia 19. wyświetl cudzysłów wynik dodawania macierzy dwukropek cudzysłów. Linia 20. dla i znak równości 1 przecinek 2 przecinek 3 wykonuj dwukropek. Linia 21. dla j znak równości 1 przecinek 2 wykonuj dwukropek. Linia 22. wyświetl macierzMinusJeden otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias kwadratowy j zamknij nawias kwadratowy minus macierzMinusDwa otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias kwadratowy j zamknij nawias kwadratowy. Linia 23. koniec linii. Linia 25. wczytanieMacierzy otwórz nawias okrągły zamknij nawias okrągły. Linia 26. dodawanie otwórz nawias okrągły pierwszaMacierz przecinek drugaMacierz zamknij nawias okrągły. Linia 27. odejmowanie otwórz nawias okrągły pierwszaMacierz przecinek drugaMacierz zamknij nawias okrągły.

Tablice wielowymiarowe

Tablice o liczbie wymiarów większej niż 2 są zdecydowanie rzadziej stosowane, ale wciąż możliwe w implementacji. Tablica o n wymiarach, będzie w rzeczywistości jednowymiarową tablicą tablic o liczbie wymiarów n - 1 (tak samo jak tablica dwuwymiarowa jest jednowymiarową tablicą tablic jednowymiarowych).

Słownik

transponowanie
transponowanie

przekształcenie jakiegoś obiektu; w przypadku macierzy transponowanie oznacza zamianę jej wierszy w kolumny