how to estimate parameters for oscillation data with ODE system model

27 次查看(过去 30 天)
I have a system of 17 ODEs and 38 parameters. I am trying to find the values of the parameters to get the ODEs to oscillate. What is a good way to do this? This is a biological model, and the ODEs are based on biological processes, so I can't manipulate the model. I had it oscillating previously, but the parameter set is unavailable (it was a GUI which finally crashed completely).
I am thinking maybe I can curve fit to oscillation data? However, the specific values of the oscillation are not important (ie, x or y values would not need to be fit exactly).
Thanks for any suggestions!
  2 个评论
Sam Chak
Sam Chak 2025-9-3,5:56
This topic relates to System Identification. MATLAB has the System Identification Toolbox for analyzing dynamic systems using measured time- and frequency-domain data.
Could you post a new question and describe your modeling problem? If your system is relatively simple, it may be possible to use basic optimization methods to find the parameter values, provided that you have good initial guesses and the data is not corrupted by noise.

请先登录,再进行评论。

回答(1 个)

J. Alex Lee
J. Alex Lee 2025-9-14,12:19
Disclaimer, I don't have experience with this specific question but I am interested and want to try to help.
First thing I'd do is look closely at the model and parameters and try to screen out by reasoning the parameters most likely to be important for oscillations
  • E.g. a parameter that is only scaling 1 equation, or only appears in 1 equation, etc.
  • Depending on the types of equations, probably focus only on the coupling parameters
  • A related exercise that may help is non-dimensionalization where the goal is to reduce the number of parameters to make it easier to explore by trial, and additionally gain insight into the "mathematical" role of each parameter (as opposed to its "physical" one)
It's an interesting question how might you automate the process of trialing a bunch of parameter values and looking for oscillations...the approach might depend on things like
  • is your set a boundary problem or initial value problem?
  • are you able to define condiitions "near" or at the "onset" of the apperance of oscillations?
  • do you care about hitting some amplitude vs frequency with the parameter set?
  • are a bunch of your model equations derivatives of each other, and could that help in the analysis? (e.g., the derivative of sine is cosine and so on)
To detect oscillations, of course you can try all the fancy methods but perhaps just take numerical derivatives and count how many times they cross zero and things like that.
As you mentioned already, if you do have data that your model can be fit to (or you can make up some data), then fitting might be a good way - i think that would just amount to a straightforward least squares problem in 38 dimensions - so again activities to reduce that number would help.

类别

Help CenterFile Exchange 中查找有关 Ordinary Differential Equations 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by