You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用牛顿法求解立方根?附平方根求解Python参考代码

用牛顿法求解立方根的实现思路

很高兴看到你已经搞定了牛顿法求平方根的代码!要把这个思路扩展到立方根其实非常直观,咱们从牛顿法的核心逻辑出发一步步来:

牛顿法推导立方根迭代公式

牛顿法的核心迭代公式是:
x_{n+1} = x_n - f(x_n)/f'(x_n)

要找数k的立方根,本质是求解方程x³ = k,所以定义目标函数:
f(x) = x³ - k

对这个函数求导,得到导数:
f'(x) = 3x²

f(x)f'(x)代入牛顿迭代公式,化简后就能得到立方根的迭代式:
x_{n+1} = x_n - (x_n³ - k)/(3x_n²) = (2x_n + k/(x_n²))/3

这个简化后的公式计算起来更高效,咱们就用它来写代码。

基于你现有代码修改的立方根实现

直接把你求平方根的代码稍作调整,就能得到立方根的求解脚本:

from sys import argv

def find_cube_root(k, epsilon):
    guess = k / 2  # 初始猜测值,和平方根一样选k的一半就行
    # 终止条件改成判断立方值与k的误差是否小于epsilon
    while abs(guess**3 - k) >= epsilon:
        # 替换成立方根的迭代公式
        guess = (2 * guess + k / (guess**2)) / 3
    print(f"Cube root of {k} is about {guess}.")

if __name__ == "__main__":
    script, k_str, epsilon_str = argv
    k = float(k_str)
    epsilon = float(epsilon_str)
    find_cube_root(k, epsilon)

运行示例

执行命令:
$ python3 successive_approximation.py 64 0.001

输出结果大概是:
Cube root of 64 is about 4.00000015982348.

关键变化点总结

  • 终止条件:从判断guess² - k的绝对值改成guess³ - k的绝对值
  • 迭代公式:替换为立方根对应的牛顿迭代式,核心是把导数从2*guess换成3*guess²(或者直接用化简后的公式)
  • 函数名和输出提示对应修改,让逻辑更清晰

内容的提问来源于stack exchange,提问作者Wizard

火山引擎 最新活动