12. Automatické vyhodnocení derivací. jaro 2012

Podobné dokumenty
Co je obsahem numerických metod?

Písemná zkouška z Matematiky II pro FSV vzor

1 Polynomiální interpolace

5. cvičení z Matematiky 2

VYBRANÉ PARTIE Z NUMERICKÉ MATEMATIKY

III. Diferenciál funkce a tečná rovina 8. Diferenciál funkce. Přírůstek funkce. a = (x 0, y 0 ), h = (h 1, h 2 ).

Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody

Co jsme udělali: Au = f, u D(A)

INTEGRÁLY S PARAMETREM

MATEMATIKA III. Olga Majlingová. Učební text pro prezenční studium. Předběžná verze

PŘÍKLAD PŘECHODNÝ DĚJ DRUHÉHO ŘÁDU ŘEŠENÍ V ČASOVÉ OBLASTI A S VYUŽITÍM OPERÁTOROVÉ ANALÝZY

I. Diferenciální rovnice. 3. Rovnici y = x+y+1. převeďte vhodnou transformací na rovnici homogenní (vzniklou

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016

Dnešní látka: Literatura: Kapitoly 3 a 4 ze skript Karel Rektorys: Matematika 43, ČVUT, Praha, Text přednášky na webové stránce přednášejícího.

Nelineární optimalizace a numerické metody (MI NON)

Standardní algoritmy v C++.

aneb jiný úhel pohledu na prvák

Numerická matematika 1

1 Funkce dvou a tří proměnných

VI. Derivace složené funkce.

Úvod do programování. Lekce 3

Wolfram Alpha. v podobě html stránky, samotný výsledek je často doplněn o další informace (např. graf, jiné možné zobrazení výsledku a

Úvod do optimalizace, metody hladké optimalizace

Programování v C++ 1, 6. cvičení

Řešení nelineárních rovnic

ODR metody Runge-Kutta

PŘETĚŽOVÁNÍ OPERÁTORŮ

PB161 Programování v jazyce C++ Přednáška 9

PB161 Programování v jazyce C++ Přednáška 4

Uzavřené a otevřené množiny

Kapitola 7: Neurčitý integrál. 1/14

Matematika II, úroveň A ukázkový test č. 1 (2018) 1. a) Napište postačující podmínku pro diferencovatelnost funkce n-proměnných v otevřené

EXTRÉMY FUNKCÍ VÍCE PROMĚNNÝCH

AVDAT Nelineární regresní model

Digitální učební materiál

Aplikovaná numerická matematika

Tento dokument obsahuje zadání pro semestrální programy z PAA. Vypracování. vypracovanou úlohu podle níže uvedených zadání. To mimo jiné znamená, že

Iterační výpočty Projekt č. 2

Diferenciál funkce dvou proměnných. Má-li funkce f = f(x, y) spojité parciální derivace v bodě a, pak lineární formu (funkci)

TECHNICKÁ UNIVERZITA V LIBERCI Fakulta mechatroniky, informatiky a mezioborových studií

Princip gradientních optimalizačních metod

Připomenutí co je to soustava lineárních rovnic

Úvod do programování. Lekce 5

Modelování systémů a procesů (11MSP) Bohumil Kovář, Jan Přikryl, Miroslav Vlček. 8. přednáška 11MSP pondělí 20. dubna 2015

Diferenciální počet funkcí více proměnných

Jazyk C++ I. Šablony 2

Matematika II, úroveň A ukázkový test č. 1 (2017) 1. a) Napište postačující podmínku pro diferencovatelnost funkce n-proměnných v otevřené

10 Funkce více proměnných

Obsah Obyčejné diferenciální rovnice

Obyčejné diferenciální rovnice počáteční úloha. KMA / NGM F. Ježek

Numerické metody optimalizace - úvod

Numerické algoritmy KAPITOLA 11. Vyhledávání nulových bodů funkcí

MATEMATIKA II - vybrané úlohy ze zkoušek (2015)

Primitivní funkce a Riemann uv integrál Lineární algebra Taylor uv polynom Extrémy funkcí více prom ˇenných Matematika III Matematika III Program

Základy programování (IZP)

Dědění, polymorfismus

Aproximace funkcí. x je systém m 1 jednoduchých, LN a dostatečně hladkých funkcí. x c m. g 1. g m. a 1. x a 2. x 2 a k. x k b 1. x b 2.

Matematika vzorce. Ing. Petr Šídlo. verze

Matematika II, úroveň A ukázkový test č. 1 (2016) 1. a) Napište postačující podmínku pro diferencovatelnost funkce n-proměnných v otevřené

Přijímací zkouška na navazující magisterské studium 2018

DEFINICE,VĚTYADŮKAZYKÚSTNÍZKOUŠCEZMAT.ANALÝZY Ib

Klasifikace a rozpoznávání. Lineární klasifikátory

Transformujte diferenciální výraz x f x + y f do polárních souřadnic r a ϕ, které jsou definovány vztahy x = r cos ϕ a y = r sin ϕ.

2. FUNKCE JEDNÉ PROMĚNNÉ

