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 sześcienne

SPIS TREŚCI
Podrozdziały

Algorytm

Równanie sześcienne posiada następującą postać:

\[
ax^3+bx^2+cx+d=0;\;a\ne0
\]

Algorytm znajdowania pierwiastków takiego równania jest dużo bardziej skomplikowany niż dla równania kwadratowego.

Wyznaczamy trzy współczynniki \(f\), \(g\) i \(h\) wg wzorów:

\[
\begin{array}{l}
f = \dfrac{c}{a} - \dfrac{b^2}{3a^2} \\
g = \dfrac{2b^3}{27a^3} - \dfrac{bc}{3a^2} + \dfrac{d}{a} \\
h = \dfrac{g^2}{4} + \dfrac{f^3}{27}
\end{array}
\]

W zależności od wartości wyliczonych współczynników rozróżniamy trzy przypadki:

  1. \(h > 0\) - tylko jeden pierwiastek rzeczywisty (pozostałe dwa są zespolone - liczbami zespolonymi nie zajmujemy się w liceum).
  2. \(f = 0\) i \(g = 0\) - pierwiastek potrójny.
  3. W pozostałym przypadku mamy trzy pierwiastki rzeczywiste.

Jeden pierwiastek rzeczywisty

Jeśli \(h > 0\), pierwiastek wyliczamy ze wzoru:

\[
x_1 = \sqrt[3]{-\dfrac{g}{2} + \sqrt{h}} + \sqrt[3]{-\dfrac{g}{2} - \sqrt{h}} - \dfrac{b}{3a}
\]

Pierwiastek potrójny

W przypadku \(f = 0\) i \(g = 0\) równanie posiada pierwiastek potrójny (tzn. trzy pierwiastki o tej samej wartości). Wartość pierwiastka wyznaczamy ze wzoru:

\[
x_1 = x_2 = x_3 = -\sqrt[3]{\dfrac{d}{a}}
\]

Trzy pierwiastki rzeczywiste

W tym przypadku wyznaczamy kolejne współczynniki pomocnicze \(i\), \(j\), \(k\), \(m\), \(n\) i \(p\):

\[
\begin{array}{l}
i = \sqrt{\dfrac{g^2}{4} - h} \\
j = \sqrt[3]{i} \\
k = \arccos \left( -\dfrac{g}{2i} \right) \\
m = \cos \left( \dfrac{k}{3} \right) \\
n = \sqrt{3} \sin \left( \dfrac{k}{3} \right) \\
p = -\dfrac{b}{3a}
\end{array}
\]

Gdy współczynniki pomocnicze są obliczone, pierwiastki równania otrzymujemy ze wzorów:

\[
\begin{array}{l}
x_1 = 2jm + p \\
x_2 = -j(m+n) + p \\
x_3 = -j(m-n) + p
\end{array}
\]

Przykład:

Dla przykładu obliczymy pierwiastki trzech równań sześciennych:

Równanie 1:

\[
\begin{array}{l}
x^3-5x^2+8x-6=0 \\
a=\phantom{-}1 \\
b=-5 \\
c=\phantom{-}8 \\
d=-6 \\
f = \dfrac{c}{a} - \dfrac{b^2}{3a^2} = \dfrac{8}{1} - \dfrac{(-5)^2}{3 \cdot 1^2} = 8 - \dfrac{25}{3} = \dfrac{24}{3} - \dfrac{25}{3} = -\dfrac{1}{3} \\
g = \dfrac{2b^3}{27a^3} - \dfrac{bc}{3a^2} + \dfrac{d}{a} = \dfrac{2 \cdot (-5)^3}{27 \cdot 1^3} - \dfrac{(-5) \cdot 8}{3 \cdot 1^2} + \dfrac{-6}{1} = -\dfrac{250}{27} + \dfrac{40}{3} - 6 = -\dfrac{250}{27} + \dfrac{360}{27} - \dfrac{162}{27} = -\dfrac{52}{27} \\
h = \dfrac{g^2}{4} + \dfrac{f^3}{27} = \dfrac{\left( -\dfrac{52}{27} \right)^2}{4} + \dfrac{\left( -\dfrac{1}{3} \right)^3}{27} = \dfrac{\dfrac{2704}{729}}{4} + \dfrac{\left( -\dfrac{1}{27} \right)}{27} = \dfrac{676}{729} - \dfrac{1}{729} = \dfrac{675}{729} = \dfrac{25}{27}
\end{array}
\]

