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

scipy.integrate.solve_ivp的Radau方法:雅可比评估次数为何不等于函数评估次数?

Number of Jacobian Evaluations doesn't equal number of function evaluations

问题

为何使用Radau方法运行scipy.integrate.solve_ivp时,雅可比评估次数不等于函数评估次数?具体而言,我的代码中雅可比在每一步都会变化,但仅被评估1到2次。


回答

Radau属于隐式Runge-Kutta方法,它的雅可比评估频率天生远低于函数评估次数,核心原因有这几点:

  • 隐式方法的迭代逻辑:Radau在每个积分步中需要多次调用右端函数计算阶段值,但雅可比仅用于构建线性方程组的系数矩阵。求解器默认假设短时间内雅可比变化幅度足够小,会复用已评估的结果,避免重复计算的开销。
  • 雅可比缓存机制:solve_ivp的Radau实现会缓存已计算的雅可比,只要当前步长调整在预设范围内、迭代精度满足要求,就不会重新评估雅可比。哪怕你的雅可比每步都变,求解器也不会主动检测这种变化,仅在迭代不收敛、步长被迫调整时才会触发重新评估。
  • 手动干预方式:如果场景必须每步更新雅可比,可以显式指定jac参数为自定义的雅可比计算函数,同时缩小max_step增加步长调整频率,间接触发更多雅可比评估;或者在右端函数中引入微小扰动,让求解器精度检测机制认为需要重新计算雅可比(此为临时 workaround,不推荐常规使用)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 02:16:09