Interval package: Difference between revisions

Jump to navigation Jump to search
357 bytes added ,  2 September 2018
m
Rename "Octave-Forge" to "Octave Forge" (https://lists.gnu.org/archive/html/octave-maintainers/2018-08/msg00138.html).
m (Improve placement of TOC and screenshot)
m (Rename "Octave-Forge" to "Octave Forge" (https://lists.gnu.org/archive/html/octave-maintainers/2018-08/msg00138.html).)
(6 intermediate revisions by one other user not shown)
Line 1: Line 1:
The GNU Octave interval package for real-valued [https://en.wikipedia.org/wiki/Interval_arithmetic interval arithmetic].
The GNU Octave interval package for real-valued [https://en.wikipedia.org/wiki/Interval_arithmetic interval arithmetic].
* Intervals are closed, connected subsets of the real numbers. Intervals may be unbound (in either or both directions) or empty. In special cases <code>+inf</code> and <code>-inf</code> are used to denote boundaries of unbound intervals, but any member of the interval is a finite real number.
* Classical functions are extended to interval functions as follows: The result of function f evaluated on interval x is an interval '''enclosure of all possible values''' of f over x where the function is defined. Most interval arithmetic functions in this package manage to produce a very accurate such enclosure.
* The result of an interval arithmetic function is an interval in general. It might happen, that the mathematical range of a function consist of several intervals, but their union will be returned, e. g., 1 / [-1, 1] = [Entire].


__TOC__
__TOC__
Line 190: Line 193:
* Methods with more than 1 parameter must convert non-interval parameters to intervals using the class constructor. This allows the user to mix non-interval parameters with interval parameters and the function treats any inputs as intervals. Invalid values will be handled by the class constructors.
* Methods with more than 1 parameter must convert non-interval parameters to intervals using the class constructor. This allows the user to mix non-interval parameters with interval parameters and the function treats any inputs as intervals. Invalid values will be handled by the class constructors.
  if (not (isa (x, "infsup")))
  if (not (isa (x, "infsup")))
    x = infsup (x);
  x = infsup (x);
  endif
  endif
  if (not (isa (y, "infsup")))
  if (not (isa (y, "infsup")))
    y = infsup (y);
  y = infsup (y);
  endif
  endif


  if (not (isa (x, "infsupdec")))
  if (not (isa (x, "infsupdec")))
    x = infsupdec (x);
  x = infsupdec (x);
  endif
  endif
  if (not (isa (y, "infsupdec")))
  if (not (isa (y, "infsupdec")))
    y = infsupdec (y);
  y = infsupdec (y);
  endif
  endif


Line 212: Line 215:


If Octave functions would introduce arithmetic/rounding errors, there are interfaces to MPFR (<code>mpfr_function_d</code>) and crlibm (<code>crlibm_function</code>), which can produce guaranteed boundaries.
If Octave functions would introduce arithmetic/rounding errors, there are interfaces to MPFR (<code>mpfr_function_d</code>) and crlibm (<code>crlibm_function</code>), which can produce guaranteed boundaries.


==== Vectorization & Indexing ====
==== Vectorization & Indexing ====
Line 229: Line 231:
== VERSOFT ==
== VERSOFT ==
The [http://uivtx.cs.cas.cz/~rohn/matlab/ VERSOFT] software package (by Jiří Rohn) has been released under a free software license (Expat license) and algorithms may be migrated into the interval package.
The [http://uivtx.cs.cas.cz/~rohn/matlab/ VERSOFT] software package (by Jiří Rohn) has been released under a free software license (Expat license) and algorithms may be migrated into the interval package.
The following table is no longer up-to-date, it describes the situation before p-coded files have been disclosed. So, some functions are no longer trapped.


{|
{|
Line 249: Line 249:
|verdet
|verdet
|style="color:red"| trapped
|style="color:red"| trapped
| depends on p-coded <code>ol</code>
| depends on <code>vereig</code>
|-
|-
|verdistsing
|verdistsing
Line 256: Line 256:
|-
|-
|verfullcolrank
|verfullcolrank
|style="color:red"| encrypted
|style="color:red"| trapped
| implemented in p-coded <code>zd</code>
| depends on <code>verpinv</code>
|-
|-
|vernorm2
|vernorm2
Line 298: Line 298:
|-
|-
|vereig
|vereig
|style="color:red"| encrypted
|style="color:red"| trapped
| implemented in p-coded <code>ol</code>
| depends on proprietary <code>verifyeig</code> function from INTLAB, depends on complex interval arithmetic
|-
|-
|<s>vereigback</s>
|<s>vereigback</s>
Line 307: Line 307:
|verspectrad
|verspectrad
|style="color:red"| trapped
|style="color:red"| trapped
| main part implemented in p-coded <code>ol</code>
| main part implemented in <code>vereig</code>
|-
|-
|colspan="3"|Real (or complex) data only: Matrices: Decompositions
|colspan="3"|Real (or complex) data only: Matrices: Decompositions
Line 321: Line 321:
|verspectdec
|verspectdec
|style="color:red"| trapped
|style="color:red"| trapped
| main part implemented in p-coded <code>ol</code>
| main part implemented in <code>vereig</code>
|-
|-
|verthinsvd
|verthinsvd
|style="color:red"| encrypted
|style="color:red"| trapped
| implemented in p-coded <code>ol</code>
| implemented in <code>vereig</code>
|-
|-
|colspan="3"|Real (or complex) data only: Matrix functions
|colspan="3"|Real (or complex) data only: Matrix functions
Line 331: Line 331:
|vermatfun
|vermatfun
|style="color:red"| trapped
|style="color:red"| trapped
| main part implemented in p-coded <code>ol</code>
| main part implemented in <code>vereig</code>
|-
|-
|colspan="3"|Real data only: Linear systems (rectangular)  
|colspan="3"|Real data only: Linear systems (rectangular)  
Line 350: Line 350:
|-
|-
|verlcpall
|verlcpall
|style="color:red"| trapped
|style="color:green"| free
| depends on <code style="color:red">verabsvaleqnall</code>
| depends on <code>verabsvaleqnall</code>
|-
|-
|<s>verlinprog</s>
|<s>verlinprog</s>
Line 358: Line 358:
|-
|-
|verlinprogg
|verlinprogg
|style="color:red"| encrypted
|style="color:red"| trapped
| implemented in p-coded <code>at</code>
| depends on <code>verfullcolrank</code>
|-
|-
|verquadprog
|verquadprog
Line 369: Line 369:
|verroots
|verroots
|style="color:red"| trapped
|style="color:red"| trapped
| main part implemented in p-coded <code>ol</code>
| main part implemented in <code>vereig</code>
|-
|-
|colspan="3"|Interval (or real) data: Matrices
|colspan="3"|Interval (or real) data: Matrices
Line 378: Line 378:
|-
|-
|verinverse
|verinverse
|style="color:red"| trapped
|style="color:green"| free
| depends on <code style="color:red">verintervalhull</code>
| depends on <code style="color:green">verintervalhull</code>, to be migrated
|-
|-
|<s>verinvnonneg</s>
|<s>verinvnonneg</s>
Line 390: Line 390:
|verregsing
|verregsing
|style="color:red"| trapped
|style="color:red"| trapped
| dependency <code>verifylss</code> is implemented as <code>mldivide</code>; depends on <code>isspd</code> (by Rump, to be checked) and <code style="color:red">verintervalhull</code>; see also [http://uivtx.cs.cas.cz/~rohn/publist/singreg.pdf]
| dependency <code>verifylss</code> is implemented as <code>mldivide</code>; depends on <code>isspd</code> (by Rump, to be checked) and <code>verintervalhull</code>; see also [http://uivtx.cs.cas.cz/~rohn/publist/singreg.pdf]
|-
|-
|colspan="3"|Interval (or real) data: Matrices: Eigenvalues and singular values
|colspan="3"|Interval (or real) data: Matrices: Eigenvalues and singular values
Line 396: Line 396:
|vereigsym
|vereigsym
|style="color:red"| trapped
|style="color:red"| trapped
| main part implemented in p-coded <code>ol</code>, depends on <code style="color:red">verspectrad</code>
| main part implemented in <code>vereig</code>, depends on <code style="color:red">verspectrad</code>
|-
|-
|vereigval
|vereigval
Line 426: Line 426:
|-
|-
|verenclinthull
|verenclinthull
|style="color:red"| trapped
|style="color:green"| free
| main part implemented in p-coded <code>ea</code>
| to be migrated
|-
|-
|verhullparam
|verhullparam
|style="color:red"| encrypted
|style="color:green"| free
| implemented in p-coded <code>jz</code>
| depends on <code>verintervalhull</code>, to be migrated
|-
|-
|verhullpatt
|verhullpatt
|style="color:red"| trapped
|style="color:green"| free
| main part implemented in p-coded <code>jz</code>
| depends on <code>verhullparam</code>, to be migrated
|-
|-
|verintervalhull
|verintervalhull
|style="color:red"| encrypted
|style="color:green"| free
| implemented in p-coded <code>intervalhull</code> (find algorithm in [http://uivtx.cs.cas.cz/~rohn/publist/intervalhull.pdf])
| to be migrated
|-
|-
|colspan="3"|Interval (or real) data: Linear systems (rectangular)
|colspan="3"|Interval (or real) data: Linear systems (rectangular)
Line 465: Line 465:
|-
|-
| verabsvaleqn
| verabsvaleqn
|style="color:red"| trapped
|style="color:green"| free
| main part implemented in p-coded <code>ek</code> (find algorithm in [http://uivtx.cs.cas.cz/~rohn/publist/signaccalg.pdf], improved version in [http://uivtx.cs.cas.cz/~rohn/publist/absvaleqnreport.pdf])
| to be migrated
|-
|-
| verabsvaleqnall
| verabsvaleqnall
|style="color:red"| trapped
|style="color:green"| free
| depends on <code style="color:red">verabsvaleqn</code>, see also [http://uivtx.cs.cas.cz/~rohn/publist/absvaleqnall.pdf]
| depends on <code>verabsvaleqn</code>, see also [http://uivtx.cs.cas.cz/~rohn/publist/absvaleqnall.pdf], to be migrated
|-
|-
| verbasintnpprob
| verbasintnpprob
Line 479: Line 479:




[[Category:Octave-Forge]]
[[Category:Octave Forge]]

Navigation menu