Wykorzystanie biblioteki interval boost

Podobne dokumenty
Techniki Programowania wskaźniki

wykład V uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C++ klasy i obiekty wykład V dr Jarosław Mederski Spis Język C++ - klasy

4. Funkcje. Przykłady

Programowanie w C++ Wykład 3. Katarzyna Grzelak. 12 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 35

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Wyjątki (exceptions)

Zdzisław Dzedzej. Politechnika Gdańska. Gdańsk, 2013

Wykład 10. Stwierdzenie 1. X spełnia warunek Borela wtedy i tylko wtedy, gdy każda scentrowana rodzina zbiorów domkniętych ma niepusty przekrój.

Część 4 życie programu

1. Wypisywanie danych

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Programowanie - wykład 4

Język C++ wykład VI. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VI. dr Jarosław Mederski.

zaznaczymy na osi liczbowej w ten sposób:

Język C++ wykład VIII

Analiza matematyczna 1 - test egzaminacyjny wersja do ćwiczeń

Wstęp do programowania. Różne różności

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

020 Liczby rzeczywiste

Przestrzenie metryczne. Elementy Topologii. Zjazd 2. Elementy Topologii

Teoria miary. WPPT/Matematyka, rok II. Wykład 5

I - Microsoft Visual Studio C++

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Przeciążanie funkcji. Przykład 1: #include <iostream> using namespace std; double srednia(double n1, double n2) { return ((n1 + n2)/2.

Szablony funkcji i szablony klas

Zbiory wypukłe i stożki

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

Java Podstawy. Michał Bereta

Kombinowanie o nieskończoności. 3. Jak policzyć nieskończone materiały do ćwiczeń

Wstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną)

zdarzenie losowe - zdarzenie którego przebiegu czy wyniku nie da się przewidzieć na pewno.

Dlaczego nie wystarczają liczby wymierne

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

Wstęp do programowania

Wstęp do programowania

1 P roste e t ypy p d a d n a ych c - c ąg ą g d a d l a szy 2 T y T py p z ł z o ł żo ż ne e d a d n a ych c : T BLICE

Wstęp do programowania

Wykłady 11 i 12: Całka oznaczona

Interwałowe zbiory rozmyte

Wstęp do Programowania 2

C++ wprowadzanie zmiennych

Klasyfikacja typów w C++

Język ludzki kod maszynowy

Programowanie obiektowe - Przykładowe zadania egzaminacyjne (2005/2006)

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Podstawy Programowania Podstawowa składnia języka C++

Informatyka. Wy-08 Klasy. mgr inż. Krzysztof Kołodziejczyk

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

Programowanie obiektowe 2005/2006. Laboratorium 1. Przeciążanie funkcji

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Pochodna funkcji: definicja, podstawowe własności wykład 5

C-struktury wykład. Dorota Pylak

Robert Kowalczyk. Zbiór zadań z teorii miary i całki

zastępować zarezerwowane słowa lub symbole innymi,

Analiza Matematyczna MAEW101 MAP1067

METODY MATEMATYCZNE I STATYSTYCZNE W INŻYNIERII CHEMICZNEJ

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

Wstęp do Informatyki

DYNAMICZNE PRZYDZIELANIE PAMIECI

Wstęp do Programowania 2

G. Plebanek, MIARA I CAŁKA Zadania do rozdziału 1 28

Wykorzystanie elementów z biblioteki standardowej C++: vector, list, complex oraz string.

Teoria miary. Matematyka, rok II. Wykład 1

#include <stdio.h> int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Podstawy Programowania C++

5. Rekurencja. Przykłady

Programowanie w C++ Wykład 6. Katarzyna Grzelak. kwiecień K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40

STL: Lekcja 1&2. Filozofia STL

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

Wykład 3 Równania rózniczkowe cd

Zadanie 2: Arytmetyka symboli

Projektowanie klas c.d. Projektowanie klas przykład

Programowanie Obiektowew języku C++ Zadania L4

Wstęp do programowania obiektowego, wykład 7

wykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury,

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31

Podstawy algorytmiki i programowania - wykład 4 C-struktury

Funkcje. Deklaracja funkcji. Definicja funkcji. Wykorzystanie funkcji w programie.

Finanse i Rachunkowość studia niestacjonarne Wprowadzenie do teorii ciągów liczbowych (treść wykładu z 21 grudnia 2014)

