Metoda eliminacji Gaussa Rysunek 3. Rysunek 4. Rozpoczynamy od pierwszego wiersza macierzy opisującej nasz układ równań (patrz Rys.3). Zakładając, że element a 11 jest niezerowy (jeśli jest, to niezbędny będzie wybór elementu głównego, o którym niżej) dzielimy wszystkie elementy pierwszego wiersza (wraz z wyrazem wolnym) przez a 11. W efekcie uzyskujemy wynik, jak na Rys.4. Na przekątnej części kwadratowej (zamiast a 11 ) pojawia się jedynka a pozostałe liczby z pierwszego wiersza, oznaczone tu jako w 1j zmieniają wartość. Są to już elementy docelowej macierzy, zaznaczono je więc na czerwono. Zmieniła się też wartość w kolumnie wyrazów wolnych, oznaczona teraz jako z 1. Wszystkie elementy pierwszego wiersza (te czerwone) nie zmienią już swojej wartości.
Rysunek 5. Teraz, wykorzystując ten nowo otrzymany pierwszy wiersz będziemy "produkowali" zera w całej kolumnie poniżej jedynki. Aby uzyskać zero bezpośrednio pod jedynką (w drugim wierszu, pierwszej kolumnie) odejmujemy od całego drugiego wiersza wiersz pierwszy, pomnożony przez a 21. W efekcie (patrz Rys.5.) pod jedynką pojawi się zero a pozostałe liczby w drugim wierszu (y xx i y x ) zmienią swoje wartości. Nie będą to jednak wartości docelowe tylko wyniki pośrednie. Dopiero "produkowanie" jedynki zamiast elementu y 22 przekształci wiersz drugi do postaci docelowej. Rysunek 6. Podobnie postępujemy z wierszem trzecim. Odejmujemy od niego pierwszy wiersz pomnożony przez a 31, otrzymując wynik jak na Rys.6. Pojawia się kolejne zero w kolumnie pierwszej i kolejne tymczasowe współczynniki y ij na pozostałych miejscach w wierszu trzecim.
Rysunek 7. Dalej postępujemy tak samo z wierszem czwartym, piątym itd. aż do wiersza n-tego. W wyniku otrzymamy układ jak na Rysunku 7. Kolumna pierwsza składa się z jedynki na przekątnej (w miejscu elementu a 11 ) i z samych zer w pozostałych wierszach. W ten sposób pierwszy wiersz i pierwsza kolumna otrzymały już postać docelową i w dalszych rachunkach nie będą już zmieniane. Zakończył się też pierwszy "krok" metody eliminacji Gaussa. Rysunek 9.
Rysunek 8. W następnym "kroku" przesuwamy się w dół i w prawo wzdłuż przekątnej, na miejsce elementu a 22, który teraz ma wartość y 22. Dzielimy cały wiersz przez y 22 i "produkujemy" kolejną jedynkę na przekątnej oraz docelowe wartości współczynników w ij w prawo od niej. Oczywiście optymalnie napisany program nie będzie dzielił elementów zerowych (w lewo od przekątnej), gdyż nie zmienia to ich wartości i jest zwykłym marnowaniem czasu. Wynik tej operacji widzimy na Rysunku 8. Dalej, jak w poprzednik "kroku", "produkujemy" zero w kolumnie drugiej wierszu trzecim, odejmując od wiersza trzeciego wiersz drugi, cały pomnożony przez y 32. Wynik widać na Rysunku 9. Rysunek 10.
Rysunek 11. Postępujemy tak dalej z wierszem czwartym, piątym itd., otrzymując zera w całej kolumnie drugiej pod przekątną. Wynik widać na Rysunku 10. Kończymy w ten sposób drugi "krok" metody eliminacji Gaussa a w kolejnych "krokach", postępując tak samo, "produkujemy" jedynki na przekątnej części kwadratowej i zera poniżej. W końcu otrzymujemy docelową postać macierzy układu, przedstawioną na Rysunku 11. Opisany przez tę macierz układ daje się rozwiązać wprost "od dołu". Z ostatniego równania mamy x n = z n, potem wyliczamy x n-1 z wiersza poprzedniego itd. Wybór elementu głównego Rysunek 12. Jak wspomnieliśmy wcześniej, w trakcie realizacji metody eliminacji Gaussa wymaga się, by napotykane na przekątnej współczynniki były wszystkie różne od zera, bo musimy przez nie dzielić kolejne wiersze. Może się jednak oczywiście zdarzyć, że napotkany w kolejnym "kroku" metody współczynnik "przekątniowy" jest równy zeru! Nie oznacza to wcale, że układu nie umiemy rozwiązać! Przykład takiej sytuacji dla drugiego "kroku" metody ilustruje Rysunek 12. W tym momencie pojawia się konieczność modyfikacji metody eliminacji Gaussa o wybór elementu głównego. Formalnie wystarczy, by wśród elementów drugiej kolumny poniżej przekątnej znaleźć przynajmniej jeden element niezerowy i zamienić miejscami odpowiednie wiersze. My dodatkowo poprawimy dokładność otrzymanego rozwiązania wyszukując każdorazowo wśród elementów poniżej przekątnej współczynnika największego co do modułu i zamieniając odpowiednie wiersze, oczywiście wraz z kolumną wyrazów wolnych (optymalnie napisany program nie zamienia zer, bo po
co). Na Rysunku 12 pokazana jest sytuacja, gdy największy co do modułu współczynnik znaleziono w wierszu czwartym. Postępować tak będziemy zawsze, nie tylko gdy napotkamy element zerowy na przekątnej. W ten sposób automatycznie znika zagrożenie dzielenia przez zero a dodatkowo otrzymane rozwiązanie jest dokładniejsze, gdyż unikamy szkodliwego ze względów numerycznych dzielenia przez małe liczby. Taka metoda postępowania nazywa się częściowym wyborem elementu głównego. Pełny wybór realizowalibyśmy wyszukując współczynnika największego co do modułu nie tylko w kolumnie pod napotkanym zerem ale w całej podmacierzy "w dół i w prawo". Może to jeszcze poprawić dokładność ale jest znacznie bardziej czasochłonne, nie będziemy więc tej metody tu stosować. A co zrobić, gdy wszystkie współczynniki na i poniżej przekątnej są zerami?! Oznacza to po prostu, że dany układ nie posiada jednoznacznego rozwiązania lub jest sprzeczny. Wypisujemy odpowiedni komunikat i kończymy pracę programu. Pełny wybór elementu głównego nic tu nie pomoże.