Ponieważ \(h > 0\), zatem równanie posiada tylko jeden pierwiastek rzeczywisty:

\[
\begin{array}{l}
x_1 = \sqrt[3]{-\dfrac{g}{2} + \sqrt{h}} + \sqrt[3]{-\dfrac{g}{2} - \sqrt{h}} - \dfrac{b}{3a} \\
x_1 = \sqrt[3]{-\dfrac{\left(-\dfrac{52}{27}\right)}{2} + \sqrt{\dfrac{25}{27}}} + \sqrt[3]{-\dfrac{\left(-\dfrac{52}{27}\right)}{2} - \sqrt{\dfrac{25}{27}}} - \dfrac{(-5)}{3 \cdot 1} \\
x_1 = \sqrt[3]{\dfrac{26}{27} + \dfrac{\sqrt{25}}{\sqrt{27}}} + \sqrt[3]{\dfrac{26}{27} - \dfrac{\sqrt{25}}{\sqrt{27}}} + \dfrac{5}{3} \\
x_1 = \sqrt[3]{\dfrac{26}{3^3} + \dfrac{5}{3\sqrt{3}}} + \sqrt[3]{\dfrac{26}{3^3} - \dfrac{5}{3\sqrt{3}}} + \dfrac{5}{3} \\
x_1 = \sqrt[3]{\dfrac{26}{3^3} + \dfrac{5}{3\sqrt{3}} \cdot \dfrac{3\sqrt{3}}{3\sqrt{3}}} + \sqrt[3]{\dfrac{26}{3^3} - \dfrac{5}{3\sqrt{3}} \cdot \dfrac{3\sqrt{3}}{3\sqrt{3}}} + \dfrac{5}{3} \\
x_1 = \sqrt[3]{\dfrac{26}{3^3} + \dfrac{5 \cdot 3\sqrt{3}}{3^3}} + \sqrt[3]{\dfrac{26}{3^3} - \dfrac{5 \cdot 3\sqrt{3}}{3^3}} + \dfrac{5}{3} \\
x_1 = \sqrt[3]{\dfrac{26 + 15\sqrt{3}}{3^3}} + \sqrt[3]{\dfrac{26 - 15\sqrt{3}}{3^3}} + \dfrac{5}{3} \\
x_1 = \dfrac{\sqrt[3]{26 + 15\sqrt{3}} + \sqrt[3]{26 - 15\sqrt{3}} + 5}{3} \\
{\class{t}{26 + 15\sqrt{3} = \left(2 + \sqrt{3}\right)^3 \qquad 26 - 15\sqrt{3} = \left(2 - \sqrt{3}\right)^3}} \\
x_1 = \dfrac{\sqrt[3]{\left(2 + \sqrt{3}\right)^3} + \sqrt[3]{\left(2 - \sqrt{3}\right)^3} + 5}{3} \\
x_1 = \dfrac{2 + \sqrt{3} + 2 - \sqrt{3} + 5}{3} \\
x_1 = \dfrac{2 + 2 + 5}{3} = \dfrac{9}{3} = 3
\end{array}
\]

Równanie 2:

\[
\begin{array}{l}
x^3 - 6x^2 + 12x - 8 = 0 \\
a = \phantom{-}1 \\
b = -6 \\
c = \;12 \\
d = -8 \\
f = \dfrac{c}{a} - \dfrac{b^2}{3a^2} = \dfrac{12}{1} - \dfrac{(-6)^2}{3 \cdot 1^2} = 12 - \dfrac{36}{3} = 12 - 12 = 0 \\
g = \dfrac{2b^3}{27a^3} - \dfrac{bc}{3a^2} + \dfrac{d}{a} = \dfrac{2 \cdot (-6)^3}{27 \cdot 1^3} - \dfrac{(-6) \cdot 12}{3 \cdot 1^2} + \dfrac{(-8)}{1} = -\dfrac{432}{27} + \dfrac{72}{3} - 8 = -16 + 24 - 8 = 0
\end{array}
\]