Matematika I A ukázkový test 1 pro 2011/2012. x + y + 3z = 1 (2a 1)x + (a + 1)y + z = 1 a

PŘIJÍMACÍ TEST z informatiky a matematiky pro navazující magisterské studium Fakulta informatiky a managementu Univerzity Hradec Králové

Jazyk matematiky Matematická logika Množinové operace Zobrazení Rozšířená číslená osa

Teorie. Hinty. kunck6am

Derivace. Petr Hasil. Podpořeno projektem Průřezová inovace studijních programů Lesnické a dřevařské fakulty MENDELU v Brně (LDF)

Typy příkladů na písemnou část zkoušky 2NU a vzorová řešení (doc. Martišek 2017)

Vlastní (charakteristická) čísla a vlastní (charakteristické) Pro zadanou čtvercovou matici A budeme řešit maticovou

LDF MENDELU. Simona Fišnarová (MENDELU) LDR druhého řádu VMAT, IMT 1 / 22

- speciální symboly + - * / =., < > <> <= >= a další. Klíčová slova jsou chráněnými útvary, které nelze použít ve významu identifikátorů.

Programování v jazyce C pro chemiky (C2160) 12. Specifické problémy při vývoji vědeckého softwaru

1 Zobrazení 1 ZOBRAZENÍ 1. Zobrazení a algebraické struktury. (a) Ukažte, že zobrazení f : x

Programování v C++ 1, 14. cvičení

Numerické metody a programování. Lekce 7

Úvod do programovacích jazyků (Java)

OPTIMALIZACE. (přehled metod)

2D transformací. červen Odvození transformačního klíče vybraných 2D transformací Metody vyrovnání... 2

Programování v C++ 3, 3. cvičení

DERIVACE FUKNCÍ VÍCE PROMĚNNÝCH

Program SMP pro kombinované studium

8.3). S ohledem na jednoduchost a názornost je výhodné seznámit se s touto Základní pojmy a vztahy. Definice

Teorie. Hinty. kunck6am

Základní spádové metody

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

NÁHODNÁ VELIČINA. 3. cvičení

Derivace funkce Otázky

naopak více variant odpovědí, bude otázka hodnocena jako nesprávně zodpovězená.

Jazyk C++, některá rozšíření oproti C

Více o konstruktorech a destruktorech


5.3. Implicitní funkce a její derivace

Derivace funkce DERIVACE A SPOJITOST DERIVACE A KONSTRUKCE FUNKCÍ. Aritmetické operace

Kristýna Kuncová. Matematika B2

Funkce jedn e re aln e promˇ enn e Derivace Pˇredn aˇska ˇr ıjna 2015

terminologie předchozí kapitoly: (ϕ, Ω) - plocha, S - geometrický obraz plochy

+ n( 1)n+1 (x 7) n, poloměr konvergence 6. 3.Poloměr konvergence je vždy +. a) f(x) = x n. (x 7) n, h(x) = 7 + 7(n+1)( 1) n. ( 1)n

Kapitola 4: Extrémy funkcí dvou proměnných 1/5

Transkript:

1/16 12. derivací jaro 2012

2/16 Motivace kromě funkce dokážeme vyhodnotit i její derivace první, druhé,... parciální mnohé numerické problémy jsou lépe řešitelné metodami s dostupnou derivací metody s derivací zpravidla rychleji konvergují Newton vs. metoda sečen

2/16 Motivace kromě funkce dokážeme vyhodnotit i její derivace první, druhé,... parciální mnohé numerické problémy jsou lépe řešitelné metodami s dostupnou derivací metody s derivací zpravidla rychleji konvergují Newton vs. metoda sečen aproximace konečnou diferencí nestačí zpracovávaná funkce nebývá triviální analytické vyjádření derivace je náročné zdroj nebezpečných chyb komplikace při změnách

3/16 funkce je implementována jako program hledáme program, který vedle funkční hodnoty spočte i derivace http://www.autodiff.org

3/16 funkce je implementována jako program hledáme program, který vedle funkční hodnoty spočte i derivace http://www.autodiff.org příklad s majákem bod dopadu paprsku na nábřeží y 1 = ν tan ωt γ tan ωt y 2 = γy 1

4/16 vyjádřeno jako jednoduchý program a := tan ωt; y 1 := νa/(γ a); y 2 := γy 1 ; chceme spočítat i rychlost pohybu, tj. derivaci v čase výpočet současně s původní funkcí ṫ := 1 a 1 := ωt ȧ 1 := ωṫ a := tan a 1 ȧ := ȧ 1 /(cos a 1 ) 2 a 2 := γ a ȧ 2 := ȧ y 1 := νa/a 2 ẏ 1 := ν(ȧa 2 aȧ 2 )/a 2 2 y 2 := γy 1 ẏ 2 := γẏ 1 pouze mechanická aplikace základních pravidel

5/16 transformace zdrojového kódu (např. ADIC) přetížení operátorů a funkcí (ADOL-C) zjednodušený příklad class adouble { double x; double dx;... } adouble operator * (adouble a, adouble b) { adouble r; r.x = a.x * b.x; r.dx = a.x * b.dx + a.dx * b.x; return r; } adouble v1, v2, v3;... v1 = v2 * v3;

