|
Serwis Edukacyjny Nauczycieli 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
|
W naszym serwisie jest nowszy artykuł o obliczaniu pierwiastków funkcji: "Metody numeryczne".
| SPIS TREŚCI |
| Podrozdziały |
Równanie kwadratowe (ang. square equation) posiada następującą postać:

gdzie x to poszukiwana niewiadoma, natomiast a, b, c to współczynniki równania. Pierwiastkiem równania jest taka wartość niewiadomej x, która podstawiona w jej miejsce do równania spełnia je. Zwykle równanie kwadratowe posiada dwa pierwiastki rzeczywiste (lub zespolone - nie będziemy się nimi zajmować). Jeśli istnieje tylko jedna taka liczba, to mówimy, iż jest ona pierwiastkiem podwójnym.
Przykład:
Pierwiastkami równania kwadratowego
Na przestrzeni wieków rozwoju matematyki matematycy opracowali wiele metod rozwiązywania równań kwadratowych. My wykorzystamy metodę "szkolną", którą powinien doskonale znać uczeń liceum.
Obliczamy wyróżnik równania kwadratowego Δ:

W zależności od wartości wyróżnika Δ mamy trzy możliwe przypadki:
Δ > 0, istnieją dwa pierwiastki rzeczywiste:

Δ = 0, istnieje jeden pierwiastek podwójny:

Δ < 0, nie istnieją pierwiastki rzeczywiste (równanie posiada jedynie pierwiastki zespolone, które są liczbami sprzężonymi - liczbami zespolonymi nie zajmujemy się w liceum).
Przykład:
Rozwiążmy podaną metodą równanie z poprzedniego przykładu:

Obliczamy wyróżnik Δ:

Wyróżnik Δ jest większy od 0, zatem równanie posiada dwa pierwiastki rzeczywiste:

| a, b, c | – | współczynniki równania kwadratowego; a,b,c ∈ R |
| x1, x2 | – | pierwiastki równania kwadratowego lub informacja, iż równanie nie posiada pierwiastków rzeczywistych; x1, x2 ∈ R |
| Δ | – | wyróżnik równania kwadratowego; Δ ∈ R |
| ε | – | określa dokładność porównania z zerem; ε = 0.0000000001 |
| K01: | Czytaj a, b, c |
| K02: | Jeśli | a | < ε, pisz "To nie jest równanie kwadratowe" i zakończ |
| K03: | Δ ← b2 - 4ac |
| K04: | Jeśli
| Δ
| < ε, to Δ ← 0 |
| K05: | Jeśli Δ <
0, to pisz "Brak pierwiastków rzeczywistych" i zakończ |
| K06: | ![]() |
| K07: | ![]() |
| K08: | Pisz x1, x2 |
| K09: | Zakończ |

