help-gsl
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

## Re: [Help-gsl] Fitting biexponential decay

 From: Totte Karlsson Subject: Re: [Help-gsl] Fitting biexponential decay Date: Tue, 12 Feb 2008 17:30:51 -0800 User-agent: Thunderbird 2.0.0.9 (Windows/20071031)

```Hi,
```
Thanks for your suggestions. I have not had time to really get started on this until yesterday. I'm not sure how to create a function of goodness of fit for my problem. If that is simple I could use the multidimensional minimizer as you suggested. However, maybe using least squares (the nonlinear least squares fitting API) is what I want to use. At least thats what I started to work with since there is an example in the manual, which is a fit of a single exponential.
```
y(t) = A1exp{-lambda_1*t} + b

```
I wonder if it is possible to use the example and extend it to a fit of a bi-exponential?
```
```
The part that i think would have to be modified is the creation of the Jacobian matrix. For the single exponential case
```it is defined (from the manual)

/* Jacobian matrix J(i,j) = dfi / dxj, */
/* where fi = (Yi - yi)/sigma[i],      */
/*       Yi = A * exp(-lambda * i) + b  */
/* and the xj are the parameters (A,lambda,b) */
double t = i;
double s = sigma[i];
double e = exp(-lambda * t);
gsl_matrix_set (J, i, 0, e/s);
gsl_matrix_set (J, i, 1, -t * A * e/s);
gsl_matrix_set (J, i, 2, 1/s);

```
I'm not that mathematical and just started to use gsl, so it looks a little tough to proceed. Wonder if anyone can help to extend the above lines to the bi-exponential case?
```
```
Also, what about independent gaussian errors, sigma_i? In my data each point can be assumed to have the same error (same sigmas). How can I calculate sigma for an experimental data set? Is it the standard deviation?
```
regards
-totte
BTW I'm using the single exponential fitter and it works great.

Martin Jansche wrote:
```
```On Jan 22, 2008 9:09 AM, Totte Karlsson <address@hidden> wrote:

```
```Now I need to find a fitter for a bi exponential decay function, i.e.

y(t) = A1exp{-lambda_1*t} + A2exp{-lambda_2*t}.

In the equation, the A1 and A2 will typically be equal ,(A1 == A2) and
initially set to 1, so the fit will be for lambda_1 and lambda_2.
```
```
You can use the multidimensional minimizer API
(http://www.gnu.org/software/gsl/manual/html_node/Multidimensional-Minimization.html)
to optimize the goodness of fit as a function of your two parameters.
You'll have to implement a function which evaluates goodness of fit
for your set of observation and choice of parameters, as well as the
two partial derivatives in lambda_i.  Your decay function has simple
partial derivatives; if your fit criterion does too, you're in very
good shape.  If your fit criterion is least squares, you can also use
the nonlinear least-squares fitting API
(http://www.gnu.org/software/gsl/manual/html_node/Nonlinear-Least_002dSquares-Fitting.html).

-- mj
```
```
```

reply via email to

 [Prev in Thread] Current Thread [Next in Thread]
• Re: [Help-gsl] Fitting biexponential decay, Totte Karlsson <=