Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2004
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2004

[Date Index] [Thread Index] [Author Index]

Search the Archive

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