Równanie sześcienne

Z testwiki
Przejdź do nawigacji Przejdź do wyszukiwania
Wykres funkcji sześciennejf(x)=x3+3x26x8 która ma 3 pierwiastki rzeczywiste: są nimi współrzędne x punktów przecięcia wykresu osią x: 2, -1 oraz -4. Pozwala to na zapis w postaci iloczynowej – rozkład na czynniki liniowe: f(x)=(x2)(x+1)(x+4)

Równanie sześcienne lub trzeciego stopniarównanie algebraiczne postaci

ax3+bx2+cx+d=0,

gdzie

a0.

Jeżeli współczynniki

a,b,c,d

równania są liczbami rzeczywistymi, to równanie ma trzy pierwiastki, w tym co najmniej jeden pierwiastek rzeczywisty.

Jeżeli współczynniki te są liczbami zespolonymi, to równanie to ma trzy pierwiastki – na ogół są zespolone.

Rys historyczny

Strona tytułowa Ars Magna

Równania sześcienne zostały rozwiązane w pierwszej połowie XVI wieku. W tamtym czasie w Europie nie używano jeszcze liczb ujemnych i każde równanie zapisywano tak aby wszystkie współczynniki były dodatnie. Rozważano więc szereg różnych typów równań trzeciego stopnia. Matematycy wiedzieli jednak, że rozwiązanie ogólnego równania trzeciego stopnia może być zredukowane do rozwiązania równania:

x3=n±mx gdzie  m,n>0.

Włoski matematyk Scipione del Ferro podał metodę rozwiązania jednego z tych typów, a prawdopodobnie też i drugiego. Nie rozgłaszał on swoich odkryć i przekazał on swoją metodę jedynie paru osobom, np. jego student Fior wiedział, jak rozwiązać równanie pierwszego typu. Del Ferro zapisywał wszystkie swoje odkrycia w notatniku, który po jego śmierci przeszedł w posiadanie Hannibala Navego, zięcia del Ferro. (Nave był również matematykiem i po śmierci teścia w 1526 r. przejął jego posadę na Uniwersytecie Bolońskim).

Niezależnie (ale i później) równania te były rozwiązane przez Niccolò Tartaglię. Potrafił on rozwiązać niektóre typy równań, kiedy w 1535 zaaranżowano mecz matematyczny pomiędzy Fiorem a Tartaglią. W czasie tej debaty każda ze stron podała drugiej 30 równań do rozwiązania. Podczas gdy zadania przygotowane przez Tartaglię były bardzo różnorodne, te podane przez Fiora dotyczyły tylko jedynego typu równań, które Fior potrafił rozwiązać. Rankiem 13 lutego 1535 Tartaglia odkrył sposób na rozwiązywanie tego typu równań i mecz wygrał. Swojej metody rozwiązywania równań Tartaglia nie chciał jednak ogłosić.

Girolamo Cardano uprosił Tartaglię w 1539 r. o wyjawienie metody rozwiązywania równań sześciennych, w zamian zobowiązując się do dochowania tajemnicy i nieujawniania metody. W 1540 r., Lodovico Ferrari, asystent Cardana, odkrył metodę redukcji równań czwartego stopnia do równań sześciennych. Razem z metodą rozwiązywania tych ostatnich pozwalało to rozwiązać wszystkie typy równań stopnia 4, jednak odkrycie to nie mogło zostać opublikowane ze względu na obietnicę daną Tartaglii.

W 1543 r. Cardano i Ferrari odwiedzili Navego, zięcia del Ferro, w Bolonii i dowiedzieli się od niego, że to del Ferro był pierwszym matematykiem, który rozwiązał równania trzeciego stopnia. Cardano uznał, że obietnica dana Tartaglii nie obowiązuje go więcej i opublikował metodę rozwiązywania równań 3. i 4. stopnia w swoim dziele Ars Magna w 1545.

Równania sześcienne znalazły zastosowanie m.in. w fizyce i chemii, np. w termodynamice. Równanie van der Waalsa jest równaniem sześciennym ze względu na objętość opisywanego gazu.

Sprowadzenie do postaci kanonicznej

Aby wyznaczyć pierwiastki równania sześciennego o współczynnikach rzeczywistych lub zespolonych Szablon:Wzór

równanie to sprowadza się do tak zwanej postaci kanonicznej

Szablon:Wzór

gdzie:

p=cab23a2
q=2b327a3+dabc3a2

Postać kanoniczną uzyskuje się stosując do równania wyjściowego podstawienie:

x=yb3a

Po znalezieniu rozwiązań równania kanonicznego Szablon:LinkWzór rozwiązania pierwotnego równania Szablon:LinkWzór znajduje się z ostatniego wzoru zamieszczonego powyżej.

Uzasadnienie wzorów prowadzących do postaci kanonicznej

Dzieląc obie strony równania Szablon:LinkWzór przez a, otrzymuje się

x3+bax2+cax+da=0.

Stosując podstawienie x=yb3a, otrzymuje się

(yb3a)3+ba(yb3a)2+ca(yb3a)+da=0.

Po wymnożeniu, uproszczeniu i poszeregowaniu według potęg otrzymuje się

y3y2ba+y2ba+yb23a2y2b23a2+ycab327a3+b39a3bc3a2+da=0.

Wyraz z kwadratem znika i otrzymuje się:

y3+y(cab23a2)+2b327a3+dabc3a2=0.

Stosując podstawienia:

p=cab23a2,
q=2b327a3+dabc3a2.

otrzymuje się równanie w postaci kanonicznej Szablon:LinkWzór.

Równanie kanoniczne o współczynnikach rzeczywistych

Aby wyznaczyć pierwiastki równania kanonicznego Szablon:LinkWzór, oblicza się tzw. wyróżnik

