Re: Fitting complex functions or simultaneous fit of functions with identical parameters with Mathematica
- To: mathgroup at smc.vnet.net
- Subject: [mg126812] Re: Fitting complex functions or simultaneous fit of functions with identical parameters with Mathematica
- From: Sseziwa Mukasa <mukasa at gmail.com>
- Date: Sat, 9 Jun 2012 03:06:19 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <201206080735.DAA13711@smc.vnet.net>
Replies inline below...
On Jun 8, 2012, at 3:35 AM, eastman wrote:
> Greetings to all!
>
> I have failed to solve a stubborn problem in fitting a complex- valued
> Drude-Lorentz model (DLM) to experimental data using the
> NonLinearFitModel of Mathematica. I'd prefer to do the fit with this
> procedure since the errors of the experimental data are also known and
> that procedure allows for weighting the fit with these errors.
>
> The problem is as follows:
>
> In terms of mathematics, the DLM is a complex-valued function of real
> arguments or a set of two real-valued functions i.e. real and
> imaginary part. Obviously, both parts share the same set of
> parameters.
>
> Also obviously, fitting the real and imaginary part is not a good
> idea, since one generally gets different parameter values for Re and
> Im.
>
> My idea was to put the real and imaginary part into one new real
> function and I chose the square of the absolute value i.e. Re^2 +
> Im^2. Transforming the experimental data correspondingly as well as
> transforming the error data using the error propagation law, the fit
> results showed excellent coincidence of the combined function to the
> transformed data.
By doing this you've lost the phase information.
>
> So far, so good. But the problem is: Inserting the parameter values of
> this fit into Re and Im, the coincidence with the corresponding
> experimental data is much less impressive, if not crappy.
Because once you've lost the phase information it's unlikely that a good fit to your model is also a good fit to the original data.
Fortunately, NonlinearModelFit can fit to complex valued functions already:
In[2]:= NonlinearModelFit[RandomComplex[{-1-I,1+I},{10}],a+Ib,{a,b},x]
Out[2]= FittedModel[0.257386 -0.15977 I]
Regards,
Ssezi
- References:
- Fitting complex functions or simultaneous fit of functions with identical parameters with Mathematica
- From: eastman <eastriverman@hotmail.com>
- Fitting complex functions or simultaneous fit of functions with identical parameters with Mathematica