I have the differential system equation with some unknown parameters (friction coefficients) Also I have experimental data. What I want is to determine the friction coefficients which best fit the experimental data. How to do it using the Mathematica, I know there NDSolve and FindFit functions, but they can't be used here? And what are the general approaches of this problem?

Edit 1: Here is the model:

$$k_1 (x_3[t]-x_1[t])+a_1 \left(x_3'[t]-x_1'[t] \right)+M_1 x_1''[t]=0$$ $$k_2 (x_3[t]-x_2[t])+a_2 \left(x_3'[t]-x_2'[t]\right)+M_2 x_2''[t]=0$$

$$\begin{eqnarray} & k_3 x_3[t]-k_1 (x_3[t]-x_1[t])-k_2 (x_3[t]-x_2[t]) \\& + a_3 x_3'[t]-a_1 \left(x_3'[t]-x_1'[t]\right)-a_2 \left(x_3'[t]-x_2'[t]\right) \\& +C_1 x_3''[t]=0 \end{eqnarray}$$

  • $\begingroup$ Can you provide the differential equations that model your system? What format is the experimental data in (time-domain response to a known input, impulse response, frequency response, etc.)? $\endgroup$
    – Jason R
    Jan 26, 2012 at 13:54
  • $\begingroup$ @Jason R : I have updated the question. Please refer to the Edit 1. About the format, it is in time-domain. Known parameters, yes, like mass, the k coefficients, except friction. Every parameter in the model above is known except the a1, a2, a3 which are the friction coefficients. $\endgroup$
    – maximus
    Jan 27, 2012 at 5:35

1 Answer 1


I can only propose a crude starting point based on a more modest work I did. My goal was to determine the bleaching coefficient of a fluorophore when submitted to varying illumination intensity over time. I had the theoretical law for the bleaching over time as a function of intensity (depending on unknown parameters), the amount of fluorophore over time, and the starting intensity and intensity at the end of the experiment. The goal was to retrieve the parameters for the bleaching law and the whole intensity over time.

Anyway. What I did was to construct (using MATLAB) a function to minimize. In your case, given that you know $x(t)$ experimentally, I suggest to build a function $O(x, y)$ such that:

$$ O(x, y) = \sum_t |x(t) - y(t)|^2 $$

with $x(t)$ being your experimental data and $y(t)$ being the solution of your differential system for some parameters $k, M, a$. Put this function as the objective in a simplex optimizer that will find its minimum, allowing $k, M, a$ to vary.

This is done through numerical solution. So you have a function to minimize, say $F(k,a,M)$ that returns the value of $O(x,y)$ (which is scalar btw) for the current numerical resolution with the given $k,a,M$.

At each step, the whole system will be solved again, and the solution will be matched against the experimental data until they fit.

I have found this to be working quite well in my case, as long as you are sure you have the correct model to describe the experimental data. Otherwise, expect some seriously irrelevant results.

  • $\begingroup$ I understood the idea, but the problem is that for the system above the closed-form solution can't be calculated. Or do you mean the numerical solution every time the parameters change? $\endgroup$
    – maximus
    Jan 27, 2012 at 8:13
  • $\begingroup$ @maximus: yes absolutely: this is done through numerical solution. So you have a function to minimize, let's say F(k,a,M) that returns the value of O(x,y) (which is scalar btw) for the current numerical resolution with the given k,a,M. $\endgroup$
    – Jean-Yves
    Jan 27, 2012 at 12:56
  • $\begingroup$ Do you know a library for numerical solving of system of differential equations? If you know it would help me much not to implement it by myself. $\endgroup$
    – maximus
    Jan 28, 2012 at 3:55
  • $\begingroup$ @maximus: I can only answer you with my limited culture in practical implementation. I am basically a MATLAB guy and a Java guy. It seems like when you want to move from analytical solutions to numerical solutions, going from Mathematica (you seem to be a user of it) to MATLAB is a good idea. MATLAB as very good functionsto solve ODE: mathworks.fr/help/techdoc/ref/ode23.html. In Java, you want to try the excellent Mantissa (spaceroots.org/software/mantissa/index.html) or the canonical commons-maths. $\endgroup$
    – Jean-Yves
    Jan 28, 2012 at 9:02
  • $\begingroup$ By the way: I do not known Mathematica, but it could solve numerically your odes right? What does the doc say? $\endgroup$
    – Jean-Yves
    Jan 28, 2012 at 9:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.