我正在使用Newton的方法构建一个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))
我不确定丢失
store
是否真的会提高速度,但我注意到您正在通过添加(((x-(value**n)))/(n*(value**(n-1)))
(我们称这个表达式为z
)来计算value
,然后将value
与store
进行比较。如果需要,只需计算
z
并将其与0进行比较:相关问题 更多 >
编程相关推荐