Ciągłość funkcji f : R R

Podstawy i języki programowania

Podstawy programowania w języku C++ Zadania - dziedziczenie i polimorfizm

EGZAMIN PISEMNY Z ANALIZY I R. R n

3. Instrukcje warunkowe

Zadania z Analizy Funkcjonalnej I Które z poniższych przestrzeni metrycznych są przestrzeniami unormowanymi?

I. Podstawowe pojęcia i oznaczenia logiczne i mnogościowe. Elementy teorii liczb rzeczywistych.

Matematyka z el. statystyki, # 4 /Geodezja i kartografia I/

Wstęp do informatyki- wykład 8 Pętla while, do while,for -pętla w pętli- przykłady Operator rzutowania Manipulatory

Przykładowy dokument XML

Programowanie Obiektowew języku C++ Zadania L4

Pliki wykład. Dorota Pylak

Ciągi liczbowe wykład 3

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

2 Rodziny zbiorów. 2.1 Algebry i σ - algebry zbiorów. M. Beśka, Wstęp do teorii miary, rozdz. 2 11

Szablony. Szablony funkcji

Transkrypt:

Wykorzystanie biblioteki interval boost Przemysław Spurek 18 sierpnia 2010

Problem: Komputer przybliża liczby rzeczywiste np. 2. Rozwiazanie: Artmetyka interwałowa. Źródło: http://www.boost.org

Przykład zastosowania: W sierpniu 1998 r. Tom Hales (hales@math. lsa.umich.edu) ogłosił dowód słynnej hipotezy Keplera, będacej na chyba jeszcze słynniejszej liście problemów matematycznych przedstawionej przez Davida Hilberta w 1900 r. Treścia hipotezy było przypuszczenie, że żaden układ identycznych kul nie może przewyższać gęstościa struktury powierzchniowo centrowanej fcc. Wszyscy to wiedzieliśmy z kursu fizyki ciała stałego, jednakże ścisły dowód stał sie możliwy dopiero dzięki metodom interwałowym

Artmetyka interwałowa działa na odcinkach. Definicja 1 Odcinek to domknięty i zwarty podzbiór zbioru F nazywanego base number type. Gdzie F może być równe: R podzbiór R N...

Artmetyka interwałowa działa na odcinkach. Definicja 1 Odcinek to domknięty i zwarty podzbiór zbioru F nazywanego base number type. Gdzie F może być równe: R podzbiór R N...

Artmetyka interwałowa działa na odcinkach. Definicja 1 Odcinek to domknięty i zwarty podzbiór zbioru F nazywanego base number type. Gdzie F może być równe: R podzbiór R N...

Artmetyka interwałowa działa na odcinkach. Definicja 1 Odcinek to domknięty i zwarty podzbiór zbioru F nazywanego base number type. Gdzie F może być równe: R podzbiór R N...

Artmetyka interwałowa działa na odcinkach. Definicja 1 Odcinek to domknięty i zwarty podzbiór zbioru F nazywanego base number type. Gdzie F może być równe: R podzbiór R N...

Wyróżniamy trzy rodzaje odcinków: ograniczone [a, b] gdzie a, b F oraz a b niegraniczone [, a], [b, + ], [, + ] pusty [a, b] gdzie a, b F oraz a > b

Wyróżniamy trzy rodzaje odcinków: ograniczone [a, b] gdzie a, b F oraz a b niegraniczone [, a], [b, + ], [, + ] pusty [a, b] gdzie a, b F oraz a > b

Wyróżniamy trzy rodzaje odcinków: ograniczone [a, b] gdzie a, b F oraz a b niegraniczone [, a], [b, + ], [, + ] pusty [a, b] gdzie a, b F oraz a > b

Wyróżniamy trzy rodzaje odcinków: ograniczone [a, b] gdzie a, b F oraz a b niegraniczone [, a], [b, + ], [, + ] pusty [a, b] gdzie a, b F oraz a > b

Oznaczenie: Dla odcinka [x] = [x, x] x nazywamy lower bound x nazywamy upper bound interval<double> I1(2); cout<< I1.lower() <<", "<< I1.upper() <<endl; 2, 2

Oznaczenie: Dla odcinka [x] = [x, x] x nazywamy lower bound x nazywamy upper bound interval<double> I1(2); cout<< I1.lower() <<", "<< I1.upper() <<endl; 2, 2

