Re: NonlinearModelFit and Complex Data
- To: mathgroup at smc.vnet.net
- Subject: [mg132043] Re: NonlinearModelFit and Complex Data
- From: Maria <rouelli at gmail.com>
- Date: Mon, 25 Nov 2013 03:02:24 -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>
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