Serwis Edukacyjny
w I-LO w Tarnowie
obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

obrazek

Autor artykułu: mgr Jerzy Wałaszek

©2026 mgr Jerzy Wałaszek

obrazek

Równania

Układ 2 równań liniowych

SPIS TREŚCI REMANENT
Podrozdziały
 

Definicje

Równanie liniowe (ang. linear equation) przyjmuje ogólnie postać:

Wyrazy a1,...,an oraz b nazywamy współczynnikami równania (ang. coefficients). Mogą one przyjmować wartości rzeczywiste lub zespolone. Wyrazy x1,...,xn nazywamy zmiennymi równania (ang. variables) lub niewiadomymi x (ang. unknown x). Rozwiązaniem równania (ang. equation solution) są takie wartości zmiennych x1,...,xn, które po wstawieniu do równania powodują spełnienie równości.

Przez układ m równań liniowych z n niewiadomymi (ang. system of linear equations) będziemy rozumieli zbiór m równań liniowych z tymi samymi niewiadomymi x:

Zapiszmy współczynniki i zmienne w postaci macierzowej:

Cały układ równań możemy zapisać w postaci macierzowej:


Układ równań liniowych może:

W tym rozdziale zajmiemy się rozwiązywaniem układu dwóch równań liniowych z dwiema niewiadomymi:

Wyrazy a, b, c, d, e, f są współczynnikami, x i y są poszukiwanymi niewiadomymi.


do podrozdziału  do strony 

Rozwiązanie

Mamy układ dwóch równań liniowych z dwoma niewiadomymi:

Wyznaczymy wzory na niewiadome. Z równania 2 wyliczamy zmienną y:

Wyprowadzony wzór wykorzystujemy w równaniu 1 do zastąpienia zmiennej y i wyliczenia zmiennej x:

Otrzymaliśmy wzór na zmienną x. Obliczamy x, po czym wynik wstawiamy do wzoru:

i otrzymujemy wartość zmiennej y.

Aby układ równań miał rozwiązanie, musi spełnić dwa warunki:

Postąpimy w sposób następujący:

Jeśli współczynnik e jest równy 0, to wymieniamy ze sobą parami współczynniki: a z d, b z e, c z f. Jeśli współczynnik e wciąż jest zerowy, to kończymy z błędem, układ równań nie posiada jednoznacznego rozwiązania lub jest sprzeczny. Następnie obliczamy wartość a · e – b · d. Jeśli wynosi ona zero, to również kończymy z błędem. Jeśli nie, wartość x liczymy ze wzoru:

Wartość x wykorzystujemy do policzenia wartości y ze wzoru:

Poniższy program wykorzystuje ten algorytm do rozwiązania układu dwóch równań liniowych z dwiema niewiadomymi. Dane do programu wczytywane są z okna konsoli w postaci 6 liczb w dwóch wierszach, które odpowiadają kolejnym współczynnikom układu równań.

Układ równań:

Dane wejściowe:

5 6 17
-3 5 7
C++
// Układy równań liniowych
// (C)2019 mgr Jerzy Wałaszek
// Metody numeryczne 0065
//---------------------------

#include <iostream>
#include <windows.h>
#include <iomanip>
#include <cmath>

using namespace std;

const double EPS = 0.000000001;

