代码如下:
import random
p = random.randint(1,10)
q = random.randint(1,10)
#p = 0
#q = 1
print("p = ", p)
print("q = ", q)
#dr为判别式
dr = (q/2)**2 + (p/3)**3
print("dr = ", dr)
u = (-q/2 + dr**0.5)**(1/3)
v = (-q/2 - dr**0.5)**(1/3)
print("u = ", u)
print("v = ", v)
x = u + v
print("x = ", x)
#zero用于判断所求x是否为 x**3 + p * x + q的根
zero = x**3 + p * x + q
print("zero = ", zero)
运行结果如下:
当p = 0,q = 1时效果还好,但是换其他数字时偏差就很大了
请问为什么会这样,如何解决?
你应该学会封装,将算法封装成函数,我只能帮你整理程序,算法你自己检查一下有没有问题!
def operation(p, q):
p = float(p)
q = float(q)
def check_dr():
dr = (q/2)**2 + (p/3)**3
return dr
dr = check_dr()
u = (-q/2 + dr**0.5)**(1/3)
v = (-q/2 - dr**0.5)**(1/3)
x = u + v
zero = x**3 + p * x + q
return zero
p = input('请输入数字p:')
q = input('请输入数字q:')
print(f'运算结果是:{operation(p,q)}')
最好把公式发出来