我需要使用卡尔曼滤波技术估计连续离散非线性随机动态系统的参数。
我将使用 ODE 中的 Julia ode45() 并自己实现扩展卡尔曼滤波器来计算对数似然。ODE 完全用 Julia 编写,ForwardDiff 支持原生 Julia 函数的微分,包括嵌套微分,这也是我需要的,因为我想在我的 EKF 实现中使用 ForwardDiff。
ForwardDiff 会像我描述的对数似然那样处理如此全面的函数的微分吗?
我需要使用卡尔曼滤波技术估计连续离散非线性随机动态系统的参数。
我将使用 ODE 中的 Julia ode45() 并自己实现扩展卡尔曼滤波器来计算对数似然。ODE 完全用 Julia 编写,ForwardDiff 支持原生 Julia 函数的微分,包括嵌套微分,这也是我需要的,因为我想在我的 EKF 实现中使用 ForwardDiff。
ForwardDiff 会像我描述的对数似然那样处理如此全面的函数的微分吗?
ODE.jl 处于维护模式,因此我建议改用DifferentialEquations.jl。在DiffEq FAQ中有关于通过 ODE 求解器使用 ForwardDiff 的说明。它可以工作,但就像在常见问题解答中一样,我建议使用敏感性分析,因为这是计算导数的更好方法(编译时间会少得多)。但是,是的,DiffEqParamEstim.jl是用于 ODE/SDE/DAE/DDE 参数估计的完整存储库,它通过求解器使用 ForwardDiff.jl。
(顺便说一句,你想做的事情听起来很有趣。请随时在JuliaDiffEq 频道与我们联系,讨论参数估计工具的开发!)