Serwis Edukacyjny
Nauczycieli I-LO

w Tarnowie
obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

Autor artykułu: mgr Jerzy Wałaszek

©2026 mgr Jerzy Wałaszek

W naszym serwisie jest nowszy artykuł o obliczaniu pierwiastków funkcji: "Metody numeryczne".

Układ równań z dwoma niewiadomymi

SPIS TREŚCI
Podrozdziały

Algorytm

Układ równań liniowych z dwoma niewiadomymi ma następującą postać:

Wyrazy a, b, c, ..., f nazywamy współczynnikami (ang. coefficients), a x i y nazywamy niewiadomymi (ang. variables). Rozwiązaniem takiego układu równań są takie wartości x i y, dla których równanie jest prawdziwe (spełnione).

Przykład:

Rozwiązaniem dla poniższego układu równań:

są dwie liczby: x = 1 oraz y = 2, ponieważ:

Układ równań z dwoma niewiadomymi możemy rozwiązać analitycznie. Oto jeden ze sposobów (nie jedyny i nie najlepszy!). Z pierwszego równania wyznaczamy niewiadomą y:

Wyliczonym wyrażeniem zastępujemy niewiadomą y w drugim równaniu i wyliczamy niewiadomą x:

Otrzymany wzór pozwala wyliczyć niewiadomą x. Wyrażenie to wstawiamy w miejsce x w równaniu pierwszym i wyliczamy y:

Otrzymaliśmy wzory, które pozwalają obliczyć wartość niewiadomych dla danego układu równań liniowych:

i

Warunkiem istnienia jednoznacznego rozwiązania układu równań jest niezerowy mianownik w obu wyznaczonych ułamkach. Zatem wyrażenie db - ea musi być różne od zera. Z uwagi na błędy zaokrągleń warunek ten zastąpimy przez:

Jeśli warunek powyższy będzie prawdziwy, to układ równań nie będzie posiadał jednoznacznego rozwiązania (o takich równaniach mówimy, iż są sprzeczne lub liniowo zależne). W przeciwnym razie rozwiązanie takie istnieje i wyliczamy je zgodnie z podanymi wzorami.


do podrozdziału  do strony 

Opis algorytmu

Specyfikacja problemu

Dane wejściowe

a,b,c,d,e,f – współczynniki układu równań, a,b,c,d,e,f ∈ R

Dane wyjściowe

x,y – wartości niewiadomych, x,y ∈ R lub informacja, iż układ równań nie posiada rozwiązania.

Zmienne pomocnicze

ε – dokładność porównania z zerem, ε ∈ R,  ε = 0.0000000001
m – mianownik wspólnego wyrażenia we wzorach na x i y. m ∈ R

Lista kroków

K01: Czytaj a,b,c,d,e,f
K02: m ← db - ea
K03: Jeśli | m | < ε,
to idź do kroku K08
K04:
K05:
K06: Pisz x, y
K07: Zakończ
K08: Pisz "Brak rozwiązania"
K09: Zakończ

Schemat blokowy

 obrazek

Na początku algorytmu odczytujemy kolejne współczynniki układu równań oraz obliczamy mianownik m, który jest wykorzystywany we wzorach na niewiadome x i y. Dzięki temu zaoszczędzimy nieco na obliczeniach.

Sprawdzamy, czy mianownik m jest w dostatecznie bliskim otoczeniu zera. Jeśli tak, to układ równań nie posiada rozwiązania. Wypisujemy to i kończymy algorytm.

W przeciwnym razie obliczamy niewiadome x i y wg wyprowadzonych wzorów i wypisujemy je. Po tej operacji kończymy algorytm.

Zwróć uwagę, iż koncepcyjnie podany algorytm jest identyczny z algorytmem z poprzedniego rozdziału.


do podrozdziału  do strony 

Programy

W celu uruchomienia przykładów zastosuj projekt aplikacji konsoli (ang. Console Application).

C++
// Program rozwiązuje układ
// dwóch równań liniowych
// ax + by + c = 0
// dx + ey + f = 0
//-------------------------
// (C)2006 mgr Jerzy Wałaszek
// I Liceum Ogólnokształcące
// w Tarnowie

#include <iostream>
#include <iomanip>
#include <cmath>
#include <cstdlib>

using namespace std;

