78
Семинар по интервальным вычислениям на Java С. И. Жилин Алтайский Государственный Университет Барнаул, Россия [email protected] Д. Ю. Надёжин ООО “Оракл Девелопмент Спб” Санкт-Петербург, Россия [email protected] МАК’13

Семинар по интервальным вычислениям на Java

  • Upload
    lorene

  • View
    52

  • Download
    0

Embed Size (px)

DESCRIPTION

МАК ’13. Семинар по интервальным вычислениям на Java. Д. Ю. Надёжин ООО “Оракл Девелопмент Спб” Санкт-Петербург, Россия [email protected]. С. И. Жилин Алтайский Государственный Университет Барнаул, Россия [email protected]. План. Введение в интервальные вычисления - PowerPoint PPT Presentation

Citation preview

Page 1: Семинар по интервальным вычислениям на Java

Семинар по интервальным вычислениям на Java

С. И. ЖилинАлтайский Государственный УниверситетБарнаул, Россия[email protected]

Д. Ю. НадёжинООО “Оракл Девелопмент Спб” Санкт-Петербург, Россия[email protected]

МАК’13

Page 2: Семинар по интервальным вычислениям на Java

План

Введение в интервальные вычисления Проект стандарта P1788: основные идеи Установка и настройка ПО Простейшая программа (создание проекта) Интервалы: виды, контексты, операции Вектора и матрицы ИСЛАУ Разное

Барнаул, 28 Июня 2013 МАК 2013 2 / 60

Page 3: Семинар по интервальным вычислениям на Java

Проект стандарта P1788

Уровни спецификации: 1, 2, 3, 4 Стили: теоретико-множественный, Каухера Классические интервалы – общие для всех стилей Декоры Интервальный тип (уровень 2)

Барнаул, 28 Июня 2013 МАК 2013 3 / 60

Page 4: Семинар по интервальным вычислениям на Java

Уровни спецификации

1: Уровень математической модели 2: Уровень интервальных типов данных 3: Уровень представлений 4: Уровень цепочек битов

Барнаул, 28 Июня 2013 МАК 2013 4 / 60

Page 5: Семинар по интервальным вычислениям на Java

Классические интервалы

[a,b], a <= b

Барнаул, 28 Июня 2013 МАК 2013 5 / 60

Page 6: Семинар по интервальным вычислениям на Java

Теоретико-множественный стиль

[a,b], a <= b ∅ [-∞,b] [a,+∞] [-∞,+∞]

Барнаул, 28 Июня 2013 МАК 2013 6 / 60

Page 7: Семинар по интервальным вычислениям на Java

Стиль Каухера

[a,b], a <= b [a,b], a > b

Барнаул, 28 Июня 2013 МАК 2013 7 / 60

Page 8: Семинар по интервальным вычислениям на Java

Декоры

f(x) Dom(f) Com: x - непусто, x Dom(⊆ f) , f(x) непрерывна в каждой точке

интервала x ∊ x, результат – ограниченный интервал Dac: x - непусто, x Dom(⊆ f) , ограничение f(x) на x непрерывно Def: x - непусто, x Dom(⊆ f) Trv: всегда true Ill: не интервал NaI, формально Dom(f) пуст

Барнаул, 28 Июня 2013 МАК 2013 8 / 60

Page 9: Семинар по интервальным вычислениям на Java

Декоры

f(x) = 1/x Dom(f)=[-∞,0) (0,+∞]∪

f([1,2]_com) = [½,1]_com f([1,+∞]_com) = [0,1]_dac sign([0,½]_com)=[0,1]_def f([0,1]_com) = [1,+∞]_trv f([0,0]_com) = [empty]_trv nums2interval(2,1) = [empty]_ill

Барнаул, 28 Июня 2013 МАК 2013 9 / 60

Page 10: Семинар по интервальным вычислениям на Java

Интервальный тип (уровень 2)

Конечное подможество мноожества математических интервалов

Функция hull – проекция из всех математических интервалов в указанное подмножество

Барнаул, 28 Июня 2013 МАК 2013 10 / 60

Page 11: Семинар по интервальным вычислениям на Java

Установка и настройка ПО

Java 7.0u25 и NetBeans 7.3 Ant или Maven Готовый Maven - репозиторий ~/.m2 После окончания семинара можно поправить

<offline>false</offline>в файле ~/.m2/settings.xml Не обязательно – исходные тексты Jinterval~/NetBeansProjects/net.java.jinterval~svn

Барнаул, 28 Июня 2013 МАК 2013 11 / 60

Page 12: Семинар по интервальным вычислениям на Java

Создание проекта

File|New Project... Choose Project|Maven|Java Application|Next> Project name: tutor-rational GroupId: ru.asu Package: ru.asu.tutor.rational Enter

Open ru.asu.tutor.rational.App

Барнаул, 28 Июня 2013 МАК 2013 12 / 60

Page 13: Семинар по интервальным вычислениям на Java

