一阶 ODE 的参数识别

计算科学 正则
2021-12-10 17:12:03

我有两个数组f(z)z都由 k 索引,我想解决dfdz=μ(1f)去寻找μ(z)

求解这个方程的最佳数值方法是什么?

1个回答

你所拥有的是一个线性 ODE 约束的参数识别问题:给定两个数据数组(zk,fk)(索引为k) 和 ODE 模型(约束),找到参数μ适合数据,其中最佳的概念统计上精确的方式定义。一个非常简单的例子是最小二乘类型正则化函数

argminμk(fkf(zk))2+μ2subjecttofz=μ(1f).

解决此问题的一种方法是将其编写为具有适当正则化成本函数的 ODE 约束优化问题,然后使用数值方法和现成的优化器求解其离散等效问题,如这些幻灯片 (1)中所示。请注意,此处使用的优化算法是局部牛顿型过程。这意味着,对于大多数实际问题,您将需要一个相当好的初始猜测,以使牛顿过程收敛到一个“高质量”的最小点,即,一个不是“太远”(在某些规范中) 来自未知的“真”参数μ¯μtrue

没有很好的“猜测”来开始您的牛顿例程,那么全局优化是一种替代方案(警告购买者:这些过程的计算成本更高而不是本地例行程序)。或者,您可以将两种方法中最好的一种结合到全局/局部优化策略中。μtrue

如果您没有时间实现所有这些,那么还有其他选择可以考虑:

  1. MATLAB 系统识别工具箱可以提供帮助(Google idgrey, greyest)。此处详细描述了您的问题的工作流程
  2. 有一些 FORTRAN 库可以做到这一点。例如PDEFIT和/或EASY-FIT我建议您阅读手册以熟悉每个功能(和限制)。
  3. 其他编程语言似乎至少对参数识别有一些支持:Rpython 和 numpy/scipy