mmamathes
(Bill Blair)
May 9, 2026, 11:52pm
1
three constraints are:
l1 Tan@a + l2 == Sin@a/Cos[a]^2 + 1/Sin@a,
l1 + l2/Tan@a == 1/(Cos@a (Sin@a)^2), 0 < a < \[Pi]/2
Why can’t the following code solve the range of l1+l2? How to compute it correctly?
Reduce[{l1 Tan@a + l2 == Sin@a/Cos[a]^2 + 1/Sin@a,
l1 + l2/Tan@a == 1/(Cos@a (Sin@a)^2), 0 < a < \[Pi]/2,
t == l1 + l2}, t, {l1, l2, a}, Reals] // FullSimplify
update 01:
FunctionRange[{l1 + l2,
Reduce[{l1 Tan@a + l2 == Sin@a/Cos[a]^2 + 1/Sin@a,
l1 + l2/Tan@a == 1/(Cos@a (Sin@a)^2),
0 < a < \[Pi]/2, {l1, l2} > 0}, l2]}, {l1, a, l2}, y]
Why is the exact value unattainable? How to obtain the exact value?
The first two constraints are equivalent, so that l1+l2 is not a function of a alone. I cannot find references to your syntax
Reduce[expr, t, {l1, l2, a}, Reals]
in the documentation.
Once you have l1+l2 expressed as a function, you can use FunctionRange.
mmamathes
(Bill Blair)
May 12, 2026, 6:57am
4
FunctionRange[{l1 + l2,
Reduce[{l1 Tan@a + l2 == Sin@a/Cos[a]^2 + 1/Sin@a,
l1 + l2/Tan@a == 1/(Cos@a (Sin@a)^2),
0 < a < [Pi]/2, {l1, l2} > 0}, l2]}, {l1, a, l2}, y]
Why is the exact value unattainable? How to obtain the exact value?
mmamathes
(Bill Blair)
May 12, 2026, 7:05am
5
There is such a way of usage.
Reduce[{t == 1/(x y^2), x^2 + y^2 == 1, x > 0, y > 0, t > 0}, t, {x,
y}, Reals]
Interesting. Is it documented?
Your first two constraints are equivalent, but never mind. It seems to me that FunctionRange gives a very wrong upper bound for l1+l2, as I can see from the plot:
constr1 = l1 Tan@a + l2 == Sin@a/Cos[a]^2 + 1/Sin@a;
constr2 = l1 + l2/Tan@a == 1/(Cos@a (Sin@a)^2);
ContourPlot3D[{constr1, l1 + l2 == 2.6, l1 + l2 == 15.6},
{a, 0, Pi/2}, {l1, 0, 20}, {l2, 0, 20},
AxesLabel -> Automatic]
When a and l1 are small, the value of l1+l2 can become much larger than what FunctionRange claims (with warning). For example, let us plot l1+l2 along the plane a==l1:
constr1 = l1 Tan@a + l2 == Sin@a/Cos[a]^2 + 1/Sin@a;
constr1 /. a -> l1
Solve[%, l2]
l1 + l2 /. %[[1]]
Plot[%, {l1, 0, Pi/2}, AxesLabel -> {l1 == a, l1 + l2},
PlotRange -> {0, 100}]