Curve fitting to multiple equations simultaneously

The simplest way to curve fit multiple equations while conserving some parameter values is by converting the problem into matrix form. For example, for a set of two equations such as:

\frac{ d X(t)}{ d t}= - \alpha X(t) -\gamma Z(t)\\ \frac{ d Y(t)}{d t}=\alpha W(t)-\epsilon Y(t) 

we may write the solution matrix as:

\begin{Bmatrix} -\alpha &  -\gamma \\  \alpha &  -\epsilon \end{Bmatrix}

Curve fitting functions are generally using local optimization techniques such as minimizing sum of squares.

\sum_{i=1}^n (X(i)-x_i)^{2}

Here, is the solution of the X equation at the i^{th} time point and the corresponding data point.

We can exploit this to miminize a matrix of values by providing a matrix of data and a matrix of solutions. For data sets corresponding to X and Y, concatenate the vectors into a matrix:

\begin{Bmatrix} X & \cdots & \cdots \\ Y & \cdots & \cdots \end{Bmatrix}

The output of the solutions to X(t) and Y(t) with the current set of parameter values can also be put into a matrix. Then the sum of squares can be solved on the matrices, allowing for parameter values to be conserved across equations.

\sum_{i=1}^n (\mathbf M(i)-\mathbf V_i)^{2}

where and  are the parameter and data matrices respectively.

For the initial estimates of the parameters, I’ve had success with separately curve fitting each equation separately in a user-friendly software such as JMP. For difficult equations such as logarithms, I’ve found that setting a selection of parameters to zero allows for good initial estimates. In this example system:

\frac{ d X(t)}{ d t}= - \alpha X(t) - 0 Z(t)\\ \frac{ d Y(t)}{d t}=0 W(t)-\epsilon Y(t)


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s