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',