Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2005
*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 2005

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

Search the Archive

Re: What's wrong with this integral in mathematica?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg60699] Re: What's wrong with this integral in mathematica?
  • From: Peter Pein <petsie at dordos.net>
  • Date: Sun, 25 Sep 2005 02:36:09 -0400 (EDT)
  • References: <dh0fkt$qgp$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

kiki schrieb:
> Hi all,
> 
> I am evaluating this integral:
> 
> \!\(Integrate[\(\[ExponentialE]\^\(\[ImaginaryI]\ a\ z\)\ Sinh[z]\)\/\((b + 
> \
> Cosh[z])\)\^2, {z, \(-?\), ?}, Assumptions \[Rule] \ {a > 0, b > 1}]\)
> 
> After 1 hour running, it generates the following huge result: (after 
> simplification)
> 
> But even using my pencil and paper, do it manually, I should get much 
> simpler result...
> 
> Can anybody tell me what's wrong?
> 
> ---------------------------------------------------
> 
...

Hi kiki,

as I will demonstrate later, it seems to me that the result is correct
(verified only for one (a,b) pair).


But let's have a look, how we can get concise results in less time.

In[1]:=
$Assumptions = {{a, c} \[Element] Reals, Re[ia] == 0,
  b > 1, a != 0, c != 0, t > 0};

(*  We want short results - try what happens with: *)

SetOptions[Simplify, ComplexityFunction ->
 (StringLength[ToString[TraditionalForm[#1]]]&)];

f0 = (E^(I*a*z)*Sinh[z])/(b + Cosh[z])^2;
fz = f0 /. {a -> ia/I, b -> Cosh[c]}

Out[4]=
(E^(ia*z)*Sinh[z])/(Cosh[c] + Cosh[z])^2

In[5]:=
(* Let us calculate a specific value, to see if transformations succeed *)
testval = NIntegrate[f0 /. {a -> 0.6, b -> 1.},
 {z, -Infinity, Infinity}, PrecisionGoal -> MachinePrecision,
  WorkingPrecision -> (6/5)*MachinePrecision, SingularityDepth -> 6,
  MaxRecursion -> 6]//N//Chop

Out[5]= 0.7030982915694148*I

In[6]:=
(* give Mathematica a hint, how to substitute *)
ft=(fz Dt[z]/.z->Log[t])/.Dt[t]->1//Simplify

Out[6]=
(2*t^ia*(-1 + t^2))/(1 + t^2 + 2*t*Cosh[c])^2

In[7]:= (* still the same? *)
test2 = NIntegrate[ft /. {ia -> 0.6*I, c -> 0}, {t, 0, Infinity},
  SingularityDepth -> 6, MaxRecursion -> 8,
  WorkingPrecision -> (6/5)*MachinePrecision,
  PrecisionGoal -> MachinePrecision]]]

Out[7]= 0.7030982915694148*I
In[8]:= testval === test2
Out[8]= True

In[9]:=(* that's fine! Now integrate : *)
{tim, it} = Timing[Integrate[ft, {t, 0, Infinity}]];
it
tim
Out[10]= 2*ia*Pi*Csc[ia*Pi]*Csch[c]*Sinh[c*ia]
Out[11]= 25.219*Second

In[12]:=(* this has been surprisingly fast compared to an hour :-))
           To check the result, do the backsubs :*)
  iz = FullSimplify[ExpandAll[it /. {ia -> I*a, c -> ArcCosh[b]}]]
Out[12]=
(2*I*a*Pi*Csch[a*Pi]*Sin[a*ArcCosh[b]])/Sqrt[-1 + b^2]

In[13]:= (* we can not simply substitute our test-b here -
            take the Limit: *)
  izb1 = Limit[iz, b -> 1]
Out[13]=
2*I*a^2*Pi*Csch[a*Pi]

In[14]:= testexact = Chop[N[izb1 /. a -> 3/5]]
Out[14]= 0.7030982915694148*I
In[15]:= testval === testexact
Out[15]= True

I'll omit the following line of input, to save space. Your impressive
huge result will be assigned to a variable "wow".

In[18]:= FullSimplify[Limit[wow /. a -> 3/5, b -> 1]]
Out[18]= (18/25)*I*Pi*Csch[(3*Pi)/5]

looks good

In[19]:= Chop[N[%]]
Out[19]= 0.7030982915694148*I
In[20]:= % === testval
Out[20]= True

Phew! This has been a long message to come to a short answer to your
question:

_most_likely_ nothing.

Peter

-- 
Peter Pein, Berlin
GnuPG Key ID: 0xA34C5A82
http://people.freenet.de/Peter_Berlin/


  • Prev by Date: Re: Recursion problem in SymbolicSum
  • Next by Date: Re: DigitDifferences?
  • Previous by thread: Re: What's wrong with this integral in mathematica?
  • Next by thread: errors on parameters from NonlinearRegress