diagonalized matrix

Transkrypt

diagonalized matrix
MACIERZE
WYKŁAD 9 (24 KWIECIEŃ 2014)
MICHALINA BRZOZOWSKA
LUIZA OLKOWICZ
SPIS TREŚCI
 Podstawowe pojęcia dotyczące macierzy
 Reprezentacja macierzy w pamięci komputera
 Mnożenie macierzy przez skalar
 Dodawanie macierzy
PODSTAWOWE
POJĘCIA
Macierz (ang. matrix) jest prostokątną tablicą liczb, np. taką jak
poniżej:
3 6 3
1 7 2
4 2 0
3 3 1
Liczby zawarte w macierzy będziemy nazywali elementami (ang.
elements). Elementy macierzy ułożone są w
poziome wiersze (ang. rows) i w pionowe kolumny (ang.
columns). Rozmiar macierzy (ang. matrix size) określony jest
przez liczbę wierszy i kolumn.
Zatem zapis:
Am × n
oznacza macierz A zawierającą m wierszy i n kolumn. Nasza
przykładowa macierz posiada wymiar 4 × 3 (4 wiersze na 3
kolumny).
Elementy macierzy posiadają dwa indeksy określające kolejno
wiersz i kolumnę, w których dany element występuje.
Dla przykładowej macierzy A4
następujące:
a1,1 a1,2 a1,3 a1,4
a2,1 a2,2 a2,3 a2,4
a3,1 a3,2 a3,3 a3,4
×
3
indeksy elementów są
Pierwszy indeks będziemy nazywali indeksem wierszowym (ang. row
index). Drugi będziemy nazywali indeksem kolumnowym (ang. column
index). Oczywiście zamiast rozpisywania całej macierzy matematycy stosują
różne skróty, np. takie:
A = [ai,j]m × n
Zapis ten oznacza, iż macierz A składa się z elementów ai,j, których indeksy
przebiegają zakresy: i = 1,2,...,m oraz j = 1,2,...,n.
Przekątną główną macierzy (ang. main diagonal) tworzą elementy o
równych indeksach wierszowych i kolumnowych, np:
Macierz nazywamy wektorem wierszowym (ang. row vector), jeśli składa
się tylko z jednego wiersza, np.
Macierz nazywamy wektorem kolumnowym (ang. column vector), jeśli
składa się tylko z jednej kolumny, np:
MACIERZ KWADRATOWA
Macierz nazywamy kwadratową (ang. square matrix), jeśli posiada tyle samo
wierszy co kolumn, np:
Stopień macierzy (ang. matrix order) kwadratowej określa liczba jej wierszy lub
kolumn. Powyższa macierz jest stopnia 4.
Macierz nie będąca macierzą kwadratową jest macierzą prostokątną (ang.
rectangular matrix).
MACIERZ DIAGONALNA
Macierz nazywamy diagonalną (ang. diagonal matrix), jeśli jest macierzą
kwadratową i wszystkie elementy jej głównej przekątnej są niezerowe, a
pozostałe elementy mają wartość równą zero, np:
MACIERZ JEDNOSTKOWA
Macierz nazywamy jednostkową (ang. identity matrix) i oznaczamy literą I,
jeśli jest macierzą diagonalną, a wszystkie niezerowe elementy są równe 1,
np:
MACIERZ ZEROWA
Macierz nazywamy zerową (ang. zero matrix lub null matrix) i oznaczamy
literą grecką Θ (teta), jeśli wszystkie jej elementy są równe 0, np:
MACIERZ TRÓJKĄTNA
Macierz nazywamy trójkątną (ang. triangular matrix), jeśli jest macierzą
kwadratową i elementy zerowe znajdują się tylko ponad główną
przekątną (macierz trójkątna dolna L – ang. lower triangular matrix) lub tylko
pod główną przekątną (macierz trójkątna górna U – ang. upper triangular
matrix). Na przykład:
REPREZENTACJA MACIERZY
W PAMIĘCI KOMPUTERA
1. MACIERZE O ZADANYM WYMIARZE
Macierze mogą być reprezentowane w pamięci komputera przez tablice
dwuwymiarowe. Rozwiązanie to przydaje się w przypadku, gdy z góry znany
jest rozmiar macierzy.
Deklarację tablicy umieszczamy w języku C++ na liście deklaracji zmiennych.
Składnia jest następująca:
Poniżej podajemy kilka przykładów deklaracji tablic w C++:
Ze względu na specyfikę języka C++ indeksy rozpoczynają się od 0 a nie od 1.
Dostęp do elementów macierzy wymaga dwóch indeksów – indeksu
wierszowego oraz indeksu kolumnowego. Poniższy przykład inicjuje główną
przekątną macierzy a:
2. MACIERZE DYNAMICZNE
Rozwiązanie opiera się na utworzeniu dynamicznej tablicy wskaźników
o m elementach (m – liczba wierszy macierzy). Następnie tworzymy
dynamicznie m tablic n elementowych (n – liczba kolumn macierzy) i ich adresy
przypisujemy poszczególnym wskaźnikom z pierwszej tablicy dynamicznej. Ze
względu na specyfikę tablic dynamicznych indeksy muszą jedynie rozpoczynać
się od wartości 0, a nie 1. Pierwsza tablica jest tablicą wskaźników wierszy.
Kolejne elementy tej tablicy wskazują kolejne wiersze macierzy.
PROGRAM
Program odczytuje liczbę wierszy i kolumn macierzy, tworzy tablicę
dynamiczną, którą wypełnia liczbami 0, gdy suma indeksów wierszowego i
kolumnowego jest parzysta i 1, gdy suma ta jest nieparzysta. Wynikowa
macierz zostaje wyświetlona.
3. MACIERZE DYNAMICZNE O DYNAMICZNYCH ROZMIARACH
Czasami występuje konieczność zmiany rozmiaru macierzy (np. gdy
usuwamy lub dodajemy wiersz/kolumnę). Istnieją wtedy dwa rozwiązania:
1) Tworzymy macierz o maksymalnym rozmiarze mm x nn. Wewnątrz tej
macierzy operujemy na podmacierzy o rozmiarze m x n,
gdzie m ≤ mm i n ≤ nn. Wymiary m i n możemy dowolnie zmieniać, dopóki
są zachowane te dwie nierówności. Rozwiązanie to jest nieefektywne
pamięciowo, lecz szybkie w działaniu.
2) Dla macierzy m x n tworzymy macierz nieco większą o
rozmiarze mm x nn, gdzie mm = m + z, nn = n + z. Tak utworzona macierz
posiada w zapasie z wierszy oraz kolumn. Zatem m i n mogą odpowiednio
rosnąć do momentu, aż zostanie spełniona jedna z nierówności:
m > mm lub n > nn.
Gdy tak się stanie, tworzymy nową macierz o rozmiarze (m + z) x (n + z).
Przenosimy do niej zawartość starej macierzy. Starą macierz usuwamy z
pamięci i przypisujemy jej nową macierz. Wymiarymm i nn odpowiednio
uaktualniamy: mm = m + z, nn = n + z.
Podobnie możemy postępować przy zmniejszaniu rozmiaru macierzy.
Jeśli będzie spełniona jedna z nierówności:
m ≤ mm - 2z lub n ≤ nn - 2z,
to macierz możemy zmniejszyć. Tworzymy nową macierz o rozmiarze
(m + z) x (n + z). Przenosimy do niej zawartość starej macierzy, a starą
macierz usuwamy z pamięci. Starej macierzy przypisujemy nową
macierz i uaktualniamy wymiary mm i nn.
Możesz zastanawiać się, dlaczego w powyższych nierównościach
pojawiło się 2z zamiast z. Powód jest bardzo prosty – po zmniejszeniu
rozmiaru macierzy wciąż chcemy posiadać z wierszy i kolumn zapasu.
PROGRAM
PROGRAM
4. ODCZYT MACIERZY ZE STANDARDOWEGO WEJŚCIA
Przy odczycie macierzy będziemy stosowali następujący format danych
wejściowych:
 Dla macierzy kwadratowej pierwsza liczba określa jej rozmiar n.
