☒遍历方法
☒近似值法
☒启用库
☑纯代码
☑精确计算法(根式解)
☑判断(if,else)
代码如下:
def sqrt(x):
return x**(1/2)
def cbrt(x):
return x**(1/3)
def f3(a,b,c,d):
#ax^3 + bx^2 + cx + d = 0
p = b**2 - 3*a*c
q = 2*(b**3) - 9*a*b*c + 27*(a**2)*d
delta = (b*c)**2 - 4*a*(c**3) - 4*(b**3)*d + 18*a*b*c*d - 27*((a*d)**2)
i = sqrt(-1)
e1 = cbrt((-q + 3*a*sqrt(3*delta)*i))
if e1 != 0:
e2 = p/e1
else:
e2 = cbrt((-q - 3*a*sqrt(3*delta)*i))
r = (-1 + sqrt(3)*i)/2
s = (-1 - sqrt(3)*i)/2
x1 = (-b+e1+e2)/(3*a)
x2 = (-b + r*e1 + s*e2)/(3*a)
x3 = (-b + s*e1 + r*e2)/(3*a)
ptint ('x = '+str(x1)+' and '+str(x2)+' and '+str(x3))