Re: Impedance Equation fit to Complex Data
- To: mathgroup at smc.vnet.net
- Subject: [mg86581] Re: Impedance Equation fit to Complex Data
- From: Martin Johansson <martin.n.johansson_LookMa_NoSpam_ at ericsson.com>
- Date: Thu, 13 Mar 2008 20:56:00 -0500 (EST)
- References: <fr7opm$39a$1@smc.vnet.net>
A temporary (?) workaround could be to use an explicitly real-valued 'NormFunction' (the one below is just to show the principle): Z := (G - I*H)/omega^((2*ArcTan[H/G])/Pi) + R; Data = {{1., 2.658637 - 8.389573*I}, {1.5, 1.784396 - 6.214955*I}, {2.5, 1.656569 - 3.97147*I}, {3.5, 1.633799 - 2.878841*I}, {5.5, 1.357069 - 1.776964*I}, {6.5, 1.259121 - 1.848249*I}, {8.5, 1.105417 - 1.344566*I}, {9.5, 1.119456 - 1.148945*I}, {11.5, 1.082122 - 1.064767*I}, {14.5, 1.015714 - 0.8684088*I}, {15.5, 1.055329 - 0.664562*I}, {18.5, 0.8675349 - 0.5107938*I}, {20.5, 0.8968949 - 0.4148388*I}}; pars = FindFit[Data, Z, {R, G, H}, omega, NormFunction -> (Norm[Abs[#1^2]] & )] p1 = ListPlot[{Re[Data], ({#1[[1]], Im[#1[[2]]]} & ) /@ Data}, PlotMarkers -> Automatic]; p2 = Plot[{Re[Z], Im[Z]} /. pars, {omega, 0, 22}]; Show[p1, p2] BR, Martin AgustusBenjamin at gmail.com wrote: > Dear Group, > > I'm trying to fit an equation to data using FindFit. When I type > in the equation and data and then FindFit, I get this: > > Z := [Omega]^(-(2 ArcTan[H/G])/[Pi]) (G - i H) + R > > Data := {{1.`, 2.658637`- 8.389573` i}, {1.5`, > 1.784396`- 6.214955` i}, {2.5`, > 1.656569`- 3.97147` i}, {3.5`, > 1.633799`- 2.878841` i}, {5.5`, > 1.357069`- 1.776964` i}, {6.5`, > 1.259121`- 1.848249` i}, {8.5`, > 1.105417`- 1.344566` i}, {9.5`, > 1.119456`- 1.148945` i}, {11.5`, > 1.082122`- 1.064767` i}, {14.5`, > 1.015714`- 0.8684088` i}, {15.5`, > 1.055329`- 0.664562` i}, {18.5`, > 0.8675349`- 0.5107938` i}, {20.5`, > 0.8968949`- 0.4148388` i}} > > FindFit[Data, Z, {R, G, H}, \[Omega]] > > FindFit::nrlnum: The function value {-0.658637+7.38957 \ > \[ImaginaryI],0.0321006+5.39846 \[ImaginaryI],-0.0241135+3.33901 \ > \[ImaginaryI],<<5>>,0.212762+0.769883 \[ImaginaryI],0.246899+0.605796 > \ > \[ImaginaryI],<<3>>} is not a list of real numbers with dimensions \ > {13} at {R,G,H} = {1.,1.,1.}. >> > > Why?!?!? Why can't FindFit handle this? What's wrong with it not > being a list of real numbers? I'm pulling my hair out. I've looked > at others' suggestions for similar problems and they don't work for > this problem. Am I out of my mind? Does anyone have a suggeston? > > Regards, > > Benji >