Ponieważ współczynniki \(f\) i \(g\) są równe \(0\), równanie posiada pierwiastek potrójny:

\[
x_1 = x_2 = x_3 = -\sqrt[3]{\dfrac{d}{a}} = -\sqrt[3]{\dfrac{(-8)}{1}} = -\sqrt[3]{-8} = 2
\]

Równanie 3:

\[
\begin{array}{l}
x^3 - 6x^2 + 11x - 6 = 0 \\
a = \phantom{-}1 \\
b = -6 \\
c = \;11 \\
d = -6 \\
f = \dfrac{c}{a} - \dfrac{b^2}{3a^2} = \dfrac{11}{1} - \dfrac{(-6)^2}{3 \cdot 1^2} = 11 - \dfrac{36}{3} = 11 - 12 = -1 \\
g = \dfrac{2b^3}{27a^3} - \dfrac{bc}{3a^2} + \dfrac{d}{a} = \dfrac{2 \cdot (-6)^3}{27 \cdot 1^3} - \dfrac{(-6) \cdot 11}{3 \cdot 1^2} + \dfrac{(-6)}{1} = -\dfrac{432}{27} + \dfrac{72}{3} - 6 = -16 + 22 - 6 = 0 \\
h = \dfrac{g^2}{4} + \dfrac{f^3}{27} = \dfrac{(0)^2}{4} + \dfrac{(-1)^3}{27} = 0 - \dfrac{1}{27} = -\dfrac{1}{27}
\end{array}
\]

Ponieważ \(h < 0\), zachodzi przypadek trzech pierwiastków rzeczywistych. Najpierw obliczamy współczynniki pomocnicze:

\[
\begin{array}{l}
i = \sqrt{\dfrac{g^2}{4} - h} = \sqrt{\dfrac{0^2}{4} - \left( -\dfrac{1}{27} \right)} = \sqrt{0 + \dfrac{1}{27}} = \sqrt{\dfrac{1}{27}} \\
j = \sqrt[3]{i} = \sqrt[3]{\sqrt{\dfrac{1}{27}}} = \sqrt[3]{\sqrt{\dfrac{1}{3 \cdot 3^2}}} = \sqrt[3]{\dfrac{\sqrt{1}}{\sqrt{3 \cdot 3^2}}} = \sqrt[3]{\dfrac{1}{3\sqrt{3}}} = \sqrt[3]{\dfrac{1 \cdot \sqrt{3} \cdot \sqrt{3} \cdot \sqrt{3}}{3\sqrt{3} \cdot \sqrt{3} \cdot \sqrt{3} \cdot \sqrt{3}}} = \sqrt[3]{\dfrac{(\sqrt{3})^3}{3^3}} = \dfrac{\sqrt{3}}{3} \\
k = \arccos \left( -\dfrac{g}{2i} \right) = \arccos(0) = \dfrac{\pi}{2} \\
m = \cos \left( \dfrac{k}{3} \right) = \cos \left( \dfrac{\pi}{6} \right) = \dfrac{\sqrt{3}}{2} \\
n = \sqrt{3} \sin \left( \dfrac{k}{3} \right) = \sqrt{3} \sin \left( \dfrac{\pi}{6} \right) = \sqrt{3} \cdot \dfrac{1}{2} = \dfrac{\sqrt{3}}{2} \\
p = -\dfrac{b}{3a} = -\dfrac{(-6)}{3 \cdot 1} = \dfrac{6}{3} = 2
\end{array}
\]

Teraz obliczamy kolejne niewiadome:

\[
\begin{array}{l}
x_1 = 2jm + p = 2 \cdot \dfrac{\sqrt{3}}{3} \cdot \dfrac{\sqrt{3}}{2} + 2 = 2 \cdot \dfrac{3}{6} + 2 = 1 + 2 = 3 \\
x_2 = -j \cdot (m+n) + p = -\dfrac{\sqrt{3}}{3} \cdot \left( \dfrac{\sqrt{3}}{2} + \dfrac{\sqrt{3}}{2} \right) + 2 = -\dfrac{\sqrt{3}}{3} \cdot \sqrt{3} + 2 = -1 + 2 = 1 \\
x_3 = -j \cdot (m-n) + p = -\dfrac{\sqrt{3}}{3} \cdot \left( \dfrac{\sqrt{3}}{2} - \dfrac{\sqrt{3}}{2} \right) + 2 = 0 + 2 = 2
\end{array}
\]

