a=int(input('number! '))
accuracy=10 #number of decimals
s=0
step=1
for i in range(accuracy+1):
while (s+step)**2<=a:
s+=step
step=step/10
s=format(s,'.'+str(accuracy)+'f')
print(s)
def squareRoot(n):
x=n
y=1.000000 #iteration initialzation.
e=0.000001 #accuracy after decimal place.
while x-y > e:
x=(x+y)/2
y=n/x
print x
n = input('enter the number : ')
squareRoot(n)
这里有一个你可以做到的方法。请注意,这并不是数学上最有效的方法,它只是一种简单的方法,可以在不干扰奇怪的数学的情况下完成:
有一种著名的数学方法叫做牛顿-拉斐逊方法,它可以连续地找到更好的根的近似值。在
基本上,这个方法取一个初始值,然后在成功的迭代中收敛到解决方案。你可以阅读更多关于它的here。在
示例代码附在这里供您参考。在
在这里,您可以通过在小数点后添加e和y中的“0”位来提高平方根结果的精度。在
还有其他一些方法,如二元搜索法,用于查找平方根,如所示here。在
我将通过构建一个算法来解决这个问题,因为这些步骤很容易理解,并且可以重复直到非常精确。例如:
请查看此算法的this link for an easy explanation,以及如何重复以确保准确性。在
相关问题 更多 >
编程相关推荐