Zapis macierzowy gdzie

Poszukujemy rozwiązując równań z niewiadomymi

Dokładne:

wyznaczniki Cramera

Eliminacja Gaussa

Metoda Gaussa-Jordana

Metoda Choleskiego

Iteracyjne (przybliżone):

Metoda Jacobiego

Metoda Gausa-Seidla

Metoda eliminacji Gaussa polega na sprowadzeniu układu równań do postaci zawierającej mnożenie macierzy trójkątnej

wówczas
ogólnie oraz dla

Sprowadzenie macierzy do postaci trójkątnej - eliminacja kolumn.

Mnożymy pierwsze równanie przez i odejmujemy od -tego równania

Po wyeliminowaniu pierwszej kolumny

gdzie

Po krokach eliminujących kolejne kolumny

Wektor dla wygody dołączamy jako kolumnę do macierzy , tj.

Eliminacja -tej kolumny (gdzie )

Rozwiązanie

W eliminacji Gaussa musimy zapewnić aby

Również gdy to mogą pojawić się istotne błędy numeryczne

Wybór elementu głównego (pivoting): w -tym kroku wybieramy element dla i zamieniamy kolumnę w której on występuje z kolumną oraz wiersz w którym on występuje z wierszem . Po czym kontynuujemy eliminację kolejnej kolumny.

Macierze w języku C

// deklaracja tablicy 2-wymiarowej double A[4][3]; for(int i=0; i<4; i++) { for(int j=0; j<3; j++) { A[i][j] = rand(); } }

Wypisywanie zawartości macierzy

#define MAX 100 typedef double matrix[MAX][MAX]; void print_matrix(matrix A, int w, int k) { printf("\nMacierz %dx%x\n", w, k); for(int i=0; i< w;i++) { for(int j=0; j< k; j++) printf(" %5.1lf", A[i][j]); printf("\n"); } }
k = 0; // numer kroku (eliminacja pierwszej kolumny) i = k + 1; // numer wiersza z eliminowanym elementem for(j=k+1; j<nk; j++) { A[i][j] = A[i][j] - A[i][k] * A[k][j] / A[k][k]; } A[i][k] = 0.0; // znamy wynik, wiec nie obliczamy A[i][k]

Przykładowy kod gauss_elim.c

Napisz program, który korzystając z eliminacji Gaussa z wyborem elementu głównego rozwiąże układ równań

Ćw. 1

Wiedząc, że napisz program, który wykorzystując eliminację Gaussa wyznaczy macierz odwrotną dowolnej (podanej przez użytkownika) macierzy kwadratowej . Rozwiązanie zadania sprowadza się do rozwiązanie układów równań, gdzie wektorem wyrazów wolnych jest wektor posiadający na -tej pozycji (kolumna macierzy jednostkowej) a rozwiązaniem jest -ta kolumna macierzy odwrotnej.