Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

How can I solve the equation Tan[t] - t = Ax, where A is a constant for t[x]?

I know that it's impossible to get a close-form solution, but how can I get a numerical approximation with Mathematica?

share|improve this question
    
Have a look at FindRoot. –  b.gatessucks Dec 2 '12 at 15:24
    
Look at this post dealing with a related problem (inverting a function) mathematica.stackexchange.com/questions/8536/… –  Artes Dec 3 '12 at 16:54
add comment

3 Answers

The most convenient way to answer this question is by using InverseFunction which allows you to hide the details of finding the numerical inverse:

g = InverseFunction[Function[{t}, Tan[t] - t]]

Then your equation Tan[t] - t == a x can be solved by simply saying

g[a x]
share|improve this answer
add comment

You might look for the approximate analytical solution as follows. Let us first denote y=Ax. We will substitute it back later. This is the table of solutions of your equation with 0<=y<=Pi/2:

tb = Table[{y, FindRoot[Tan[t] - t == y, {t, 1.2}][[1, 2]]}, {y, 
0, \[Pi]/2 - 0.02, 0.1}];

Now one can fit this list, and get an analytical solution out of it:

    Manipulate[
 lstPL = ListPlot[tb, PlotStyle -> Red, 
   AxesLabel -> {Style["y", 14, Italic], 
     Style["\!\(\*SubscriptBox[\(t\), \(sol\)]\)", 14, Italic]}];

 ft = Fit[tb, {y^a, y^(a + b)}, y];

 pl = Plot[ft, {y, 0, \[Pi]/2}];

 Show[{lstPL, pl}, 
  Epilog -> 
   Inset[Row[{Style["t=", 14, Italic], 
      Style[NumberForm[ft, {3, 2}], 14, Italic]}], 
    Scaled[{0.7, 0.3}]]],

 {{a, 0.306}, 0, 1}, {{b, 0.458}, 0, 1}]

This results in such a fit, see the image: where tsol is the solution of your equation. By varying the sliders one may get better fit with the parameters a and b (b>a). You get finally $t_{\text{sol}}\approx 1.39 (A x)^{0.31}-0.26 (A x)^{0.76}$

share|improve this answer
add comment

A supplement to above two wonderful answers:

Notice that any two of the branches of curve $C$ defined by $f(t)=\tan(t)-t$ are identical with only a translation of $\boldsymbol{\mathrm{v}}_n=(n \pi,-n \pi)^{\mathrm T}$ :

$$ \left( \begin{array}{c} t \\ \tan(t)-t \\ \end{array} \right)+ \left( \begin{array}{c} 1 \\ -1 \\ \end{array} \right)n\pi = \left( \begin{array}{c} t+n\pi \\ \tan(t+n\pi)-(t+n\pi) \\ \end{array} \right) $$

graph1 = Plot[Tan[t] - t, {t, -3 Pi, 3 Pi},
    PlotRange -> {-4, 12}, AspectRatio -> Automatic,
    MaxRecursion -> Infinity,
    PlotStyle -> Lighter[Blue],
    Exclusions -> {1/(Tan[t] - t) == 0},
    ExclusionsStyle -> Directive[Gray, Dashed]
    ] // Quiet;

graph2 = Plot[Tan[t] - t, {t, -Pi/2, Pi/2},
    PlotRange -> {-4, 12},
    MaxRecursion -> Infinity,
    PlotStyle -> Directive[Blue, Thick]
    ] // Quiet;

Manipulate[
 solset = t /. FindRoot[Tan[t] - t == F, {t, #}] &
   /@ (.9 \[Pi] Range[-2, 2] + .3);
 Show[{graph1, graph2},
  Frame -> True,
  FrameStyle -> Directive[Opacity[0]],
  FrameTicks -> {
    {Range[-4, 12], Range[-4, 12]},
    {Range[-5, 5, 2] Pi/2, Range[-5, 5, 2] Pi/2}},
  FrameTicksStyle -> Directive[Opacity[1], Black, Bold, 20],
  Axes -> None,
  GridLines -> {None, F + Pi Range[-2, 2]},
  GridLinesStyle -> Directive[Lighter[Brown], Dashed],
  Epilog -> {
    Brown, Thickness[.005],
    Line[{{-3 Pi, F}, {3 Pi, F}}],
    Darker[Green, .3],
    MapIndexed[
     Disk[{#1, F} - (#2[[1]] - 3) Pi {1, -1}, .2] &,
     solset],
    Red,
    Disk[{#, F}, .2] & /@ solset,
    Lighter[Purple], Thick, Arrowheads[.03],
    MapIndexed[
     Arrow[{{#1, F} - (#2[[1]] - 3) Pi {1, -1}, {#1, F}}] &,
     solset]
    },
  ImageSize -> 600],
 {{F, 4}, -2, 10}]

Mathematica graphics

So for any $F$, to get all solutions of $\tan(t)-t=F$ (the red points in above graphics), just find all intersection points of the center branch of $C$ and horizon lines $l_n(t)=F+n \pi$, where $n\in\mathbb{Z}$ (the green points in above graphics), then translate them with proper vectors.

To find those green points, you can adopt Jens' InverseFunction method, or Alexei's approximate analytical solution, or it is also possible to derive an approximate formal series by functions such as InverseSeries:

seriesZero = InverseSeries[Series[Tan[t] - t, {t, 0, 9}], F]

Mathematica graphics

seriesInfinity = InverseSeries[Series[Tan[t] - t, {t, Pi/2, 9}], F]

Mathematica graphics

Plot[Evaluate[{
   Normal@seriesZero,
   Normal@seriesInfinity,
   InverseFunction[Function[t, Tan[t] - t]][F]
   }], {F, 0, 8},
 PlotRange -> {0, Pi/2},
 PlotStyle -> (ColorData["Rainbow"] /@ {0, .5, 1}),
 Frame -> True,
 FrameLabel -> (Style[#, Italic, 20, Bold] & /@ {"F", "t"})]

Mathematica graphics

So we have a function of $x$ as $$x\mapsto(F=F(x))\mapsto t\text{ .}$$

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.