Następne n2 liczb określa elementy macierzy podawane kolejnymi
wierszami. Na przykład:
 Dla macierzy prostokątnej pierwsze dwie liczby określają kolejno m –
liczbę wierszy i n – liczbę kolumn macierzy. Następne m × n liczb
określa m kolejnych wierszy po n elementów w każdym. Na przykład:
PROGRAM
Program odczytuje dane dla macierzy ze standardowego wejścia, tworzy
dynamicznie macierz, wprowadza do niej odczytane liczby i wyświetla jej
zawartość.
MNOŻENIE MACIERZY PRZEZ
SKALAR
PROBLEM:
Pomnożyć macierz Am × n przez skalar c.
Operacja mnożenia macierzy Am × n przez skalar c polega na
pomnożeniu przez liczbę c wszystkich elementów macierzy.
ALGORYTM MNOŻENIA MACIERZY PRZEZ SKALAR
PROGRAM
Program generuje macierz o losowej liczbie wierszy (od 2 do 9) i losowej liczbie
kolumn (od 2 do 9) oraz losowy skalar z zakresu od -10 do 10. Macierz zostaje
wypełniona losowymi liczbami (od 0 do 99). Program wyświetla m,n, macierz
wejściową, c. Następnie mnoży macierz przez skalar i wyświetla macierz
wynikową.
DODAWANIE MACIERZY
PROBLEM:
Dodać macierz Bm × n do macierzy Am × n i wynik umieścić w macierzy Cm x n.
Operacja dodawania dwóch macierzy polega na dodawaniu ich elementów
leżących w tych samych wierszach i kolumnach. Wynika z tego oczywisty wniosek,
iż dodawane macierze muszą posiadać takie same wymiary.
ALGORYTM DODAWANIA MACIERZY:
Start
Wprowadź macierze A i B o wymiarach n x m
i:=0
Tak
j:=0
i<n
Nie
wypisz macierz C
i:=i+1
C[i][j]:=A[i][j]+B[i][j]
j:=j+1
Nie
j<m
Tak
Koniec
PROGRAM
Program generuje trzy macierze o losowej lecz równej liczbie wierszy (od 2 do
5) i losowej lecz równej liczbie kolumn (od 2 do 5). Dwie pierwsze macierze
zostają wypełnione losowymi wartościami od 0 do 99 i wyświetlone. Następnie
program oblicza w trzeciej macierzy ich sumę i wyświetla wynik.

Podobne dokumenty