Δ=0.25>0: Funkcja sześciennaf(x)=x31=(x1)(x2+x+1) ma pierwiastek rzeczywisty x0=1 oraz dwa pierwiastki zespolone x1=12+i32, x2=12i32 - pierwiastki zespolone pojawiają się z równania kwadratowego x2+x+1.
Δ=(p3)3+(q2)2

(pojęcie wyróżnika jest analogiczne jak dla funkcji kwadratowej). Jeżeli równanie ma współczynniki rzeczywiste, to wyróżnik jest liczbą rzeczywistą - wtedy mają sens poniższe wzory, gdzie zależnie od znaku wyróżnika są 3 możliwe przypadki.

Przypadek 1   Δ>0:Szablon:Odn

Oblicza się

u=q2Δ3
v=q2+Δ3

Równanie Szablon:LinkWzór ma pierwiastek rzeczywisty

y0=u+v

oraz dwa pierwiastki zespolone, wzajemnie sprzężone

y1=12(u+v)+i32(uv)
Δ=0,q0: Funkcja sześciennaf(x)=x34x2+5x2 =(x1)2(x2) ma pierwiastki: podwójny x0=x1=1 oraz pojedynczy x2=2.
y2=12(u+v)i32(uv)
Przypadek 2 Δ=0:Szablon:Odn

2.1 Gdy q0 (wtedy wobec Δ=0 jest p0), to

y0=y1=q23
y2=2 q23

- równanie Szablon:LinkWzór ma jeden pierwiastek rzeczywisty podwójny i jeden pojedynczy

2.2 Gdy q=0 (wtedy też p=0), to równanie Szablon:LinkWzór ma jeden pierwiastek rzeczywisty potrójny:

y0=y1=y2=0 
Przypadek 3   Δ<0:Szablon:Odn
Δ=0.037<0: Funkcja sześcienna f(x)=x36x2+11x6 ma trzy różne pierwiastki rzeczywiste: x0=1,x1=2, x2=3.

Równanie Szablon:LinkWzór ma trzy różne pierwiastki rzeczywiste:

y0=2p3cosφ3,
y1=2p3cosφ+2π3,
y2=2p3cosφ+4π3,

gdzie:

φ=arccos(3q2pp3)<0,π>

Uwagi na temat obliczeń pierwiastków:

(a) Symbole pierwiastków kwadratowych we wzorach oznaczają pierwiastki kwadratowe rzeczywiste (pierwiastki arytmetyczne), tj. pierwiastki z liczb dodatnich, dające jako wartość liczbę dodatnią. Pierwiastki te są dobrze określone, gdyż liczy się je z Δ>0, albo we wzorze y0=2p3cosφ3, gdy Δ<0, wtedy p<0; dlatego p jest jednoznacznie określoną liczbą dodatnią (gdyby pod pierwiastkiem była liczba ujemna, to pierwiastek byłby niejednoznacznie określony - bowiem dla liczb ujemnych mielibyśmy dwa pierwiastki zespolone).

(b) Symbole pierwiastków sześciennych we wzorach oznaczają pierwiastki sześcienne rzeczywiste, tj. we wzorach u=q2Δ3, v=q2+Δ3, y0=y1=q23. Obliczanie ich nie prowadzi do błędów, gdy używa się kalkulatora, ale wymaga ostrożności w używaniu programowania komputerowego: w przypadku liczb ujemnych należy obliczać te wielkości jako liczby rzeczywiste, tj. dla liczb ujemnych m3=|m|3, gdzie |m| - wartość bezwzględna liczby. Problem obliczeń ww. pierwiastków z użyciem programów komputerowych omówiono dalej.

Przykłady równań sześciennych

Zależność liczby pierwiastków rzeczywistych od wyróżnika

Poniższe przykłady ilustrują różne przypadki, jakie występują przy rozwiązywaniu równania sześciennego. Z podanych tu funkcji sześciennych w postaci iloczynowej natychmiast widać rozwiązania. Jednak w ogólnym przypadku liczbę pierwiastków można określić dla każdej funkcji sześciennej bez znajomości pierwiastków, określając znak wyróżnika

Δ=(p3)3+(q2)2
Zmiana liczby pierwiastków równania sześciennego ax3+bx2+cx+d=0 - (punktów przecięcia wykresów z osią OX) związana ze zmianą wyrazu wolnego d: wzrost d powoduje przesuwanie wykresu w górę i wzrasta liczba pierwiastków. Tu p0

(1) Funkcja sześcienna

f(x)=x31=(x1)(x2+x+1)

ma jeden pierwiastek rzeczywisty x0=1 oraz dwa pierwiastki zespolone x1=12+i32, x2=12i32, które są pierwiastkami równania kwadratowego x2+x+1 (równanie to ma deltę mniejszą od zera); funkcję sześcienną można przedstawić w postaci czynnikowej

f(x)=(x1)[x(12+i32)][x(12i32)]

Licząc p,q,Δ stwierdzimy, że tu Δ>0.

(2.1) Funkcja sześciennaf(x)=x34x2+5x2 =(x1)2(x2)

ma pierwiastek podwójny x0=x1=1 oraz pierwiastek pojedynczy x2=2. Licząc p,q,Δ stwierdzimy, że tu Δ=0,q0.

(2.2) Funkcja sześciennaf(x)=x33x2+3x1=(x1)3

ma pierwiastek potrójny x0=x1=x2=1. Licząc p,q,Δ stwierdzimy, że tu Δ=0,q=0.

(3) Funkcja sześcienna

Brak zmiany liczby pierwiastków równania sześciennego ax3+bx2+cx+d=0, pomimo zmiany wyrazu wolnego d: wzrost d powoduje przesuwanie wykresu w górę, ale nie wzrasta liczba pierwiastków. Tu p=0. W takiej sytuacji równanie ma zawsze pojedynczy pierwiastek rzeczywisty i dwa zespolone.
f(x)=x36x2+11x6=(x1)(x2)(x3)

