# Series expansion of an inverse

I have to find the series expansion of the inverse function of : $\arctan\left(\frac{\ln(1+x)}{1+x}\right)$

How do I find out the series expansion of any inverse ?

Note: The inverse of a function $f$ is the unique function $f^{-1}$ that verifies $f(f^{-1}(x))=x$ (given $f$ is a bijection)

-
Mathematica does not have a built-in function named Reciprocal. – Daniel Lichtblau Jan 27 '12 at 18:11
Additionally such a function $f^{-1}$ need not be unique. For instance, consider $f: x \mapsto x^2$. Then two functions $g_+: y \mapsto \sqrt{y}$ and $g_-: y \mapsto -\sqrt{y}$ both verify $f(g_\pm(y)) = y$. – Sasha Jan 27 '12 at 18:30
Note that the term reciprocal normally refers to the multiplicative inverse and never the inverse function. This is despite the sometimes confusing notation $f(x)^{-1} \neq f^{-1}(x)$. Maybe you should rewrite this question to avoid confusion. – Simon Jan 27 '12 at 19:00
I find it strange that the Series[InverseFunction[ArcTan[Log[1 + #]/(1 + #)] &][x], {x,0,3}] approach does not work. – Simon Jan 27 '12 at 19:09
Series expansions are local beings. So multivalued inverse "functions" are not an issue, provided one does not expand at a branch point. – Daniel Lichtblau Jan 27 '12 at 20:18

Is InverseSeries what you are looking for?

InverseSeries[Series[ArcTan[Log[1 + x]/(1 + x)], {x, 0, 5}]]
(*
x+(3 x^2)/2+3 x^3+(149 x^4)/24+(68 x^5)/5+O[x]^6
*)


EDIT: looks reasonable:

Plot[{
pl[x],
invs
},
{x, -.3, .3},
PlotStyle -> {{Dashed, Black}, Red}
]


Who knows what the radius of convergence is, though.

-
It works, thank you ! – Skydreamer Jan 27 '12 at 18:50
The function was present since version 1 and a managed to miss it all the time. – Sjoerd C. de Vries Jan 27 '12 at 20:17
@acl Radius is infinite because it's only a truncated approximation to the actual function. Even if the function itself has an inverse series everywhere convergent, the (polynomial) approximation will still go astray sooner or later. Often enough Pade approximations are better in that respect. – Daniel Lichtblau Jan 27 '12 at 23:21
@J.M. try ListPlot[(N[#1[[2]]]/#1[[1]] & ) /@Rest[Partition[CoefficientList[Normal[InverseSeries[Series[ArcTan[Log[1 + x]/(1 + x)], {x, 0, 50}]]], x], 2,1]]]. Proves nothing though – acl Jan 28 '12 at 2:01
I'd have used the Ratios[] function myself. ;) Anyway, it does seem to corroborate the finite radius of convergence. – J. M. Jan 28 '12 at 2:09

Had InverseSeries[] not been a built-in function, one option might be to invert the Carleman matrix corresponding to the function:

CarlemanMatrix[f_, {x_, x0_, {m_Integer, n_Integer}}] :=
Prepend[Table[
If[k == 0, Function[x, f][x0]^j,
BellY[Table[{FactorialPower[j, i]
Which[#2 == 0, 1, #1 == 0, 0, True, #1^#2] &[Function[x, f][x0], j - i],
Derivative[i][Function[x, f]][x0]}, {i, k}]]/k!],
{j, m}, {k, 0, n}], UnitVector[n + 1, 1]]

CarlemanMatrix[f_, {x_, x0_, m_Integer}] := CarlemanMatrix[f, {x, x0, {m, m}}]


Here's how to apply this to your example:

coeffs = Inverse[CarlemanMatrix[ArcTan[Log[1 + x]/(1 + x)], {x, 0, 7}]][[2]]
{0, 1, 3/2, 3, 149/24, 68/5, 1481/48, 3241/45}

Normal[InverseSeries[Series[ArcTan[Log[1 + x]/(1 + x)], {x, 0, 7}]]]
x + (3*x^2)/2 + 3*x^3 + (149*x^4)/24 + (68*x^5)/5 + (1481*x^6)/48 + (3241*x^7)/45


There are other, likely more efficient methods for generating the coefficients of the inverse series (like the one I presented here), but the Carleman approach offers flexibility, in that appropriate powers of the matrix give the coefficients of the corresponding iterate; e.g. the square of the Carleman matrix for $f(x)$ gives the coefficients of $f(f(x))$, and as you have seen here, inverting the Carleman matrix for $f(x)$ yields coefficients for $f^{(-1)}(x)$.

-
good idea. had never heard of a carleman matrix, thanks – acl Jan 28 '12 at 2:11
Really interesting ! Thank you. – Skydreamer Jan 28 '12 at 10:04