# Solving Intervals

In a recent question I posed, it was noted that by design, Sqrt[ blah] only returns the positive branch, even though we might want to obtain all possible symbolic solutions. So, taking care to avoid the Sqrt function here in my input :), suppose I am interested to find the intervals that, when squared, generate the Interval[{0,4}]:

Solve[Interval[{0, 4}] == y^2, y]


This returns:

{{y -> Interval[{-2, 0}]}, {y -> Interval[{0, 2}]}}


How should we then obtain the missing solution:

expr = Interval[{-2, 2}];  expr^2
Interval[{0, 4}]


… that nests all others?

[P.S. I suppose a Union applied to the output might do the trick, but I'm not sure a trick is the real point to the question.]

-
I don't understand you. There doesn't seem to be a "missing solution", just another way of rewriting the other two ForAll[y, IntervalMemberQ[Interval[{-2, 0}], y] || IntervalMemberQ[Interval[{0, 2}], y], IntervalMemberQ[Interval[{-2, 2}], y]] –  belisarius Apr 21 '13 at 19:15
Are you suggesting that if Solve[blah] returns the solution set {A,B}, ... it should be interpreted as A Or B Or Union[A,B] ? –  wolfies Apr 21 '13 at 19:47
Here's a very similar question: mathematica.stackexchange.com/questions/11345/… –  Mark McClure Apr 22 '13 at 15:36

Use inequalities, as Reduce knows how to work with those.

Reduce[0 <= y^2 <= 4, y, Reals]

(* Out[9]= -2 <= y <= 2*)


Interval[] resides mostly in the arithmetic/numerical world, and symbolic solving with those will at best, in general, give an overestimated result (that is, one that properly contains the actual result). Here is an example. We first show that if -1<=x<=1 then -1/4<=x^2+x<=2.

Minimize[{x^2 + x, -1 <= x <= 1}, x]

(* Out[12]= {-(1/4), {x -> -(1/2)}} *)

Maximize[{x^2 + x, -1 <= x <= 1}, x]

(* Out[13]= {2, {x -> 1}} *)


Now try to recover this with Solve.

Solve[x^2 + x == Interval[{-1/4, 2}], x]

(* Out[14]= {{x -> Interval[{-2, -(1/2)}]},  {x -> Interval[{-(1/2), 1}]}} *)


The interval from -2 to 1 properly contains the one from -1/4 to 1.

Here is another variation. We set x to the interval from -1 to 1. We showed above that x^2+x lies between -1/4 and 2. The interval for 'y below properly contains this.

Solve[{y == x^2 + x, x == Interval[{-1, 1}]}, {x, y}]

(*  Out[15]= {{x -> Interval[{-1, 1}],   y -> Interval[{-2, 2}]}}  *)

-
Fixed minor typo: x^2-x > x^2+x .... Interestingly, stackexchange wouldn't allow the edit because it was less than 6 characters, which seems a bit artificial for a math site. All that was needed was 1 character (+ some ....... to get around the limit). Thanks for the interesting post, Daniel! –  wolfies Apr 22 '13 at 15:22
Heh. It just now let me add a (needed but missing) comma. I guess I was lucky. –  Daniel Lichtblau Apr 22 '13 at 15:28