ma 3 pierwiastki rzeczywiste: x0=1, x1=2 oraz x2=3; można ją przedstawić w postaci czynnikowej wyżej podanej. Licząc p,q,Δ stwierdzimy, że tu Δ<0.

Zależność liczby pierwiastków rzeczywistych od wyrazu wolnego

Dla funkcji kwadratowej liczba pierwiastków (punktów przecięcia wykresu z osią OX) będzie zmieniać się wraz z przesuwaniem wykresu funkcji wzdłuż osi OY w górę. Własność ta występuje dla funkcji sześciennej, ale z wyjątkiem szczególnym: gdy p=0, to równanie ma zawsze pojedynczy pierwiastek rzeczywisty i dwa zespolone. Wynika to z postaci równania kanonicznego x3+px+q=0: podstawiając p=0 otrzymamy x=q3 – pierwiastek sześcienny ma zawsze jedno rozwiązanie rzeczywiste i dwa zespolone (por. pierwiastki sześcienne w dziedzinie zespolonej).

Uwaga nt. obliczeń numerycznych. Kod programu.

Liczenie pierwiastków 3-go stopnia z liczb ujemnych

Obliczanie pierwiastków sześciennych q2Δ3, q2+Δ3, q23 z użyciem programowania komputerowego wymaga istotnej uwagi, gdyż w przypadku liczb ujemnych należy obliczać te wielkości jako liczby rzeczywiste, tj. dla liczb ujemnych m3=|m|3, gdzie |m| - wartość bezwzględna liczby. Jednak wiele bibliotek liczy pierwiastki sześcienne z liczb ujemnych jako tzw. pierwiastki główne zespolone, co prowadzi do błędów.

Np. w języku Python nie należy używać funkcji cmath.pow(m, 1/3) z biblioteki cmath lub instrukcji m**(1/3) do liczenie pierwiastków 3-go stopnia z liczby m, gdyż dla liczb ujemnych otrzyma się jako wynik tzw. główny pierwiastek zespolony (jeden z trzech możliwych w tym wypadku pierwiastków zespolonych), a nie pierwiastek sześcienny w dziedzinie liczb rzeczywistych (np. dla 8 zamiast 2 otrzyma się liczbę 1+1.732j ), co prowadzi do błędnych wyników. W Python można zaś użyć funkcji cbrt (cubic root) z biblioteki numpy, co daje poprawnie liczbę rzeczywistą lub napisać własny, krótki kod:        

if m>0: u=m**(1/3)
else: u=-(-m)**(1/3)

Program do liczenie pierwiastków równania sześciennego o współczynnikach rzeczywistych

Poniżej podano przykład kodu w języku Python, znajdujący pierwiastki równania sześciennego wg wzorów wyżej podanych dla równania sześciennego o współczynnikach rzeczywistych. Program można testować, korzystając np. z darmowego notatnika colab google online. W programie obliczane są pierwiastki dla 5 zestawów danych (tj. dane są współczynniki a, b, c, d równania sześciennego) i rysowane są wykresy funkcji sześciennych. Użytkownik może dodać własne zestawy współczynników (linia 55 kodu). W linii 77 kodu: x = linespace(-1, 4, 1000) liczby -1, 4 określają zakres zmiennej x, w jakim rysowany jest wykres - można dostosować do własnych przykładów.

# JK 2024.07.19 v.2 Program oblicza pierwiastki równania sześciennego 
# o współczynnikach rzeczywistych wg wzorów podanych w:
# W. Zakowski, Mały poradnik matematyczny, Warszawa, 1977, str. 255-256.

import numpy as np, matplotlib.pyplot as plt, cmath

# ----------------------------------------------------------------------------#
#    GłóWNA FUNKCJA, OBLICZAJĄCA PIERWIASTKI RÓWNANIA SZEŚCIENNEGO            #
# ----------------------------------------------------------------------------#

def solve_cubic(a, b, c, d):
    p = c/a - b**2 / (3*a**2)
    q = 2 * b**3 / (27*a**3) + d/a - b * c / (3*a**2)
    D = (q / 2)**2 + (p / 3)**3
    s= b / (3*a)

# --------------- D > 0 ------------------------------------------------#
    if D > 0:
        # Liczę pierwiastki sześcienne z danych liczb. 
        # Uwaga: Nie używać cmath ani m**(1/3) do liczenie pierwiastków 3-go stopnia,
        # bo dla liczb ujemnych wynikiem pierwiastek główny zespolony, 
        # a nie pierwiastek sześcienny dla liczb rzeczywistych!
        u = np.cbrt(-q / 2 + D**0.5) # cbrt - poprawnie liczy pierwiastek sześcienny 
        v = np.cbrt(-q / 2 - D**0.5) # z liczb ujemnych
        
        y0 = u + v
        y1 = -(u + v)/2 + (u-v) * 3**0.5/2 * 1j
        y2 = -(u + v)/2 - (u-v) * 3**0.5/2 * 1j
        roots_x = [y0 - s, y1 - s, y2 -s]
        INFO="Przypadek Delta > 0 - jeden pierwiastek rzeczywisty, dwa zespolone"

# --------------- D = 0 ------------------------------------------------#
    elif D == 0:
        u = np.cbrt(q / 2) # pierwiastek sześcienny
        roots_x = [u - s, u - s, -2*u - s]
        if q == 0: INFO="Przypadek Delta = 0, q = 0 - pierwiastek potrójny rzeczywisty"
        else:      INFO="Przypadek Delta = 0 - pierwiastki rzeczywiste: podwójny i pojedynczy"
# --------------- D <  0 ------------------------------------------------#
    else:
        r = (-p/3)**0.5
        theta = cmath.acos(3*q / (2*p*r))
        y0 = 2*r *cmath.cos(theta/3)
        y1 = 2*r *cmath.cos((theta + 2*cmath.pi)/3)
        y2 = 2*r *cmath.cos((theta + 4*cmath.pi)/3)
        roots_x = [y0 - s, y1 - s, y2 -s]
        INFO="Przypadek Delta < 0 - trzy różne pierwiastki rzeczywiste"
    return roots_x, D, p, q, INFO

