#!/usr/bin/env python # coding: utf-8 # (ukol8)= # # Zápočtový úkol 8 # #
#
Úkol - zápočet 8
#
#

# # # Implementujte metodu Monte Carlo (druhou verzi ukázanou na cvičení) a jednu z metod založených na Newton-Cortesových vzorcích (například Simpsonovo pravidlo) pro integraci následující funkce tří proměnných: # # $$ # f(x, y, z) = \exp(y - x^2) \sin(\pi z), # $$ # # na intervalu $x \in (0, 1), y \in (0, 1), z \in (0, 1)$. # # Pro obě metody odhadněte chybu způsobem ukázaným na cvičení. Porovnejte s přesným výsledkem, který lze určit analyticky nebo s využitím knihovní funkce (`nquad()`). # # Srovnejte rychlosti konvergence (závislost relativní chyby metody na počtu kroků) obou integračních metod (stačí spočítat hodnoty integrálu pro několik řádově různých $M$ - `np.logspace()`). Použijte stejný počet kroků (výpočtů funkční hodnoty) v obou metodách, aby srovnání mělo smysl! U metody Monte Carlo je $M$ pokusů (vyhodnocení funce $f$) ekvivalentní výpočtu funkčních hodnot na 3D mřížce o velikosti $M^{1/3} \times M^{1/3} \times M^{1/3}$ pro metodu Newton-Cortesova vzorce. # # Vykreslete vývoj chyby do log-log grafu (`plt.loglog()` nebo `plt.xscale('log')`). Okomentujte velikost chyb obou metod a jak rychle klesají s rostoucím $M$. #

#
#
# #
#
Tip
#
#

# # **Nápověda**: # # Rozšíření metod založených na Newton-Cortesových vzorcích do více dimenzí je následující: # * stejně jako v 1D vyčíslujeme funkci na diskrétní mřížce, tentokrát na 3D mřížce # * celkový integrál je dán součtem funkčních hodnot vynásobených určitou váhou # * u Simpsona jsme viděli, že v 1D se střídají váhy $\frac{1}{3}, \frac{4}{3}, \frac{2}{3}, \frac{4}{3}, \frac{2}{3}, \dots, \frac{1}{3}$, tedy krajní body mají váhu $\frac{1}{3}$, sudé $\frac{4}{3}$ a liché $\frac{2}{3}$ # * ve více dimenzích máme koeficient pro každou dimenzi podle stejného pravidla a výsledný koeficient je jejich součinem! (nezapomeňte také na faktor $h^3$) # * cesta nízkého odporu je volba *obdélníkové metody* (koeficienty jsou rovny $1$)! #

#
#
# In[ ]: ## DOPLŇTE ##