Re: FindFit and complex function?
- To: mathgroup at smc.vnet.net
- Subject: [mg80579] Re: [mg80531] FindFit and complex function?
- From: Michael Ignatov <mignatov at chemistry.ohio-state.edu>
- Date: Sun, 26 Aug 2007 03:12:36 -0400 (EDT)
- References: <200708240604.CAA16804@smc.vnet.net> <46CED255.1090804@wolfram.com>
Thank you all for all of the suggestions. Using SetOptions[Roots, Cubics -> False, Quartics -> False]; before Solve worked like a charm. FindFit works with produced model no problem. All best, Michael Carl Woll wrote: > Michael Ignatov wrote: > >> Hello everyone, >> >> I have ran into a problem of fitting my experimental data points to a >> function in mathematica. >> The function comes from a solution of five algebraic equations with 5 >> variables. Very straight forward. Unfortunately cubic roots are >> present in the solution so when the function is evaluated at fixed >> parameters it always return a small imaginary part with the real >> part. The real parts are quite meaningful and imaginary parts are >> extremely small. For all practical purposes I can just drop the >> imaginary part. When I build a model function, which is just a linear >> combination of 5 solutions, I can evaluate it with fixed parameters >> and see that it describes my experimental points rather well. But >> FindFit fails to perform a search always stopping at the starting >> value. Any ideas on how to either drop imaginary part of the function >> completely or make FindFit work with a function that returns complex >> numbers? >> >> Thanks a lot for your time, >> Michael >> >> > Assuming that you are using Solve to solve your equations, you can set > an option to return Root objects instead of radicals. Root objects can > be numericalized more reliably than radicals. For example: > > In[136]:= Solve[x^3 - 3 x - 1 == 0, x] // N > > Out[136]= {{x -> > 1.87939+ 0. \[ImaginaryI]}, {x -> -1.53209 + > 1.11022*10^-16 \[ImaginaryI]}, {x -> -0.347296 + > 1.11022*10^-16 \[ImaginaryI]}} > > Now, set options for Roots and try again: > > In[137]:= SetOptions[Roots, Cubics -> False, Quartics -> False]; > > In[138]:= Solve[x^3 - 3 x - 1 == 0, x] // N > > Out[138]= {{x -> -1.53209}, {x -> -0.347296}, {x -> 1.87939}} > > This time there are no spurious imaginary parts. > > Carl Woll > Wolfram Research
- References:
- FindFit and complex function?
- From: Michael Ignatov <mignatov@chemistry.ohio-state.edu>
- FindFit and complex function?