- #1

- 105

- 0

## Homework Statement

Hi

I'm looking for an algorithm that can perform a fitting procedure on many curves simultaneously. Lets 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.