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

R语言Sd函数迭代输出枚举与最优解迭代步数统计方法咨询

R自定义梯度下降函数添加迭代计数的实现方案

你只需要在原有代码的基础上新增迭代计数变量,同步调整打印逻辑即可,修改后的完整代码如下:

Sd=function(b0,epsilon=1e-5){
  # 初始化迭代计数器
  iter_count <- 0
  while (norm(gradient(b0))>epsilon) {
    iter_count <- iter_count + 1
    num1=(t(b0)%*%Q%*%gradient(b0)-t(y)%*%X%*%gradient(b0))/(t(gradient(b0))%*%Q%*%gradient(b0))
    num2=norm(num1)
    step=num2*gradient(b0)
    b0=b0-step
    # 按序号打印每轮迭代结果
    cat(paste0("第", iter_count, "次迭代参数:\n"))
    print(t(b0))
  }
  # 输出总迭代步数
  cat(paste0("收敛完成,总迭代步数:", iter_count, "\n"))
  # 可选:返回最终参数和总迭代数供后续计算使用
  return(list(final_param = b0, total_iter = iter_count))
}

本次修改的核心内容:

  • 新增迭代计数器:在while循环外初始化为0,每进入一次循环就自增1,保证每轮迭代对应唯一的序列编号
  • 调整打印逻辑:在打印参数向量前先输出当前迭代的序号,你可以根据需求调整输出的文本格式
  • 补充结果输出:收敛后直接打印总迭代步数,同时支持返回结构化结果,不需要返回值可以直接删除return语句

如果不需要每轮都打印完整的参数向量,只需要统计总步数,把循环内的cat和print语句注释掉即可,最终的总步数统计不受影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:09:05