C++ Bc. 30

Z GeoWikiCZ
Přejít na: navigace, hledání
Přibližný výpočet určitého integrálu (Simpsonovo pravidlo)

U tohoto kvadratického vzorce se rozdělí daný interval na sudý počet ekvidistantních intervalů. Trojici sousedních bodů (pro dva integrační kroky) nahrazuje Simpsonovo pravidlo kvadratickym polynomem


\int_{x_0}^{x_0 + 2h} f(x){\mathrm d}x \approx {1 \over 3}h \left[ f(x_0) + 4f(x_0+h) + f(x_0 + 2h)
\right]
.


Součet pro celý interval <a, b> je


\int_a^b f(x){\mathrm d}x \approx {1 \over 3}h \left[
f(a) + 4f(a+h) + 2f(a+2h) + 4f(a+3h) + \ldots 
+ 4f(a+(m-1)h) + f(b)
\right]

kde integrační krok h = {b-a\over m} a m je sudé.


Napište funkci

double simpson(double (*f)(double), double a, double b, int m);

pro numerický výpočet určitého integrálu Simpsonovou metodou.

Příklad výpočtu určitého integrálu funkce sin(x), \quad x \in <a, b>.

    a        b     simpson   chyba     m = 2
--------------------------------------------
0.000000 1.000000 0.459862 -1.644957e-04
0.100000 1.200000 0.632980 -3.335789e-04
0.200000 1.400000 0.810709 -6.092499e-04
0.300000 1.600000 0.985564 -1.027751e-03
0.400000 1.800000 1.149889 -1.625841e-03

    a        b     simpson   chyba     m = 4
--------------------------------------------
0.000000 1.000000 0.459708 -1.005080e-05
0.100000 1.200000 0.632667 -2.028349e-05
0.200000 1.400000 0.810136 -3.684878e-05
0.300000 1.600000 0.984598 -6.179879e-05
0.400000 1.800000 1.148360 -9.714269e-05

[ Zpět | C++ | Další ]