Re: Accuracy problem in Mathematica
- To: mathgroup at smc.vnet.net
- Subject: [mg49112] Re: [mg49061] Accuracy problem in Mathematica
- From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
- Date: Thu, 1 Jul 2004 05:26:22 -0400 (EDT)
- References: <200406300934.FAA05317@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
On 30 Jun 2004, at 18:34, aaaa wrote:
> Hello,
>
> I'm having a problem with a calculation in Mathematica which I can't
> solve. I have an expression which I know to be (from analytical
> reasons)
> always between 0 and 1. It's a function of a and n ( n being natural
> and
> a rational) and it looks like this:
>
> 1/(1-a^2)^n +
>
> Sum[((2*n - k - 1)!/((n - 1)!*(n - k)!*2^(2*n - k)))*(1/(1 + a)^k -
> 1/(1
> - a)^k), {k, 1, n}]
>
>
>
> Let's say a=0.5.
>
> Now, when I try to calculate for small n, it's ok. When calculating for
> large n's (around 400 and above) I'm starting to get wrong results (the
> number not being between 0 and 1). The problem is that the first term
> (the first line before the sum) is VERY VERY close to the negative of
> the second term (the sum), and it's getting closer as n grows. When
> using large n's, Mathematica says they are the same number or even that
> the last term is bigger (which means the whole expression becomes
> negative) - which is wrong. It's a matter of accuracy, and I'm not sure
> how I can fix it.
>
> Can anybody help me?
>
>
>
> Itamar
>
The best thing to do is to use exact input for a and N to specify how
many digits of precision you want in your answer. Thus:
In[1]:=
n=1000;
In[2]:=
a=1/2;
In[3]:=
N[1/(1-a^2)^n +Sum[((2*n - k - 1)!/((
n - 1)!*(n - k)!*2^(2*n - k)))*(1/(1 + a)^k - 1/(1
- a)^k), {k, 1, n}],20]
Out[3]=
0.035624797050814481592
This looks right.
Andrzej Kozlowski
Chiba, Japan
http://www.mimuw.edu.pl/~akoz/