Friday, February 10, 2012

Interval polynomials in Scala

Interval arithmetic (IA) provides a way to perform numeric computations that yield safe approximations of the resulting values, i.e. ranges within which the result is guaranteed to lie. One application is for solving of initial value problems (IVPs), where the so-called Interval Picard method may be applied to compute bounds on the solutions of an IVP, even when the initial values are not exactly known, but lie in some interval.

One deficiency of IA is the so-called dependency problem, which arises when variables in expressions are replaced by intervals, effectively treating multiple occurrences of the same variable as distinct. To reduce such effects one can retain some relational information by using interval functions in place of plain intervals.

A rich but computationally tractable class of interval functions are polynomials with interval coefficients and as a step towards an interval IVP solver Jan has implemented the basic ring operations for interval polynomials in Scala.