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ź ;)
0
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 = y14
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;}