ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

torchdiffeq 的 Adams 线性多步法:显式与隐式怎么选

torchdiffeq 的 Adams 线性多步法:显式与隐式怎么选 torchdiffeq 的 Adams 线性多步法显式与隐式怎么选【免费下载链接】torchdiffeqDifferentiable ODE solvers with full GPU support and O(1)-memory backpropagation.项目地址: https://gitcode.com/gh_mirrors/to/torchdiffeq用 torchdiffeq 积分 ODE 时很多人只开过默认的 dopri5却很少碰explicit_adams和implicit_adams这两个固定步长求解器。本文带你 5 分钟讲清它俩各解决什么问题、3 种典型调用怎么配以及哪 3 个坑最容易踩。什么时候你会需要 Adams 求解器默认求解器自适应调步长但你有时需要步长与时间网格严格对齐——比如做信号重采样、要和采样率锁定的仿真、或者想让反向传播的内存可预期。此时 dopri5 的自由步长反而是麻烦你需要一个按你给的 dt 走、每一步只算一两次 func 的定步长方法Adams 系列就是干这个的。预测-校正机制一句话讲透多步法不重复劳动它把最近几次 func 的返回值导数值缓存在一个环形队列里源码里就是prev_f这个 deque当前步直接拿历史加权。显式 只用历史往外推一步外推隐式 外推得到预测值后在终点把 func 再算一次回头校正最多迭代 4 次直到相邻两次校正的差值落入 rtol/atol 判据。两者都是4 阶起步、12 阶封顶max_order历史不足 4 个时自动退化成 RK4。# 隐式 Adams-Moulton带校正 y odeint(func, y0, t, methodimplicit_adams, options{step_size: 0.01})三种典型配置对号入座非刚性问题显式 Adams 最快跑通适用场景短时程、平滑系统追求速度。y odeint(func, y0, t, methodexplicit_adams, options{step_size: 0.01})注意显式模式会完全忽略 rtol 和 atol精度只由步长和阶数决定别指望容差能兜底。需要一步校正隐式 Adams-Moulton 求稳适用场景同样的步长下想要更准的每步值。y odeint(func, y0, t, methodimplicit_adams, options{step_size: 0.01, max_order: 6, max_iters: 6})注意这里的 rtol/atol 不是精度目标而是校正迭代的收敛判据。阶数与步长的权衡max_order 别拉满阶数越高缓存的历史越多、权重系数也越大数值上未必更稳。y odeint(func, y0, t, methodimplicit_adams, options{step_size: 0.02, max_order: 8})经验从默认 12 往下压到 6~8多数问题精度损失很小还能避开高阶系数放大噪声。三个容易踩的坑忘传step_size— 求解器会直接拿 t 里相邻点当步网格一密就慢到跑不完只要 t 只是标起止点就必须显式传step_size。校正不收敛— 隐式模式最多迭代max_iters次默认 4不收敛会打印警告并把该步历史标记为失效看到警告先加大max_iters或缩小step_size别直接相信输出。拿 rtol 当精度指标— Adams 的 rtol/atol 只用于收敛判断真正决定误差的是step_size和max_order想要高精度就降步长而不是收容差。什么时候不该用它Adams 是固定步长方法稳定域很小方程刚性、或者时间跨度大必须自适应调步长时它要么算不准要么跑不动。这类情况直接换默认的dopri5或者用radauIIA5、bdf这类面向刚性问题的隐式自适应求解器。【免费下载链接】torchdiffeqDifferentiable ODE solvers with full GPU support and O(1)-memory backpropagation.项目地址: https://gitcode.com/gh_mirrors/to/torchdiffeq创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表