|
[Date Index]
[Thread Index]
[Author Index]
Re: Bug ??????
- To: mathgroup at smc.vnet.net
- Subject: [mg105346] Re: Bug ??????
- From: Bill Rowe <readnews at sbcglobal.net>
- Date: Sun, 29 Nov 2009 05:08:57 -0500 (EST)
On 11/28/09 at 1:07 AM, wkfkh056 at yahoo.co.jp (ynb) wrote:
>F[x_]:=34880228747203264624081936 - 464212176939061350196344960*x^2
>+ 4201844995162976506469882880*x^4 -
>36736184611200699915890392480*x^6 +
>245136733977616412716801297320*x^8 -
>1144143594851571569661248433072*x^10 +
>3682862525053500791559515638600*x^12 -
>8693355704402316431096075720520*x^14 +
>16394872503384952006491292949865*x^16 -
>26387316917169915527289585290460*x^18 + ...
<rest of definition snipped>
>(* Bug ?; F[Sqrt[Sqrt[2] + 3^(1/3)] + 1/Sqrt[3^(1/3) + 5^(1/5)]]
>//N
>=3.828176627860558*^38<---Bug ? *)
>(* =0? *)
This is not a bug. It is inherent when converting things to
machine precision.
Your definition of F is an alternating sum of large powers of x.
The function N converts each subterm to machine precision then
computes the sum. Loss of precision is inevitable when such a
large dynamic range exists in the terms to be summed as is the
case here.
Note, this is not a Mathematica issue. Rather it is inherent to
floating point arithmetic used on any computer system.
To get a simple numerical answer to this problem, there are
several possible approaches. The simplest I can think of would
be either
=46[Sqrt[Sqrt[2] + 3^(1/3)] + 1/Sqrt[3^(1/3) + 5^(1/5)]]//Simplify//N
or
N[F[Sqrt[Sqrt[2] + 3^(1/3)] + 1/Sqrt[3^(1/3) + 5^(1/5)]], 100]
Note neither of these as written above is guaranteed to work.
Usage of Simplify will work *if* the structure of the terms to
be added result in cancellations giving a much simpler prior to
be converted to machine precision.
The second approach will work if the second argument to N is
made sufficiently large.
Prev by Date:
Re: Replacement rules that contain function arguments
Next by Date:
piecewice pdf, problems with cdf
Previous by thread:
Re: Bug ??????
Next by thread:
Re: Re: Bug ??????
|