Eugene Lycenok
Eugene Lycenok

Reputation: 682

sympy polynomial roots expressions

The polynomial roots expressions in sympy do not seem to work for edge cases (when the coefficient for the higher degree is 0). Can anybody explain why? Can we use /rely on the expressions for the roots?

import sympy as sy

lam = sy.symbols("lambda")
a_0, a_1, a_2, a_3 = sy.symbols("a_0 a_1 a_2 a_3")
eq = sy.Eq(a_3 * (lam ** 3) + a_2 * (lam ** 2) + a_1 * (lam ** 1) + a_0, 0)
polynome_solutions = sy.solve(eq, lam)
print(polynome_solutions)
for solution in  polynome_solutions:
    print(solution.subs([(a_3, 0), (a_2, 1), (a_1, 0), (a_0, -1)]))

lam = sy.symbols("lambda")
a_0, a_1, a_2, a_3, a_4 = sy.symbols("a_0 a_1 a_2 a_3 a_4")
eq = sy.Eq(a_4 * (lam ** 4) + a_3 * (lam ** 3) + a_2 * (lam ** 2) + a_1 * (lam ** 1) + a_0, 0)
polynome_solutions = sy.solve(eq, lam)
print(polynome_solutions)
for solution in  polynome_solutions:
    print(solution.subs([(a_4, 1), (a_3, 0), (a_2, 0), (a_1, 0), (a_0, -1)]))

The results:

[-a_2/(3*a_3) - (-3*a_1/a_3 + a_2**2/a_3**2)/(3*(27*a_0/(2*a_3) - 9*a_1*a_2/(2*a_3**2) + a_2**3/a_3**3 + sqrt(-4*(-3*a_1/a_3 + a_2**2/a_3**2)**3 + (27*a_0/a_3 - 9*a_1*a_2/a_3**2 + 2*a_2**3/a_3**3)**2)/2)**(1/3)) - (27*a_0/(2*a_3) - 9*a_1*a_2/(2*a_3**2) + a_2**3/a_3**3 + sqrt(-4*(-3*a_1/a_3 + a_2**2/a_3**2)**3 + (27*a_0/a_3 - 9*a_1*a_2/a_3**2 + 2*a_2**3/a_3**3)**2)/2)**(1/3)/3, -a_2/(3*a_3) - (-3*a_1/a_3 + a_2**2/a_3**2)/(3*(-1/2 - sqrt(3)*I/2)*(27*a_0/(2*a_3) - 9*a_1*a_2/(2*a_3**2) + a_2**3/a_3**3 + sqrt(-4*(-3*a_1/a_3 + a_2**2/a_3**2)**3 + (27*a_0/a_3 - 9*a_1*a_2/a_3**2 + 2*a_2**3/a_3**3)**2)/2)**(1/3)) - (-1/2 - sqrt(3)*I/2)*(27*a_0/(2*a_3) - 9*a_1*a_2/(2*a_3**2) + a_2**3/a_3**3 + sqrt(-4*(-3*a_1/a_3 + a_2**2/a_3**2)**3 + (27*a_0/a_3 - 9*a_1*a_2/a_3**2 + 2*a_2**3/a_3**3)**2)/2)**(1/3)/3, -a_2/(3*a_3) - (-3*a_1/a_3 + a_2**2/a_3**2)/(3*(-1/2 + sqrt(3)*I/2)*(27*a_0/(2*a_3) - 9*a_1*a_2/(2*a_3**2) + a_2**3/a_3**3 + sqrt(-4*(-3*a_1/a_3 + a_2**2/a_3**2)**3 + (27*a_0/a_3 - 9*a_1*a_2/a_3**2 + 2*a_2**3/a_3**3)**2)/2)**(1/3)) - (-1/2 + sqrt(3)*I/2)*(27*a_0/(2*a_3) - 9*a_1*a_2/(2*a_3**2) + a_2**3/a_3**3 + sqrt(-4*(-3*a_1/a_3 + a_2**2/a_3**2)**3 + (27*a_0/a_3 - 9*a_1*a_2/a_3**2 + 2*a_2**3/a_3**3)**2)/2)**(1/3)/3]
nan
nan
nan
[Piecewise((-a_3/(4*a_4) - sqrt(-2*a_2/(3*a_4) + a_3**2/(4*a_4**2) - 2*((a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/3 - (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/8 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/108)**(1/3))/2 - sqrt(-4*a_2/(3*a_4) + a_3**2/(2*a_4**2) + (2*a_1/a_4 + 2*a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)/sqrt(-2*a_2/(3*a_4) + a_3**2/(4*a_4**2) - 2*((a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/3 - (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/8 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/108)**(1/3)) + 2*((a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/3 - (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/8 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/108)**(1/3))/2, Eq(a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 + (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12, 0)), (-a_3/(4*a_4) - sqrt(-2*a_2/(3*a_4) + a_3**2/(4*a_4**2) - 2*(-a_0/a_4 + a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12)/(3*(-(a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/6 + (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/16 + (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/216 + sqrt((-a_0/a_4 + a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12)**3/27 + ((a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/3 - (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/8 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/108)**2/4))**(1/3)) + 2*(-(a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/6 + (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/16 + (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/216 + sqrt((-a_0/a_4 + a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12)**3/27 + ((a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/3 - (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/8 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/108)**2/4))**(1/3))/2 - sqrt(-4*a_2/(3*a_4) + a_3**2/(2*a_4**2) + (2*a_1/a_4 + 2*a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)/sqrt(-2*a_2/(3*a_4) + a_3**2/(4*a_4**2) - 2*(-a_0/a_4 + a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12)/(3*(-(a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/6 + (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/16 + (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/216 + sqrt((-a_0/a_4 + a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12)**3/27 + ((a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/3 - (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/8 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/108)**2/4))**(1/3)) + 2*(-(a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/6 + (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/16 + (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/216 + sqrt((-a_0/a_4 + a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12)**3/27 + ((a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/3 - (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/8 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/108)**2/4))**(1/3)) + 2*(-a_0/a_4 + a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12)/(3*(-(a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/6 + (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/16 + (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/216 + sqrt((-a_0/a_4 + a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12)**3/27 + ((a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/3 - (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/8 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/108)**2/4))**(1/3)) - 2*(-(a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/6 + (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/16 + (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/216 + sqrt((-a_0/a_4 + a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12)**3/27 + ((a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/3 - (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/8 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/108)**2/4))**(1/3))/2, True)), Piecewise((-a_3/(4*a_4) - sqrt(-2*a_2/(3*a_4) + a_3**2/(4*a_4**2) - 2*((a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/3 - (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/8 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/108)**(1/3))/2 + sqrt(-4*a_2/(3*a_4) + a_3**2/(2*a_4**2) + (2*a_1/a_4 + 2*a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)/sqrt(-2*a_2/(3*a_4) + a_3**2/(4*a_4**2) - 2*((a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/3 - (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/8 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/108)**(1/3)) + 2*((a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/3 - (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/8 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/108)**(1/3))/2, Eq(a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 + (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12, 0)), (-a_3/(4*a_4) - sqrt(-2*a_2/(3*a_4) + a_3**2/(4*a_4**2) - 2*(-a_0/a_4 + a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12)/(3*(-(a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/6 + (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/16 + (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/216 + sqrt((-a_0/a_4 + a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12)**3/27 + ((a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/3 - (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/8 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/108)**2/4))**(1/3)) + 2*(-(a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/6 + (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/16 + (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/216 + sqrt((-a_0/a_4 + a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12)**3/27 + ((a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/3 - (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/8 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/108)**2/4))**(1/3))/2 + sqrt(-4*a_2/(3*a_4) + a_3**2/(2*a_4**2) + (2*a_1/a_4 + 2*a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)/sqrt(-2*a_2/(3*a_4) + a_3**2/(4*a_4**2) - 2*(-a_0/a_4 + a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12)/(3*(-(a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/6 + (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/16 + (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/216 + sqrt((-a_0/a_4 + a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12)**3/27 + ((a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/3 - (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/8 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/108)**2/4))**(1/3)) + 2*(-(a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/6 + (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/16 + (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/216 + sqrt((-a_0/a_4 + a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12)**3/27 + ((a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/3 - (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/8 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/108)**2/4))**(1/3)) + 2*(-a_0/a_4 + a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12)/(3*(-(a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/6 + (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/16 + (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/216 + sqrt((-a_0/a_4 + a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12)**3/27 + ((a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/3 - (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/8 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/108)**2/4))**(1/3)) - 2*(-(a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/6 + (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/16 + (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/216 + sqrt((-a_0/a_4 + a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12)**3/27 + ((a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/3 - (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/8 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/108)**2/4))**(1/3))/2, True)), Piecewise((-a_3/(4*a_4) + sqrt(-2*a_2/(3*a_4) + a_3**2/(4*a_4**2) - 2*((a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/3 - (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/8 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/108)**(1/3))/2 - sqrt(-4*a_2/(3*a_4) + a_3**2/(2*a_4**2) - (2*a_1/a_4 + 2*a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)/sqrt(-2*a_2/(3*a_4) + a_3**2/(4*a_4**2) - 2*((a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/3 - (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/8 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/108)**(1/3)) + 2*((a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/3 - (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/8 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/108)**(1/3))/2, Eq(a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 + (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12, 0)), (-a_3/(4*a_4) + sqrt(-2*a_2/(3*a_4) + a_3**2/(4*a_4**2) - 2*(-a_0/a_4 + a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12)/(3*(-(a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/6 + (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/16 + (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/216 + sqrt((-a_0/a_4 + a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12)**3/27 + ((a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/3 - (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/8 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/108)**2/4))**(1/3)) + 2*(-(a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/6 + (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/16 + (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/216 + sqrt((-a_0/a_4 + a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12)**3/27 + ((a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/3 - (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/8 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/108)**2/4))**(1/3))/2 - sqrt(-4*a_2/(3*a_4) + a_3**2/(2*a_4**2) - (2*a_1/a_4 + 2*a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)/sqrt(-2*a_2/(3*a_4) + a_3**2/(4*a_4**2) - 2*(-a_0/a_4 + a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12)/(3*(-(a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/6 + (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/16 + (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/216 + sqrt((-a_0/a_4 + a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12)**3/27 + ((a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/3 - (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/8 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/108)**2/4))**(1/3)) + 2*(-(a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/6 + (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/16 + (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/216 + sqrt((-a_0/a_4 + a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12)**3/27 + ((a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/3 - (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/8 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/108)**2/4))**(1/3)) + 2*(-a_0/a_4 + a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12)/(3*(-(a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/6 + (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/16 + (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/216 + sqrt((-a_0/a_4 + a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12)**3/27 + ((a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/3 - (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/8 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/108)**2/4))**(1/3)) - 2*(-(a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/6 + (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/16 + (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/216 + sqrt((-a_0/a_4 + a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12)**3/27 + ((a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/3 - (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/8 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/108)**2/4))**(1/3))/2, True)), Piecewise((-a_3/(4*a_4) + sqrt(-2*a_2/(3*a_4) + a_3**2/(4*a_4**2) - 2*((a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/3 - (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/8 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/108)**(1/3))/2 + sqrt(-4*a_2/(3*a_4) + a_3**2/(2*a_4**2) - (2*a_1/a_4 + 2*a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)/sqrt(-2*a_2/(3*a_4) + a_3**2/(4*a_4**2) - 2*((a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/3 - (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/8 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/108)**(1/3)) + 2*((a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/3 - (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/8 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/108)**(1/3))/2, Eq(a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 + (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12, 0)), (-a_3/(4*a_4) + sqrt(-2*a_2/(3*a_4) + a_3**2/(4*a_4**2) - 2*(-a_0/a_4 + a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12)/(3*(-(a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/6 + (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/16 + (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/216 + sqrt((-a_0/a_4 + a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12)**3/27 + ((a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/3 - (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/8 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/108)**2/4))**(1/3)) + 2*(-(a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/6 + (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/16 + (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/216 + sqrt((-a_0/a_4 + a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12)**3/27 + ((a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/3 - (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/8 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/108)**2/4))**(1/3))/2 + sqrt(-4*a_2/(3*a_4) + a_3**2/(2*a_4**2) - (2*a_1/a_4 + 2*a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)/sqrt(-2*a_2/(3*a_4) + a_3**2/(4*a_4**2) - 2*(-a_0/a_4 + a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12)/(3*(-(a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/6 + (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/16 + (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/216 + sqrt((-a_0/a_4 + a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12)**3/27 + ((a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/3 - (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/8 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/108)**2/4))**(1/3)) + 2*(-(a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/6 + (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/16 + (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/216 + sqrt((-a_0/a_4 + a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12)**3/27 + ((a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/3 - (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/8 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/108)**2/4))**(1/3)) + 2*(-a_0/a_4 + a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12)/(3*(-(a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/6 + (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/16 + (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/216 + sqrt((-a_0/a_4 + a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12)**3/27 + ((a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/3 - (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/8 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/108)**2/4))**(1/3)) - 2*(-(a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/6 + (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/16 + (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/216 + sqrt((-a_0/a_4 + a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**2/12)**3/27 + ((a_0/a_4 - a_3*(a_1/(4*a_4) + a_3*(-a_2/(16*a_4) + 3*a_3**2/(256*a_4**2))/a_4)/a_4)*(a_2/a_4 - 3*a_3**2/(8*a_4**2))/3 - (a_1/a_4 + a_3*(-a_2/(2*a_4) + a_3**2/(8*a_4**2))/a_4)**2/8 - (a_2/a_4 - 3*a_3**2/(8*a_4**2))**3/108)**2/4))**(1/3))/2, True))]
0
0
0
0

Upvotes: 0

Views: 72

Answers (1)

JohanC
JohanC

Reputation: 80329

You seem to be solving a general third degree polynomial. One step of the solution normalizes the polynomial to start with 1, so dividing by a_3. The later substitution of a_3 by zero causes a divide by zero which is expressed as 'nan' ("not a number").

Answer to the edited question:

Well, there doesn't exist a general algebraic solution for the fourth degree polynomial. So, the best you can hope for, is to give sympy a specific higher degree polynomial and hope that one has a solution. Sympy just tries to do its best, and for that it has to make some assumptions, but it isn't always correct. No computational algebra system is perfect, and sympy certainly isn't the most sophisticated one for all purposes, but it's free and most importantly, open source.

Can we use /rely on the expressions for the roots?

Writing the equation with six unknowns, sympy doesn't differentiate between which one would be called an unknown and which would be called a parameter. Some assumptions are made to be able to make progress.

So, can we rely 100% on sympy's results? No, certainly not. Solutions need to be checked, and evaluated for fitness for the specific application. We can be pretty sure it works well for univariate polynomial equations. For more complicated cases, one often tops with the limitations of a computational algebra.

Looking at what Wolfram Alpha does with this specific equation, although I didn't check it, seems more appropriate, though very involved, and quite difficult to use in further calculations. Wolfram Alpha does seem to differentiate between parameters and unknown unknowns, which sometimes obliges you to use specific names for the parameters/unknowns. See for example what it does with the rewritten equation. Especially this rewrite doesn't return what you would hope for.

Your encouraged to test out your specific kind of equation in alternative systems and report cases in sympy's github for interesting examples where sympy doesn't perform as well as it should.

Upvotes: 2

Related Questions