|
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 |
|
Funkcja kwadratowa (ang. quadratic function) jest wielomianem stopnia drugiego:

Współczynniki a, b i c są liczbami rzeczywistymi.
Wykresem funkcji kwadratowej jest parabola:

Równanie kwadratowe (ang. quadratic equation) powstaje, gdy przyrównamy funkcję kwadratową do zera:

Matematycy już od czasów starożytnych badali równanie kwadratowe, ponieważ często pojawia się ono przy rozwiązywaniu różnych problemów praktycznych.
W zależności od położenia paraboli względem osi OX, mamy następujące przypadki:
Parabola leży ponad osią OX lub poniżej osi OX: równanie nie posiada pierwiastków rzeczywistych:

Parabola jest styczna do osi OX, równanie posiada tzw. pierwiastek podwójny:

Parabola przecina oś OX, równanie posiada dwa różne pierwiastki:

Równanie kwadratowe rozwiązujemy następująco:

Formalnie rozwiązanie wygląda następująco:
Jeśli współczynnik a jest równy 0, to równanie kwadratowe redukuje się do równania liniowego:

Równanie to rozwiązujemy wg metody opisanej w poprzednim rozdziale.
Jeśli a jest różne od zera, to wyliczamy tzw. wyróżnik delta (ang. delta discriminant):

Pierwiastki równania możemy teraz zapisać jako:

W zależności od wartości wyróżnika delta mamy następujące przypadki:
Wyróżnik delta mniejszy od zera, brak pierwiastków rzeczywistych, są dwa pierwiastki zespolone:

Wyróżnik delta równy zero, pierwiastek podwójny:

Wyróżnik delta większy od zera, dwa różne pierwiastki rzeczywiste:

Zwróć uwagę, że równanie wielomianowe ma zawsze tyle pierwiastków, ile wynosi stopień wielomianu. Jest to własność równań wielomianowych udowodniona przez matematyków. Stąd równanie kwadratowe będące równaniem wielomianowym stopnia drugiego ma zawsze dwa pierwiastki.
| ε | – | dokładność przyrównania do zera |
| a,b,c | – | współczynniki |
| x1, x2 | – | rozwiązania |
| delta | – | wyróżnik równania |
| K01: | Jeśli |a| >
ε, to idź do kroku K04 |
Sprawdzamy, czy a jest różne od zera |
| K02: | Rozwiąż równanie liniowe bx + c = 0 | Wykorzystujemy algorytm z poprzedniego rozdziału |
| K03: | Zakończ | |
| K04: | ![]() |
Obliczamy wyróżnik delta |
| K05: | Jeśli |delta| ≤
ε, to![]() Zakończ |
delta = 0? Pierwiastek podwójny |
| K06: | Jeśli delta <
-ε,
to![]() Zakończ |
delta < 0? Dwa pierwiastki zespolone |
| K07: | ![]() |
Dwa pierwiastki rzeczywiste |
| K08: | Zakończ |
Przykładowy program rozwiązuje kilka równań, a algorytm został w nim zaimplementowany w postaci funkcji.
Brak pierwiastków rzeczywistych:

Pierwiastek podwójny:

Dwa pierwiastki rzeczywiste:

C++// Równanie kwadratowe
// (C)2026 mgr Jerzy Wałaszek
// Metody numeryczne 0041
//---------------------------
#include <iostream>
#include <windows.h>
#include <cmath>
#include <iomanip>
using namespace std;
// Tutaj definiujemy
// dane wejściowe
//------------------
// Dokładność porównania
// z zerem
double eps = 1e-12;
// Wyświetla + przed
// liczbą dodatnią
// '-' przed ujemną
//------------------
void pl(double x)
{
if(x >= 0)
cout << '+';
else
cout << '-';
cout << fabs(x);
}
// Funkcja rozwiązująca
// równanie kwadratowe
// a,b,c - współczynniki
// wielomianu
//----------------------
void qe(double a,
double b,
double c)
{
double delta,x1,x2,xre,xim;
cout << "Równanie: "
<< a << "*x^2";
pl(b);
cout << "*x";
pl(c);
cout << " = 0\n";
// Jeśli a = 0,
// to mamy równanie liniowe
if(fabs(a) < eps)
{
cout <<
"Równanie redukuje się do "
"równania liniowego.\n";
if(fabs(b) <= eps)
{
cout << "Równanie jest ";
if(fabs(c) <= eps)
cout << " nieoznaczone.";
else
cout << " sprzeczne.";
}
else
{
x1 = - c / b;
cout << "x = " << x1;
}
}
else
{
// Obliczamy wyróżnik
delta = b * b - 4 * a * c;
// W zależności od wartości
// wyróżnika mamy
// 3 różne przypadki
if(fabs(delta) <= eps)
{
// 1. delta = 0
x1 = - b / 2 / a;
cout
<< "PIERWIASTEK PODWÓJNY:\n"
<< "x1 = x2 = " << x1;
}
else if(delta < -eps)
{
// 2. delta < 0
// Część rzeczywista
xre = - b / 2 / a;
// Część urojona
xim = sqrt(-delta) / 2 / a;
cout
<< "2 PIERWIASTKI ZESPOLONE:\n"
<< "x1 = ";
pl(xre);
pl(xim);
cout << "i x2 = ";
pl(xre);
pl(-xim);
cout << "i";
}
else
{
// 3. delta > 0
delta = sqrt(delta);
x1 = (-b - delta) / 2 / a;
x2 = (-b + delta) / 2 / a;
cout
<< "2 PIERWIASTKI RZECZYWISTE:\n"
<< "x1 = " << x1
<< " x2 = " << x2;
}
}
cout << endl << endl;
}
// Program główny
//---------------
int main()
{
SetConsoleOutputCP(CP_UTF8);
SetConsoleCP(CP_UTF8);
cout << setprecision(3)
<< fixed
<< "Równania kwadratowe\n"
"-------------------\n\n";
qe(3,12,15);
qe(9,12,4);
qe(1,-1,-2);
qe(0,0,0);
qe(0,0,1);
qe(0,1,2);
system("pause");
return 0;
}
|
| Wynik |
Równania kwadratowe ------------------- Równanie: 3.000*x^2+12.000*x+15.000 = 0 2 PIERWIASTKI ZESPOLONE: x1 = -2.000+1.000i x2 = -2.000-1.000i Równanie: 9.000*x^2+12.000*x+4.000 = 0 PIERWIASTEK PODWÓJNY: x1 = x2 = -0.667 Równanie: 1.000*x^2-1.000*x-2.000 = 0 2 PIERWIASTKI RZECZYWISTE: x1 = -1.000 x2 = 2.000 Równanie: 0.000*x^2+0.000*x+0.000 = 0 Równanie redukuje się do równania liniowego. Równanie jest nieoznaczone. Równanie: 0.000*x^2+0.000*x+1.000 = 0 Równanie redukuje się do równania liniowego. Równanie jest sprzeczne. Równanie: 0.000*x^2+1.000*x+2.000 = 0 Równanie redukuje się do równania liniowego. x = -2.000 |
Python
(dodatek) # (C)2026 mgr Jerzy Wałaszek
# Metody numeryczne 0041
#---------------------------
from math import sqrt,fabs
# Tutaj definiujemy
# dane wejściowe
#------------------
# Dokładność porównania z zerem
EPS = 1e-12
# Funkcja wypisuje liczbę
# ze znakiem + lub -
#------------------------
def pl(x):
if x >= 0:
print('+', end='')
else:
print('-', end='')
print(f"{math.fabs(x):.3f}",
end='')
# Funkcja rozwiązująca
# równanie kwadratowe
# a,b,c - współczynniki wielomianu
#---------------------------------
def qe(a,b,c):
print(f"Równanie: {a:.3f}*x^2",
end="")
pl(b)
print("*x", end="")
pl(c)
print(" = 0")
# Jeśli a = 0,
# to mamy równanie liniowe
if fabs(a) < EPS:
print(
"Równanie redukuje się do "
"równania liniowego.")
if fabs(b) <= EPS:
print("Równanie jest ",
end="")
if fabs(c) <= EPS:
print("nieoznaczone.")
else:
print("sprzeczne.")
else:
x1 = - c / b
print(f"x = {x1:.3f}")
else:
# Obliczamy wyróżnik
delta = b * b - 4 * a * c
# W zależności od wartości
# wyróżnika mamy trzy
# różne przypadki
if fabs(delta) <= EPS:
# 1. delta = 0
x1 = - b / 2 / a
print("PIERWIASTEK "
"PODWÓJNY:")
print(f"x1 = x2 = {x1:.3f}")
elif delta < -EPS:
# 2. delta < 0
# Część rzeczywista
xre = - b / 2 / a
# Część urojona
xim = sqrt(-delta) / 2 / a
print(
"2 PIERWIASTKI "
"ZESPOLONE:")
print(f"x1 = {xre:.3f}",
end="")
pl(xim)
print(f"i x2 = {xre:.3f}",
end="")
pl(-xim)
print("i")
else:
# 3. delta > 0
delta = sqrt(delta)
x1 = (-b - delta) / 2 / a
x2 = (-b + delta) / 2 / a
print("2 PIERWIASTKI "
"RZECZYWISTE:")
print(f"x1 = {x1:.3f} "
f"x2 = {x2:.3f}")
print()
# Program główny
#---------------
print("Równania kwadratowe\n"
"-------------------\n")
qe(3,12,15)
qe(9,12,4)
qe(1,-1,-2)
qe(0,0,0)
qe(0,0,1)
qe(0,1,2)
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.