do podrozdziału  do strony 

Opis algorytmu

Specyfikacja problemu

Dane wejściowe

\(a,b,c,d\)
 
–
 
współczynniki równania \({ax^3 + bx^2 + cx + d = 0;}\)
\({a,b,c,d\in\mathbb{R}}\)

Dane wyjściowe

\(x_1, x_2, x_3\)

 
–

 
poszukiwane pierwiastki oraz informacja o ich
liczbie i typie: jeden pierwiastek rzeczywisty,
pierwiastek potrójny i trzy pierwiastki rzeczywiste.

Zmienne pomocnicze i funkcje

\(i,j,k,m,n,p\) – współczynniki pomocnicze; \({i, j, k, m, n, p\in\mathbb{R}.}\)
\(\varepsilon\)
 
– określa dokładność porównania z zerem;
\(\varepsilon = 0{,}0000000001\)

Lista kroków

Ponieważ algorytm jest dosyć rozbudowany obliczeniowo, zrezygnowaliśmy z publikowania jego schematu blokowego, który w sumie jest prosty, lecz rozległy. Podajemy jedynie listę kroków. Wyjaśnienie wykonywanych operacji znajdzie czytelnik na początku tego rozdziału.

K01: Czytaj \(a, b, c, d\)
K02: Jeśli \(|a| < \varepsilon,\)
to pisz "To nie jest równanie sześcienne"
i zakończ
K03: Oblicz współczynniki pomocnicze:
\(
\begin{array}{l}
f \leftarrow \dfrac{c}{a} - \dfrac{b^2}{3a^2} \\
g \leftarrow \dfrac{2b^3}{27a^3} - \dfrac{bc}{3a^2} + \dfrac{d}{a} \\
h \leftarrow \dfrac{g^2}{4} + \dfrac{f^3}{27}
\end{array}
\)
K04: Jeśli \(|f| < \varepsilon\wedge|g| < \varepsilon,\)
to idź do kroku K09
K05: Jeśli \(h\ge\varepsilon,\)
to idź do kroku K11
K06: Oblicz współczynniki pomocnicze:
\(
\begin{array}{l}
i \leftarrow \sqrt{\dfrac{g^2}{4} - h} \\
j \leftarrow \sqrt[3]{i} \\
k \leftarrow \arccos \left( -\dfrac{g}{2i} \right) \\
m \leftarrow \cos \left( \dfrac{k}{3} \right) \\
n \leftarrow \sqrt{3} \sin \left( \dfrac{k}{3} \right) \\
p \leftarrow -\dfrac{b}{3a}
\end{array}
\)
K07: Oblicz pierwiastki:
\(
\begin{array}{l}
x_1 \leftarrow 2jm + p \\
x_2 \leftarrow -j \cdot (m+n) + p \\
x_3 \leftarrow -j \cdot (m-n) + p
\end{array}
\)
K08: Pisz "Trzy pierwiastki rzeczywiste", \(x_1, x_2, x_3\)
i zakończ
K09: Oblicz pierwiastki:
\(
\begin{array}{l}
x_1 \leftarrow -\sqrt[3]{\dfrac{d}{a}} \\
x_2 \leftarrow x_1 \\
x_3 \leftarrow x_1
\end{array}
\)
K10: Pisz "Pierwiastek potrójny", \(x_1, x_2, x_3\)
i zakończ
K11: Oblicz pierwiastek:
\(
x_1 \leftarrow \sqrt{-\dfrac{g}{2} + \sqrt{h}} + \sqrt{-\dfrac{g}{2} - \sqrt{h}} - \dfrac{b}{3a}
\)
K12: Pisz "Jeden pierwiastek rzeczywisty", \(x_1\)
i zakończ

do podrozdziału  do strony 

Programy

Programy wczytują wartości współczynników \(a\), \(b\), \(c\) i \(d\) a następnie wyznaczają, o ile jest to możliwe, pierwiastki równania sześciennego o wprowadzonych współczynnikach.