Jeżeli nie da się wyznaczyć dokładnej wartości x lub x to musimy je zaokraglić: [x] = [ x, x] x nazywamy lower bound x nazywamy upper bound interval<double> I1(2); interval<double> I2 = sqrt( I1 ); cout<< I2.lower() <<", "<< I2.upper() <<endl; 1.41421, 1.41421 cout<< I2.lower() - 1.41421<<endl; 3.56237e-006

Jeżeli nie da się wyznaczyć dokładnej wartości x lub x to musimy je zaokraglić: [x] = [ x, x] x nazywamy lower bound x nazywamy upper bound interval<double> I1(2); interval<double> I2 = sqrt( I1 ); cout<< I2.lower() <<", "<< I2.upper() <<endl; 1.41421, 1.41421 cout<< I2.lower() - 1.41421<<endl; 3.56237e-006

Jeżeli nie da się wyznaczyć dokładnej wartości x lub x to musimy je zaokraglić: [x] = [ x, x] x nazywamy lower bound x nazywamy upper bound interval<double> I1(2); interval<double> I2 = sqrt( I1 ); cout<< I2.lower() <<", "<< I2.upper() <<endl; 1.41421, 1.41421 cout<< I2.lower() - 1.41421<<endl; 3.56237e-006

Klasa template interval<t> zawiera dwa parametry: T Określa on zbiór F R podzbiór R N... Policies Nie określa on typu zbioru F tylko zachowanie przedziałów. Zawiera on referencje do dwóch typów: rounding policy checking policy

Klasa template interval<t> zawiera dwa parametry: T Określa on zbiór F R podzbiór R N... Policies Nie określa on typu zbioru F tylko zachowanie przedziałów. Zawiera on referencje do dwóch typów: rounding policy checking policy

Klasa template interval<t> zawiera dwa parametry: T Określa on zbiór F R podzbiór R N... Policies Nie określa on typu zbioru F tylko zachowanie przedziałów. Zawiera on referencje do dwóch typów: rounding policy checking policy

Klasa template interval<t> zawiera dwa parametry: T Określa on zbiór F R podzbiór R N... Policies Nie określa on typu zbioru F tylko zachowanie przedziałów. Zawiera on referencje do dwóch typów: rounding policy checking policy

Klasa template interval<t> zawiera dwa parametry: T Określa on zbiór F R podzbiór R N... Policies Nie określa on typu zbioru F tylko zachowanie przedziałów. Zawiera on referencje do dwóch typów: rounding policy checking policy

Klasa template interval<t> zawiera dwa parametry: T Określa on zbiór F R podzbiór R N... Policies Nie określa on typu zbioru F tylko zachowanie przedziałów. Zawiera on referencje do dwóch typów: rounding policy checking policy

Klasa template interval<t> zawiera dwa parametry: T Określa on zbiór F R podzbiór R N... Policies Nie określa on typu zbioru F tylko zachowanie przedziałów. Zawiera on referencje do dwóch typów: rounding policy checking policy

Klasa template interval<t> zawiera dwa parametry: T Określa on zbiór F R podzbiór R N... Policies Nie określa on typu zbioru F tylko zachowanie przedziałów. Zawiera on referencje do dwóch typów: rounding policy checking policy

Klasa template interval<t> zawiera dwa parametry: T Określa on zbiór F R podzbiór R N... Policies Nie określa on typu zbioru F tylko zachowanie przedziałów. Zawiera on referencje do dwóch typów: rounding policy checking policy

Klasa template interval<t> zawiera dwa parametry: T Określa on zbiór F R podzbiór R N... Policies Nie określa on typu zbioru F tylko zachowanie przedziałów. Zawiera on referencje do dwóch typów: rounding policy checking policy

The rounding policy Określa sposób zaokraglenia końców przedziałów typedef interval<double,policies <save_state<rounded_transc_exact<double> >, checking_no_empty<double> > > I; I i1(2); I i2 = sqrt( i1 ); cout<<i2.lower() <<", " <<i2.upper()<<endl; 1.41421, 1.41421

The rounding policy Określa sposób zaokraglenia końców przedziałów rounded_transc_std, rounded_transc_opp, rounded_transc_exact, rounded_transc_dummy

The rounding policy Określa sposób zaokraglenia końców przedziałów Wbudowane dla typów podstawowych np. double, float rounded_transc_exact

