|
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 \({x^2 - x - 6 = 0}\) są dwie liczby \({x_1 = 3}\) i \({x_2 = -2}\), ponieważ:
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 \(\Delta:\)
W zależności od wartości wyróżnika \(\Delta\) mamy trzy możliwe przypadki:
\(\Delta > 0\), istnieją dwa pierwiastki rzeczywiste:
\(\Delta = 0\), istnieje jeden pierwiastek podwójny:
\(\Delta < 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 \(\Delta:\)
Wyróżnik \(\Delta\) jest większy od \(0\), zatem równanie posiada dwa pierwiastki rzeczywiste:
| \(a,b,c\) | – | współczynniki równania kwadratowego; \({a,b,c\in\mathbb{R}}\) |
| \(x_1, x_2\) | – | pierwiastki równania kwadratowego lub informacja, iż równanie nie posiada pierwiastków rzeczywistych; \({x_1,x_2\in\mathbb{R}}\) |
| \(\Delta\) |
– |
wyróżnik równania kwadratowego; \({\Delta\in\mathbb{R}}\), |
| \(\varepsilon\) |
– |
określa dokładność porównania z zerem; \({\varepsilon = 0{,}0000000001}\) |
| K01: | Czytaj \(a, b, c\) |
| K02: | Jeśli \(|a| < \varepsilon\), pisz "To nie jest równanie kwadratowe" i zakończ |
| K03: | \(\Delta\leftarrow b^2 - 4ac\) |
| K04: | Jeśli
\(|\Delta| < \varepsilon\), to \(\Delta\leftarrow0\) |
| K05: | Jeśli \(\Delta <
0\), to pisz "Brak pierwiastków rzeczywistych" i zakończ |
| K06: \(x_1\leftarrow \dfrac{-b-\sqrt{\Delta}}{2a}\) | |
| K07: \(x_1\leftarrow \dfrac{-b+\sqrt{\Delta}}{2a}\) | |
| K08: | Pisz \(x_1, x_2\) |
| 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 \(x^2\) wynosi \(0\) (wpada w otoczenie \(0\) o promieniu \(\varepsilon\)) to nie mamy do czynienia z równaniem kwadratowym. Wypisujemy odpowiedni komunikat i kończymy algorytm.
Obliczamy wyróżnik \(\Delta\). Następnie sprawdzamy, czy \(\Delta\) jest w otoczeniu zera o promieniu \(\varepsilon\). Jeśli tak, to zerujemy go – w ten sposób uprościmy nieco algorytm.
Kolejny test sprawdza, czy wyróżnik \(\Delta\) 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 \(\Delta\) jest albo równy, albo większy od \(0\). W obu przypadkach obliczamy dwa pierwiastki \(x_1\) i \(x_2\). 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.
W soboty i niedziele reklamy są wyłączane w całym serwisie.
Informacje dodatkowe.