It seems like there are a couple of issues here.

1) when you use solve, you are getting the exact answer for the
problem posed. f(x) = 1e80*exp(x)-1e300 is exactly zero at w =
log(1.0e-380). Call this value of w, Z.

2) The question you are trying to answer is "how far away from Z" does
the computer think that f(x) is 0? A very useful exercise is to get a
program that can graph this and then zoom in on the graph near
log(1e-380). You may see several values that are 0; the graph will not
be smooth, it will have discrete jumps in it. There are two reasons
this might be so: a) two values of x are really not different to
machine precision and b) two different values of x don't result in
f(x) values that are different. I think it is even possible that there
is no value that is exactly 0 for your function.

Be careful when using rootfinding routines to answer this question.
They usually have controls to stop searching for a root when two
identical y values are found, when the y values are within a certain
threshold of 0 or when the bounds have collapsed (i.e. values of x are
no longer distinguishable to machine precision or are within a certain
distance of each other).

If I define

>>> def f(x):
...   return N(1e80*exp(x)-1e-300)

I get

>>> f(-874.982335337737311)
-7.90654222690305e-315
>>> f(-874.982335337737310)
1.05780295494719e-313

You might read the docstrings for the different root-finding methods
that you are using to see if you can control the searching to obtain
something close to the above.

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sympy?hl=en.

Reply via email to