Update 2
Using a custom DisplayFunction
we can display the three-way relation between α
, β
and Tan[β]
in a single ContourPlot
with multiple vertical axes (displayFunction
and options2
defined below):
ContourPlot[Sin[2 α + β] == 2 Sin[β], {α, 0, π/2}, {β, 0, π/2},
DisplayFunction -> displayFunction, Evaluate @ options2]

displayFunction:
displayFunction = Show[#, Graphics[{ColorData[97] @ 2,
Cases[Normal @ #, Line[x_] :>
{PointSize[Large], Line[{#, Tan@#2} & @@@ x],
ColorData[97]@1, Point@MaximalBy[Last]@x,
Dashed,
Arrowheads[{{.01, 0,
Graphics[{Text[Style[π/6, 14], Offset[{-10, 0}, {0, 0}], {1, 0}]}]}}],
Arrow[{{0, 1} #, #} &@First[MaximalBy[Last]@x]],
ColorData[97]@2,
Point@{#, Tan@#2} & @@@ MaximalBy[Tan@*Last]@x,
Arrowheads[{{.01, 1,
Graphics[{Text[Style[1/√3, 14], Offset[{10, 0}, {0, 0}], {-1, 0}]}]}}],
Arrow[{{#, Tan@#2}, {π/2, Tan@#2}} & @@ First[MaximalBy[Tan @* Last]@x]]},
All]}]] &;
options2:
options2 = {
FrameStyle -> {ColorData[97] /@ {1, 2}, Automatic},
PlotPoints -> 100,
PlotRange -> {{0, Pi/2}, {0, .8}},
PlotRangeClipping -> False,
FrameLabel -> {Style[#, 18] & /@ {"β", "tan(β)"}, {Style["α", 18], None}},
FrameTicksStyle -> FontSize -> 14,
FrameTicks -> {
{Charting`ScaledTicks[{Identity, Identity},
"TicksLength" -> {.03, .015}][##, 6] &,
Charting`ScaledTicks[{Tan, ArcTan},
"TicksLength" -> {.03, .015}][##, 6] &},
{{0, π/6, π/2}, Automatic}},
GridLines -> {{Pi/6}, None},
ImageSize -> Large};
Update 1
cp = ContourPlot[Sin[2 α + β] == 2 Sin[β], {α, 0, π/2}, {β, 0, π/2}];
For a visual analysis, we can construct a BSplineFunction
using the coordinates of the contour line in cp
:
BSF = First @ Cases[Normal @ cp, Line[x_] :> BSplineFunction[x], All];
We can use BSF
with ParametricPlot3D
to display α
, β
and Tan[β]
on the three axes:
ParametricPlot3D[{#, #2, v Tan@#2} & @@ BSF[t], {t, 0, 1}, {v, 0, 1},
BoxRatios -> 1, Mesh -> None,
BoundaryStyle -> Directive[Thick, Red],
AxesLabel -> (Style[#, 16] & /@ {"α", "β", Tan@β}),
ImageSize -> Large, Lighting -> "Neutral", ViewPoint -> {2, -2, 1.5}]

We can also use BSF
with ParametricPlot
to display the relations between α
, β
and Tan[β]
in a 4-panel plot with shared axes (see below for the definitions of legends
and options
):
Legended[#, legends] & @
ParametricPlot[{BSF[t],
{-Tan[t π/2 ], t π/2 },
{-Tan[t π/2 ], -Tan[t π/2 ] },
{#, -Tan @ #2} & @@ BSF[t]},
{t, 0, 1},
Evaluate @ options]

Legends:
labels = {Sin[2 α + β] == 2 Sin[β],
Tan @ β,
Defer[Tan @ β == Tan @ β],
Sin[2 α + Tan@β] == 2 Sin[Tan@β]};
legends = MapThread[Placed[LineLegend[#, #2, LabelStyle -> 16], #3] &]@
{List /@ ColorData[97] /@ Range[4],
List /@ labels,
{{.75, .95}, {.1, .95}, {.15, .05}, {.75, .05}}};
Axis annotations:
ClearAll[axisAnnotations]
axisAnnotations[{lbl1_, lbl2_}] := Arrowheads[{{-Large, 0}, {Large, 1},
Sequence @@ MapThread[{Small, #2 /. -1 -> 0,
Graphics[{Text[#, Offset[{#2 10, 0}, {0, 0}], {-#2, 0}]}]} &,
{{lbl1, lbl2}, {-1, 1}}]}];
axesstyle = {axisAnnotations[Style[#, 14] & /@ {"tan(β)", "α"}],
axisAnnotations[Style[Rotate[#, -Pi/2], 14] & /@ {"tan(β)", "β"}]};
Ticks:
ClearAll[framed]
framed = Framed[ #, Background -> White, FrameStyle -> None] &;
ticks = {{{-π/2, π/2}, {-1/Sqrt[3], framed[1/Sqrt[3]]},
0, {π/6, framed[π/6]}, π/2},
{{-π/2, π/2}, {-1/Sqrt[3], framed[1/Sqrt[3]]}, {π/6, framed[π/6]}, π/2}};
Prolog:
prolog = {Arrowheads[{{.025, .85}}], Dashed,
Arrow @ Partition[{{π/6, π/6},
{-1/Sqrt[3], π/6},
{-1/Sqrt[3], -1/Sqrt[3]},
{π/6, -1/Sqrt[3]}}, 2, 1, 1],
Gray, Arrow /@
(Partition[{{##},
{-Tan@#2, #2}, {-Tan@#2, -Tan@#2}, {#, -Tan@#2}} & @@
BSF[#], 2, 1, 1] & /@ {.15, .75})};
Options:
options = {RegionFunction -> (-π/3 <= # < π/2 &),
MeshFunctions -> {# &}, Mesh -> {{π/6}},
MeshStyle -> Directive[Red, PointSize@Large],
ImagePadding -> 60,
GridLines -> {{-1/Sqrt[3], π/6}, {π/6, -1/Sqrt[3]}},
PlotRange -> {{-π/3, π/2}, {-π/3, π/3}},
AxesOrigin -> {0, 0},
AxesStyle -> (Directive[AbsoluteThickness[2], #] & /@ axesstyle),
PlotRangePadding -> Scaled[.08],
Prolog -> prolog,
Ticks -> ticks,
TicksStyle -> 12,
ImageSize -> 700};
Original answer
Tan @ b
is monotonic over 0 < b < π/2
as can be verified using FullSimplify
or FunctionMonotonicity
FullSimplify[0 < Tan' @ b , 0 <= b < π / 2]
True
FunctionMonotonicity[{Tan @ b, 0 <= b < π / 2}, b]
1
Thus, we can replace Tan @ b
with b
in the first argument of Maximize[...]
in OP to get an exact (and fast) result:
FullSimplify @
Maximize[{b,
And[Sin[2 a + b] == 2 Sin[b], 0 < a < π/2, 0 < b < π/2,
0 < a + b < π]}, {a, b}]
{π/6, {a -> π/6, b -> π/6}}
Then, simply take the Tan
of the first argument of the solution
Tan[First @ %]
1/Sqrt[3]
Sqrt[3]/3 .= 0.57735
is the maximum ofTan[β]
,but I don't how to use MMA to get this. $\endgroup$TrigFactor[SubtractSides[Sin[2 α + β]] == 2 Sin[β]]
returns a syntax error (and I'm not sure what you're actually trying to do with it, so I don't know how to correct it.) $\endgroup$