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>