最小二乘参数估计问题的公式化

计算科学 优化 最小二乘
2021-12-13 03:00:56

我有一个由 10 个常微分方程组成的系统,形式为,

dy1dt=f1(V1,k1,y1,y2)dy10dt=f10(V10,k10,y9,y10)

我想使用全局拟合V1,V6,V7,V10

根据文献中建议的方法,我了解最小二乘误差最小化是常用的。但是,我无法理解优化问题的实际制定方式。

成本函数 =Σi=110(yiexperimentyimodel)2

其中,是从实验中获得的稳态值,而不是的时间序列数据。有人能解释一下是如何用要估计的参数来表达的吗?yiexperimentyiyimodel

Is 是微分方程,(比如说) dy1dt=f1(V1,k1,y1,y2)

使用泰勒多项式展开以找到y1model

有人可以提供一个例子吗?

1个回答

您可以将 ODE 视为参数和观测变量之间的约束。为了在优化问题中强制约束,你可以引入一个拉格朗日乘数,我们称之为在这种情况下,您的问题的拉格朗日是Vyλ

L(y,λ,V)=i|y(ti)yiexperiment|2+0Tλ(y˙f(y,V))dt.

然后,您将寻求拉格朗日的极值。从现在开始,对变分微积分的良好理解将变得非常重要。如果这个主题对你来说是新的,温斯托克的书是一个很好的介绍。接下来您要了解的是伴随方法。不幸的是,很多描述伴随方法的书籍和参考资料都非常混乱,但在这个论坛上已经讨论过几次了,例如这里您可能想要搜索的另一个术语是“系统识别”,但它的维基百科文章信息量不是很大,因此您可能需要进行更多挖掘。

有一个非常好的 Python 库,用于从模型的符号定义中进行数值拟合,称为symfit他们在这里有一个 ODE 模型的示例。