NetBeans не знает про Rational

package ru.asu.tutor.rational;

/**

* Hello world!

*

*/

public class App

{

public static void main( String[] args )

{

Rational[] rats = {

Rational.zero()

};

System.out.println( "Hello World!" );

}

}

Барнаул, 28 Июня 2013 МАК 2013 13 / 60

Page 14: Семинар по интервальным вычислениям на Java

Добавление зависимостей

Выбираем в Projects узелtutor-rational|Dependencies Щелчок правой кнопкой мыши Add dependency Query: rational Unfold: net.java.jinterval:jinterval-rational-java Choose: 0.1-SNAPSHOT [ jar ] local В окне редактирования правая кнопка мыши FixImport

Барнаул, 28 Июня 2013 МАК 2013 14 / 60

Page 15: Семинар по интервальным вычислениям на Java

Импорт вставлен

package ru.asu.tutor.rational;

import net.java.jinterval.rational.Rational;

/**

* Hello world!

*

*/

public class App

{

public static void main( String[] args )

{

Rational[] rats = {

Rational.zero()

};

}

}

Барнаул, 28 Июня 2013 МАК 2013 15 / 60

Page 16: Семинар по интервальным вычислениям на Java

Способы создания Rational

package ru.asu.tutor.rational;

import net.java.jinterval.rational.Rational;

/**

* Hello world!

*

*/

public class App

{

public static void main( String[] args )

{

Rational[] rats = {

Rational.zero(),

Rational.valueOf(2),

Rational.valueOf(0.1),

Rational.valueOf(1, 10)

};

for (Rational r: rats) {

System.out.println(r);

}

}

}

Барнаул, 28 Июня 2013 МАК 2013 16 / 60

Page 17: Семинар по интервальным вычислениям на Java

Способы вывода Rational

MathContext mc20f = new MathContext(20, RoundingMode.FLOOR);

MathContext mc20c = new MathContext(20, RoundingMode.CEILING);

for (Rational r: rats) {

System.out.println(r +

" " + r.doubleValue() +

" [" + r.bigDecimalValue(mc20f) +

"," + r.bigDecimalValue(mc20c) +

"]");

}

0.0 0.0 [0,0]

+0x1p1 2.0 [2,2]

+0xccccccccccccdp-55 0.1 [0.10000000000000000555,0.10000000000000000556]

+0x1/0x5*2^-1 0.1 [0.1,0.1]

Барнаул, 28 Июня 2013 МАК 2013 17 / 60

Page 18: Семинар по интервальным вычислениям на Java

Точные операции над Rational

ExtendedRational diff = ExtendedRationalOps.subtract(rats[2], rats[3]);

System.out.println("diff " + diff

+ " " + diff.doubleValue()

+ " [" + diff.bigDecimalValue(mc20f)

+ "," + diff.bigDecimalValue(mc20c)

+ "]");

diff +0x1/0x5*2^-55 5.551115123125783E-18 [5.5511151231257827021E-18,5.5511151231257827022E-18]

Барнаул, 28 Июня 2013 МАК 2013 18 / 60

Page 19: Семинар по интервальным вычислениям на Java

Javadoc нет, взглянем на исходники

File|Open Project... ~/NetBeansProject/net.java.jinterval~svn/trunk/jinterval В Projects раскрыть jinterval|Modules Получили список подпроектов jinterval Двойной шелчок на jinterval-rational-java Раскрыть jinterval-rational-java|Source packages Получили список пакетов Раскрыть net.java.jinterval.rational Откроем ExtendedRationalContext

Барнаул, 28 Июня 2013 МАК 2013 19 / 60

Page 20: Семинар по интервальным вычислениям на Java

Rump Example in Rationals

File|Open Project... ~/NetBeansProjects/RumpExample

Барнаул, 28 Июня 2013 МАК 2013 20 / 60

Page 21: Семинар по интервальным вычислениям на Java

WHY INTERVAL COMPUTATIONS IN JVM?JInterval Library: Principles, Development, and Perspectives

Барнаул, 28 Июня 2013 МАК 2013 21 / 60

Page 22: Семинар по интервальным вычислениям на Java

Java Is Popular

TIOBE Programming Community Index for September 2012– Calculated by counting hits of the most popular search engines

Барнаул, 28 Июня 2013 МАК 2013 22 / 60

Page 23: Семинар по интервальным вычислениям на Java

Java Is Popular

RedMonk’s language ranking for September 2012

Барнаул, 28 Июня 2013 МАК 2013

