Re: getting ride of 0.i

*To*: mathgroup at smc.vnet.net*Subject*: [mg120567] Re: getting ride of 0.i*From*: Joseph Gwinn <joegwinn at comcast.net>*Date*: Fri, 29 Jul 2011 04:43:24 -0400 (EDT)*Delivered-to*: l-mathgroup@mail-archive0.wolfram.com*References*: <j0oomv$krj$1@smc.vnet.net> <j0rips$41r$1@smc.vnet.net>

In article <j0rips$41r$1 at smc.vnet.net>, Armand Tamzarian <mike.honeychurch at gmail.com> wrote: > On Jul 27, 8:19 pm, Eli Fenichel <Eli.Fenic... at asu.edu> wrote: > > I am trying to use FindMinimum to minimize the square of a function over > many variables (i.e., parameters). The function itself has the potential > to generate imaginary numbers and involves numerical integration (the > parameter values that minimize the function are real). For clarification > the function in evaluated at multiple points so it can be written as vector. > By squaring the vector the numerical values of the elements are always real > with no imaginary parts. However, Mathematica often writes x + 0.i, where x > is a some numerical value, for some of the elements. > > > > Typically, this can be ignored, the Chop command can be used, or it simply > > does not cause problems. However, I keep getting an error: > > [cid:image003.... at 01CC4BBC.E87A0F30] > > > > NIntegrate::nlim: "t = Y[1.] is not a valid limit of integration." > > > > Y is an array with the parameters to be minimized. > > > > However, if evaluate the objective function to be minimized using > > replacement rules I get > > x + 0.i. > > > > Is there a way for me tell Mathematica to always treat 0.i as 0 and drop > > it? It seems to be causing problems in the FindMinimum call. > > > > Thanks, > > Eli > > Re[3 + 2 I] It sounds like the "0 I" is in fact a roundoff error times I, such as 10^-18 I. This problem is what Chop[] used for. Chop[x+0 I] will yield x, if roundoff error is in fact the problem. One can tell Chop[] what threshold to use. Joe Gwinn