Zápočtový úkol 3#
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:
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 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\).
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\))!
## DOPLŇTE ##