Używam sympy rozwiązać wielomian:Ignoruj wyimaginowane korzenie w sympy
x = Symbol('x')
y = solve(int(row["scaleA"])*x**3 + int(row["scaleB"])*x**2 + int(row["scaleC"])*x + int(row["scaleD"]), x)
y jest lista możliwych rozwiązań. Muszę jednak zignorować te wyobrażone i wykorzystywać tylko prawdziwe rozwiązania. Chciałbym też, aby rozwiązanie było wartością, a nie wyrażeniem. Teraz wygląda na to:
[-2/3 - 55**(1/3)*(-1/2 - sqrt(3)*I/2)/3, -2/3 - 55**(1/3)*(-1/2 + sqrt(3)*I/2)/3, -55**(1/3)/3 - 2/3]
Potrzebuję wartości ostatniego wyrażenia (-2.227756). Czy istnieją funkcje w sympy, aby to uprościć?
SymPy nie jest najprawdopodobniej odpowiednią biblioteką do użycia, jeśli interesuje Cię tylko zmienna/podwójna aproksymacja korzenia. Jeśli używasz numpy/scipy, prawdopodobnie uzyskasz lepszą wydajność i prostszy kod. A jeśli wybierzesz sympy over numpy/scipy, ponieważ jest on mniejszy, możesz uzyskać jeszcze mniejszy z mpmath, który jest używany wewnątrz sympy do numerowania (arbitralnej precyzji nie ograniczonej przez maszynę). – Krastanov