Re: Bug with Limit, Series and ProductLog ?
- To: mathgroup at smc.vnet.net
- Subject: [mg61443] Re: [mg61402] Bug with Limit, Series and ProductLog ?
- From: "Carl K. Woll" <carl at woll2woll.com>
- Date: Wed, 19 Oct 2005 02:16:38 -0400 (EDT)
- References: <200510180644.CAA11217@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
did wrote:
> With Mathematica 5.2 Windows I obtain
>
> In[1]:=Limit[ ProductLog[Exp[a/x]/x]-a/x,x->0]
> Out[1]= -Log[a]
>
> which seems correct. But, setting a=1, I get
>
> In[2]:=Limit[ ProductLog[Exp[1/x]/x]-1/x,x->0]
> Out[2]=-8
>
> which is inconsistent with the previous result
> (except if Log[1] is Infinity !).
>
> Worse, with Series I get
>
> In[3]:=Series[ ProductLog[Exp[a/x]/x]-a/x,{x,0,5}]
>
> Out[3]=\!\(\*
> InterpretationBox[
> RowBox[{\(-\(a\/x\)\), "+", "Indeterminate", "+",
> InterpretationBox[\(O[x]\^6\),
> SeriesData[ x, 0, {}, -1, 6, 1],
> Editable->False]}],
> SeriesData[ x, 0, {
> Times[ -1, a], Indeterminate}, -1, 6, 1],
> Editable->False]\)
>
> Setting a=1 in the Series gives a complex answer.
>
> How can I workaround the problem and get the correct
> expansion for In[3]?
> Thanks,
> D.
>
Here is one approach. Define f as your function:
In[1]:=
f[x_] := ProductLog[Exp[a/x]/x] - a/x
Now, differentiate with respect to x:
In[16]:=
f'[x]
Out[16]=
a/x a/x a/x
a E E E
(-(------) - ----) x ProductLog[----]
3 2 x
a x x
-- + -------------------------------------
2 a/x
x a/x E
E (1 + ProductLog[----])
x
Notice the presence of the same ProductLog as exists in f. We can replace
these occurrences of ProductLog with f[x]+a/x and obtain a differential
equation for f. Since f already has a definition, I'll use g:
In[18]:=
g'[x] == f'[x] /. _ProductLog -> g[x] + a/x // Simplify
Out[18]=
g[x]
g'[x] == -(--------------)
a + x + x g[x]
It's convenient to rewrite this equation as ode==0, where ode is:
In[19]:=
ode = Numerator[Together[g'[x] - f'[x] /. _ProductLog -> g[x] + a/x]]
Out[19]=
g[x] + a g'[x] + x g'[x] + x g[x] g'[x]
Now, we simply find the series expansion of this expression and set all the
terms to 0:
In[23]:=
sol = Solve[ode + O[x]^2 == 0, {g'[0], g''[0]}]
Out[23]=
g[0] (2 + g[0]) g[0]
{{g''[0] -> ---------------, g'[0] -> -(----)}}
2 a
a
Plug this solution into your power series for g:
In[26]:=
g[x] + O[x]^3 /. sol[[1]]
Out[26]=
2
g[0] x g[0] (2 + g[0]) x 3
g[0] - ------ + ------------------ + O[x]
a 2
2 a
Finally, use the value of g[0] you obtained:
In[27]:=
% /. g[0] -> -Log[a]
Out[27]=
2
Log[a] x (2 - Log[a]) Log[a] x 3
-Log[a] + -------- - ---------------------- + O[x]
a 2
2 a
It's a simple matter to obtain even higher orders of the series simply by
repeating the above procedure. I checked the results for various values of a
and x, and it seems like the above expansion is correct.
Carl Woll
Wolfram Research
- References:
- Bug with Limit, Series and ProductLog ?
- From: "did" <didier.oslo@hotmail.com>
- Bug with Limit, Series and ProductLog ?