Algorytm obliczania pierwiastków równania kwadratowego rozpoczynamy od wczytania wartości współczynników a, b oraz c.
Jeśli współczynnik a przy x2 wynosi 0 (wpada w otoczenie 0 o promieniu ε) to nie mamy do czynienia z równaniem kwadratowym. Wypisujemy odpowiedni komunikat i kończymy algorytm.
Obliczamy wyróżnik Δ. Następnie sprawdzamy, czy Δ jest w otoczeniu ε zera. Jeśli tak, to zerujemy go - w ten sposób uprościmy znacznie algorytm.
Kolejny test sprawdza, czy wyróżnik Δ jest mniejszy od zera (kolejność testów jest tutaj bardzo ważna). Jeśli tak, to równanie nie posiada pierwiastków rzeczywistych. Wypisujemy odpowiedni komunikat i kończymy algorytm.
Pozostał przypadek, gdy wyróżnik Δ jest albo równy, albo większy od 0. W obu przypadkach obliczamy dwa pierwiastki x1 i x2. Wypisujemy je i kończymy algorytm.
Programy wczytują wartości współczynników a, b i c, a następnie wyznaczają, o ile jest to możliwe, pierwiastki równania kwadratowego o wprowadzonych współczynnikach.
C++// Program rozwiązuje
// równanie kwadratowe
// ----------------------
// (C)2006 mgr J.Wałaszek
#include <iostream>
#include <iomanip>
#include <cmath>
#include <cstdlib>
using namespace std;
int main()
{
// dokładność porównania z zerem
const double EPS = 0.0000000001;
double a,b,c,delta,x1,x2;
cout << setprecision(5)
<< fixed
<< " Rownanie kwadratowe\n"
" ax^2 + bx + c = 0\n"
"--------------------------\n"
"(C)2006 mgr Jerzy Walaszek\n\n";
cout << "a = "; cin >> a;
cout << "b = "; cin >> b;
cout << "c = "; cin >> c;
cout << "\nWYNIKI:\n\n";
if(fabs(a) < EPS)
cout << "Brak rownania kwadratowego\n";
else
{
delta = b * b - 4 * a * c;
if(fabs(delta) < EPS) delta = 0.0;
if(delta < 0)
cout << "Brak pierwiastkow "
"rzeczywistych\n";
else
{
x1 = (-b - sqrt(delta)) / 2 / a;
x2 = (-b + sqrt(delta)) / 2 / a;
cout << "x1 = "
<< setw(12) << x1 << endl
<< "x2 = "
<< setw(12) << x2 << endl;
}
}
cout << endl;
system("pause");
return 0;
}
|
Pascal/// Program rozwiązuje
// równanie kwadratowe
// ----------------------
// (C)2006 mgr J.Wałaszek
program mzfk1;
const
// dokładność porównania
// z zerem
EPS = 0.0000000001;
var
a,b,c,delta,x1,x2 : double;
begin
writeln(' Rownanie kwadratowe');
writeln(' ax^2 + bx + c = 0');
writeln(' -------------------');
writeln('(C)2006 mgr Jerzy Walaszek');
writeln;
write('a = '); readln(a);
write('b = '); readln(b);
write('c = '); readln(c);
writeln;
writeln('WYNIKI:');
writeln;
if abs(a) < EPS then
writeln('Brak rownania ',
'kwadratowego')
else
begin
delta := b * b - 4 * a * c;
if abs(delta) < EPS then
delta := 0;
if delta < 0 then
writeln('Brak pierwiastkow ',
'rzeczywistych')
else
begin
x1 := (-b - sqrt(delta)) / 2 / a;
x2 := (-b + sqrt(delta)) / 2 / a;
writeln('x1 = ',x1:12:5);
writeln('x2 = ',x2:12:5);
end;
end;
writeln;
writeln('Nacisnij Enter...');
readln;
end.
|
Basic' Program rozwiązuje równanie kwadratowe
'---------------------------------------
' (C)2006 mgr J.Wałaszek I LO w Tarnowie
' dokładność porównania z zerem
Const EPS As Double = 0.0000000001
Dim As Double a, b, c, delta, x1, x2
Print " Rownanie kwadratowe"
Print " ax^2 + bx + c = 0"
Print " -------------------"
Print "(C)2006 mgr Jerzy Walaszek"
Print
Input "a = ", a
Input "b = ", b
Input "c = ", c
Print
Print "WYNIKI:"
Print
If Abs(a) < EPS Then
Print "Brak rownania kwadratowego"
Else
delta = b * b - 4 * a * c
If Abs(delta) < EPS Then delta = 0
If delta < 0 Then
Print "Brak pierwiastkow rzeczywistych"
Else
x1 = (-b - Sqr(delta)) / 2 / a
x2 = (-b + Sqr(delta)) / 2 / a
Print Using "x1 = ######.#####"; x1
Print Using "x2 = ######.#####"; x2
End If
End If
Print
Print "Nacisnij Enter..."
Sleep
End
|
Python
(dodatek)# Program rozwiązuje równanie kwadratowe
#---------------------------------------
# (C)2006 mgr J.Wałaszek I LO w Tarnowie
import math
# dokładność porównania z zerem
EPS = 0.0000000001
print(" Równanie kwadratowe")
print(" ax^2 + bx + c = 0")
print(" -------------------")
print("(C)2026 mgr Jerzy Wałaszek")
print()
a = float(input("a = "))
b = float(input("b = "))
c = float(input("c = "))
print()
print("WYNIKI:")
print()
if abs(a) < EPS:
print("Brak równania kwadratowego")
else:
delta = b * b - 4 * a * c
if abs(delta) < EPS: delta = 0
if delta < 0:
print("Brak pierwiastków rzeczywistych")
else:
x1 = (-b - math.sqrt(delta)) / 2 / a
x2 = (-b + math.sqrt(delta)) / 2 / a
print("x1 = %12.5f" % x1)
print("x2 = %12.5f" % x2)
print()
input("Naciśnij Enter...")
|
| Wynik: |
Równanie kwadratowe
ax^2 + bx + c = 0
-------------------
(C)2026 mgr Jerzy Wałaszek
a = 1
b = -1
c = -6
WYNIKI:
x1 = -2.00000
x2 = 3.00000
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">
<b><big>
Demonstracja rozwiązywania<br>
równania kwadratowego
</big></b><br>
<br>
ax<sup>2</sup> +
bx + c = 0<br>
<br>
(C)2026
mgr Jerzy Wałaszek
I LO w Tarnowie
<hr>
Wpisz do pól edycyjnych<br>
kolejne współczynniki
równania:<br>
<br>
a = <input
type="text"
name="wsp_a"
size="16"
value="12"
style="text-align:
right">
<br>
b = <input
type="text"
name="wsp_b"
size="16"
value="-3"
style="text-align:
right">
<br>
c = <input
type="text"
name="wsp_c"
size="16"
value="-6"
style="text-align:
right">
<hr>
<input
type="button"
value="Rozwiąż"
name="B2"
onclick="main()">
<hr>
<b>Wynik:</b>
<div id="out">.</div>
</form>
</td>
</tr>
</table>
</div>
<script language=javascript>
// Program rozwiązuje
// równanie kwadratowe
//--------------------
// (C)2006 mgr J.Wałaszek
// I LO w Tarnowie
function main()
{
// dokładność porównania z zerem
var EPS = 0.0000000001
var a,b,c,delta,x1,x2,t
a = parseFloat(document.frmbincode
.wsp_a.value)
b = parseFloat(document.frmbincode
.wsp_b.value)
c = parseFloat(document.frmbincode
.wsp_c.value)
if(isNaN(a) || isNaN(b) || isNaN(c))
t = "<font color=red><b>" +
"Nieprawidłowe współczynniki!" +
"</b></font>"
else if(Math.abs(a) < EPS)
t = "<font color=red><b>" +
"To nie jest równanie " +
"kwadratowe" +
"</b></font>"
else
{
delta = b * b - 4 * a * c
if(Math.abs(delta) < EPS) delta = 0
if(delta < 0)
t = "<font color=red><b>" +
"Brak pierwiastków " +
"rzeczywistych" +
"</b></font>"
else
{
x1 = (-b - Math.sqrt(delta)) /
2 / a;
x2 = (-b + Math.sqrt(delta)) /
2 / a;
t = "x<sub>1</sub> = " + x1 +
"<br>" +
"x<sub>2</sub> = " + x2;
}
}
document.getElementById("out")
.innerHTML = t;
}
</script>
</body>
</html> |
![]() |
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.