【问题标题】:Fit data with a numerical ode solution (on Matlab)用数值 ode 解拟合数据(在 Matlab 上)
【发布时间】:2015-04-09 22:39:26
【问题描述】:

我正在寻找一种通过非线性微分方程描述的理论模型来拟合我的实验数据的方法。

不幸的是,后者只能通过数值求解(通过求解这个二阶非线性微分方程)。

我设法使用 ode45 Matlab 求解器求解一组参数的微分方程,但现在我想找到模型的合适拟合参数。另外,我可能不得不提一下,我的 ode45 是由y(zmax)=y0yprime(zmax)=yprime0z=zmax (最大值很大,所以我可以假设它是无穷大)启动的,我向后求解(从 zmax 到 z=0)。

我对这类数值问题比较陌生,有没有经典的方法来解决这些问题?

有谁知道是否有一个 Matlab 程序可以帮助我解决这个问题?它基于/构建的原则是什么? (如果可能的话,我想知道以聪明的方式解决这个问题的理论技巧,而不是尝试所有可能的参数集,这将非常耗时(我有 5 个拟合参数!)。

感谢您的宝贵帮助!

【问题讨论】:

  • 请说得更具体一些。分享代码、方程式等。这将有助于搜索解决方案。
  • 我建议进行转换 t = 1/(z-1) 以使时间从 0 变为 1,尽管没有看到等式很难知道这是否会导致数值问题。在任何情况下,您可能都在尝试进行最小二乘拟合 - 只需将 ODE 的输出作为参数的函数放入 matlab se.mathworks.com/help/optim/ug/lsqnonlin.html 中的 lsqnonlin 中),如果您想要渐变,您可能需要变得更漂亮一些 -查看 ODE / Optimal Control 的伴随方法,尽管对于 5 个参数蛮力有限差分可能就足够了

标签: matlab optimization solver ode data-fitting


【解决方案1】:

您在Optimization Toolbox 中有漂亮的方法。如果您无权访问它,您可以通过以下方式手动完成:

【讨论】:

  • Nelder-Mead 并不能真正起作用,除非在华丽的 2D 示例中,所有的东西都是凸面和光滑的。还有其他更好的无导数方法,但计算 ODE 轨迹的导数并不难。
  • @LutzL 谢谢你的信息。您会推荐哪种无衍生方法?
  • 我的印象是基于这个谈话coral.ie.lehigh.edu/~katyas/wp-content/talks/ISMP2012-3.pptx 和其他一些在ISMP 2012 上的。基本上,你回到从有限的数据构建二次模型并应用信任区域方法。
猜你喜欢
  • 1970-01-01
  • 2017-03-05
  • 1970-01-01
  • 2018-08-16
  • 1970-01-01
  • 2019-07-14
  • 2016-01-24
  • 1970-01-01
  • 2016-09-10
相关资源
最近更新 更多