C++
// Program rozwiązuje równanie sześcienne
//---------------------------------------
// (C)2006 mgr J.Wałaszek I LO w Tarnowie

#include <iostream>
#include <iomanip>
#include <cmath>
#include <cstdlib>

using namespace std;

// Dokładność porównania z zerem
const double EPS = 0.0000000001;

// Funkcja wylicza pierwiastek 3 stopnia
//--------------------------------------

inline double qrt(double x)
{
  return fabs(x) < EPS ? 0 :
    (x > 0 ? exp(log(x)/3) :
    -exp(log(-x)/3));
}

//---------------
// Program główny
//---------------

int main()
{

  double a,b,c,d,f,g,h,i,j,
         k,m,n,p,x1,x2,x3;

  cout << setprecision(5)
       << fixed
       << "Rownanie szescienne\n"
          "  3    2\n"
          "ax + bx + cx + d = 0\n"
          "--------------------------\n"
          "(C)2006 mgr Jerzy Walaszek\n\n";
  cout << "a = "; cin >> a;
  cout << "b = "; cin >> b;
  cout << "c = "; cin >> c;
  cout << "d = "; cin >> d;
  cout << "\nWYNIKI:\n\n";
  if(fabs(a) < EPS)
    cout << "Brak rownani szesciennego\n";
  else
  {
    // Obliczamy współczynniki
    // pomocnicze f,g i h
    f = (c - b*b/3/a)/a;
    g = ((2*b*b/9/a - c)/a*b/3 + d)/a;
    h = g*g/4 + f*f*f/27;

    // Sprawdzamy kolejne warunki
    if((fabs(f) < EPS) && (fabs(g) < EPS))
    {
      // Pierwiastek potrójny
      x1 = x2 = x3 = - qrt(d/a);
      cout << "Pierwiastek potrojny:\n"
           << "\nx1 = " << setw(12) << x1
           << "\nx2 = " << setw(12) << x2
           << "\nx3 = " << setw(12) << x3
           << endl;
    }
    else if(h >= EPS)
    {
      // Jeden pierwiastek rzeczywisty
      x1 = qrt(-g/2 + sqrt(h)) +
           qrt(-g/2 - sqrt(h)) - b/3/a;
      cout << "Jeden pierwiastek:\n\n"
           << "x1 = " << setw(12) << x1
           << endl;
    }
    else
    {
      // Trzy pierwiastki rzeczywiste
      i  = sqrt(g*g/4 - h);
      j  = qrt(i);
      k  = acos(-g/2/i);
      m  = cos(k/3);
      n  = sqrt(3)*sin(k/3);
      p  = -b/3/a;
      x1 = 2*j*m + p;
      x2 = -j*(m + n) + p;
      x3 = -j*(m - n) + p;
      cout << "Trzy pierwiastki:\n"
           << "\nx1 = " << setw(12) << x1
           << "\nx2 = " << setw(12) << x2
           << "\nx3 = " << setw(12) << x3
           << endl;
    }
  }
  cout << endl << endl;
  system("pause");
  return 0;
}
Pascal
// Program rozwiązuje równanie sześcienne
//---------------------------------------
// (C)2006 mgr J.Wałaszek I LO w Tarnowie

program mzfk2;

uses math;

const
  // Dokładność porównania z zerem
  EPS   = 0.0000000001;

// Funkcja wylicza pierwiastek 3 stopnia
//--------------------------------------

function qrt(x : real) : double;
begin
  if abs(x) < EPS then
    Result := 0
  else
    Result := sign(x) * exp(ln(abs(x)) / 3);
end;

//---------------
// Program główny
//---------------

var
  a,b,c,d,f,g,h,i,j,
  k,m,n,p,x1,x2,x3 : double;
