- #1
raul_l
- 105
- 0
Homework Statement
Hi
I'm looking for an algorithm that can perform a fitting procedure on many curves simultaneously. Let's say, for example, that I have 3 exponential decay curves with 3 different decay times but they all share the same initial amplitude. So I have to find a fit for 4 parameters (in reality I'm dealing with much more complicated systems).
Homework Equations
Levenberg-Marquardt:
[tex] \delta a = \frac{1}{\bold{J}^T\bold{J}+\lambda \bold{diag}(\bold{J}^T\bold{J})} \bold{J}^T \boldsymbol{\chi} [/tex]
with the Jacobian
[tex] J_{ij} = \frac{\partial f(x_{i};\bold a)}{\partial a_{j}} [/tex]
where f is the fitting function, x are datapoints and a are the parameters to be fitted.
[tex] \boldsymbol{\chi} [/tex] is defined as
[tex] \chi_i = \frac{y_i - f(x_{i};\bold a)}{\sigma_i} [/tex]
The Attempt at a Solution
So far I've been using the Levenberg-Marquardt algorithm to find fits for single curves. But how to implement global curve fitting when some of the parameters are shared?
I guess a straightforward approach would be to construct a global function that takes the whole data set (constructed from all the curves) as argument. For example, if a single curve consists of 10 000 data points and I'm fitting for 5 parameters, I would need to build Jacobian with dimensions 10 000 x 5 for single-curve-fitting. Now assume I have 10 curves with 2 of those 5 parameters shared. Then I would need a 100 000 x 32 Jacobian which is pretty massive.
My question is this. Are there any algorithms especially designed for multi-curve-fitting or do I have to use the usual single-curve-fitting techniques with a few modifications?
I hope anyone has had experience in that area.