python 编写程序,模拟开方sqrt() def mySqrt(num:int)->float:
时间: 2024-03-04 12:48:40 浏览: 138
以下是 Python 代码实现开方函数 mySqrt:
```python
def mySqrt(num: int) -> float:
if num < 0:
raise ValueError("Cannot compute square root of negative number")
if num == 0:
return 0
x = num
while True:
y = (x + num / x) / 2
if abs(x - y) < 1e-7:
break
x = y
return x
```
这个函数使用牛顿迭代法来计算开方。牛顿迭代法是一种数值优化方法,可以用来求解方程的根。在这个函数中,我们使用牛顿迭代法来求解方程 x^2 = num 的正根。具体步骤如下:
1. 如果 num 小于 0,则抛出 ValueError 异常,因为不能计算负数的平方根。
2. 如果 num 等于 0,则返回 0。
3. 初始值 x 为 num,然后在一个循环中进行迭代计算。
4. 在每次迭代中,计算 y = (x + num / x) / 2。
5. 如果 abs(x - y) < 1e-7,则说明已经找到了一个足够接近的解,退出循环。
6. 否则,将 x 赋值为 y,继续进行迭代。
7. 返回最终的 x 值,即 num 的平方根。
需要注意的是,由于浮点数的精度问题,不能直接比较两个浮点数是否相等。在这个函数中,我们使用了一个很小的常数 1e-7 来判断两个浮点数是否足够接近。
阅读全文