begin
  writeln('Rownanie szescienne');
  writeln('  3    2');
  writeln('ax + bx + cx + d = 0');
  writeln('--------------------------');
  writeln('(C)2006 mgr Jerzy Walaszek');
  writeln;
  write('a = '); readln(a);
  write('b = '); readln(b);
  write('c = '); readln(c);
  write('d = '); readln(d);
  writeln;
  writeln('WYNIKI:');
  writeln;
  if abs(a) < EPS then
    writeln('Brak rownania szesciennego')
  else
  begin

    // Obliczamy współczynniki
    // pomocnicze f,g i h
    f := (c - b * b / 3 / a) / a;
    g := ((2 * b * b / 9 /a - c) /
         a * b / 3 + d)/a;
    h := g * g / 4 + f * f * f / 27;

    // Sprawdzamy kolejne warunki
    if (abs(f) < EPS) and (abs(g) < EPS) then
    begin

      // Pierwiastek potrójny
      x1 := - qrt(d / a);
      x2 := x1;
      x3 := x1;
      writeln('Pierwiastek potrojny:');
      writeln;
      writeln('x1 = ',x1:12:5);
      writeln('x2 = ',x2:12:5);
      writeln('x3 = ',x3:12:5);
    end
    else if h >= EPS then
    begin

      // Jeden pierwiastek rzeczywisty
      x1 := qrt(-g / 2 + sqrt(h)) +
            qrt(-g/2 - sqrt(h)) - b / 3 / a;
      writeln('Jeden pierwiastek:');
      writeln;
      writeln('x1 = ',x1:12:5);
    end
    else
    begin

      // Trzy pierwiastki rzeczywiste
      i  := sqrt(g * g / 4 - h);
      j  := qrt(i);
      k  := arccos(-g / 2 / i);
      m  := cos(k / 3);
      n  := sqrt(3) *  sin(k / 3);
      p  := -b / 3 / a;
      x1 := 2 * j * m + p;
      x2 := -j * (m + n) + p;
      x3 := -j * (m - n) + p;
      writeln('Trzy pierwiastki:');
      writeln;
      writeln('x1 = ',x1:12:5);
      writeln('x2 = ',x2:12:5);
      writeln('x3 = ',x3:12:5);
    end;
  end;
  writeln;
  writeln('Nacisnij Enter...');
  readln;
end.
Basic
' Program rozwiązuje równanie sześcienne
'---------------------------------------
' (C)2006 mgr J.Wałaszek I LO w Tarnowie

Declare Function qrt(x As Double) _
                       As Double
	
' Dokładność porównania z zerem
Const EPS As Double = 0.0000000001

'---------------
' Program główny
'---------------

Dim As double a, b, c, d, f, g, h, i, _
              j, k, m, n, p, x1, x2, x3

Print "Rownanie szescienne"
Print "  3    2"
Print "ax + bx + cx + d = 0"
Print "--------------------------"
Print "(C)2006 mgr Jerzy Walaszek"
Print
Input "a = ", a
Input "b = ", b
Input "c = ", c
Input "d = ", d
Print
Print "WYNIKI:"
Print

If Abs(a) < EPS Then
  Print "Brak rownania szesciennego"
Else

  ' Obliczamy współczynniki
  ' pomocnicze f, g i h
  f = (c - b * b / 3 / a) / a
  g = ((2 * b * b / 9 / a - c) / _
      a * b / 3 + d) / a
  h = g * g / 4 + f * f * f / 27

  ' Sprawdzamy kolejne warunki
  If (Abs(f) < EPS) And _
     (Abs(g) < EPS) Then

    ' Pierwiastek potrójny
    x1 = -qrt(d / a)
    x2 = x1
    x3 = x1
    Print "Pierwiastek potrojny:"
    Print
    Print Using "x1 = ######.#####"; x1
    Print Using "x2 = ######.#####"; x2
    Print Using "x3 = ######.#####"; x3

  ElseIf h >= EPS Then

    ' Jeden pierwiastek rzeczywisty
    x1 = qrt(-g / 2 + Sqr(h)) + _
         qrt(-g / 2 - Sqr(h)) - b / 3 / a
    Print "Jeden pierwiastek:"
    Print
    Print Using "x1 = ######.#####"; x1

  Else

    ' Trzy pierwiastki rzeczywiste

    i = Sqr(g * g / 4 - h)
    j = qrt(i)
    k = ACos(-g / 2 / i)
    m = Cos(k / 3)
    n = Sqr(3) * Sin(k / 3)
    p = -b / 3 / a
    x1 = 2 * j * m + p
    x2 = -j * (m + n) + p
    x3 = -j * (m - n) + p
    Print "Trzy pierwiastki rzeczywiste:"
    Print
    print Using "x1 = ######.#####"; x1
    Print Using "x2 = ######.#####"; x2
    Print Using "x3 = ######.#####"; x3

  End If