The rounding policy Określa sposób zaokraglenia końców przedziałów Wbudowane dla typów podstawowych np. double, float Dla własnych typów możesz sam zdefiniować interval_lib::policies

The checking policy Opisuje jak klasa Interval radzi sobie z sytuacjami wyjatkowymi przedział pusty interval<double> I1(2, 0); blad

The checking policy Opisuje jak klasa Interval radzi sobie z sytuacjami wyjatkowymi przedział pusty typedef interval<double,policies <save_state<rounded_transc_std<double> >, checking_no_empty<double> > > K; K k1(2, 0); blad

The checking policy Opisuje jak klasa Interval radzi sobie z sytuacjami wyjatkowymi przedział pusty typedef interval<double,policies <save_state<rounded_transc_std<double> >, checking_no_nan<double> > > K; K k1(2, 0); cout<<k1.lower() <<", " <<k1.upper()<<endl; nan, nan dzielenie przez zero przedziały nieograniczone...

The checking policy Opisuje jak klasa Interval radzi sobie z sytuacjami wyjatkowymi przedział pusty typedef interval<double,policies <save_state<rounded_transc_std<double> >, checking_no_nan<double> > > K; K k1(2, 0); cout<<k1.lower() <<", " <<k1.upper()<<endl; nan, nan dzielenie przez zero przedziały nieograniczone...

The checking policy Opisuje jak klasa Interval radzi sobie z sytuacjami wyjatkowymi przedział pusty typedef interval<double,policies <save_state<rounded_transc_std<double> >, checking_no_nan<double> > > K; K k1(2, 0); cout<<k1.lower() <<", " <<k1.upper()<<endl; nan, nan dzielenie przez zero przedziały nieograniczone...

The checking policy Opisuje jak klasa Interval radzi sobie z sytuacjami wyjatkowymi przedział pusty typedef interval<double,policies <save_state<rounded_transc_std<double> >, checking_no_nan<double> > > K; K k1(2, 0); cout<<k1.lower() <<", " <<k1.upper()<<endl; nan, nan dzielenie przez zero przedziały nieograniczone...

Definicja 2 f ([x]) = [f (x)] = {f (x) : x [x]}

Definicja 3 f ([x]) = [f (x)] = {f (x) : x [x]} Podstawowe operacje: Niech [x] = [x, x] oraz [y] = [y, y] [x] + [y] = [x + y, x + y] interval<double> I1( 0, 1 ); interval<double> I2( 0, 1 ); interval<double> I3 = I1 + I2; cout<< I3.lower() <<", "<< I3.upper() <<endl; 0, 2

Definicja 3 f ([x]) = [f (x)] = {f (x) : x [x]} Podstawowe operacje: Niech [x] = [x, x] oraz [y] = [y, y] [x] + [y] = [x + y, x + y] interval<double> I1( 0, 1 ); interval<double> I2( 0, 1 ); interval<double> I3 = I1 + I2; cout<< I3.lower() <<", "<< I3.upper() <<endl; 0, 2

Definicja 4 f ([x]) = [f (x)] = {f (x) : x [x]} Podstawowe operacje: Niech [x] = [x, x] oraz [y] = [y, y] [x] + [y] = [x + y, x + y] [x] [y] = [x y, x y] interval<double> I1( 0, 1 ); interval<double> I2( 0, 1 ); interval<double> I3 = I1 - I2; cout<< I3.lower() <<", "<< I3.upper() <<endl; -1, 1

Definicja 5 f ([x]) = [f (x)] = {f (x) : x [x]} Podstawowe operacje: Niech [x] = [x, x] oraz [y] = [y, y] [x] + [y] = [x + y, x + y] [x] [y] = [x y, x y] [x] [y] = [min{xy, xy, xy, xy}, max{xy, xy, xy, xy}] interval<double> I1( 0, 1 ); interval<double> I2( 0, 1 ); interval<double> I3 = I1 * I2; cout<< I3.lower() <<", "<< I3.upper() <<endl; 0, 1

Definicja 6 f ([x]) = [f (x)] = {f (x) : x [x]} Podstawowe operacje: Niech [x] = [x, x] oraz [y] = [y, y] [x] + [y] = [x + y, x + y] [x] [y] = [x y, x y] [x] [y] = [min{xy, xy, xy, xy}, max{xy, xy, xy, xy}] interval<double> I1( 0.2, 4 ); interval<double> I2( 1, 2 ); interval<double> I3 = I1 * I2; cout<< I3.lower() <<", "<< I3.upper() <<endl; 0.2, 8