# ----------------------------------------------------------------------------#
# Zestaw współczynników a, b, c, d równań sześciennych - różne przypadki;
#        można dopisać własne współczynniki równania
# ----------------------------------------------------------------------------#

coefficients_list = [
 (1,-6, 11, -6), # D<0    : f(x)=x³-6x²+11x-6=(x-1)(x-2)(x-3) - trzy pierwiastki pojedyncze
 (1,-4,  5, -2), # D=0    : f(x)=x³-4x²+5x-2 =(x-1)²(x-2)     - pierwiastki podwójny i pojedynczy
 (1,-3,  3, -1), # D=0,q=0: f(x)=x³-3x²+3x-1 =(x-1)³          - pierwiastek potrójny
 (1, 0,  0, -1), # D>0    : f(x)=x³-1 =(x-1)(x²+x+1)          - pierwiastek pojedynczy i 2 zespolone
 (1,-1,  1, -1), # D>0    : f(x)=x³-x²+x-1 =(x-1)(x²+1)       - pierwiastek pojedynczy i 2 zespolone
]

# Funkcja do określenia znaku
def znak(w):
    return "+" if w > 0 else "-"

# Przechodzimy przez każdy zestaw współczynników
for coeffs in coefficients_list:
    a, b, c, d = coeffs
    roots_x, D, p, q, INFO = solve_cubic(a, b, c, d)

    # Rysujemy wykres funkcji
    x = np.linspace(-1, 4, 1000)
    y = a*x**3 + b*x**2 + c*x + d
    plt.plot(x, y, 'b-')

    # Rysujemy rzeczywiste pierwiastki
    real_roots = sorted([root.real for root in roots_x if abs(root.imag) < 1e-5])
    plt.plot(real_roots, [a*r**3 + b*r**2 + c*r + d for r in real_roots], 'ro')

    # Dodajemy etykiety do pierwiastków
    for root in real_roots:
        plt.text(root, a*root**3 + b*root**2 + c*root + d + 0.5, f'{root:.3f}', verticalalignment='bottom', horizontalalignment='center')

    plt.axhline(0, color='gray', linestyle='-')
    plt.axvline(0, color='gray', linestyle='-')
    plt.xlabel('x')
    plt.ylabel('f(x)')
    plt.title(f'Wykres funkcji f(x)={a}{znak(b)} {abs(b)}{znak(c)} {abs(c)}x {znak(d)} {abs(d)}', pad=20)
    plt.show()

    # Wypisujemy wartości pierwiastków
    formatted_roots = [f"{root.real:.3f} {znak(root.imag)}{abs(root.imag):.3f}*j" if abs(root.imag) > 1e-5 else f"{root.real:.3f}" for root in roots_x]
    # Usuwamy nawiasy i apostrofy z wydruku
    print("PIERWIASTKI RÓWNANIA SZEŚCIENNEGO:", ", ".join(formatted_roots))
    print(" ")
    # Informacja nt. nt. D, p, q
    print(INFO)
    print(f"Delta = {D:.4g}, p= {p:.4g}, q= {q:.4g}")
    if abs(D)<10**(-15) and D!= 0:
          print("|Delta|< 10^(-15) - może być 1 pierwiastek podwójny i 1 pojedynczy, nie 3 pojedyncze (brak precyzji mozliwy z powodu przybliżeń numerycznych)")
    print("--------------------------------------------------------------------------M")

Równanie kanoniczne o współczynnikach zespolonych

Jeżeli równanie sześcienne ma współczynniki zespolone

ax3+bx2+cx+d=0

tj. a,b,c,dC, to sprowadza się je do postaci kanonicznej (w sposób identyczny jak równanie o współczynnikach rzeczywistych)

y3+py+q=0

gdzie:

p=cab23a2
q=2b327a3+dabc3a2

przy czym stosuje się podstawienie

x=yb3a

Pierwiastki równania kanonicznego

Słuszne są wzory:

y0=u+v
y1=12(u+v)+i32(uv)
y2=12(u+v)i32(uv)

gdzie:

u=q2Δ3
v=q2+Δ3
Δ=(p3)3+(q2)2

przy czym jako u,v należy wybrać jakiekolwiek spośród możliwych pierwiastków zespolonych 3-go stopnia u1,u2,u3 oraz v1,v2,v3, ale tak, by był spełniony warunek: uv=p/3.Szablon:Odn

Uwaga 1 O ogólności wzorów: Dla równania o współczynnikach zespolonych wyróżnik Δ może być liczbą zespoloną - dlatego tu nie można rozpatrywać przypadków Δ>0, Δ=0, Δ<0 (jak to pokazano dla równań o współczynnikach rzeczywistych), bo dla liczb zespolonych nie ma relacji > czy <. Jednak powyższe rozwiązania obejmują także jako szczególny przypadek równania o współczynnikach rzeczywistych.

Uwaga 2 O wyborze jednego z dwóch pierwiastków kwadratowych: Pierwiastek 2-go stopnia z wyróżnika Δ w dziedzinie zespolonej ma dwie wartości Δ(0),Δ(1), które są liczbami zespolonym, przeciwnymi: Δ(0)=Δ(1) (np. 1+i(0)=+1.099+0.455j,1+i(1)=1.0990.455j). W obliczeniach należy wybrać jedną wartość pierwiastka - wybranie drugiej prowadziłoby do takich samych wyników na u,v, tyle że u,v wymieniłyby się wartościami (własność ta wynika z symetrii wzorów na u,v). W konsekwencji wymieniłyby się wartości y1i y2; wartość y0 pozostałaby bez zmian. Ponieważ równanie algebraiczne 3-go stopnia ma 3 pierwiastki zespolone, to oba rozwiązania dublują się, a nie są to np. pierwiastki podwójne.