End If

Print
Print "Nacisnij Enter..."
Sleep   
End

' Funkcja wylicza pierwiastek 3 stopnia
'--------------------------------------
Function qrt(x As Double) As Double
   If Abs(x) < EPS Then
      qrt = 0
   Else
      qrt = Sgn(x) * Exp(Log(Abs(x)) / 3)
   End If
End Function
Python (dodatek)
# Program rozwiązuje równanie sześcienne
#---------------------------------------
# (C)2026 mgr J.Wałaszek I LO w Tarnowie

import math

# dokładność porównania z zerem
EPS = 0.0000000001

#---------------
# Program główny
#---------------

print("Równanie sześcienne")
print("  3    2")
print("ax + bx + cx + d = 0")
print("--------------------------")
print("(C)2026 mgr Jerzy Wałaszek")
print()
a = float(input("a = "))
b = float(input("b = "))
c = float(input("c = "))
d = float(input("d = "))
print()
print("WYNIKI:")
print()

if abs(a) < EPS:
    print("Brak równania sześciennego")
else:
    # Obliczamy współczynniki
    # pomocnicze f, g i h
    f = (c - b * b / 3 / a) / a
    g = ((2 * b * b / 9 / a - c) /
        a * b / 3 + d) / a
    h = g * g / 4 + f * f * f / 27

    # Sprawdzamy kolejne warunki
    if (abs(f) < EPS) and \
       (abs(g) < EPS):

        # Pierwiastek potrójny
        x1 = -qrt(d / a)
        x2,x3 = x1,x1
        print("Pierwiastek potrójny:")
        print()
        print("x1 = %12.5f" % x1)
        print("x2 = %12.5f" % x2)
        print("x3 = %12.5f" % x3)
    elif h >= EPS:

        # Jeden pierwiastek rzeczywisty
        x1 = math.cbrt(-g / 2 + math.sqrt(h)) + \
             math.cbrt(-g / 2 - math.sqrt(h)) - \
             b / 3 / a
        print("Jeden pierwiastek:")
        print()
        print("x1 = %12.5f" % x1)

    else:

        # Trzy pierwiastki rzeczywiste
        i = math.sqrt(g * g / 4 - h)
        j = math.cbrt(i)
        k = math.acos(-g / 2 / i)
        m = math.cos(k / 3)
        n = math.sqrt(3) * math.sin(k / 3)
        p = -b / 3 / a
        x1 = 2 * j * m + p
        x2 = -j * (m + n) + p
        x3 = -j * (m - n) + p
        print("Trzy pierwiastki rzeczywiste:")
        print()
        print("x1 = %12.5f" % x1)
        print("x2 = %12.5f" % x2)
        print("x3 = %12.5f" % x3)

print()
input("Naciśnij Enter...")
Wynik:
Równanie sześcienne
  3    2
ax + bx + cx + d = 0
--------------------------
(C)2026 mgr Jerzy Wałaszek

a = 1
b = -6
c = 11
d = -6

WYNIKI:

Trzy pierwiastki rzeczywiste:

x1 =      3.00000
x2 =      1.00000
x3 =      2.00000

Naciśnij Enter...
JavaScript
<html>
  <head>
  </head>
  <body>
<div align="center">
<form name="frmbincode">
  <div style="overflow-x: auto; overflow-y: hidden;">
    <h3>Demonstracja rozwiązywania
    równania sześciennego</h3>
    ax<sup>3</sup> +
    bx<sup>2</sup> +
    cx + d = 0<br>
    <br>
    (C)2006
    <nobr>mgr Jerzy Wałaszek</nobr>
    <nobr>I LO w Tarnowie</nobr>
  </div>
  <hr>
  <div style="overflow-x: auto; overflow-y: hidden;">
    Wpisz do pól edycyjnych
    kolejne współczynniki 
	równania<br><br>
	<nobr>a = <input
              type="text"
              name="wsp_a"
              size="16"
              value="1"
              style=
              "text-align: right">
      </nobr>
    <br>
	<nobr>b = <input
	          type="text"
	          name="wsp_b"
	          size="16"
	          value="-6"
	          style=
                "text-align: right">
      </nobr>
    <br>
	<nobr>c = <input
              type="text"
              name="wsp_c"
              size="16"
              value="11"
              style=
              "text-align: right">
      </nobr>
    <br>
    <nobr>d = <input
              type="text"
              name="wsp_d"
              size="16"
              value="-6"
              style=
              "text-align: right">
    </nobr>
  </div>
  <hr>
  <div style="overflow-x: auto; overflow-y: hidden;">
    <input
    type="button"
    value="Rozwiąż równanie"
    name="B1"
    onclick="main()">
  </div>
  <hr>
  <div style="overflow-x: auto; overflow-y: hidden;"
  id="out">
    .
  </div>
