Metoda iteracji prostej - układ sprzeczny lub nieoznaczony, wykrywanie sytuacji

0

Witam. Mam takie pytanie. Czy istnieje jakaś możliwość sprawdzenia czy układ N równań liniowych z N niewiadomymi jest nieoznaczony albo sprzeczny? Oprócz liczenia wyznacznika, bo jeśli wyznacznik jest różny od zera to układ ma jedno rozwiązanie, w przeciwnym razie jest nieoznaczony lub sprzeczny.
Jak wykryć sytuację, kiedy jest on sprzeczny albo nieoznaczony rozwiązując go metodą interacji prostej? I w ogóle jakie założenia musi spełniać układ, żeby otrzymać poprawne rozwiązanie?
Z góry dziękuję za odpowiedź ;)

1

załóżmy, że równania które rozwiązujesz mają postać macierzową (x - niewiadome, A - macierz, y - wektor):
Ax = y

możesz wyszukać wierszy liniowo zależnych macierzy A, a następnie sprawdzić czy ich wyniki są też proporcjonalnie liniowo zależne, jeśli są to jest nieoznaczony, jeśli nie są to układ jest sprzeczny.

Na przykład dla układu równań:

a+2b+c = 5
2a+b+c = 7
4a+8b+4c = 15

macierz A będzie miała postać:

    1 2 1
A = 2 1 1
    4 8 4
    a
x = b
    c
    5
y = 7
    15

wiersze 1 i 3 macierzy A są liniowo zależne: w3 = w14, zatem:
układ jest nieoznaczony jeśli:
y3 = y1
4
lub sprzeczny jeśli warunek nie jest spełniony. W tym wypadku jest sprzeczny

0

Napisałem coś takiego i nie działa, nie wiem gdzie jest błąd :(

 
int czyoznaczony(int n, double x[][100], double y[])
{ int a=1 ;
    for(i=0;i<n-2;i++){
        for(k=1;k<n-1;k++){
            for(j=0;j<n;j++){
                if(x[i][j]/x[k][j]==x[i+1][j+1]/x[k+1][j+1] && x[i][j]/x[k][j]==y[i]/y[k]) { a=0; break ;}
                else a=1;
            } if(a==0)break;

            }if(a==0)break;
    }return a;}

1 użytkowników online, w tym zalogowanych: 0, gości: 1