Pierwiastki ogólnego równania sześciennego

Z zależności x=yb3a otrzymuje się ostatecznie rozwiązania równania wyjściowego Szablon:LinkWzór:

x0=v0+u0b3a
x1=12(u0+v0)+i32(u0v0)b3a
x2=12(u0+v0)i32(u0v0)b3a

Powyżej wyprowadzone wzory nazywane są wzorami Cardana[1]. Są one współczesnym uogólnieniem metody opisanej przez Girolama Cardana w Ars Magna.

Wyprowadzenie wzoru na pierwiastek y0

Wyprowadzenie to będzie słuszne dla równania w ogólności o współczynnikach zespolonych, co obejmuje równania o współczynnikach rzeczywistych. Dalej będą wyprowadzone wzory na pierwiastki y1 oraz y2.

Rozważamy równanie kanoniczneSzablon:Wzór

(a) Jeśli p=0 (a jest tak, gdy c=b23a), to mamy natychmiast rozwiązanie:

y=q3

- wystarczy obliczyć pierwiastek zespolony 3-go stopnia z liczby q (por. pierwiastki sześcienne) wg wzoru de Moivre'a; w wyniku otrzyma się trzy liczby zespolone lub jedną rzeczywistą i dwie zespolone.

Choć przypadek p=0 zawiera się w ogólnych wzorach, podanych na początku działu i niżej wyprowadzonych, to podano go tu ze względu na szczególne uproszczenie obliczeń w tym przypadku.

(b) Wprowadzamy dwie zmienne pomocnicze u,v takie że: y=u+v. Wówczas

Szablon:Wzór

Po uporządkowaniu wyrazów z Szablon:LinkWzór mamy równanieSzablon:Wzór

Zmienne u,v można dobrać na nieskończenie wiele sposobów. Teraz załóżmy, że u,v są takie, że

Szablon:Wzór

Wówczas y=u+v spełnia równanie Szablon:LinkWzór gdy spełnia równanie Szablon:LinkWzór. Przekształcamy układ równań Szablon:LinkWzór, by otrzymać rozwiązania dla zmiennych u,v:

