欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

华为上机考试题系列(二):HJ107求解立方根

程序员文章站 2022-07-08 17:18:11
题目:不用库函数求某数的立方根。三种方法:pow函数、二分法、牛顿迭代法方法一:pow()函数方法二:二分法方法三:牛顿迭代法参考文章:求解一个数的立方根(想不懂都难)面试算法题:求一个数的立方根......

题目:不用库函数求某数的立方根。

三种方法包括pow函数、二分法、牛顿迭代法,本文重点讲下效率最高的牛顿迭代法

关于牛顿迭代法,我觉得可以参考每日一问之初识牛顿迭代法(Newton's method)这篇文章,讲解得很浅显易懂

华为上机考试题系列(二):HJ107求解立方根

华为上机考试题系列(二):HJ107求解立方根

为什么求解立方根可以使用牛顿迭代法?立方根函数也是曲线函数,同样适用于牛顿迭代法,下面是求解过程:

关于这道题目千万不要把导函数求错,如果导函数求错,结果肯定错误

华为上机考试题系列(二):HJ107求解立方根

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