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

如何在Julia中访问Roots包find_zero的内部Track对象获取迭代数据

操作方法

你直接调用find_zero返回的只有求解得到的根数值,无法直接获取迭代轨迹,需要显式传入轨迹存储对象来记录数据,操作步骤如下:

  1. 先创建空的Roots.Tracks实例,用于存储迭代过程数据
  2. 调用find_zero时新增tracks关键字参数,将刚才创建的实例传入
  3. 求解完成后,直接从Tracks实例的xs、fs字段中分别读取迭代自变量值和对应函数值

完整代码示例

using Roots

# 示例函数与导数,匹配你的测试场景
f(x) = sin(x - 1)
f_derivative(x) = cos(x - 1)
initial_guess = 0.8

# 1. 创建轨迹存储对象
tr = Roots.Tracks()

# 2. 求解时传入tracks参数,保留verbose=true可同时在控制台输出轨迹
root = find_zero((f, f_derivative), initial_guess, Roots.Newton(), verbose=true, tracks=tr)

# 3. 读取迭代数据
# xs字段对应所有迭代x值,顺序和Trace输出的x_0、x_1...完全一致,Julia为1索引,tr.xs[1]即x_0
x_list = tr.xs
# fs字段对应所有迭代的f(x)值,顺序和Trace输出的fx_0、fx_1...完全一致
fx_list = tr.fs

补充说明

  • 如果你不需要控制台打印轨迹,删掉verbose=true参数即可,tracks参数会独立记录迭代数据不受影响
  • 除了xs和fs字段外,Tracks实例还可以通过tr.alphas、tr.falphas等字段获取其他算法中间值,可根据需求自行取用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 21:36:03