{u=p3v(p3v)3+v3+q=0

Z drugiego równania mamy:

v3p327v3+q=0

i po pomnożeniu przez v3 otrzymujemy

(v3)2+q(v3)p327=0

Podstawiając za v3 zmienną pomocniczą z, otrzymujemy równanie kwadratowe:

Szablon:Wzór

Równanie Szablon:LinkWzór ma dwa pierwiastki w dziedzinie zespolonej (które są liczbami rzeczywistymi tylko gdy Δ0; gdy zaś Δ<0 lub Δ jest liczbą zespoloną, to pierwiastki są liczbami zespolonymi):

z=q+q2+4p3272=q2+(q2)2+(p3)3=q2+Δ

gdzie podstawiono:

Δ=(p3)3+(q2)2

Ponieważ v3=z, więc otrzymujemy rozwiązania na v:

v=q2+Δ3

Z drugiego równania układu równań Szablon:LinkWzór mamy u3=v3q; podstawiając do tego równania rozwiązanie na v otrzymamy:

u=q2Δ3

Ostatecznie z zależności y=v+u otrzymamy wzór na pierwiastek y0 równania Szablon:LinkWzór

y0=v+u

tj.

y0=q2+Δ3+q2Δ3

co kończy wyprowadzenie.

Uwaga 1 Eliminacja rozwiązań obcych: Jako u,v należy wybrać jakiekolwiek spośród możliwych pierwiastków zespolonych 3-go stopnia u0,u1,u2 oraz v0,v1,v2, ale tak, by był spełniony warunek: uv=p/3. Wynika to stąd, że rozwiązując układ równań Szablon:LinkWzór podnieśliśmy 1-sze równanie do trzeciej potęgi - to wprowadziło dodatkowe rozwiązania na u,v (tzw. rozwiązania obce), nieobecne w pierwotnym układzie równań. Aby znaleźć rozwiązania właściwe, należy postąpić, jak wyżej wskazano.Szablon:Odn

Uwaga 2 Wszystkie rozwiązania zawarte są w jednym wzorze: De facto wzór y=q2+Δ3+q2Δ3 zawiera wszystkie trzy rozwiązania y0,y1,y2: gdy obliczy się wszystkie pierwiastki zespolone 3-go stopnia u0,u1,u2 oraz v0,v1,v2, to dokładnie trzy pary liczb u,v będą spełniać warunek: uv=p/3, a ich sumy dadzą pierwiastki równania kanonicznego.Szablon:Odn Wynika to stąd, że pierwiastkowanie w dziedzinie liczb zespolonych jest dobrze określoną funkcją wielowartościową. Własność tę zilustrowano w przykładach 1 i 2 w następnym rozdziale.

Uogólnione wzory Cardana na pierwiastki y1,y2

Znając pierwiastek y0 można obliczyć pozostałe pierwiastki y1,y2 równania Szablon:LinkWzór wykorzystując własności symetrii pierwiastków równania kanonicznego, wyrażone we wzorach Viète’a, oraz własności pierwiastków sześciennych z jedynki (por. pierwiastek z jedynki) ω i ω2. Wzory te mają postać:

y1=ωu+ω2v
y2=ω2u+ωv

gdzie:

ω=1+i32
ω2=1i32

Podstawiając ω i ω2 i dokonując przegrupowania wyrazów otrzyma się podane na wstępie tego rozdziału wzory:

y1=12(u+v)+i32(uv)
y2=12(u+v)i32(uv)

Uzasadnienie uogólnionych wzorów Cardana na pierwiastki y1,y2

Metoda I. Pierwiastki kanonicznego równania sześciennego muszą spełniać wzory Viète’a:

{y0+y1+y2=0y0y1+y0y2+y1y2=py0y1y2=q

(dla równania kanonicznego mamy a=1,b=0,c=p,d=q)

Dla pierwiastków z jedynki ω i ω2 słuszne są m.in. zależności (łatwo to sprawdzić):

ω2+ω+1=0
ω3=1
ω4=ω

Podstawiając do wzorów Viète’a zależności

y0=u+v
y1=ωu+ω2v
y2=ω2u+ωv

grupujemy wyrazy i korzystamy z własności pierwiastków ω i ω2. Sprawdzamy, że wzory Viète'a są spełnione. Wynika stąd, że y0,y1,y2 są rozwiązaniami równania kanonicznego Szablon:LinkWzór, gdyż równanie 3-go stopnia ma trzy pierwiastki (ogólnie: równanie n-tego stopnia ma n pierwiastków, w ogólności zespolonych, a także wielokrotnych, przy czym pierwiastek o krotności k traktuje się jako k pierwiastków - por. zasadnicze twierdzenie algebry), co kończy dowód.

Metoda II. Dowód na postać wzorów na y1,y2 z wykorzystaniem ogólnej zależności nieznanych pierwiastków zespolonych od znanego pierwiastka i pierwiastków z jedynki

Pierwiastki y0,y1,y2 są zadane warunkami:

y=u+v
uv=p/3

Mamy już liczby u0,v0, takie że u0v0=p/3, oraz pierwiastek y0=u0+v0, a chcemy teraz znaleźć pierwiastki y1,y2. Skorzystamy z faktu, że dwa nieznane pierwiastki sześcienne dowolnej liczby zespolonej z można wyrazić poprzez jeden znany pierwiastek, gdyż:

z3={t0t1=t0ωt2=t0ω2

gdzie t0 - dowolny z trzech pierwiastków zespolonych danej liczby (por. pierwiastek sześcienny).

Wynika stąd, że pozostałe pierwiastki zespolone u,v są dane wzorami

{u1=u0ωu2=u0ω2

oraz

{v1=v0ωv2=v0ω2

Spośród czterech możliwych konfiguracji znajdujemy takie pary u,v, które spełniają warunek uv=p/3. Otrzymujemy dwie takie pary: u1,v2 oraz u2,v1, gdyż

u1v2=u0ωv0ω2=u0v0=p/3
u2v1=u0ω2v0ω=u0v0=p/3

przy czym skorzystaliśmy z faktu, że ω3=1. Stąd mamy natychmiast

y1=u1+v2=ωu0+ω2v0
y2=u2+v1=ω2u0+ωv0

Po pogrupowaniu i podstawieniu wyrażeń na ω i ω2otrzymamy

y1=12(u0+v0)+i32(u0v0)
y2=12(u0+v0)i32(u0v0)

co kończy dowód.

Podsumowanie

Aby rozwiązać równanie

ax3+bx2+cx+d=0

o współczynnikach zespolonych, sprowadzamy je do postaci kanonicznej

y3+py+q=0

Następnie znajdujemy parę liczb v,u spełniających równania

3uv=p   oraz   u3+v3=q

Wymaga to rozwiązania równania kwadratowego - otrzymujemy pierwiastek y0. Następnie otrzymujemy wzory Cardana na y1,y2 uzasadniając je w oparciu o własności pierwiastków zespolonych z jedynki i wzory Viète'a. Lub korzystamy z własności pierwiastków zespolonych z jedynki i ogólnej zależności pierwiastków dowolnej liczby od pierwiastków z jedynki.

Przykłady obliczania pierwiastków

Podano tu dwa przykłady obliczania pierwiastków równania sześciennego wg uogólnionych wzorów Cardana. Przykład pierwszy dotyczy równania o współczynnikach rzeczywistych. Przykład ten ilustruje, iż uogólnione wzory Cardana obejmują jako przypadek szczególny tego typu równania (rozważane oryginalnie przez Cardana, podane na początku tego artykułu) - nie jest potrzebne stosowania osobnych wzorów. Przykład drugi dotyczy równania o współczynnikach zespolonych. Liczby zespolone nie były znane za czasów Cardana, ale problem poszukiwania pierwiastków równania sześciennego doprowadził ostatecznie do ich odkrycia.

Obliczenia są pracochłonne, jednak pożyteczne jest prześledzenie obliczeń, gdyż w dziedzinie liczb zespolonych mamy funkcje wielowartościowe - obliczenia pierwiastków zespolonych dają 2 wartości dla pierwiastka kwadratowego i 3 dla sześciennego; ponadto wyprowadzone wzory dają rozwiązania obce - aby je wyeliminować, potrzeba sprawdzić 9 iloczynów otrzymanych liczb u,v; liczba możliwych "ścieżek", uwzględniająca więc wszystkie możliwe wartości pośrednie, wynosi w tych obliczeniach 18.

Na tych prostych przykładach widać, jak pożyteczne jest użycie programów komputerowych w obliczeniach.

1. Równanie o współczynnikach rzeczywistych

Dane jest równanie: x3+5x2+4x=0

(a) Przechodzimy do formy kanonicznej y3+py+q=0 licząc p,q:

p=cab23a2
q=2b327a3+dabc3a2

Otrzymujemy:

p=4.3333, q=2.592592

(b) Obliczamy z=q2+Δ

Otrzymujemy: z=1.2962+1.1547i

Uwaga: Otrzymuje się też z=1.29621.1547i, gdyż pierwiastek kwadratowy Δ ma zawsze dwie wartości w dziedzinie liczb zespolonych C; tę drugą wartość pomijamy; gdybyśmy tę wartość przyjęli, to z dalszych obliczeń i tak otrzymalibyśmy te same pierwiastki równania sześciennego (por. Uwaga 2 O wyborze jednego z dwóch pierwiastków kwadratowych - poprzedni rozdział).

(c) Obliczamy v z równania v=z3. Równanie to ma 3 pierwiastki zespolone, które znajdujemy za pomocą wzoru de Moivre'a :

v(k)z3=|z|13[cosφ+2kπ3+isinφ+2kπ3],k=0,1,2 k=0,,n1

gdzie:

n=3 - stopień pierwiastka
z=a2+b2 - moduł liczby zespolonej z=a+ib
ϕ=arctan(ba) - faza liczby z

Dla z=1.2962+1.1547i otrzymamy

|z|=1.29622+1.15472=1.7359
ϕ=arctanba=2.414

oraz trzy pierwiastki sześcienne z z:

v(0)=z3(0)=   0.8333+0.8660 i
v(1)=z3(1)=1.6666+0.2886 i
v(2)=z3(2)=   0.33331.1547 i

(d) Obliczamy qz=1.2962+1.1547i; wielkość ta jest sprzężona do z=1.2962+1.1547i. Liczymy pierwiastki sześcienne analogicznie, jak wyżej:

u(0)=qz3(0)=   0.83330.8660 i
u(1)=qz3(1)=   0.3333+1.1547 i
u(2)=qz3(2)=1.16660.28867 i

(widać, że trzy liczby v(j),j=0,1,2 są sprzężone parami z trzema liczbami u(k)=qz3(k),k=0,1,2)

(e) Spośród liczb v,u znajdujemy takie pary, że vu=p/3=1.44444.

Otrzymujemy trzy takie pary:

{Zestaw nr (I):u=0.83330.866i,v=0.8333+0.866iZestaw nr (II):u=0.3333+1.155i,v=0.33331.155iZestaw nr (III):u=1.1670.2887i, v=1.167+0.2887i

Liczymy pierwiastki ze wzorów:

y0=u+v
y1=12(u+v)+i32(uv)
y2=12(u+v)i32(uv)

Wynik jest zaskakujący: jeżeli wybierzemy którąkolwiek z par liczb v,u, to otrzymamy identyczne zestawy pierwiastków, choć w zmienionej kolejności, tj.

Dla zestawu nr (I)   y0=1.667,y1=2.333,y2=0.6667
Dla zestawu nr (II)  y0=0.6667,  y1=1.667,   y2=2.333
Dla zestawu nr (III)y0=2.333, y1=0.6667, y2=1.667

Widać stąd, że można postępować tak: po znalezieniu jakiejkolwiek pary v,u obliczać dalsze pierwiastki y0,y1,y2 z wyżej podanych wzorów. Lub można też znaleźć te trzy właściwe pary liczb (v,u)(I)(v,u)(II)(v,u)(III), a kolejne pierwiastki będą równe sumom wartości w poszczególnych parach v+u.

(g) Ostatecznie ze wzoru x=yb3a otrzymujemy pierwiastki wyjściowego równania:

x0=0, x1=4, x2=1

2. Równanie o współczynnikach zespolonych

Pierwiastki równania (2+3i)x3+(12i)x2+(1+4i)x+(5+6i)=0 na płaszczyźnie zespolonej

Dane jest równanie:

(2+3i)x3+(12i)x2+(1+4i)x+(5+6i)=0

(a) Obliczamy p,q:

p=0.83431+0.7357 i, q=2.098530.00568 i,

(b) Obliczamy z=q/2Δ: mamy dwa rozwiązania, wybieramy np.z=0.01360+0.02031 i

(c) Liczymy v(k)z3,k=0,1,2:

v(0)=0.2181+0.1915 i , v(1)=0.2749+0.0931 i, v(2)=0.05670.2846 i

(d) Liczymy qz=2.084920.014632 i

oraz liczymy u(j)qz3,j=0,1,2:

u(0)=0.64131.105 i, u(1)=0.6362+1.1079 i, u(2)=1.2780.0029885 i

(e) Znajdujemy takie vkuj,k,j=0,1,2, że vkuj=p/3=0.27810.2452i

{Zestaw nr (I):u=0.64131.105i,v=0.05670.2846iZestaw nr (II):u=0.6362+1.108i,v=0.2749+0.0931iZestaw nr (III):u=1.2780.003i,   v=0.2181+0.1915i

Liczymy pierwiastki z wyżej podanych wzorów: y0,y1,y2. Podobnie jak w przykładzie 1 : jeżeli wybierzemy którąkolwiek z par liczb v,u, to otrzymamy identyczne zestawy pierwiastków, choć w zmienionej kolejności, tj.

Dla zestawu nr (I)    y0=0.69811.39i, y1=1.059+0.1885i, y2=0.3613+1.201iDla zestawu nr (II)  y0=0.3613+1.201i,   y1=0.69811.39i,  y2=1.059+0.1885iDla zestawu nr (III) y0=1.059+0.1885i,y1=0.3613+1.201i,    y2=0.69811.39i

(f) Ostatecznie ze wzoru x=yb3a otrzymujemy pierwiastki wyjściowego równania:

x0=0.80061.21i, x1=0.9568+0.3679i, x2=0.4639+1.381i

Powyższe obliczenia można sprawdzić na stronie WolframAlpha.

Kod programu: Obliczanie pierwiastków równania sześciennego o współczynnikach zespolonych

Poniżej podano kod programu w języku Python wg wzorów wyżej zestawionych dla równania sześciennego o współczynnikach zespolonych. Program można testować np. na darmowym notatniku colab google online. W programie obliczane są pierwiastki dla 1 zestawu danych (tj. danymi są współczynniki a, b, c, d równania sześciennego) i rysowane jest ich położenie na płaszczyźnie zespolonej. Użytkownik może podać własne zestawy współczynników (linia 12 kodu).

# JK2024.07.18 PROGRAM LICZY PIERWIASTKI RÓWNANIA O WSPÓŁCZYNNIKACH # ZESPOLONYCH 
#            ax^3 + bx^2 + cx + d = 0
# wg wzorów podanych w:I. Smirnow, Matematyka wyższa, 
# tom. I, str. 402-405
# I RYSUJE POŁOŻENIE PIERWIASTKÓW NA PŁASZCZYŹNIE ZESPOLONEJ
# UŻYTKOWNIK MOŻE WPISAC WŁASNEZESTAWY WSPÓŁCZYNNIKÓW a, b, c, d

import cmath
import matplotlib.pyplot as plt

# Współczynniki ogólnego równania sześciennego - przykładowe zestawy
a, b, c, d =  2+3j, 1-2j, -1+4j, 5+6j
#a, b, c, d =     1,    5,     4,    0
#a, b, c, d =     1,    0,     0,    1

# Obliczenie p, q, s, D
p = c / a - (b**2) / (3 * a**2)
q = (2 * b**3) / (27 * a**3) + d / a - (b * c) / (3 * a**2)
s = b / (3 * a)
D = cmath.sqrt((q / 2)**2 + (p / 3)**3)

print(f"p={p:.4g}, q={q:.4g}")

# Pierwiastki sześcienne z jedności
omega = cmath.exp(2 * cmath.pi * 1j / 3)
omega2 = omega ** 2

# Obliczenie pierwiastków sześciennych na u i v
u1 = ((-q / 2 - D) ** (1/3))
u2 = omega * u1
u3 = omega2 * u1

v1 = ((-q / 2 + D) ** (1/3))
v2 = omega * v1
v3 = omega2 * v1

# Sprawdzenie wszystkich kombinacji u i v - wybór takich, że u*v=-p/3
possible_roots = []
roots = []

for u in [u1, u2, u3]:
    for v in [v1, v2, v3]:
        if abs(u * v + p / 3) < 1e-10:  # warunek u * v = -p /3
            x0 = u + v - s
            x1 = omega * v + omega2 * u - s
            x2 = omega2 * v + omega * u - s 

            print(f"uv={u*v:.4g},u={u:.4g}, v={v:.4g}, x0={x0:.4g}, x1={x1:.4g}, x2={x2:.4g}")
            x0 = complex(round(x0.real, 4), round(x0.imag, 4))
            possible_roots.append(x0)
            roots.append((u, v))

print(" ----")

# Wykres pierwiastków na płaszczyźnie zespolonej
fig, ax = plt.subplots(figsize=(8, 8), dpi=300)  # Ustawienie DPI dla wysokiej jakości

# Punkty na wykresie
colors = ['bo', 'ro', 'go']
lines =  ['b--', 'r--', 'g--']
labels = []

for i, x in enumerate(possible_roots):
    ax.plot([x.real], [x.imag], colors[i % len(colors)], label=f'Root {i+1}: {x}')  # Punkty z etykietami
    ax.plot([0, x.real], [0, x.imag], lines[i % len(lines)])  # Linie przerywane
    labels.append(f'Root {i+1}: {x}')

# Dodanie legendy
ax.legend()

# Etykiety i tytuł
ax.set_xlabel('Re z')
ax.set_ylabel('Im z')
equation = f"{a}x^3 + {b}x^2 + {c}x + {d} = 0"
ax.set_title(f'Pierwiastki równania sześciennego na płaszczyźnie zespolonej\n{equation}')

# Siatka
ax.grid()

# Równe skalowanie
ax.axis('equal')

# Ustawienie przezroczystego tła
fig.patch.set_alpha(0.0)
ax.patch.set_alpha(0.0)

# Zapisanie wykresu z przezroczystym tłem w wysokiej jakości
plt.savefig('complex_roots.png', transparent=True, dpi=300)

# Wyświetlenie wykresu
plt.show()

Inne metody rozwiązywania równania kanonicznego

Wykorzystanie twierdzenie Bézouta

Jeśli znajdzie się jeden pierwiastek y0 równania Szablon:Wzór

to pozostałe dwa pierwiastki można wyznaczyć korzystając z twierdzenia Bézouta: dzieląc wielomian y3+py+q przez dwumian yy0 otrzyma się jako iloraz równanie kwadratowe: rozwiązując to równanie otrzyma się pozostałe pierwiastki równania Szablon:LinkWzór.

Ważony para-cosinus

Dla równania kanonicznego

y3+py+q=0

korzystamy ze wzorów Viète’a i otrzymujemy:

y1+y2+y3=0,
y1y2+y1y3+y2y3=p,
y1y2y3=q.

Ten nieliniowy układ z trzema niewiadomymi ze względu na wysoką symetrię jest jednym z niewielu, które dają się rozwiązać analitycznie. Ze względu na prostotę pierwszego równania wystarczy zająć się jedynie dwoma następnymi po wyrugowaniu zmiennej y1:

(y2+y3)2+y2y3=p,
(y2+y3)y2y3=q.

Zastosujemy teraz podstawienie para-trygonometryczne (ważony para-cosinus):

y2=eiπ/3z23+eiπ/3z33,
y3=eiπ/3z23+eiπ/3z33,

zależności

y2+y3=z23+z33,y2y3=z232+z332z2z33

prowadzą do układu równań

z2+z3=q,
27z2z3=p3,

który rozwiązujemy rozwiązując proste równanie kwadratowe.

Podstawienie Viète’a

W równaniu kanonicznym y3+py+q=0 podstawiamy

y=zp3z,

co prowadzi do równania kwadratowego na z3

(z3)2+qz3p327=0,

lub równoważnie

t2+qtp327=0

gdzie t=z3. Równanie powyższe ma dwa rozwiązania t1 oraz t2; stąd otrzyma się na z po trzy rozwiązania: z1,i=t13,i=0,1,2 oraz z2,i=t23,i=0,1,2, gdyż w dziedzinie zespolonej każda liczba różna od zera ma zawsze trzy pierwiastki trzeciego stopnia (por. pierwiastek sześcienny). Daje to w sumie sześć rozwiązań na z. Jednak ostatecznie otrzyma się trzy rozwiązania na y, trzy będą dublować się.

Zobacz też

Przypisy

Szablon:Przypisy

Bibliografia

Linki zewnętrzne

Szablon:Wielomiany

Szablon:Kontrola autorytatywna