This shows you the differences between two versions of the page.
| — |
exercise_2.16 [2009/03/13 00:17] (current) inimino created |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Exercise 2.16. ====== | ||
| + | |||
| + | Explain, in general, why equivalent algebraic expressions may lead to | ||
| + | different answers. Can you devise an interval-arithmetic package that | ||
| + | does not have this shortcoming, or is this task impossible? (Warning: | ||
| + | This problem is very difficult.) | ||
| + | |||
| + | ====== Solutions ====== | ||
| + | |||
| + | As seen in Exercise 2.14, most of the algebraic identities that hold on | ||
| + | operations over real numbers do not hold on the analogous operations over | ||
| + | intervals. | ||
| + | |||
| + | A - A ≠ 0 | ||
| + | |||
| + | A / A ≠ 1 | ||
| + | |||
| + | A / B ≠ 1 / (B / A) | ||
| + | |||
| + | and so on. | ||
| + | |||
| + | Furthermore, the correct interpretation of an expression involving | ||
| + | intervals requires distinguishing those intervals which represent a | ||
| + | single physical parameter (and thus can only have one value at a time) | ||
| + | and those which represent different parameters (though they may have | ||
| + | the same upper and lower bounds). This implies an interval arithmetic | ||
| + | package which does not preserve identity between different intervals | ||
| + | cannot avoid this shortcoming. | ||
| + | |||
| + | However, we may be able to build such a package if we use a different | ||
| + | interface. | ||
| + | |||
| + | Instead of raw operations on intervals, we would like to have | ||
| + | operations which manipulate expressions. An expression would represent | ||
| + | a mathematical algebraic statement, possibly including variables. | ||
| + | |||
| + | The user would construct an expression, such as R₁R₂ / (R₁+R₂), and | ||
| + | then would call an evaluate function with the expression and a set of | ||
| + | bindings giving for each variable a measured value and an error | ||
| + | tolerance. The package would then need to compute the upper and lower | ||
| + | bounds, using only one value at a time for each variable. | ||
| + | |||
| + | If intervals can only be expressed as center-point and percentage | ||
| + | error tolerance, then intervals spanning zero cannot exist, and we | ||
| + | may assume that all intervals are either fully positive, fully | ||
| + | negative, or equivalent to an exact zero. | ||
| + | |||
| + | If we then show that multiplication, division, addition, and | ||
| + | subtraction are all monotonic over all such intervals, we can write | ||
| + | such a package simply by calculating the expression once with every | ||
| + | possible combination of upper and lower bounds of each variable, and | ||
| + | taking the minimum and maximum results as the bounds of the result. | ||
| + | |||
| + | We could also extend the package to optimize these calculations, | ||
| + | at least in some cases, by determining that some combinations of | ||
| + | upper and lower bounds for particular variables will fall within | ||
| + | the bounds of the results given by some other combinations, and so | ||
| + | avoid calculating combinations that cannot contribute to the final | ||
| + | bounds of the result. | ||