badania operacyjne, Metoda iteracji prostej Gaussa, Metoda iteracji prostej Gaussa-Jordana


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ą.



Wyszukiwarka