Three-Dimensional Plots

In three dimensions the domain is not a single interval, but a Cartesian product of two intervals. We have already designed our code to work with lists of intervals that are applied to functions of several arguments using `Apply[` `,` `]`. The remaining changes required are the splitting of domains into four subdomains using `Distribute` and replacing rectangles by cuboids and `Graphics` by `Graphics3D`. The code of `IntervalPlot[`expr`, `{x```, ````, `} `, `{y`, ``, `} `]` is shown in Listing 2.

```
Options[IntervalPlot3D] = { Tolerance -> 0.05 }

split[l_List] := Distribute[split /@ l, List, List]

rect[l:{_,_,_}] := Cuboid[Min /@ l, Max /@ l]

RectangleGraph[l:{{_,_,_}..}] :=
Graphics3D[{EdgeForm[Thickness[0]], rect /@ l}]

IntervalPlot3D[expr_, {x_Symbol, x0_, x1_}, {y_Symbol, y0_, y1_},
opts___?OptionQ]:=
With[{tol = (x1-x0)Tolerance /. {opts} /. Options[IntervalPlot3D]},
Module[{finals},
finals = refine[Function[{x,y},expr],
Interval /@ N[{{x0, x1}, {y0, y1}}], tol];
Show[RectangleGraph[finals],
Evaluate[FilterOptions[Graphics3D,opts]],
PlotRange -> {{x0, x1}, {y0, y1}, Automatic}, Axes -> True,
BoxRatios -> {1,1,0.5}]
] ]
```
Listing 2. Three-dimensional interval plots.

Cuboids truncated at the box boundary have an open top which makes them easy to distinguish from the closed ones. The different-sized domains, resulting from the adaptive algorithm, are clearly visible.

All values in the following picture are finite, but along the line the cuboids extend from to even for very fine subdivisions.

This investigation is continued in the next issue of The Mathematica Journal, when we will examine the applications of interval arithmetic to the global minimization problem.

Converted by Mathematica      October 15, 1999 [Prev Page][Next Page]