6/16 aktivní proměnná nezávislé proměnné, podle kterých chceme derivovat všechny další proměnné na nich během výpočtu závisející vyhrazený typ adouble přiřazení adouble double je chybné ztrácíme informaci o derivacích tam, kde je potřebná explicitní přístup metodou value() více nezávislých proměnných s každou aktivní proměnnou udržujeme vektor parciálních derivací

7/16 Typický program #define NUMBER_DIRECTIONS 3 #define ADOLC_TAPELESS #include <adolc/adouble.h> func(adouble[], const adouble[]); adouble x[3]; adouble y[4];... for (i=0; i<3; i++) for (j=0; i<3; i++) x[i].setadvalue(j,i==j? 1.0 : 0.0); func(y,x); for (i=0; i<4; i++) { cout << y.getvalue() << ": "; for (j=0; j<3; j++) cout << y.getadvalue(j) << ", "; cout << endl; }

8/16 Není to tak jednoduché nediferencovatelné funkce (fmod) nelze použít absolutní hodnota (fabs) v 0 pravá nebo levá derivace ±1 případně položíme uměle rovnu 0 minimum a maximum (fmin, fmax) lze nahradit (a + b ± a b )/2 nedefinované na celém R (sqrt, pow, tan,... ) derivaci položíme uměle NaN, resp. Inf

9/16 množství potřebných operací O(mk) pro f : R m R n m počet nezávislých proměnných n počet závislých proměnných k počet kroků výpočtu nepříjemné s rostoucím m velká třída problémů velkým m ale malým n optimalizace funkce více proměnných (n = 1)

9/16 množství potřebných operací O(mk) pro f : R m R n m počet nezávislých proměnných n počet závislých proměnných k počet kroků výpočtu nepříjemné s rostoucím m velká třída problémů velkým m ale malým n optimalizace funkce více proměnných (n = 1) počítali jsme citlivost pomocných proměnných na změny vstupu obrácený postup, citlivost výstupu (závislých proměnných) na změny pomocných výpočet od konce

10/16 např. funkce y = sin(x 1 /x 2 )e x 3 označujeme ā = y/ a a 1 := x 1 /x 2 a 2 := sin a 1 a 3 := e x 3 y := a 2 a 3 ȳ := 1 ā 2 := a 3 ȳ ā 3 := a 2 ȳ x 3 := a 3 ā 3 ā 1 := ā 2 cos a 1 x 2 := ā 1 /x 2 x 1 := ā 2 /x 2 v O(nk) operacích máme všechny y/ x i

11/16 Stopa výpočtu derivace se vyhodnocují od konce tj. až poté, co proběhl výpočet funkce proto obrácené (reverse) výpočet funkce je nutné nějak zaznamenat ADOL-C: datová struktura (i soubor) páska (tape) záznam posloupnosti operací, nikoli konkrétních hodnot lze recyklovat pro jiný vstup případné rozdílnosti (a>b? c : d) jsou detekovány použije se pro funkce, gradientu/jakobiánu, Hessiánu,...

12/16 Instrumentace pro zpětné výhodnocení #include <adolc/adouble.h> void func( double px[4], /* vstup */ double py[4], /* vystup */ ) { adouble x[4],y[4],aux; trace_on(0); /* paska 0 */ for (i=0; i<4; i++) x[i] <<= px[i]; aux = x[1] * x[4] + exp(x[2]); /* vlastni vypocet */... y[4] = sin(aux); for (i=0; i<4; i++) y[i] >>= py[i]; trace_off(); }

13/16 Drivery ADOL-C poskytuje celou řadu driver funkcí vstupem je vždy páska a konkrétní vstupní hodnoty driver provede výpočet na základě záznamu na pásce funkční hodnota funkce R n R m function(short tag, int m, int n, double x[n],double y[m]) gradient funkce R n R gradient(short tag, int n, double x[n],double g[n]) Jakobián funkce R n R m jacobian(short tag, int m, int n, double x[n],double J[m][n]) Hessián (matice druhých derivací) funkce R n R hessian(short tag, int m, int n, double x[n],double H[n][n])

14/16 Drivery optimalizované varianty pro Newtonovu metodu řešení různých typů diferenciálních rovnic speciální varianty pro řídké Jakobiány a Hessiány tenzory vyšších derivací implicitně definované funkce G(x, y) = 0 obecné plná kontrola nad zpracováním pásky

15/16 Rekapitulace obráceného aktivní proměnné deklarovat jako adouble výpočet označit trace_on()... trace_off() zavolat instrumentovanou funkci jednou s typickými hodnotami vstupů vyprodukuje záznam výpočtu pásku opakovaně volat potřebné drivery případně na různé vstupy pro jinou posloupnost výpočtu zavolat instrumentovanou funkci s jinou páskou

16/16 Další materiál rozsáhlá problematika, řada implementací včetně obsáhlé teorie http://www.autodiff.org přehled nástrojů, FAQ,... https://projects.coin-or.org/adol-c implementac a dokumentace ADOL-C včetně řady příkladů Griewank, Walter. Evaluating Derivatives. 2008