Strona główna

1. Metoda Gaussa obliczania macierzy odwrotnej


Pobieranie 19.23 Kb.
Data18.06.2016
Rozmiar19.23 Kb.

1. Metoda Gaussa obliczania macierzy odwrotnej


Aby obliczyć macierz odwrotną macierzy nieosobliwej o stopniu n należy, za pomocą operacji elementarnych wyłącznie na wierszach, sprowadzić macierz blokową do postaci . Powstała macierz B jest szukaną macierzą odwrotną do macierzy A. Symbolicznie można zapisać:

Macierz odwracalna (albo macierz nieosobliwa) to taka macierz kwadratowa, do której istnieje macierz odwrotna.

Warunkiem koniecznym i wystarczającym istnienia macierzy odwrotnej do zadanej macierzy (rzeczywistej lub zespolonej) A jest:





1. 1. Przykład zastosowania metody Gaussa obliczania macierzy odwrotnej


Wyjściowa macierz:

Jej wyznacznik jest równy 2, czyli macierz odwrotna istnieje. Macierz blokowa ma postać:

Musimy doprowadzić do tego aby w dwóch pierwszych kolumnach powstała macierz jednostkowa I. Robimy to wykonując operacje elementarne na wierszach, korzystając ze schematu algorytmu podanego w następnym rozdziale (kolejno: odejmując wielokrotność 1. wiersza od 2. wiersza, mnożąc 2. wiersz przez 7/2 oraz dzieląc 1. wiersz przez 7, odejmując wielokrotność 2. wiersza od 1. wiersza) dostaje się postać :

Zatem macierzą odwrotną do macierzy jest macierz:

2. Schemat napisanego algorytmu:


wyswietl_formatke_do_wpisania_wymiaru_macierzy

wygeneruj_losowa_macierz_o_podanych_wymiarach

//można ręcznie wyedytować pozycje tej macierzy.

//można również zmieniać wymiar macierzy

odwróć_macierz_metoda_eliminacji_gaussa

wyswietl_wynik
Odwracanie macierzy wygląda następująco – algorytm

(funkcja odwróć_macierz_metoda_eliminacji_gaussa):



  1. poniższe instrukcje wykonujemy dla wszystkich wierszy, czyli dla k = 1, 2,..., n,

  2. element musi mieć wartość 1, więc wszystkie elementy wiersza k dzielimy przez (o ile ),

, dla j = 1, 2, ..., n

c)      teraz, gdy trzeba wyzerować współczynniki w pozostałych miejscach macierzy, obliczeń dokonuje się wg wzoru:



,

dla i = 1, 2, ..., n, , j = 1, 2, ..., n

d) proces kontynuujemy dla kolejnych k,

e) Zgodnie z metodą eliminacji Gaussa uzyskujemy m. odwr. A-1



2.1. Kod odpowiedzialny za odwrócenie macierzy:

procedure odwrocMacierz;

var

i,j,k:Integer;



tmpD:Double;

begin
//do macierzy odwracanej zawartej w tablicy macierz[i][j] dopisujemy macierz jednostkową I

for i:=0 to rozmiar-1 do

for j:=rozmiar to 2*rozmiar-1 do

begin

if j mod rozmiar = i then



macierz[i][j]:=1

else


macierz[i][j]:=0;

end;


//dzielimy macierz przez elementy macierz[i][i] (krok b algorytmu)

for i:=0 to rozmiar-1 do

begin

tmpD:=macierz[i][i];



if tmpD<>0 then

for j:=0 to 2*rozmiar-1 do

macierz[i][j]:=macierz[i][j]/tmpD

else


begin

MessageDlg('Nie można odwrócic macierzy tą metodą. W trakcie obliczen wystapilo 0 na przekątnej', mtInformation,[mbOk],0);

end;
//od macierzy odejmujemy odpowiednie elementy, aby wyzerować elementy poza przekątnymi macierzy (krok c algorytmu)

for k:=0 to rozmiar-1 do

begin

tmpD:=macierz[k][i];



if k<>i then

for j:=0 to 2*rozmiar-1 do

macierz[k][j]:=macierz[k][j]-(tmpD*macierz[i][j]);

end;


end;

end;


Formatki wykorzystane w programie (interfejs użytkownika):

  1. Formatka do wpisywania wymiaru macierzy odwracanej (Rys. 1).



Rys. 1. Formatka do wpisywania wymiaru macierzy odwracanej metodą Gaussa

W formatce tej wpisujemy wymiar macierzy kwadratowej, która będzie odwracana metodą Gaussa. Na początek wygenerowana będzie macierz kwadratowa o podanym wymiarze zawierająca losowe elementy z przedziału (0,1). W kolejnej formatce zostaną one wyświetlone i będzie je można wyedytować.



2) Formatka główna – zawierająca interfejs do wpisywania i wyświetlania danych (Rys. 2).



Rys. 2. Formatka zawierająca interfejs do wpisywania i wyświetlania danych po odwróceniu macierzy (zawierająca wyniki z obliczeń)

W formatce tej w górnej części wyświetlona jest macierz, która będzie odwracana. Zawiera ona pola edycji, które można ręcznie edytować.



W środkowej części formatki znajdują się przyciski:

  • „Odwróć macierz metodą eliminacji Gaussa” – po naciśnięciu tego przycisku wykonywane są obliczenia, odwracana jest macierz metodą eliminacji Gaussa.

  • „Zmień wymiar macierzy” – po naciśnięciu tego przycisku wyświetla się formatka do wpisywania wymiaru macierzy i można zmienić wymiar macierzy kwadratowej, która będzie odwracana. Elementy macierzy ponownie generowane są losowo.

W dolnej części formatki w polu typu Memo wypisywane są wyniki obliczeń. Kolejno:

  • Macierz odwracana + macierz jednostkowa – wypisywana jest macierz wejściowa uzupełniona macierzą jednostkową o podanym wymiarze .

  • Wynikiwypisana jest macierz , która jest wynikiem obliczeń metodą eliminacji Gaussa.

  • Macierz odwrócona – wypisana jest macierz odwrócona.


©snauka.pl 2016
wyślij wiadomość