Popularity Rank on Github.com (by # of projects)

Popularity Rank on StackOverflow

.com (by # of

tags)

23 / 60

Page 24: Семинар по интервальным вычислениям на Java

Java Is Popular

Bookscan's reports on the top 3,000 titles sold

Барнаул, 28 Июня 2013 МАК 2013 24 / 60

Page 25: Семинар по интервальным вычислениям на Java

Gap between Interval and Applied Software

Java is an attractive and widely adopted technology for applied software development

– Cross-platform portability of applications– General purpose object-oriented language – Almost any language can generate Java bytecodes– Advanced tools for distributed systems development– Huge amount of applied libraries

Interval analysis and interval computations have proved to be useful in numerous real-world applications

Interval software in Java is of fragmentary character Creation of systematic full-featured high-level interval library for

Java brings interval tools closer to developers of applied software

Барнаул, 28 Июня 2013 МАК 2013 25 / 60

Page 26: Семинар по интервальным вычислениям на Java

Interval Computations in Java

Pro:• Portability of Java Virtual Machine (JVM)• Safe memory management

(no memory leaks and pointer errors)• Network-aware environment• Parallel and distributed computing

(threads, RMI)• Strict model of security • Standard API for GUI, graphics, DBMS, …• Widely adopted

– Embedded systems, browsers, …– Development, teaching, …

Con:• Low performance

– Virtual machine– Interpretation is slow– Overhead cost of safe memory management

• Language restrictions– No primitive structure type– No operator overloading– No traditional multidimesional arrays– No full compliance with IEEE 754*

• Relatively small number of scientific libraries on Java

• Scientific computing traditions: Fortran, С/С++

Барнаул, 28 Июня 2013 МАК 2013

Is Java suitable for scientific computing?

*Kahan W., Darcy J.D. How Java’s Floating-Point Hurts Everyone Everywhere//ACM 1998 Workshop on Java forHigh–Performance Network Computing, Stanford University, March 1998, http://www.cs.berkeley.edu/~wkahan/JAVAhurt.pdf

26 / 60

Page 27: Семинар по интервальным вычислениям на Java

Interval Java Libraries

IA_math, 1997– Classic IA, classic interval elementary functions– Timothy J. Hickey, – Brandeis University, Boston, USA– interval.sourceforge.net/interval/

Java-XSC, 1999 – Classic IA, rectangular complex IA, classic interval elementary functions,

classic and complex interval vectors and matrices– Benjamin R.C. Bedregal, Jose E.M. Dutra – Universidade Federal do Rio Grande do Norte, Natal, Brazil – www.dimap.ufrn.br/~java-xsc/jxsc2007.html

Барнаул, 28 Июня 2013 МАК 2013 27 / 60

Page 28: Семинар по интервальным вычислениям на Java

JINTERVAL EVOLUTIONJInterval Library: Principles, Development, and Perspectives

Барнаул, 28 Июня 2013 МАК 2013 28 / 60

Page 29: Семинар по интервальным вычислениям на Java

Stages of JInterval Evolution

Sep 2008 JInterval is started as undergraduate student project ”Childhood” at Altai State University (Barnaul, Russia)

http://code.google.com/p/javaintervalmathasu/

Aug 2009 Dmitry Nadezhin (Sun Labs, Zelenograd, Russia) “Boyhood” joins the project

http://kenai.com/projects/jinterval

Jan 2012 Developing reference implementation and “Youth” test suite for P1788 becomes Priority #1

http://java.net/projects/jinterval orhttp://jinterval.java.net

Барнаул, 28 Июня 2013 МАК 2013 29 / 60

Page 30: Семинар по интервальным вычислениям на Java

JInterval (Boyhood): A Priori Requirements

The library

1. Must be clear and easy to use

2. Should provide flexibility in the choice of interval algebra for computations

3. Should provide flexibility to extend its functionality

4. Should provide flexibility in choosing precision of interval boundaries and associated rounding policies

5. Must be portable

6. Should provide high performance7. Must be open source

Барнаул, 28 Июня 2013 МАК 2013 30 / 60

Priority

Page 31: Семинар по интервальным вычислениям на Java

JInterval (Boyhood): Architecture

“Fast” branch: – Interval bounds: double, nearest rounding– IA: set-based, Kaucher, complex rectangular, complex circular, complex ring,

complex polar– Interval elementary functions, vectors, matrices – ILS: Gauss, Gauss-Seidel, subdifferential Newton, NonNeg, Shaidurov

“Rational bounds” branch: – Interval bounds: smart rational/double, arbitrary precision, rounding

policies, contexts – IA: set-based– Interval elementary functions, vectors, matrices

Generic interfaces on top of branches

Барнаул, 28 Июня 2013 МАК 2013 31 / 60

Page 32: Семинар по интервальным вычислениям на Java

JInterval (Boyhood): Type Hierarchy

Барнаул, 28 Июня 2013 МАК 2013 32 / 60

Interval

ClassicRealInterval ComplexInterval

RealInterval

DoubleIntervalDoubleInterval

RationalIntervalRationalInterval

ComplexIntervalCircleComplexIntervalCircle

ComplexIntervalRectangleComplexIntervalRectangle

ComplexIntervalPolarComplexIntervalPolar

ComplexIntervalRingComplexIntervalRing

Page 33: Семинар по интервальным вычислениям на Java

JInterval (Boyhood): Lessons Learned

Барнаул, 28 Июня 2013 МАК 2013 33 / 60

Problem Possible Solution

Java syntax is not expressive enough for calculations

Developing Scala API for a new JInterval implementation

JInterval is not compliant with the project of interval standard IEEE P1788

Redesign the library according to IEEE P1788

Low performance Using optional plugins for native code of high precision arithmetic and interval linear algebra algorithms through JNA

Java

r = x.add(y.multiply(z));

Scala

r = x + y*z

Page 34: Семинар по интервальным вычислениям на Java

ARCHITECTUREJInterval Library: Principles, Development, and Perspectives

Барнаул, 28 Июня 2013 МАК 2013 34 / 60

Page 35: Семинар по интервальным вычислениям на Java

Class Diagram (package net.java.jinterval.interval)

Барнаул, 28 Июня 2013 МАК 2013 35 / 60

Page 36: Семинар по интервальным вычислениям на Java

Key-role Interfaces

Барнаул, 28 Июня 2013 МАК 2013 36 / 60

Types graph follows the flavor structure of P1788

Java interfaces:– Interval

Common methods for all flavors

– SetInterval Extends Interval with methods for

flavor ‘Set Interval’

– KaucherIntervalExtends Interval with methods for

flavor ‘Kaucher interval’

– ClassicInterval Extends all flavors, because can be

mapped to related flavor intervals

Page 37: Семинар по интервальным вычислениям на Java

Interface Interval: common methods of all flavors

Барнаул, 28 Июня 2013 МАК 2013 37 / 60

Interval defines common methods of all interval flavors

Defines numerical and boolean operations only

Page 38: Семинар по интервальным вычислениям на Java

IntervalContext: interval operations interface

Барнаул, 28 Июня 2013 МАК 2013 38 / 60

Generic interface IntervalContext defines signature for interval-valued methods

Page 39: Семинар по интервальным вычислениям на Java

KaucherIntervalContext: interval flavor interface

Барнаул, 28 Июня 2013 МАК 2013 39 / 60

KaucherIntervalContext extends IntervalContextand binds type variable I to Kaucher interval flavor

Page 40: Семинар по интервальным вычислениям на Java

Implementation of interval contexts

There may be several implementations for flavor contexts– SetIntervalContextInfSupBase and SetIntervalContextInfSup are two tightest implementations of set interval operations and functions (P1788 Level 2, InfSup_F).

Барнаул, 28 Июня 2013 МАК 2013 40 / 60

Page 41: Семинар по интервальным вычислениям на Java

Factory classes for interval contexts

Барнаул, 28 Июня 2013 МАК 2013 41 / 60

Factory classes create particular instances of interval contexts– SetIntervalContexts– KaucherIntervalContexts

Page 42: Семинар по интервальным вычислениям на Java

Exact context

Барнаул, 28 Июня 2013 МАК 2013 42 / 60

Static method getExact() creates the exact context All operations in the exact context return intervals with rational

bounds – P1788 Level 1 results or throw IrrationalException

Page 43: Семинар по интервальным вычислениям на Java

InfSup_F contexts

Барнаул, 28 Июня 2013 МАК 2013 43 / 60

Static method getInfSup(BinaryValueSet numberFormat) creates the InfsSup_F contexts with binary floating-point interval representations (BINARY32, BINARY64, BINARY128, …, BINARY1024)

Page 44: Семинар по интервальным вычислениям на Java

jintervalAggregator of JInterval

Core Module Dependencies Graph

Барнаул, 28 Июня 2013 МАК 2013 44 / 60

jinterval-irInterval regression solverjinterval-irInterval regression solver

jinterval-ilsInterval linear equation system solverjinterval-ilsInterval linear equation system solver

jinterval-interval-java Intervals, IAs, interval elem. functionsjinterval-interval-java Intervals, IAs, interval elem. functions

jinterval-rational-java Rational numbersjinterval-rational-java Rational numbers

fortress-roundingRounding class from Fortressfortress-roundingRounding class from Fortress

boehm-crealsBoehm’s constructive realsboehm-crealsBoehm’s constructive reals

mpfr-adapterJNA adapter for native GNU MPFRmpfr-adapterJNA adapter for native GNU MPFR

commons-math3Apache Commons Math 3.0commons-math3Apache Commons Math 3.0

lpsolveJava port of lp_solvelpsolveJava port of lp_solve

jnaJava access to native librariesjnaJava access to native libraries

large-test-javaJInterval testslarge-test-javaJInterval tests

commons-compressApache Commons Compress 1.4commons-compressApache Commons Compress 1.4

External dependenciesJInterval packages

Page 45: Семинар по интервальным вычислениям на Java

FUNCTIONALITY AND EXAMPLESJInterval Library: Principles, Development, and Perspectives

Барнаул, 28 Июня 2013 МАК 2013 45 / 60

Page 46: Семинар по интервальным вычислениям на Java

Functionality of JInterval (Youth)

Rational arithmetic– flexible inner representation

(rational, binary32, binary64, binary128,…)

– exact and approximate operations

Extended Rational arithmetic– Rational + {-∞ , +∞}

Interval Arithmetic– Set-based– Kaucher

Elementary Functions– According to P1788

Dense Vectors and Matrices– Rational, extended rational– Interval

Solvers– ILS Solvers

• Hansen-Bliek-Rohn-Ning-Kearfott enclosure +Gauss-Seidel

• Subdifferential Newton– Interval linear regression solver

• Data consistency check• Outlier detection• Object status detection• Interval prediction

Барнаул, 28 Июня 2013 МАК 2013 46 / 60

Page 47: Семинар по интервальным вычислениям на Java

Example 1.1. Contexts and Simple Expressions

Барнаул, 28 Июня 2013 МАК 2013 47 / 60

x+y = [3.0,5.0]x/y = [0.333251953125,1.0]x+y = [3.0,5.0]x/y = [0.333251953125,1.0]

, , , .

Page 48: Семинар по интервальным вычислениям на Java

Example 1.2. Contexts and Simple Expressions

Барнаул, 28 Июня 2013 МАК 2013 48 / 60

x+y = [3.0,5.0]x/y = [0.3333333134651184,1.0]x+y = [3.0,5.0]x/y = [0.3333333134651184,1.0]

, , , .

Page 49: Семинар по интервальным вычислениям на Java

Example 1.3. Contexts and Simple Expressions

Барнаул, 28 Июня 2013 МАК 2013 49 / 60

x+y = [3.0,5.0]x/y = [+0x15555555555555555555555555555p-114,+0x1p0] ([0.3333333333333333,1.0])

x+y = [3.0,5.0]x/y = [+0x15555555555555555555555555555p-114,+0x1p0] ([0.3333333333333333,1.0])

, , , .

Page 50: Семинар по интервальным вычислениям на Java

Example 1.4. Contexts and Simple Expressions

Барнаул, 28 Июня 2013 МАК 2013 50 / 60

x+y = [3.0,5.0]x/y = [+0x1/0x3*2^0,+0x1p0]([0.3333333333333333,1.0])x+y = [3.0,5.0]x/y = [+0x1/0x3*2^0,+0x1p0]([0.3333333333333333,1.0])

, , , .

Page 51: Семинар по интервальным вычислениям на Java

Example 2.1. Decorations

Барнаул, 28 Июня 2013 МАК 2013 51 / 60

sqrt([0.0,1.0]) = [0.0,1.0] COM

sqrt([-1.0,1.0]) = [0.0,1.0] CON

sqrt([-2.0,-1.0]) = [EMPTY] NDF

sqrt([EMPTY]) = [EMPTY] SAF

sqrt([0.0,1.0]) = [0.0,1.0] COM

sqrt([-1.0,1.0]) = [0.0,1.0] CON

sqrt([-2.0,-1.0]) = [EMPTY] NDF

sqrt([EMPTY]) = [EMPTY] SAF

Page 52: Семинар по интервальным вычислениям на Java

Example 2.2. Decorations

Барнаул, 28 Июня 2013 МАК 2013 52 / 60

1/[0.0,0.0] = [EMPTY] NDF

1/[0.0,1.0] = [1.0,Infinity] CON

1/[4.9E-324,1.0] = [1.0,Infinity] SAF

x = [0.0,Infinity] SAF y = 1/x = [0.0,Infinity] CON

1/[0.0,0.0] = [EMPTY] NDF

1/[0.0,1.0] = [1.0,Infinity] CON

1/[4.9E-324,1.0] = [1.0,Infinity] SAF

x = [0.0,Infinity] SAF y = 1/x = [0.0,Infinity] CON

Page 53: Семинар по интервальным вычислениям на Java

Example 3. (Rump)

Барнаул, 28 Июня 2013 МАК 2013 53 / 60

Compute for , and

Page 54: Семинар по интервальным вычислениям на Java

Example 3. (Rump) using ExtendedRational

Барнаул, 28 Июня 2013 МАК 2013 54 / 60

Page 55: Семинар по интервальным вычислениям на Java

Example 3. (Rump) using ExtendedRational

Барнаул, 28 Июня 2013 МАК 2013 55 / 60

=== BINARY16 ===r=NaN=== BINARY32 ===r=1.172603964805603 +0x9617e3p-23=== BINARY64 ===r=-1.1805916207174113E21 -0x1p70=== BINARY128 ===r=1.1726039400531787 +0x12c2fc595b06beb74a518f018c093p-112=== BINARY256 ===r=-0.8273960599468214 -0x69e81d3527ca0a45ad7387f39fb6bbbee6d0899f57af4ec62443141c771p-235=== Exact ===r=-0.8273960599468214 -0xd5ef/0x1029*2^-4

=== BINARY16 ===r=NaN=== BINARY32 ===r=1.172603964805603 +0x9617e3p-23=== BINARY64 ===r=-1.1805916207174113E21 -0x1p70=== BINARY128 ===r=1.1726039400531787 +0x12c2fc595b06beb74a518f018c093p-112=== BINARY256 ===r=-0.8273960599468214 -0x69e81d3527ca0a45ad7387f39fb6bbbee6d0899f57af4ec62443141c771p-235=== Exact ===r=-0.8273960599468214 -0xd5ef/0x1029*2^-4

Page 56: Семинар по интервальным вычислениям на Java

Example 3. (Rump) using SetInterval

Барнаул, 28 Июня 2013 МАК 2013 56 / 60

Page 57: Семинар по интервальным вычислениям на Java

Example 3. (Rump) using SetInterval

Барнаул, 28 Июня 2013 МАК 2013 57 / 60

=== BINARY16 ===i = [-Infinity,Infinity]=== BINARY32 ===i = [-6.972078301255262E30,6.972078905718172E30]=== BINARY64 ===i = [-8.264141345021879E21,5.902958103587058E21]=== BINARY128 ===i = [-0xffb4f40e9a93e50522d6b9c3f9dp-98,+0x12c2fc595b06beb74a518f018c093p-112] ([-1022.8273960599469,1.1726039400531787])=== BINARY256 ===i = [-0x69e81d3527ca0a45ad7387f39fb6bbbee6d0899f57af4ec62443141c771p-235, -0xd3d03a6a4f94148b5ae70fe73f6d777dcda1133eaf5e9d8c48862838ee1p-236] ([-0.8273960599468214,-0.8273960599468213])=== Exact ===i = [-0xd5ef/0x1029*2^-4,-0xd5ef/0x1029*2^-4] ([-0.8273960599468214,-0.8273960599468213])

Page 58: Семинар по интервальным вычислениям на Java

Example 4. HBRNK enclosure

Барнаул, 28 Июня 2013 МАК 2013 58 / 60

Page 59: Семинар по интервальным вычислениям на Java

Example 4. HBRNK enclosure using MatlabOps

Барнаул, 28 Июня 2013 МАК 2013 59 / 60

Page 60: Семинар по интервальным вычислениям на Java

Example 5. Gauss-Seidel Solver

Барнаул, 28 Июня 2013 МАК 2013

A:/| [2.0,4.0] [-2.0,0.0] || [-1.0,0.0] [2.0,4.0] |\

b:/| [1.0,2.0] || [-2.0,2.0] |\

x:/| [-1.0,4.0] || [-1.5,3.0] |\

A:/| [2.0,4.0] [-2.0,0.0] || [-1.0,0.0] [2.0,4.0] |\

b:/| [1.0,2.0] || [-2.0,2.0] |\

x:/| [-1.0,4.0] || [-1.5,3.0] |\

60 / 60

Page 61: Семинар по интервальным вычислениям на Java

APPLICATIONSJInterval Library: Principles, Development, and Perspectives

Барнаул, 28 Июня 2013 МАК 2013 61 / 60

Page 62: Семинар по интервальным вычислениям на Java

P1788 Test framework

Барнаул, 28 Июня 2013 МАК 2013 62 / 60

FilibFilib

CXSCCXSC

PROFILPROFIL

BoostBoost

MPFIMPFILauncherLauncher

<NONAME><NONAME>

TestSet2.datTestSet2.dat

TestSet1.datTestSet1.dat

ReporttestFilibtestFilib

testCXSCtestCXSC

testPROFILtestPROFIL

testBoosttestBoost

testMPFItestMPFI

test<NONAME>test<NONAME>

TestSet3.datTestSet3.datIntervalLibraries Adapters

Page 63: Семинар по интервальным вычислениям на Java

P1788 Test framework

Барнаул, 28 Июня 2013 МАК 2013 63 / 60

FilibFilib

CXSCCXSC

PROFILPROFIL

BoostBoost

MPFIMPFILauncherLauncher

<NONAME><NONAME>

TestSet1.datTestSet1.dat

TestSet3.datTestSet3.dat

TestSet2.datTestSet2.dat

ReporttestFilibtestFilib

testCXSCtestCXSC

testPROFILtestPROFIL

testBoosttestBoost

testMPFItestMPFI

test<NONAME>test<NONAME>

IntervalLibraries Adapters

Page 64: Семинар по интервальным вычислениям на Java

P1788 Test framework

Барнаул, 28 Июня 2013 МАК 2013 64 / 60

FilibFilib

CXSCCXSC

PROFILPROFIL

BoostBoost

MPFIMPFILauncherLauncher

<NONAME><NONAME>

TestSet2.datTestSet2.dat

TestSet1.datTestSet1.dat

TestSet3.datTestSet3.dat

ReporttestFilibtestFilib

testCXSCtestCXSC

testPROFILtestPROFIL

testBoosttestBoost

testMPFItestMPFI

test<NONAME>test<NONAME>

IntervalLibraries Adapters

Page 65: Семинар по интервальным вычислениям на Java

* div[1,2] [0,1][1,2] [0,0]* sqrt[-Infinity,0][-Infinity,Infinity]* pown[0,0] 0

* div[1,2] [0,1][1,2] [0,0]* sqrt[-Infinity,0][-Infinity,Infinity]* pown[0,0] 0

P1788 Test framework. Sample RuntestDemo.dat

== Filib 3.0.2div [1.0,2.0] [0.0,1.0] = [1.0,Infinity] : [1.0,Infinity] Okdiv [1.0,2.0] [0.0,0.0] = [EMPTY] : [1.7976931348623157E308,Infinity] NOT TIGHT!sqrt [-Infinity,0.0] = [0.0,0.0] : [0.0,0.0] Oksqrt [-Infinity,Infinity] = [0.0,Infinity] : [-4.9E-324,Infinity] NOT TIGHT!pown [0.0,0.0] 0 = [1.0,1.0] : [1.0,1.0] Ok==

== Boost 1.48.0div [1.0,2.0] [0.0,1.0] = [1.0,Infinity] : [1.0,Infinity] Okdiv [1.0,2.0] [0.0,0.0] = [EMPTY] : [EMPTY] Oksqrt [-Infinity,0.0] = [0.0,0.0] : [0.0,0.0] Oksqrt [-Infinity,Infinity] = [0.0,Infinity] : [0.0,Infinity] Okpown [0.0,0.0] 0 = [1.0,1.0] : [EMPTY] CONTAINMENT FAILURE!!!==

== MPFI 1.5.1div [1.0,2.0] [0.0,1.0] = [1.0,Infinity] : [1.0,Infinity] Okdiv [1.0,2.0] [0.0,0.0] = [EMPTY] : [-Infinity,Infinity] NOT TIGHT!sqrt [-Infinity,0.0] = [0.0,0.0] : [EMPTY] CONTAINMENT FAILURE!!!sqrt [-Infinity,Infinity] = [0.0,Infinity] : [EMPTY] CONTAINMENT FAILURE!!!Library has no Operation "pown" in line 7 : * pown==

== Filib 3.0.2div [1.0,2.0] [0.0,1.0] = [1.0,Infinity] : [1.0,Infinity] Okdiv [1.0,2.0] [0.0,0.0] = [EMPTY] : [1.7976931348623157E308,Infinity] NOT TIGHT!sqrt [-Infinity,0.0] = [0.0,0.0] : [0.0,0.0] Oksqrt [-Infinity,Infinity] = [0.0,Infinity] : [-4.9E-324,Infinity] NOT TIGHT!pown [0.0,0.0] 0 = [1.0,1.0] : [1.0,1.0] Ok==

== Boost 1.48.0div [1.0,2.0] [0.0,1.0] = [1.0,Infinity] : [1.0,Infinity] Okdiv [1.0,2.0] [0.0,0.0] = [EMPTY] : [EMPTY] Oksqrt [-Infinity,0.0] = [0.0,0.0] : [0.0,0.0] Oksqrt [-Infinity,Infinity] = [0.0,Infinity] : [0.0,Infinity] Okpown [0.0,0.0] 0 = [1.0,1.0] : [EMPTY] CONTAINMENT FAILURE!!!==

== MPFI 1.5.1div [1.0,2.0] [0.0,1.0] = [1.0,Infinity] : [1.0,Infinity] Okdiv [1.0,2.0] [0.0,0.0] = [EMPTY] : [-Infinity,Infinity] NOT TIGHT!sqrt [-Infinity,0.0] = [0.0,0.0] : [EMPTY] CONTAINMENT FAILURE!!!sqrt [-Infinity,Infinity] = [0.0,Infinity] : [EMPTY] CONTAINMENT FAILURE!!!Library has no Operation "pown" in line 7 : * pown==

Report

Барнаул, 28 Июня 2013 МАК 2013 65 / 60

Page 66: Семинар по интервальным вычислениям на Java

KNIME

KNIME— open source data mining platform

Барнаул, 28 Июня 2013 МАК 2013 66 / 60

Page 67: Семинар по интервальным вычислениям на Java

KNIME Interval Tools

KNIME— open source data mining platform

Барнаул, 28 Июня 2013 МАК 2013 67 / 60

Page 68: Семинар по интервальным вычислениям на Java

KNIME Nodes for Interval Regression

Барнаул, 28 Июня 2013 МАК 2013 68 / 60

Builds linear interval regression model Y = f(X, A)

Interval Regression( Learner)

IR Outlier Detector

Calculates interval prediction Y* for X* using model Y = F(X, A)

Detects outliers (observations with underestimated error bound)

Interval Regression( Predictor)

IR Consistency

Checks consistency of input data and sets flow control variable

for IF switch

Page 69: Семинар по интервальным вычислениям на Java

KNIME Nodes for ILS Solving

In previous version of “Interval Tools”:

Барнаул, 28 Июня 2013 МАК 2013 69 / 60

Computes inner/outer estimate of united/tolerable solution set and visualizes* 2D/3D united solution set

*Kraemer W. Computing and visualizing solutions sets of interval linear systems, Serdica J. Computing 1(4) 2007, 455-468.

ILS Solver

Page 70: Семинар по интервальным вычислениям на Java

KNIME Nodes for ILS Solving

Барнаул, 28 Июня 2013 МАК 2013 70 / 60

Methods for united solution set estimation: – Outer:

Hansen-Bliek-Rohn-Ning-Kearfott enclosure + Gauss-Seidel

– Inner: Subdifferential Newton

Computes outer and inner estimates for united solution set of ILS Ax=b

ILS Solver ILS United Solution Set View

Visualizes 2D or 3D united solution set

Method: – I. A. Sharaya’s

algorithm for visualization of AE-solution sets

Under construction

Page 71: Семинар по интервальным вычислениям на Java

KNIME Workflow for Image Recognition

Барнаул, 28 Июня 2013 МАК 2013 71 / 60

Prolubnikov A.V., Silitskiy S.A. On solving the problem of numeric matrices recognition using estimates of solution sets of interval systems of equations // Comp. Math. Proceedings of XIV Baikal International School-Seminar “Methods of optimization and its applications” Irkutsk-Baikal, July 2-8 июля 2008. Vol. 3. – Irkutsk: ISEM SB RAS, 2008. – pp. 152-157. (in Russian)

Read reference images

Read imageto recognize

Convert to matrices

Convert to matrices

Join Build interval matrices

Get A1, b

Get A2, b

Solve A1*x=b

Solve A2*x=b

Solve non-interval ILS

Join

JoinCalc metrics

Metrics values

Metrics histogram

Page 72: Семинар по интервальным вычислениям на Java

KNIME Workflow for Image Recognition

Барнаул, 28 Июня 2013 МАК 2013 72 / 60

Prolubnikov A.V., Silitskiy S.A. On solving the problem of numeric matrices recognition using estimates of solution sets of interval systems of equations // Comp. Math. Proceedings of XIV Baikal International School-Seminar “Methods of optimization and its applications” Irkutsk-Baikal, July 2-8 июля 2008. Vol. 3. – Irkutsk: ISEM SB RAS, 2008. – pp. 152-157. (in Russian)

Read reference images

Read imageto recognize

Convert to matrices

Convert to matrices

Join Build interval matrices

Get A1, b

Get A2, b

Solve A1*x=b

Solve A2*x=b

Solve non-interval ILS

Join

JoinCalc metrics

Metrics values

Metrics histogram

Page 73: Семинар по интервальным вычислениям на Java

Mobile Application “Affiche”

Modeling positional uncertainties for GPS+GSM navigation using circular complex arithmetic

Барнаул, 28 Июня 2013 МАК 2013 73 / 60

Page 74: Семинар по интервальным вычислениям на Java

PERSPECTIVESJInterval Library: Principles, Development, and Perspectives

Барнаул, 28 Июня 2013 МАК 2013 74 / 60

Page 75: Семинар по интервальным вычислениям на Java

Future Directions

Holding P1788 compliance of JInterval Developing optional plugins for platform-dependent effective

implementations of inner layers through JNI– MPFR for fast multiple precision floating-point arithmetic– BLAS for fast linear algebra operations

Developing API for access to JInterval from other programming languages

– Scala– …

High-level functionality replenishment

Барнаул, 28 Июня 2013 МАК 2013 75 / 60

Page 76: Семинар по интервальным вычислениям на Java

High-Level Functionality Replenishment

Enhancing MatlabOps ILS tolerable solution set estimators ILS AE-solution set visualization (I. Sharaya) Global Optimization Solver (N. Panov – S. Shary)

– Randomized Branch & Bound– Interval simulating annealing – Interval Genetic algorithm– Multi-method algorithm

ODE Solver (D. Nadezhin)

Барнаул, 28 Июня 2013 МАК 2013 76 / 60

Page 77: Семинар по интервальным вычислениям на Java

How to Get and Contribute to JInterval?

java.net/projects/jintervalSource codes (SVN)JavaDocWikiTutorialDevelopers’ forumMail lists

Барнаул, 28 Июня 2013 МАК 2013 77 / 60

Page 78: Семинар по интервальным вычислениям на Java

Acknowledgements

Maksim V. Danilov Kirill S. Dronov Walter Krämer Nikita V. Panov Gregor Paw Anton E. Sartakov Andrey S. Samoilov Sergey P. Shary Irina A. Sharaya Egor N. Tepikin Leo N. Tolstoy IEEE Interval Standard Working Group – P1788

Барнаул, 28 Июня 2013 МАК 2013 78 / 60