华为上机考试题系列(二):HJ107求解立方根
程序员文章站
2022-04-02 11:23:56
题目:不用库函数求某数的立方根。三种方法:pow函数、二分法、牛顿迭代法方法一:pow()函数方法二:二分法方法三:牛顿迭代法参考文章:求解一个数的立方根(想不懂都难)面试算法题:求一个数的立方根......
题目:不用库函数求某数的立方根。
三种方法包括pow函数、二分法、牛顿迭代法,本文重点讲下效率最高的牛顿迭代法
关于牛顿迭代法,我觉得可以参考每日一问之初识牛顿迭代法(Newton's method)这篇文章,讲解得很浅显易懂
为什么求解立方根可以使用牛顿迭代法?立方根函数也是曲线函数,同样适用于牛顿迭代法,下面是求解过程:
关于这道题目千万不要把导函数求错,如果导函数求错,结果肯定错误
python实现:
第一种写法:(这种写法会运行超时)
a=float(a)
print(a)
x = a
while x*x*x > a:
x = (8*x+a/(x*x))/9
print(x)
第二种写法:通过了牛客网的测试
import sys
import math
def f(x,m):
return x**3 - m
def f_derivative(x):
return 3*x**2
ep = 0.000001
for a in sys.stdin:
a=float(a)
x = a
k = 1
while ep <math.fabs(x-k):
k = x
x = x - f(x,a)/f_derivative(x)
print("%.1f"%x)
参考文章:
本文地址:https://blog.csdn.net/sanmi8276/article/details/107321739
上一篇: 清朝的八旗是怎么来的?到底是如何划分的?
下一篇: 朱祁镇退位长达八年,为何还能重新登基呢?