int main()
{
  const double EPS = 0.0000000001;

  double   a,b,c,d,e,f,m,x,y;

  cout << setprecision(4)
       << fixed;

  cout <<
  "Rozwiazywanie ukladu rownan liniowych:\n"
  "ax + by + c = 0\n"
  "dx + ey + f = 0\n"
  "--------------------------------------\n"
  "(C)2006 mgr J.Walaszek I LO w Tarnowie\n\n"
  "Wpisz wartosci wspolczynnikow:\n\n";
  cout << "a = "; cin >> a;
  cout << "b = "; cin >> b;
  cout << "c = "; cin >> c;
  cout << "d = "; cin >> d;
  cout << "e = "; cin >> e;
  cout << "f = "; cin >> f;
  cout <<
  "\n--------------------------------------\n"
  "WYNIKI\n\n";

  m = d * b - e * a;

  if(fabs(m) < EPS)
    cout << "Brak rozwiazania\n";
  else
  {
    x = (e * c - f * b) / m;
    y = (f * a - d * c) / m;
    cout << "x = "
         << x
         << "\n\ny = "
         << y << endl;
  }

  cout <<
"\n--------------------------------------\n\n";

  system("pause");
  return 0;
}
Pascal
// Program rozwiązuje układ
// dwóch równań liniowych
// ax + by + c = 0
// dx + ey + f = 0
//-------------------------
// (C)2006 mgr Jerzy Wałaszek
// I Liceum Ogólnokształcące
// w Tarnowie

program mzfl2;

const
  EPS = 0.0000000001;

var
  a,b,c,d,e,f,m,x,y : double;

begin
  writeln('Rozwiazywanie ukladu rownan liniowych:');
  writeln('ax + by + c = 0');
  writeln('dx + ey + f = 0');
  writeln('--------------------------------------');
  writeln('(C)2006 mgr J.Walaszek I LO w Tarnowie');
  writeln;
  writeln('Wpisz wartosci wspolczynnikow:');
  writeln;
  write('a = '); readln(a);
  write('b = '); readln(b);
  write('c = '); readln(c);
  write('d = '); readln(d);
  write('e = '); readln(e);
  write('f = '); readln(f);
  writeln;
  writeln('--------------------------------------');
  writeln('WYNIKI');
  writeln;

  m := d * b - e * a;

  if abs(m) < EPS then
    writeln('Brak rozwiazania')
  else
  begin
    x := (e * c - f * b) / m;
    y := (f * a - d * c) / m;
    writeln('x = ',x:0:4);
    writeln;
    writeln('y = ',y:0:4);
  end;

  writeln;
  writeln('--------------------------------------');
  writeln('Koniec. Nacisnij klawisz Enter...');
  readln;
end.
Basic
' Program rozwiązuje układ
' dwóch równań liniowych
' ax + by + c = 0
' dx + ey + f = 0
'-------------------------
' (C)2006 mgr Jerzy Wałaszek
' I Liceum Ogólnokształcące
' w Tarnowie

const EPS As Double = 0.0000000001

Dim As double a,b,c,d,e,f,m,x,y

Print "Rozwiazywanie ukladu " + _
      "rownan liniowych:"
Print "ax + by + c = 0"
Print "dx + ey + f = 0"
Print "---------------------" + _
      "-----------------"
Print "(C)2006 mgr J.Walaszek " + _
      "I LO w Tarnowie"
Print
Print "Wpisz wartosci wspolczynnikow:"
Print
Input "a = ",a
Input "b = ",b
Input "c = ",c
Input "d = ",d
Input "e = ",e
Input "f = ",f
Print
Print "---------------------" + _
      "-----------------"
Print "WYNIKI"
Print

m = d * b - e * a

If Abs(m) < EPS then
  Print "Brak rozwiazania"
Else
  x = (e * c - f * b) / m
  y = (f * a - d * c) / m
  Print Using "x = #####.####";x
  Print
  Print Using "y = #####.####";y
End If

Print
Print "---------------------" + _
      "-----------------"
Print "Koniec. Nacisnij klawisz Enter..."
Sleep
End
Python (dodatek)
# Program rozwiązuje układ
# dwóch równań liniowych
# ax + by + c = 0
# dx + ey + f = 0
#-------------------------
# (C)2026 mgr Jerzy Wałaszek
# I Liceum Ogólnokształcące
# w Tarnowie

eps = 0.0000000001

print("Rozwiązywanie układu " + \
      "równań liniowych:")
print("ax + by + c = 0")
print("dx + ey + f = 0")
print("---------------------" + \
      "-----------------")
print("(C)2026 mgr J.Wałaszek " + \
      "I LO w Tarnowie")
print()
print("Wpisz wartości " + \
      "współczynników:")