int main()
{
  SetConsoleOutputCP(CP_UTF8);
  SetConsoleCP(CP_UTF8);

  cout << setprecision(4) << fixed;

  // Współczynniki
  double a, b, c, d, e, f;

  // Zmienne
  double x, y;

  // Dzielnik
  double dd;

  cout
  << "Rozwiązywanie układu "
     "2 równań liniowych "
     "z 2 niewiadomymi\n"
     "---------------------"
     "-------------------"
     "----------------\n\n"
     "Wprowadź współczynniki:\n";

  cin >> a >> b >> c
      >> d >> e >> f;

  cout << endl
       << setw(9) << a << " * x + "
       << setw(9) << b << " * y = "
       << setw(9) << c << endl
       << setw(9) << d << " * x + "
       << setw(9) << e << " * y = "
       << setw(9) << f << endl
       << endl;

  // Zapamiętujemy, czy
  // oryginalne 'e' oraz
  // 'b' były bliskie zeru
  bool e_is_zero = (fabs(e) < EPS);
  bool b_is_zero = (fabs(b) < EPS);

  // Jeśli pierwotne e jest zerem,
  // zamieniamy równania miejscami
  if(e_is_zero)
  {
    swap(a, d);
    swap(b, e);
    swap(c, f);
  }

  // Obliczamy wyznacznik
  // główny układu
  dd = a * e - b * d;

  // Układ nie ma jednoznacznego
  // rozwiązania, jeśli wyznacznik
  // jest zerem LUB jeśli po
  // zamianie wierszy zmienna
  // 'e' (czyli pierwotne 'b')
  // nadal jest zerem
  if ((fabs(dd) < EPS) ||
      (e_is_zero && b_is_zero))
    cout
    << "DANE NIEJEDNOZNACZNE "
       "(UKŁAD SPRZECZNY LUB "
       "NIEOZNACZONY)\n\n";
  else
  {
    x = (c * e - b * f) / dd;
    y = (f - d * x) / e;
    cout << "x = " << setw(9) << x
         << endl
         << "y = " << setw(9) << y
         << endl << endl;
  }
  system("pause");
  return 0;
}
Wynik
Rozwiązywanie układu 2 równań liniowych z 2 niewiadomymi
--------------------------------------------------------

Wprowadź współczynniki:
5 6 17
-3 5 7

   5.0000 * x +    6.0000 * y =   17.0000
  -3.0000 * x +    5.0000 * y =    7.0000

x =    1.0000
y =    2.0000
Python (dodatek)
 # Układy równań liniowych
 # (C)2026 mgr Jerzy Wałaszek
 # Metody numeryczne 0065
 #---------------------------

EPS = 0.000000001

print("Rozwiązywanie układu "
      "2 równań liniowych "
      "z 2 niewiadomymi\n"
      "---------------------"
      "-------------------"
      "----------------\n\n"
      "Wprowadź współczynniki "
      "w dwóch wierszach\n")

s = input("a,b,c = ").split()
a = float(s[0])
b = float(s[1])
c = float(s[2])
s = input("d,e,f = ").split()
d = float(s[0])
e = float(s[1])
f = float(s[2])

print()            
print(f"{a:9.4f} * x + "
      f"{b:9.4f} * y = "
      f"{c:9.4f}\n"
      f"{d:9.4f} * x + "
      f"{e:9.4f} * y = "
      f"{f:9.4f}\n")

# Zapamiętujemy, czy
# oryginalne 'e' oraz
# 'b' były bliskie zeru
e_is_zero = abs(e) < EPS
b_is_zero = abs(b) < EPS

# Jeśli pierwotne e jest zerem,
# zamieniamy równania miejscami
if e_is_zero:
    a,d = d,a
    b,e = e,b
    c,f = f,c

# Obliczamy wyznacznik
# główny układu
dd = a * e - b * d

# Układ nie ma jednoznacznego
# rozwiązania, jeśli wyznacznik
# jest zerem LUB jeśli po
# zamianie wierszy zmienna
# 'e' (czyli pierwotne 'b')
# nadal jest zerem
if ((abs(dd) < EPS) or
   (e_is_zero and b_is_zero)):
    print("DANE NIEJEDNOZNACZNE "
          "(UKŁAD SPRZECZNY LUB "
          "NIEOZNACZONY)\n")
else:
    x = (c * e - b * f) / dd
    y = (f - d * x) / e
    print(f"x = {x:9.4f}\n"
          f"y = {y:9.4f}\n")

input("Naciśnij Enter...")

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.