Serwis Edukacyjny
Nauczycieli I-LO

w Tarnowie
obrazek

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".

Równanie kwadratowe

SPIS TREŚCI
Podrozdziały

Algorytm

Równanie kwadratowe (ang. square equation) posiada następującą postać:

\[
ax^2+bx+c=0;\;a\ne0
\]

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:\)

\[
\Delta=b^2-4ac
\]

W zależności od wartości wyróżnika \(\Delta\) mamy trzy możliwe przypadki:

  1. \(\Delta > 0\), istnieją dwa pierwiastki rzeczywiste:

    \[
    \begin{array}{l}
    x_1 = \dfrac{-b - \sqrt{\Delta}}{2a} \\
    x_2 = \dfrac{-b + \sqrt{\Delta}}{2a}
    \end{array}
    \]
  2. \(\Delta = 0\), istnieje jeden pierwiastek podwójny:

    \[
    x_{1,2}=-\frac{b}{2a}
    \]
  3. \(\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:

\[
\begin{array}{l}
x^2 - x - 6 = 0 \\
a = \phantom{-}1 \\
b = -1 \\
c = -6
\end{array}
\]

Obliczamy wyróżnik \(\Delta:\)

\[
\begin{array}{l}
\Delta = b^2 - 4ac \\
\Delta = (-1)^2 - 4 \cdot 1 \cdot (-6) = 1 + 24 \\
\Delta = 25
\end{array}
\]

Wyróżnik \(\Delta\) jest większy od \(0\), zatem równanie posiada dwa pierwiastki rzeczywiste:

\[
\begin{array}{l}
x_1 = \dfrac{-b - \sqrt{\Delta}}{2a} \\
x_2 = \dfrac{-b + \sqrt{\Delta}}{2a} \\
x_1 = \dfrac{-(-1) - \sqrt{25}}{2 \cdot 1} = \dfrac{1 - 5}{2} = \dfrac{-4}{2} = -2 \\
x_2 = \dfrac{-(-1) + \sqrt{25}}{2 \cdot 1} = \dfrac{1 + 5}{2} = \dfrac{6}{2} = 3
\end{array}
\]

do podrozdziału  do strony 

Opis algorytmu

Specyfikacja problemu

Dane wejściowe

\(a,b,c\) – współczynniki równania kwadratowego;
\({a,b,c\in\mathbb{R}}\)

Dane wyjściowe

\(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}}\)

Zmienne pomocnicze i funkcje

\(\Delta\)
 
–
 
wyróżnik równania kwadratowego;
\({\Delta\in\mathbb{R}}\),
\(\varepsilon\)
 
–
 
określa dokładność porównania
z zerem; \({\varepsilon = 0{,}0000000001}\)

Lista kroków

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

Schemat blokowy

obrazek

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.


do podrozdziału  do strony 

Programy

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>
          &nbsp;&nbsp;
          (C)2026
          mgr Jerzy Wałaszek
          I LO w Tarnowie
          &nbsp;&nbsp;
          <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>
Demonstracja rozwiązywania
równania kwadratowego


ax2 + bx + c = 0

   (C)2026 mgr Jerzy Wałaszek I LO w Tarnowie   
Wpisz do pól edycyjnych
kolejne współczynniki równania:

a =
b =
c =

Wynik:
.

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.
W soboty i niedziele reklamy są wyłączane w całym serwisie.
Informacje dodatkowe.