如何在不使用python中的任何预定义函数的情况下找到数字的平方根?
我需要一个程序的平方根如何工作的主要逻辑。在一般数学中,我们将使用HCF进行,但在编程中,我无法找到逻辑。
答案 0 :(得分:0)
我会通过构建一个精确猜测的算法来解决这个问题,因为这些步骤很容易理解,并且可以重复直到非常准确。例如:
查看此算法的this link for an easy explanation以及如何重复以确保准确性。
答案 1 :(得分:0)
这是一种可以做到的方法。请注意,它不是数学上最有效的方式,它只是一种简单的方法,而不会搞乱奇怪的数学:
cv2.imwrite
答案 2 :(得分:0)
有一种着名的数学方法称为 Newton-Raphson方法,用于连续发现更接近根的近似值。
基本上,此方法采用初始值,然后在成功的迭代中收敛到解决方案。您可以阅读更多相关信息here。
此处附有示例代码供您参考。
{% extends "skeleton.html" %}
{% from "macros/globalmacros.html" import
SUIIconList,SUISimpleList,
SUIImageLabel,SUILabel,
SUIActionInput,SUILabeledInput,SUIInput,
SUIDimmableActionCard,SUICard,
%}
{% block frame_content %}
Frame Content
{% endblock frame_content %}
{% block scripts %}
{{ super() }}
<script src=" {{ static("js/globalmacros.js") }} "></script>
{% endblock scripts %}
在这里,您可以通过添加&#39; 0&#39;来提高平方根结果的准确性。小数位后的e和y中的数字。
还有其他方法,如二元搜索,用于查找平方根,如here所示。
答案 3 :(得分:0)
这对我有用:
def sqrt(n):
for i in range(1, n+1):
if (n % i == 0) and (i * i == n):
return i
break
基本上,程序从1到n循环运行,然后检查n%i = 0和i squared = n,如果为true,则返回i并中断。
答案 4 :(得分:0)
以下 python 实现基于 C++ implementation。代码没有直接使用sqrt,而是使用math.frexp
和math.ldexp
来计算sqrt。这种算法就像任何其他算法一样适合训练。在专业设置中最好使用 math.sqrt
,因为该函数使用直接 Intel instruction 或 ARM64 instruction。
import math
def sqrt(n):
if n < 0:
raise ArithmeticError()
n, exp = math.frexp(n)
if (exp & 1):
exp -= 1
n *= 2
y = (1 + n) / 2
z = 0
while (y != z):
z = y
y = ( y + n/y) / 2
return math.ldexp(y, int(exp/2))
import unittest
class TestSqrt(unittest.TestCase):
def test_simple(self):
self.assertEqual(sqrt(4), math.sqrt(4))
def test_various(self):
l = [4, 9, 64, 49, 39499, 48484]
for i in l:
self.assertEqual(sqrt(i), math.sqrt(i))
if __name__ == '__main__':
unittest.main()