$Version
(* "13.3.1 for Mac OS X ARM (64-bit) (July 24, 2023)" *)
Clear["Global`*"]
Format[tau[x_]] := Subscript[τ, x]
eqn = (1 + (c2^2/c1^2)*w^2)*(1 +
k*tau[T]*c2*w + (c2*d/k)*
w*(1 + k*tau[q]*c2*w + (1/2)*k^2*tau[q]^2*c2^2*w^2)) + (e*c2*
d/k)*w*(1 + k*tau[q]*c2*w + (1/2)*k^2*tau[q]^2*c2^2*w^2) == 0;
c1 = 4631; c2 = 22801/10; d = 80668/10; e = 168*^-4; k = 1;
roots = Solve[eqn, w];
n = Length@roots;
Plotting,
Manipulate[
Module[{min, max, ptMin, ptMax},
{min, max} = #[{func[w /. roots[[r]]] /.
{tau[T] -> 10^logtT, tau[q] -> 10^x},
-10 < x < -1}, x, WorkingPrecision -> 20] & /@
{NArgMin, NArgMax};
ptMin = {min, func[w /. roots[[r]]] /.
{tau[T] -> 10^logtT, tau[q] -> 10^min}};
ptMax = {max, func[w /. roots[[r]]] /.
{tau[T] -> 10^logtT, tau[q] -> 10^max}};
Show[Plot[
func[w /. roots[[r]]] /. {tau[T] -> 10^logtT,
tau[q] -> 10^logtq},
{logtq, -10, -1},
PlotRange -> All,
AxesOrigin -> {-10, 0},
Frame -> {{True, False}, {False, True}},
FrameTicks -> {{All, False}, {False, All}},
FrameLabel -> {
{StringForm["``(``)", func, Subscript[w, r]], None},
{None, Log[tau[q]]}},
WorkingPrecision -> 20,
PlotPoints -> 50,
MaxRecursion -> 5,
ImageSize -> Medium],
ListPlot[{{Callout[ptMin, NumberForm[ptMin, {5, 2}],
Background -> Opacity[0]]},
{Callout[ptMax, NumberForm[ptMax, {5, 2}],
Below,
Background -> Opacity[0]]}},
PlotStyle -> Red,
PlotMarkers -> {Style[▼, 14],
Style[▲, 14]}],
PlotRangeClipping -> False,
ImageSize -> Medium]],
Row[{
Control[{{func, Re, "function"}, {Re, Im, Abs},
ControlType -> RadioButtonBar}],
Spacer[50],
Control[{{r, 2, "root"}, Range[n],
ControlType -> RadioButtonBar}]}],
Delimiter,
{{logtT, -1, TraditionalForm[Log[tau[T]]]}, -10, -1, 0.05,
Appearance -> "Labeled"},
SynchronousUpdating -> False,
TrackedSymbols :> {func, r, logtT}]
In the second plot, the PlotRange
is restricted. The plot that you showed is clipped even more -- both top and bottom.
Manipulate[
Module[{argMin, argMax, ptMin, ptMax},
{argMin, argMax} = #[{func[w /. roots[[r]]] /.
{tau[q] -> 10^x, tau[T] -> 10^y},
-10 <= x <= -1, -10 <= y <= -1}, {x, y},
WorkingPrecision -> 20][[-1]] & /@
{NMinimize, NMaximize};
{ptMin, ptMax} = ({-x, -y, func[w /. roots[[r]]] /.
{tau[q] -> 10^x, tau[T] -> 10^y}} /. #) & /@
{argMin, argMax};
Show[
Plot3D @@
{func[w /. roots[[r]] /.
{tau[T] -> 10^logtT, tau[q] -> 10^logtq}],
{logtq, -10, -1}, {logtT, -10, -1},
AxesLabel -> (Style[#, 14, Blue] & /@
{Log[tau[q]], Log[tau[T]], ""}),
If[pltRng,
PlotRange -> All,
PlotRange -> Automatic],
ScalingFunctions -> {"Reverse", "Reverse"},
WorkingPrecision -> 20,
PlotPoints -> 50,
MaxRecursion -> 5,
ImageSize -> Medium,
SphericalRegion -> True},
Legended[
Graphics3D[{Red,
Text[Style[▲, 14], ptMax],
Text[Style[▼, 14], ptMin]}],
PointLegend[{Red, Red}, {
StringForm["Max\n``", NumberForm[ptMax, {5, 2}]],
StringForm["Min\n``", NumberForm[ptMin, {5, 2}]]},
LegendMarkers -> {Style[▲, 14],
Style[▼, 14]}]]]],
Row[
{Control[
{{func, Re, "function"}, {Re, Im, Abs},
ControlType -> RadioButtonBar}],
Spacer[20],
Control[
{{r, 4, "root"}, Range[n],
ControlType -> RadioButtonBar}],
Spacer[20],
Control[{{pltRng, False, "Plot\nRange"}, {True -> "All",
False -> "Clipped"},
ControlType -> RadioButtonBar}]}],
SynchronousUpdating -> False,
TrackedSymbols :> {func, r, pltRng}]