Re: Nonlinear Fit with complex model
- To: mathgroup at smc.vnet.net
- Subject: [mg19632] Re: Nonlinear Fit with complex model
- From: Paul Abbott <paul at physics.uwa.edu.au>
- Date: Mon, 6 Sep 1999 04:20:45 -0400
- Organization: University of Western Australia
- References: <7qsfre$159@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
mtir at my-deja.com wrote: > Hi, > > I am trying to fit a data set of real values with > a model that involves complex numbers, i.e. > model[a,b,c,d]=Abs[<complex expression in > a,b,c,d>]^2 > > When I am using NonlinearRegress (or > NonlinearFit) Mathematica complains that "One or > more derivatives of the model with respect to > parameters did not evaluate" and does not return a > result. > > I suspect that the reason for this is that Abs[], > Re[], Im[] etc. are not evaluated if the argument > is an expression rather than a number. > > Does anyone know a way round this? > > Thanks! > Sebastian > > (For those interested: I am trying to calculate > the complex refractive index of a thin film from > reflectance measurements as a function of angle) In the Notebook fragment below, I show a simple trick for computing the complex conjugate of complex expressions with real variables. The basic idea is to compute the conjugate using the replacement Complex[a_, b_] :> Complex[a, -b] actually implemented using the built-in SuperStar function (so that you can compute conjugates by raising them to the power *): SuperStar[x_] := x /. Complex[a_, b_] :> Complex[a, -b] The point then is that Abs[z]^2 = SuperStar[z] z which enables you to quickly and efficiently compute the type of expression you want. Notebook[{ Cell[BoxData[ \(TraditionalForm \`\(exp = \(b0\ \[CapitalDelta]z\ \((Es - \[ImaginaryI]\ \[Eta]\ \[Omega])\)\)\/\(\(-m\)\ \[Omega]\^2 + m\ \[Omega] - \[ImaginaryI]\ m\ \[Gamma]\ \[Omega] + b0\ \((Es - \[ImaginaryI]\ \[Eta]\ \[Omega])\)\); \)\)], "Input"], Cell[BoxData[ \(TraditionalForm \`\(x_\^*\) := x /. Complex(a_, b_) \[RuleDelayed] Complex(a, \(-b\))\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(TraditionalForm\`\(\(exp\^*\) exp // ExpandAll\) // Simplify\)], "Input"], Cell[BoxData[ \(TraditionalForm \`\(b0\^2\ \[CapitalDelta]z\^2\ \((Es\^2 + \[Eta]\^2\ \[Omega]\^2) \)\)\/\(\((Es\^2 + \[Eta]\^2\ \[Omega]\^2)\)\ b0\^2 + 2\ m\ \[Omega]\ \((\(-\[Omega]\)\ Es + Es + \[Gamma]\ \[Eta]\ \[Omega])\)\ b0 + m\^2\ \((\[Gamma]\^2 + \((\[Omega] - 1)\)\^2)\)\ \[Omega]\^2\)\)], "Output"] }, Open ]] } ] ____________________________________________________________________ Paul Abbott Phone: +61-8-9380-2734 Department of Physics Fax: +61-8-9380-1014 The University of Western Australia Nedlands WA 6907 mailto:paul at physics.uwa.edu.au AUSTRALIA http://physics.uwa.edu.au/~paul God IS a weakly left-handed dice player ____________________________________________________________________