print()
a = float(input("a = "))
b = float(input("b = "))
c = float(input("c = "))
d = float(input("d = "))
e = float(input("e = "))
f = float(input("f = "))
print("---------------------" + \
      "-----------------")
print("WYNIKI")
print()

m = d * b - e * a

if abs(m) < eps:
    print("Brak rozwiązania")
else:
    x = (e * c - f * b) / m
    y = (f * a - d * c) / m
    print("x = %.4f" % x)
    print()
    print("y = %.4f" % y)

print()
input("Naciśnij Enter...")
Wynik:
Rozwiązywanie układu równań liniowych:
ax + by + c = 0
dx + ey + f = 0
--------------------------------------
(C)2026 mgr J.Wałaszek I LO w Tarnowie

Wpisz wartości współczynników:

a = 1
b = 2
c = 3
d = 3
e = -2
f = 2
--------------------------------------
WYNIKI

x = -1.2500

y = -0.8750

Naciśnij Enter...
JavaScript
<html>
  <head>
  </head>
  <body>
<div style="overflow-x: auto;"
     align="center">
  <table
  border="0"
  cellpadding="4"
  style="border-collapse:
        collapse">
    <tr>
      <td nowrap>
        <form
        name="frmbincode"
        style="text-align: center;
              background-color:
              #E7E7DA" class="nomargin">
          <big><b>
          Rozwiązywanie układu<br>
          równań liniowych
          </b></big><br>
          <br>
          ax + by + c = 0<br>
          dx + ey + f = 0<br>
          <br>
          &nbsp;&nbsp;(C)2026
          mgr Jerzy Wałaszek
          I LO w Tarnowie&nbsp;&nbsp;
          <hr>
          Wartości współczynników:<br>
          <br>
          a = <input
               type="text"
               name="inp_a"
               size="16" value="2"
               style="text-align: right">
          <br>
          b = <input
               type="text"
               name="inp_b"
               size="16"
               value="3"
               style="text-align: right">
          <br>
          c = <input
               type="text"
               name="inp_c"
               size="16"
               value="-8"
               style="text-align: right">
          <br>
          <br>
          d = <input
               type="text"
               name="inp_d"
               size="16"
               value="4"
               style="text-align: right">
          <br>
          e = <input
               type="text"
               name="inp_e"
               size="16"
               value="-3"
               style="text-align: right">
          <br>
          f = <input
               type="text"
               name="inp_f"
               size="16"
               value="2"
               style="text-align: right">
          <hr>
          <input
           type="button"
           value="Rozwiąż układ"
           name="B1"
           onclick="main()">
          <hr>
          <b>Wyniki:</b>
          <div id="out">.</div>
        </form>
      </td>
    </tr>
  </table>
</div>
<script language=javascript>

// Program rozwiązuje układ
// dwóch równań liniowych
// ax + by + c = 0
// dx + ey + f = 0
// ------------------------
// (C)2006 mgr Jerzy Wałaszek
// I Liceum Ogólnokształcące
// im. Kazimierza Brodzińskiego
// w Tarnowie

function main()
{
  var EPS = 0.0000000001
  var a,b,c,d,e,f,m,x,y,t

  a = parseFloat(document
      .frmbincode.inp_a.value)
  b = parseFloat(document
      .frmbincode.inp_b.value)
  c = parseFloat(document
      .frmbincode.inp_c.value)
  d = parseFloat(document
      .frmbincode.inp_d.value)
  e = parseFloat(document
      .frmbincode.inp_e.value)
  f = parseFloat(document
      .frmbincode.inp_f.value)

  if(isNaN(a) || isNaN(b) ||
     isNaN(c) || isNaN(d) ||
     isNaN(e) || isNaN(f))
    t = "<b><font color=red>" +
        "Nieprawidłowe " +
        "współczynniki" +
        "</font></b>"
  else
  {
    m = d * b - e * a
    if(Math.abs(m) < EPS)
      t = "<b><font color=red>" +
          "Brak rozwiązania" +
          "</font></b>"
    else
    {
      x = (e * c - f * b) / m
      y = (f * a - d * c) / m
      t = "x = " + x + "<br>" +
          "y = " + y;
    }
  }
  document.getElementById("out")
  .innerHTML = t;
}

</script>
  </body>
</html>
Rozwiązywanie układu
równań liniowych


ax + by + c = 0
dx + ey + f = 0

  (C)2026 mgr Jerzy Wałaszek I LO w Tarnowie  
Wartości współczynników:

a =
b =
c =

d =
e =
f =

Wyniki:
.

do podrozdziału  do strony 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2026 mgr Jerzy Wałaszek

Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.

Informacje dodatkowe.