You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用while循环求解f(x)=x²–50的根?需转换现有for循环代码

用while循环实现牛顿迭代求解f(x)=x²–50的根

你原来的代码用的是牛顿迭代法求根,要改成while循环,只需要把固定次数的for循环换成计数器控制的while循环即可,同时把目标函数改成作业要求的x²-50。

基础版本(和原for循环迭代次数一致)

# 定义目标函数f(x)=x²-50及其导数
f = lambda x: x**2 - 50
fd = lambda x: 2 * x

# 初始迭代值
a = 50
# 迭代计数器,从1开始
i = 1

# 循环执行99次,和原range(1,100)逻辑一致
while i < 100:
    a = a - (f(a) / fd(a))
    print(f"{i}. root in step - {a}")
    # 计数器自增,避免死循环
    i += 1

优化版本(加入精度判断)

固定迭代次数不够灵活,实际求根时通常会设置精度阈值,当函数值足够小时就停止迭代:

f = lambda x: x**2 - 50
fd = lambda x: 2 * x

a = 50
i = 1
# 设置精度阈值,比如10^-6,函数值小于这个数就认为找到根
precision = 1e-6

# 循环条件:未达到精度且未超过最大迭代次数
while abs(f(a)) > precision and i < 100:
    a = a - (f(a) / fd(a))
    print(f"{i}. root in step - {a}")
    i += 1

# 输出最终结果
if abs(f(a)) <= precision:
    print(f"收敛到根:{a},迭代次数:{i-1}")
else:
    print("达到最大迭代次数,未收敛到指定精度")

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 10:22:30