Lekce 7 - Algoritmus pro numerické integrování - Obdélníková metoda
V minulé lekci, Generování (pseudo)náhodných čísel, jsme se něco dozvěděli o základních principech algoritmů generování náhodných čísel počítačem včetně popisu generování různých pravděpodobnostních rozložení.
Numerický výpočet integrálu
Jednoduchý určitý integrál slouží k výpočtu obsahu pod křivkou, přičemž intervaly jsou body, které danou křivku ohraničují. Takže pokud máme integrál nějaké funkce na intervalu <1;4>, tak to znamená, že vypočteme obsah pod křivkou, která na ose x začíná 1 a končí 4 viz. obrázek.

Pro složitější funkce(křivky) budeme potřebovat určité vzorce(formule, metody), podle kterých spočítáme obsah pod danou křivkou. Asi nejznámější metody pro takovýto výpočet jsou: obdelníková, lichoběžníková a Simpsonova. Tyto metody můžeme dále rozdělit na základní(jednoduché) a složené. Základní metody spočívají v tom, že máme křivku(funkci) na intervalu <a;b> a tu proložíte určitou křivkou podle použité metody. U složených metod, si danou funkci(křivku) můžeme rozdělit, na tolik intervalů, kolik potřebujeme a v každém intervalu aplikujeme základní metodu, čímž docílíme větší přesnosti výpočtu.
Obdelníková metoda
Základní formule

a - začátek intervalu (v obrázku dole je a=1)
b - konec intervalu (v obrázku dole je b=4)

Základní obdelníková formule spočívá v nalezení středu intervalu: (a+b)/2 a poté proloží tímto středem intervalu obdelník o délce intervalu. Viz obrázek.
Složená formule
h= (b-a)/n ,kde n je počet podintervalů
h - délka intervalu - udává délku křivky, kterou daný interval prokládáme(u obdelníkové metody je to délka obdelníku)


Složená obdélníková metoda spočívá v tom, že si hlavní interval <a;b> rozdělíme na několik podintervalů. Na obrázku si rozděluji interval <1;4> na 3 podintervaly: <1;2>,<2;3>.<3;4>, ve kterých aplikuji základní obdélníkovou metodu.
Výpočet matematicky:
Př: Spočítejte obsah pod křivkou funkce y(x)=x na intervalu <1;4> pomocí složené obdelníkové metody.
Zadaná funkce je y(x) = x, to znamená, že když dosadím za x = 1, pak y =1 viz tabulka:
iterace | 0 | 1 | 2 | 3 |
---|---|---|---|---|
x | 1 | 2 | 3 | 4 |
y | 1 | 2 | 3 | 4 |
Dále si funkci rozdělím na 3 podintervaly, tedy n=3. ( <1;2>,<2;3>.<3;4>)
h= (b-a)/n=(4-1)/3= 1
S=h[f(x0+0,5h)+f(x1+0,5h)+f(x2+0,5h)]
Podle rovnice musíme vypočítat hodnotu y(x) v polovině každého intervalu.
Výpočet | y(x0+0,5h) | y(x1+0,5h) | y(x2+0,5h) |
---|---|---|---|
y(x) | 1,5 | 2,5 | 3,5 |
S=1*[1,5+2,5+3,5]=7,5
Výsledek příkladu podle obdelníkové metody je tedy 7,5. V tomhle případě to vyjde přesně. Pokud bychom měli složitější křivku a potřebovali bychom přesnější výsledek, řešením by bylo zvětšit počet intervalů.
Metoda v C#
private double ObdelnikovaMetoda(double a, double b, int n) { double[] stredyIntervalu = new double[n]; // deklaruju si pole, kde budu mit stredy intervalu double h = (b - a) / n; // spocitam si h for (int i = 1; i <= n; i++) // v tomhle foru plnim pole, pomoci stredu jednotlivych intervalu { stredyIntervalu[i-1] = (a + h*i) - (h/2); } double vysledek = 0; // deklaruju promenou vysledek for (int i = 0; i < n; i++) { vysledek += stredyIntervalu[i]; // tady je treba zadat tu svou funkci pokud bych mel napriklad funkci y(x) = 2x + 3, //tak radek bude vypadat takto: vysledek += (2*stredyIntervalu[i]+3); } return vysledek *= h; }
Závěr
Na závěr k této metodě jen řeknu, že její použití nedoporučuji. Její přesnost není ideální, uvádím ji jen proto, že se nachází ve všech studijních materiálech. A myslím, že pomůže v pochopení numerického výpočtu obsahu pod křivkou.
Zdroj: http://mathonline.fme.vutbr.cz
V další lekci, Algoritmus pro numerické integrování - Lichoběžníková metoda, si popíšeme algoritmus pro numerický výpočet integrálu, tedy obsahu pod křivkou, pomocí lichoběžníkové formule.