</form>
</div>

<script language=javascript>

// Program rozwiązuje
// równanie sześcienne
//--------------------
// (C)2006 mgr J.Wałaszek
// I LO w Tarnowie

// dokładność porównania z zerem
var EPS = 0.0000000001

// funkcja wylicza
// pierwiastek 3 stopnia
//----------------------
function qrt(x)
{
  return Math.abs(x) < EPS ? 0 :
  (x > 0 ? Math.exp(Math.log(x)/3) :
  -Math.exp(Math.log(-x)/3))
}

function main()
{
  var a,b,c,d,f,g,h,i,j,
      k,m,n,p,x1,x2,x3,t

  a = parseFloat(document
      .frmbincode.wsp_a.value)
  b = parseFloat(document
      .frmbincode.wsp_b.value)
  c = parseFloat(document
      .frmbincode.wsp_c.value)
  d = parseFloat(document
      .frmbincode.wsp_d.value)
  if(isNaN(a) || isNaN(b) ||
     isNaN(c) || isNaN(d))
    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 " +
        "sześcienne" +
        "</b></font>"
  else
  {
    // Obliczamy współczynniki
    // pomocnicze f,g i h
    f = ((3*c/a) - (b*b/a/a))/3
    g = (2*b*b*b/a/a/a - 9*b*c/a/a +
        27*d/a)/27
    h = g*g/4 + f*f*f/27

    // Sprawdzamy kolejne warunki
    if((Math.abs(f) < EPS) &&
       (Math.abs(g) < EPS))
    {
      // Pierwiastek potrójny
      x1 = x2 = x3 = - qrt(d/a)
      t = "Pierwiastek potrojny:" +
           "<BR><BR><nobr>x" +
           "<sub>1</sub> = " +
           x1 + "</nobr><br>" +
           "<nobr>x<sub>2</sub> = " +
           x2 + "</nobr><br>" +
           "<nobr>x<sub>3</sub> = " +
           x3 + "</nobr>"
    }
    else if(h > EPS)
    {
      // Jeden pierwiastek
      // rzeczywisty
      x1 = qrt(-g/2 +
           Math.sqrt(h)) +
           qrt(-g/2 -
           Math.sqrt(h)) -
           b/3/a
      t = "Jeden pierwiastek " +
          "rzeczywisty:<BR><BR>" +
          "<nobr>x<sub>1</sub> = " +
          x1 + "</nobr>"
    }
    else
    {
      // Trzy pierwiastki
      // rzeczywiste
      i  = Math.sqrt(g*g/4 - h)
      j  = qrt(i)
      k  = Math.acos(-g/2/i)
      m  = Math.cos(k/3)
      n  = Math.sqrt(3) *
           Math.sin(k/3)
      p  = -b/3/a
      x1 = 2*j*m + p
      x2 = -j*(m + n) + p
      x3 = -j*(m - n) + p
      t = "Trzy pierwiastki " +
          "rzeczywiste:<BR><BR>" +
          "<nobr>x<sub>1</sub> = " +
          x1 + "</nobr><br>" +
          "<nobr>x<sub>2</sub> = " +
          x2 + "</nobr><br>" +
          "<nobr>x<sub>3</sub> = " +
          x3 + "</nobr>"
    }
  }
  document.getElementById("out")
  .innerHTML = t;
}

</script>
  </body>
</html>
Demonstracja rozwiązywania
równania sześciennego


ax3 + bx2 + cx + d = 0

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

a =
b =
c =
d =

Wyniki:
.

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.
Informacje dodatkowe.