RE: When does x/x not equal 1?

• To: mathgroup at smc.vnet.net
• Subject: [mg32423] RE: [mg32417] When does x/x not equal 1?
• From: "David Park" <djmp at earthlink.net>
• Date: Sat, 19 Jan 2002 19:03:19 -0500 (EST)
• Sender: owner-wri-mathgroup at wolfram.com

Michael,

Have you tried using Chop on your expressions?

103.3 + 3.4432 *10^-39 I // Chop
103.3

David Park

> From: Michael J Person [mailto:mjperson at MIT.EDU]
To: mathgroup at smc.vnet.net
>
> Greetings all:
>
> 	  I'm having a bit of a problem with Math 4.0.1.0 on Mac OS 9.1...
>
> 	  Specifically we have a lot of large planetary
> calculations that only
> occasionally produce piles of complex numbers of the form:
>
> 103.3 + 3.4432 *10^-39 I
>
>       These tiny complex pieces then get carried all around in our
> calculations and destroy the formatting of our outputs and things
> even though the real part seems to be a quite reasonable answer to
> our problems.
>
>     Hunting it down piece by piece, we seem to have traced it to places
> where we're taking the square roots of things that include ratios of
> numbers that should be equaling 1 at the boundaries but aren't.
>
> Sqrt[1-x/x] -> tiny complex number instead of 0!
>
> 	    It seem to be that x/x that's causing the problem in our codes,
> but as we try to track it down, all sort of mystifying behavior starts
> to manefest.  Among the worst of it are the following sorts of things:
>
> In[1]:=
> 	(x = (1.992+\$MachineEpsilon))   //FullForm
>
> Out[1]//FullForm=
> 	1.9920000000000002`
>
> In[2]:=
> 	x/x //FullForm
>
> Out[2]//FullForm=
> 	0.9999999999999999`
>
> 	Now, I'd guess that wonky things start happening when you start
> fooling around with numbers near \$MachineEpsilon, but shouldn't
> x/x = 1?  Worse, is when we tried to fix the problem in various ways,
> we came up with terribly confusing things like the following:
>
> In[3]:=
> 	x/x //FullForm
>
> Out[3]//FullForm=
> 	0.9999999999999999`
>
> (*That's just like above.)
>
> In[4]:=
> 	Divide[x,x] //FullForm
>
> Out[4]//FullForm=
> 	1.`
>
> 	Ah ha!  That's just the sort of thing we want in our calculations.
> So we try to see what the difference is....
>
> In[5]:=
> 	Divide[a,b] //FullForm
>
> Out[5]//FullForm=
> 	Times[a, Power[b, -1]]
>
> In[6]:=
> 	a/b //FullForm
>
> Out[6]//FullForm=
> 	Times[a, Power[b, -1]]
>
> 	They're handled exactly the same way! So, can anyone explain to me
> what's going on here, and how I can keep very small complex numbers from
> arising in all of those cases when x/x != 1.
>
> 	(As I mentioned these problems are completely intermittent.  In the
> examples given above, they do not occur for 1.991, or 1.994, just 1.992
> and 1.993.  Bah!)
>
> Thanks for anything you can tell me.
>
> -Michael Person
> mjperson at mit.edu
> Massachusetts Institute of Technology
> Department of Earth, Atmospheric, and Planetary Sciences
>
>
>
>

• Prev by Date: Re: How to keep cells closed?
• Next by Date: Re: When does x/x not equal 1?
• Previous by thread: Re: When does x/x not equal 1?
• Next by thread: Re: When does x/x not equal 1?