sto usando sympy per risolvere un polinomio:Ignora radici immaginarie in 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 è un elenco di possibili soluzioni. Tuttavia, ho bisogno di ignorare quelli immaginari e utilizzare solo le soluzioni reali. Inoltre, mi piacerebbe che la soluzione come valore non fosse un'espressione. In questo momento sembra:
[-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]
Ho bisogno del valore dell'ultima espressione (-2.22756). Ci sono funzioni in sympy per semplificare questo?
SymPy probabilmente non è la libreria corretta da utilizzare se si è interessati solo alla conversione in virgola mobile/doppia della radice. Se usi numpy/scipy probabilmente otterrai prestazioni migliori e codice più semplice. E se scegli sympy over numpy/scipy perché è più piccolo puoi diventare ancora più piccolo con mpmath che viene usato all'interno di sympy per i numeri (di precisione arbitraria non limitata dalla macchina) – Krastanov