Definicja 6 f ([x]) = [f (x)] = {f (x) : x [x]} Podstawowe operacje: Niech [x] = [x, x] oraz [y] = [y, y] [x] + [y] = [x + y, x + y] [x] [y] = [x y, x y] [x] [y] = [min{xy, xy, xy, xy}, max{xy, xy, xy, xy}] interval<double> I1( 0.2, 4 ); interval<double> I2( 1, 2 ); interval<double> I3 = I1 * I2; cout<< I3.lower() <<", "<< I3.upper() <<endl; 0.2, 8

Definicja 7 f ([x]) = [f (x)] = {f (x) : x [x]} Podstawowe operacje: Niech [x] = [x, x] oraz [y] = [y, y] [x] + [y] = [x + y, x + y] [x] [y] = [x y, x y] [x] [y] = [min{xy, xy, xy, xy}, max{xy, xy, xy, xy}] typedef interval<double,policies <save_state<rounded_transc_std<double> >, checking_no_nan<double> > > K; K k1(2, 0); K k2(1, 3); K k3 = k1 * k2; cout<<k3.lower() <<", " <<k3.upper()<<endl; nan, nan

Definicja 7 f ([x]) = [f (x)] = {f (x) : x [x]} Podstawowe operacje: Niech [x] = [x, x] oraz [y] = [y, y] [x] + [y] = [x + y, x + y] [x] [y] = [x y, x y] [x] [y] = [min{xy, xy, xy, xy}, max{xy, xy, xy, xy}] typedef interval<double,policies <save_state<rounded_transc_std<double> >, checking_no_nan<double> > > K; K k1(2, 0); K k2(1, 3); K k3 = k1 * k2; cout<<k3.lower() <<", " <<k3.upper()<<endl; nan, nan

Definicja 8 f ([x]) = [f (x)] = {f (x) : x [x]} Podstawowe operacje: Niech [x] = [x, x] oraz [y] = [y, y] [x] + [y] = [x + y, x + y] [x] [y] = [x y, x y] [x] [y] = [min{xy, xy, xy, xy}, max{xy, xy, xy, xy}] [x] [y] = [x][ 1 y, 1 y ] gdzie 0 [y] interval<double> I1( 2, 4 ); interval<double> I2( 1, 2 ); interval<double> I3 = I1 / I2; cout<< I3.lower() <<", "<< I3.upper() <<endl; 1, 4

Definicja 9 f ([x]) = [f (x)] = {f (x) : x [x]} Podstawowe operacje: Niech [x] = [x, x] oraz [y] = [y, y] [x] + [y] = [x + y, x + y] [x] [y] = [x y, x y] [x] [y] = [min{xy, xy, xy, xy}, max{xy, xy, xy, xy}] [x] [y] = [x][ 1 y, 1 y ] gdzie 0 [y] anlogicznie zdefiniowane sa dziłania: sin, cos, pow, sqrt... interval<double> I1( 2, 4 ); interval<double> I2 = pow( I1, 2 ); cout<< I2.lower() <<", "<< I2.upper() <<endl; 4, 16

Problemy: Dzielenie przez zero: = [, 1] [1, + ] 1 [ 1,1] interval<double> I1( 1 ); interval<double> I2( -1, 1 ); interval<double> I3 = I1 / I2; cout<< I3.lower() <<", "<< I3.upper() <<endl; cout<<zero_in(i3)<<endl; -inf, inf 1 Dzielenie przez nieskończoność: = [0, 1] \ {0} 1 [1,+ ] Podobne problemy z funkcjami kawałkami ciagłymi: tan[ π 4, 3π 4 ] = [, 1] [1, + ]

Problemy: Dzielenie przez zero: = [, 1] [1, + ] 1 [ 1,1] interval<double> I1( 1 ); interval<double> I2( -1, 1 ); interval<double> I3 = I1 / I2; cout<< I3.lower() <<", "<< I3.upper() <<endl; cout<<zero_in(i3)<<endl; -inf, inf 1 Dzielenie przez nieskończoność: = [0, 1] \ {0} 1 [1,+ ] Podobne problemy z funkcjami kawałkami ciagłymi: tan[ π 4, 3π 4 ] = [, 1] [1, + ]

