Elbląg 28-02-2003
Laboratorium z Badań Operacyjnych
Sprawozdanie wykonał Dawid Labuda
I rok IIS Gr.V
Na zajęciach które odbyły się 28.03.2003 rozwiązywaliśmy zadanie według metody iteracji prostej Gaussa-Jordana.
Metoda ta służy do rozwiązywania układów równań oraz znajdywania macierzy odwrotnej do danej.
Przykład:
Dany jest układ trzech równań:
0.6602x+0.312y+0.3093z=0.3704
0.3420x+0.5341y+0.8385z=0.7027
0.2897x+0.7271y+0.5681z=0.5466
Tworzymy macierz A z współczynników stojących przy niewiadomych,
A =
0.6602 0.3412 0.3093
0.3420 0.5341 0.8385
0.2897 0.7271 0.5681
a następnie wektor b z wyrazów wolnych.
b =
0.3704
0.7027
0.5466
Łączymy je tworząc jedną macierz.
Ab=[A b]
Ab =
0.6602 0.3412 0.3093 0.3704
0.3420 0.5341 0.8385 0.7027
0.2897 0.7271 0.5681 0.5466
Następnie musimy doprowadzić do tego by macierz A stała się macierzą jedynkową, wówczas wektor b będzie naszym rozwiązaniem.
Do postaci jedynkowej sprowadzamy macierz stosując następujący algorytm:
1.Uzyskujemy jedynkę w pierwszym wierszu i pierwszej kolumnie dzieląc cały pierwszy wiersz przez wyraz stojący w pierwszym wierszu i pierwszej kolumnie.
Ab(1,:)=Ab(1,:)/Ab(1,1)
Ab =
1.0000 0.5168 0.4685 0.5610
0.3420 0.5341 0.8385 0.7027
0.2897 0.7271 0.5681 0.5466
2. Zerujemy drugi wyraz pierwszej kolumny odejmując od wiersza drugiego iloczyn pierwszego wiersza i elementu stojącego w drugim wierszu i pierwszej kolumnie.
Ab(2,:)=Ab(2,:)-Ab(1,:)*Ab(2,1)
Ab =
1.0000 0.5168 0.4685 0.5610
0 0.3574 0.6783 0.5109
0.2897 0.7271 0.5681 0.5466
3. Powtarzamy operacje 2 dla wszystkich wierszy pierwszej kolumny.
Ab(3,:)=Ab(3,:)-Ab(1,:)*Ab(3,1)
Ab =
1.0000 0.5168 0.4685 0.5610
0 0.3574 0.6783 0.5109
0 0.5774 0.4323 0.3840
4. Powtarzamy kroi 1-3 do czasu uzyskania macierzy jednostkowej.
Ab(2,:)=Ab(2,:)/Ab(2,2)
Ab =
1.0000 0.5168 0.4685 0.5610
0 1.0000 1.8981 1.4296
0 0.5774 0.4323 0.3840
Ab(1,:)=Ab(1,:)-Ab(2,:)*Ab(1,2)
Ab =
1.0000 0 -0.5124 -0.1778
0 1.0000 1.8981 1.4296
0 0.5774 0.4323 0.3840
Ab(3,:)=Ab(3,:)-Ab(2,:)*Ab(3,2)
Ab =
1.0000 0 -0.5124 -0.1778
0 1.0000 1.8981 1.4296
0 0 -0.6636 -0.4414
Ab(3,:)=Ab(3,:)/Ab(3,3)
Ab =
1.0000 0 -0.5124 -0.1778
0 1.0000 1.8981 1.4296
0 0 1.0000 0.6652
Ab(1,:)=Ab(1,:)-Ab(3,:)*Ab(1,3)
Ab =
1.0000 0 0 0.1631
0 1.0000 1.8981 1.4296
0 0 1.0000 0.6652
Ab(2,:)=Ab(2,:)-Ab(3,:)*Ab(2,3)
Ab =
1.0000 0 0 0.1631
0 1.0000 0 0.1670
0 0 1.0000 0.6652
Metoda ta nie zadziała jeśli gdzieś na przekątnej macierzy A znajduje się zero, żeby temu zapobiec należy przestawić wiersze połączonej macierzy Ab tak by nie było zer na przekątnej.
Aby uzyskać macierz odwrotną do danej postępujemy w ten sam sposób tylko tworząc macierz połączoną zamiast wektora wpisujmy macierz jedynkową.