我正在使用牛顿的方法构建第n个根计算器(不导入math
),并且旨在使用户满意,以最大程度地减少计算时间。
但是,我必须存储一个变量以将先前的值与当前值进行比较,并且不确定代码是否总是会产生正确的答案(现在甚至忽略负值的根)。
总有没有不使用存储的变量并进一步提高我的计算速度吗?这是代码:
x,n,acc=[float(i) for i in input().split()]
def newton_nthroot(x,n,acc):
value=1
while True:
store=value
value += (x-(value**n))/(n*(value**(n-1)))
if round(value,acc) == round(store,acc):
break
print(round(value,acc))
newton_nthroot(x,n,int(acc))
答案 0 :(得分:1)
我不确定丢失store
是否会真正提高速度,但是我注意到您正在通过添加value
计算(((x-(value**n)))/(n*(value**(n-1)))
(我们将此表达式称为{{1} }),然后将z
与value
进行比较。
如果需要,您可以只计算store
并将其与0进行比较:
z