Problemy: Dzielenie przez zero: = [, 1] [1, + ] 1 [ 1,1] interval<double> I1( 1 ); interval<double> I2( -1, 1 ); interval<double> I3 = I1 / I2; cout<< I3.lower() <<", "<< I3.upper() <<endl; cout<<zero_in(i3)<<endl; -inf, inf 1 Dzielenie przez nieskończoność: = [0, 1] \ {0} 1 [1,+ ] Podobne problemy z funkcjami kawałkami ciagłymi: tan[ π 4, 3π 4 ] = [, 1] [1, + ]

typedef interval<double,policies <save_state<rounded_transc_exact<double> >, checking_no_nan<double> > > K; K k1( M_PI/4, M_PI/2); K k2= sin(k1); cout<<k2.lower() <<", " <<k2.upper()<<endl; 0.707107, 1

typedef interval<double,policies <save_state<rounded_transc_exact<double> >, checking_no_nan<double> > > K; K l1( M_PI/4, (3*M_PI)/4); K l2= sin(l1); cout<<l2.lower() <<", " <<l2.upper()<<endl; cout<<in( 0.8, l2)<<endl; 0.707107, 1 1

Definicja 10 Operatory porownania: F F B Gdzie B to boolean set. B = {, {true}, {false}, {true, false}} Przykład: interval<double> I1( 0, 2 ); interval<double> I2( 3, 4 ); if( I1 < I2 ){ cout<<" I1 < I2 "<<endl; } I1 < I2

Definicja 10 Operatory porownania: F F B Gdzie B to boolean set. B = {, {true}, {false}, {true, false}} Przykład: interval<double> I1( 0, 2 ); interval<double> I2( 3, 4 ); if( I1 < I2 ){ cout<<" I1 < I2 "<<endl; } I1 < I2

Definicja 10 Operatory porownania: F F B Gdzie B to boolean set. B = {, {true}, {false}, {true, false}} Przykład: interval<double> I1( 0, 2 ); interval<double> I2( 3, 4 ); if( I1 < I2 ){ cout<<" I1 < I2 "<<endl; } I1 < I2

Problemy: Jeden element jest pusty Umiemy rozwiazać [x, x] < [y, y] zwróci {true, false} gdy x 1 x 2 [x, x] oraz y 1 y 2 [y, y] x 1 y 1 i x 2 < y 2 interval<double> I1( 1, 3 ); interval<double> I2( 2, 4 ); if( I1 < I2 ){ cout<<" I1 < I2 "<<endl; } blad

Problemy: Jeden element jest pusty Umiemy rozwiazać [x, x] < [y, y] zwróci {true, false} gdy x 1 x 2 [x, x] oraz y 1 y 2 [y, y] x 1 y 1 i x 2 < y 2 interval<double> I1( 1, 3 ); interval<double> I2( 2, 4 ); if( I1 < I2 ){ cout<<" I1 < I2 "<<endl; } blad

Problemy: Jeden element jest pusty Umiemy rozwiazać [x, x] < [y, y] zwróci {true, false} gdy x 1 x 2 [x, x] oraz y 1 y 2 [y, y] x 1 y 1 i x 2 < y 2 interval<double> I1( 1, 3 ); interval<double> I2( 2, 4 ); if( I1 < I2 ){ cout<<" I1 < I2 "<<endl; } blad

Problemy: Jeden element jest pusty Umiemy rozwiazać [x, x] < [y, y] zwróci {true, false} gdy x 1 x 2 [x, x] oraz y 1 y 2 [y, y] x 1 y 1 i x 2 < y 2 using namespace compare::certain; interval<double> I1( 1, 3 ); interval<double> I2( 2, 4 ); if( I1 < I2 ){ cout<<" I1 < I2 "<<endl; }

Problemy: Jeden element jest pusty Umiemy rozwiazać [x, x] < [y, y] zwróci {true, false} gdy x 1 x 2 [x, x] oraz y 1 y 2 [y, y] x 1 y 1 i x 2 < y 2 using namespace compare::lexicographic interval<double> I1( 1, 3 ); interval<double> I2( 2, 4 ); if( I1 < I2 ){ cout<<" I1 < I2 "<<endl; } I1 < I2

KONIEC