Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

getting ride of 0.i

894 views
Skip to first unread message

Eli Fenichel

unread,
Jul 27, 2011, 6:19:11 AM7/27/11
to

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:image0...@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

Armand Tamzarian

unread,
Jul 28, 2011, 7:56:44 AM7/28/11
to
On Jul 27, 8:19 pm, Eli Fenichel <Eli.Fenic...@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....@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]

Joseph Gwinn

unread,
Jul 29, 2011, 4:48:23 AM7/29/11
to
In article <j0rips$41r$1...@smc.vnet.net>,
Armand Tamzarian <mike.hon...@gmail.com> wrote:

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

0 new messages