|
Serwis Edukacyjny w I-LO w Tarnowie
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
|
| SPIS TREŚCI REMANENT |
|
| Podrozdziały |
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.
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...")
|
![]() |
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:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.