       Re: Accuracy problem in Mathematica

• To: mathgroup at smc.vnet.net
• Subject: [mg49093] Re: Accuracy problem in Mathematica
• From: bobhanlon at aol.com (Bob Hanlon)
• Date: Thu, 1 Jul 2004 05:25:38 -0400 (EDT)
• References: <cbu21o\$5ea\$1@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```f1[a_, n_] :=
Evaluate[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}]];

f1[a,n]

(1 - a^2)^(-n) - (2^(1 - 2*n)*Pi*Csc[2*n*Pi]*
(a*HypergeometricPFQRegularized[{1, 1 - n},
{2 - 2*n}, -(2/(a - 1))] +
HypergeometricPFQRegularized[{1, 1 - n}, {2 - 2*n},
-(2/(a - 1))] + a*HypergeometricPFQRegularized[
{1, 1 - n}, {2 - 2*n}, 2/(a + 1)] -
HypergeometricPFQRegularized[{1, 1 - n}, {2 - 2*n},
2/(a + 1)]))/((a - 1)*(a + 1)*(n - 1)!*Gamma[n])

Note that this expression cannot be evaluated directly for integer values of n.
A limit is required

lim=Limit[f1[a,n], n->4]

(5*a^3 + 20*a^2 + 29*a + 16)/(16*(a + 1)^4)

However by reversing the order of the summation a more useful form is available

f2[a_, n_] :=
Evaluate[FullSimplify[
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,
n,1,-1}], Element[n, Integers]]];

f2[a,n]

(1 - a^2)^(-n) + (Gamma[n + 1/2]*
(Hypergeometric2F1Regularized[1, 2*n, n + 1,
(1 - a)/2] - Hypergeometric2F1Regularized[1, 2*n,
n + 1, (a + 1)/2]))/(2*Sqrt[Pi])

f2[a,4]==lim // Simplify

True

For more precise calculations you must use a more precise number for a, i.e.,
rationalize a

Table[{2^k,N[f2[1/2,2^k]]},{k,10}]

{{2, 0.5555555555555556}, {4, 0.44598765432098764},
{8, 0.3456065255391709}, {16, 0.25973818180857106},
{32, 0.19065663499323857}, {64, 0.13772351481722211},
{128, 0.09851761077419757}, {256, 0.07008483104129602},
{512, 0.049711093180366435},
{1024, 0.03520617306671809}}

Bob Hanlon

In article <cbu21o\$5ea\$1 at smc.vnet.net>, "aaaa" <aaa at huji.ac.il> wrote:

<< 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.
>><BR><BR>

```

• Prev by Date: RE: A question about derivatives of quadratic products
• Next by Date: Re: converting table output and plotting
• Previous by thread: Re: Accuracy problem in Mathematica
• Next by thread: Re: Accuracy problem in Mathematica