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

Python从牛顿拉夫逊法循环输出中提取迭代次数生成数组

代码调整方案

你原有代码存在一个前置错误:调用nraphson为x、n赋值的语句写在for循环之前,此时变量j还未定义,运行会直接报错,调整时会顺便修复该问题,同时新增列表存储迭代次数即可实现需求:

import math
import matplotlib.pyplot as plt

def nraphson(fn, dfn, x, tol, maxiter):
    for i in range(maxiter):
        xnew = x - fn(x)/dfn(x)
        if abs(xnew - x) < tol: break
        x = xnew
    return xnew, i

y = lambda x: math.exp(x) - x**2
dy = lambda x: math.exp(x) - 2*x
guess = range(-10,6)
# 新增空列表存储迭代次数
iter_counts = []
for j in guess:
    root, n = nraphson(y, dy, j, 10**-5, 100)
    # 把迭代次数追加到列表中
    iter_counts.append(n)

# 输出你需要的迭代次数列表
print(iter_counts)
# 也可以直接用这个列表绘图,比如:
plt.plot(guess, iter_counts)
plt.xlabel("初始猜测值")
plt.ylabel("迭代次数")
plt.show()

运行上述代码后,iter_counts变量就是你需要的[6, 6, 6, 6, 6, 5, 5, 5, 4, 3, 4, 5, 6, 6, 8, 10]列表,可直接用于后续绘图操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:57:04