T O P I C R E V I E W |
willsand |
Posted - 07/20/2012 : 11:48:07 AM Origin Ver. and Service Release (Select Help-->About Origin): 8.5 Operating System:
Greetings, I am trying to write an equation that is a sum of exponentials of the form:
y = y0 - A1*exp(-x/t1) - A2*exp(-x/t2) - A3*exp(-x/t3) - A4*exp(-x/t4) - A5*exp(-x/t5)
I am trying to fit some lifetime decay data. I know that there is a sum of three exponential equation in the nonlinear fitting options but could anyone help me with adding two more exponentials. I would like to have the fitting automatically find the best fit of the data and be able to set limits(bounds) on the amplitude and time constants. Any help would be greatly appreciated |
1 L A T E S T R E P L I E S (Newest First) |
greg |
Posted - 07/23/2012 : 3:50:59 PM Even the second order exponential is already over-parameterized so adding three more terms would benefit from setting bounds. You can define Parameter initialization as //Code to be executed to initialize parameters int sign; t1 = get_exponent(x_data, y_data, &y0, &A1, &sign); t1 = t2 = t3 = t4 = t5 = -1 / t1; A1 = A2 = A3 = A4 = A5 = sign * exp(A1) / 3;
You will get error messages about mutual dependencies and fit not converging, but you should get a fit. The fitting process does not determine the bounds for parameters; you do. Based on your knowledge of what each parameter physically means, you set the bounds appropriately to limit the range over which the fitter will try to converge on a solution. |
|
|