Re: NonlinearModelFit and Complex Data
- To: mathgroup at smc.vnet.net
- Subject: [mg132049] Re: NonlinearModelFit and Complex Data
- From: Peter Klamser <klamser at gmail.com>
- Date: Mon, 25 Nov 2013 23:58:53 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: l-mathgroup@wolfram.com
- Delivered-to: mathgroup-outx@smc.vnet.net
- Delivered-to: mathgroup-newsendx@smc.vnet.net
- References: <jnb50m$5m8$1@smc.vnet.net>
I can not read Data! says Peter 2013/11/25 Maria <rouelli at gmail.com>: > Update > > The solution here worked for me: > http://forums.wolfram.com/mathgroup/archive/2010/Apr/msg00280.html > > On Thursday, 26 April 2012 17:37:26 UTC+8, Maria wrote: >> Hi, >> >> >> >> I am trying to fit complex data to a complex function. >> >> >> >> Here's a snippet: >> >> >> >> data = Import["http://apps.getcloudigniter.com/data/data.csv"]; >> >> >> >> fitData = >> >> Table[{data[[i, 1]], data[[i, 2]] + I*data[[i, 3]]}, {i, 1, >> >> Dimensions[data][[1]]}]; >> >> >> >> fitEqn[x_] := (aR + I aI) + ( bR + I bI)*(Abs[x - 79800.3]/ >> >> 1585.02) - ( >> >> par1 (x - par1))/((cR + I cI)*((x - par1)^2 - >> >> I par2/2 (x - par1) - 435093.75^2)); >> >> >> >> fit = NonlinearModelFit[fitData, >> >> fitEqn[x] , {aR, aI, bR, bI, cR, cI, par1, par2}, x, >> >> WorkingPrecision -> 100, MaxIterations -> 10000] >> >> >> >> This gives me an error: >> >> >> >> "The function value {....} is not a list of real numbers..." >> >> >> >> On the other hand, FindFit gives me the same error but it works quite well by setting NormFunction -> (Norm[Abs[#^2]] &): >> >> >> >> (* This works *) >> >> fit = FindFit[fitData, >> >> fitEqn[x] , {aR, aI, bR, bI, cR, cI, par1, par2}, x, >> >> NormFunction -> (Norm[Abs[#^2]] &), WorkingPrecision -> 100, >> >> MaxIterations -> 10000] >> >> >> >> And I get a fairly nice fit: >> >> >> >> Show[ListPlot[ >> >> Table[{data[[i]][[1]], data[[i]][[2]]}, {i, 1, >> >> Dimensions[data][[1]]}], PlotStyle -> Red], >> >> Plot [Re[fitEqn[x] /. fit], {x, data[[Dimensions[data][[1]]]][[1]], >> >> data[[1, 1]]}, PlotStyle -> Blue]] >> >> >> >> Show[ListPlot[Table[{data[[i]][[1]],data[[i]][[3]]},{i,1,Dimensions[\ >> >> data][[1]]}],PlotStyle->Red],Plot \ >> >> [Im[fitEqn[x]/.fit],{x,data[[Dimensions[data][[1]]]][[1]],data[[1,1]]}\ >> >> ,PlotStyle->Blue]] >> >> >> >> However, I can't do the same modification to NonlinearModelFit(which I prefer to use since I need the additional information on fitting, e.g. ANOVA). Any tips on making it work? >> >> >> >> Thanks, >> >> Maria > >