Całkowanie numeryczne

Całkowanie numeryczne – metoda numeryczna[1] polegająca na przybliżonym obliczaniu całek oznaczonych. Termin kwadratura numeryczna, często po prostu kwadratura, jest synonimem całkowania numerycznego, w szczególności w odniesieniu do całek jednowymiarowych. Dwu- i wielowymiarowe całkowania nazywane są czasami kubaturami, choć nazwa kwadratura odnosi się również do całkowania w wyższych wymiarach.

Proste metody całkowania numerycznego polegają na przybliżeniu całki za pomocą odpowiedniej sumy ważonej wartości całkowanej funkcji w kilku punktach. Aby uzyskać dokładniejsze przybliżenie dzieli się przedział całkowania na niewielkie fragmenty. Ostateczny wynik jest sumą oszacowań całek w poszczególnych podprzedziałach. Najczęściej przedział dzieli się na równe podprzedziały, ale bardziej wyszukane algorytmy potrafią dostosowywać krok do szybkości zmienności funkcji.

Metoda prostokątów

Najprostsza z metod kwadraturowych polega na zastosowaniu wzoru

x 0 x n f ( x ) h i = 0 n 1 f ( x i + α h ) , h = x n x 0 n , {\displaystyle \int _{x_{0}}^{x_{n}}\!\!f(x)\approx h\sum _{i=0}^{n-1}f(x_{i}+\alpha h),\quad h={\tfrac {x_{n}-x_{0}}{n}},}

w którym n {\displaystyle n} jest liczbą podprzedziałow o długości h . {\displaystyle h.}

Metoda ta ma trzy warianty:

  • lewych prostokątów, gdy α = 0 , {\displaystyle \alpha =0,}
  • średnich prostokątów, gdy α = 1 2 {\displaystyle \alpha ={\tfrac {1}{2}}}   – ten wariant daje najlepsze przybliżenie,
  • prawych prostokątów, gdy α = 1. {\displaystyle \alpha =1.}

Istnieje oczywiście wariant ogólny, gdy α [ 0 , 1 ] . {\displaystyle \alpha \in [0,\,1].}

Metoda trapezów

Metoda trapezów polega na tym, że całkowaną funkcję aproksymujemy liniowo w każdym z podprzedziałów x i + 1 , x i , i = 0 , 1 , n 1 {\displaystyle x_{i+1},\,x_{i},\;i=0,\,1,\,\dots \,n-1} o długości h = x n x 0 n . {\displaystyle h={\tfrac {x_{n}-x_{0}}{n}}.} Dzięki temu otrzymujemy po wprowadzeniu oznaczenia f i f ( x i ) {\displaystyle f_{i}\equiv f(x_{i})}

x 0 x n f ( x ) d x i = 0 n 1 h 2 [ f ( x i + 1 ) + f ( x i ) ) ] = h ( 1 2 f 0 + f 1 + f 2 + + f n 1 + 1 2 f n ) . {\displaystyle \int _{x_{0}}^{x_{n}}\!\!f(x)dx\approx \sum _{i=0}^{n-1}{\tfrac {h}{2}}[f(x_{i+1})+f(x_{i}))]=h({\tfrac {1}{2}}f_{0}+f_{1}+f_{2}+\,\dots \,+f_{n-1}+{\tfrac {1}{2}}f_{n}).}

Oszacowanie błędu tej metody wynosi

R n = | a b f ( x ) d x S n | ( b a ) 3 M 12 n 2 , {\displaystyle R_{n}=\left|\int \limits _{a}^{b}f(x)dx-S_{n}\right|\leqslant {\frac {(b-a)^{3}M'{'}}{12n^{2}}},}

gdzie:

M = max a , b | f | . {\displaystyle M'{'}=\max _{\langle a,b\rangle }|f'{'}|.}

Metoda parabol (Simpsona)

 Osobny artykuł: Metoda Simpsona.

Ta metoda wymaga podzielenia przedziału całkowania na parzystą liczbę 2 n {\displaystyle 2n} podprzedziałów, tzn.

h = x 2 n x 0 2 n , {\displaystyle h={\frac {x_{2n}-x_{0}}{2n}},}
f i = f ( x i ) , x i = x 0 + i h , i = 0 , 1 , 2 n . {\displaystyle f_{i}=f(x_{i}),\quad x_{i}=x_{0}+ih,\quad i=0,\,1,\,\dots \,2n.}

Stosując kwadratową interpolację Lagrange’a na dwu sąsiadujących podprzedziałach, otrzymujemy

x i x i + 2 f ( x ) d x h 3 [ f i + 4 f i + 1 + f i + 2 ] , {\displaystyle \int _{x_{i}}^{x_{i+2}}f(x)dx\approx {\tfrac {h}{3}}[f_{i}+4f_{i+1}+f_{i+2}],}
x 0 x 2 n f ( x ) d x h 3 [ f 0 + f 2 n + 4 ( f 1 + f 3 + + f 2 n 1 ) + 2 ( f 2 + f 4 + f 2 n 2 ) ] . {\displaystyle \int _{x_{0}}^{x_{2n}}f(x)dx\approx {\tfrac {h}{3}}[f_{0}+f_{2n}+4(f_{1}+f_{3}+\,\dots \,+f_{2n-1})+2(f_{2}+f_{4}+\,\dots \,f_{2n-2})].}

Przy całkowaniu funkcji f ( x ) C ( 4 ) {\displaystyle f(x)\in C^{(4)}} na przedziale [ a , b ] {\displaystyle [a,\,b]} błąd metody wynosi

R = ( b a ) h 4 180 f I V ( x ) , x [ a , b ] . {\displaystyle R=-{\tfrac {(b-a)h^{4}}{180}}f^{IV}(x),\quad x\in [a,\,b].}

Metoda Gaussa

 Osobny artykuł: Kwadratury Gaussa.

Istotne podwyższenie dokładności wzorów kwadraturowych można uzyskać, stosując metodę Gaussa[1]. Jej istota polega na minimalizacji błędu kwadratury przez optymalny wybór położenia węzłów ξ i {\displaystyle \xi _{i}} oraz wartości wag w ¯ i {\displaystyle {\overline {w}}_{i}} we wzorze kwadraturowym

I ( f ) = a b f ( x ) d x = b a 2 1 1 F ( ξ ) d ξ = b a 2 i = 1 n w ¯ i F ( ξ i ) , {\displaystyle I(f)=\int _{a}^{b}\!\!f(x)dx={\tfrac {b-a}{2}}\int _{-1}^{1}F(\xi )d\xi ={\tfrac {b-a}{2}}\sum _{i=1}^{n}{\overline {w}}_{i}F(\xi _{i}),}
(a)

w którym F ( ξ ) = f ( a + b 2 + b a 2 ξ ) , d x = b a 2 d ξ . {\displaystyle F(\xi )=f({\tfrac {a+b}{2}}+{\tfrac {b-a}{2}}\xi ),\quad dx={\tfrac {b-a}{2}}d\xi .}

Dzięki zastosowanemu we wzorze (a) odwzorowaniu x = a + b 2 + b a 2 ξ {\displaystyle x={\tfrac {a+b}{2}}+{\tfrac {b-a}{2}}\xi } dowolnego przedziału ( a , b ) {\displaystyle (a,\,b)} na standardowy przedział ( 1 , 1 ) , {\displaystyle (-1,\,1),} wzór ten jest uniwersalny ponieważ unikalne wartości w ¯ i , ξ i {\displaystyle {\overline {w}}_{i},\,\xi _{i}} można stablicować raz na zawsze.

Obliczenie wartości w ¯ i , ξ i , i = 1 , 2 , , n {\displaystyle {\overline {w}}_{i},\,\xi _{i},\;i=1,\,2,\,\dots ,\,n} można przeprowadzić żądając, aby całkowanie procedurą Gaussa jednomianów x k , k = 0 , 1 , , 2 n 1 {\displaystyle x^{k},\;k=0,\,1,\,\dots ,\,2n-1} dawało wyniki ścisłe

i = 1 n w ¯ i ξ i k 1 1 ξ k d ξ {\displaystyle \sum _{i=1}^{n}{\overline {w}}_{i}\xi _{i}^{k}\equiv \int _{-1}^{1}\!\!\xi ^{k}d\xi }
(b)

to znaczy aby było dla k = 0 , 1 , , 2 n 1 {\displaystyle k=0,\,1,\,\dots ,2n-1}

w ¯ 1 ξ 1 k + w ¯ 2 ξ 2 k + + w ¯ n ξ n k = p k , p k = 1 ( 1 ) k + 1 k + 1 . {\displaystyle {\overline {w}}_{1}\xi _{1}^{k}+{\overline {w}}_{2}\xi _{2}^{k}+\ldots +{\overline {w}}_{n}\xi _{n}^{k}=p_{k},\quad p_{k}={\tfrac {1-(-1)^{k+1}}{k+1}}.}

Po rozpisaniu otrzymujemy, trudny do rozwiązania, nieliniowy układ 2 n {\displaystyle 2n} równań

w ¯ 1 + w ¯ 2 + + w ¯ n = 2 , {\displaystyle {\overline {w}}_{1}+{\overline {w}}_{2}+\ldots +{\overline {w}}_{n}=2,}
w ¯ 1 ξ 1 + w ¯ 2 ξ 2 + + w ¯ n ξ n = 0 , {\displaystyle {\overline {w}}_{1}\xi _{1}+{\overline {w}}_{2}\xi _{2}+\ldots +{\overline {w}}_{n}\xi _{n}=0,}
w ¯ 1 ξ 1 2 + w ¯ 2 ξ 2 2 + + w ¯ n ξ n 2 = 2 3 , {\displaystyle {\overline {w}}_{1}\xi _{1}^{2}+{\overline {w}}_{2}\xi _{2}^{2}+\ldots +{\overline {w}}_{n}\xi _{n}^{2}={\tfrac {2}{3}},}
w ¯ 1 ξ 1 3 + w ¯ 2 ξ 2 3 + + w ¯ n ξ n 3 = 0 , {\displaystyle {\overline {w}}_{1}\xi _{1}^{3}+{\overline {w}}_{2}\xi _{2}^{3}+\ldots +{\overline {w}}_{n}\xi _{n}^{3}=0,}
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . {\displaystyle .............................}
w ¯ 1 ξ 1 k + w ¯ 2 ξ 2 k + + w ¯ n ξ n k = { 2 k + 1 gdy k jest parzyste 0 gdy k jest nieparzyste {\displaystyle {\overline {w}}_{1}\xi _{1}^{k}+{\overline {w}}_{2}\xi _{2}^{k}+\ldots +{\overline {w}}_{n}\xi _{n}^{k}={\begin{cases}{\tfrac {2}{k+1}}\;\;{\text{gdy}}\;\;k\;\;{\text{jest parzyste}}\\\;\;0\quad {\text{gdy}}\;\;k\;\;{\text{jest nieparzyste}}\end{cases}}}
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . {\displaystyle .............................}
w ¯ 1 ξ 1 2 n 2 + w ¯ 2 ξ 2 2 n 2 + + w ¯ n ξ n 2 n 2 = 2 2 n 1 , {\displaystyle {\overline {w}}_{1}\xi _{1}^{2n-2}+{\overline {w}}_{2}\xi _{2}^{2n-2}+\ldots +{\overline {w}}_{n}\xi _{n}^{2n-2}={\tfrac {2}{2n-1}},}
w ¯ 1 ξ 1 2 n 1 + w ¯ 2 ξ 2 2 n 1 + + w ¯ n ξ n 2 n 1 = 0 , {\displaystyle {\overline {w}}_{1}\xi _{1}^{2n-1}+{\overline {w}}_{2}\xi _{2}^{2n-1}+\ldots +{\overline {w}}_{n}\xi _{n}^{2n-1}=0,}
(c)

określający 2 n {\displaystyle 2n} wartości w ¯ i , ξ i . {\displaystyle {\overline {w}}_{i},\,\xi _{i}.}

W poniższej tabeli zestawiono[2] obliczone wartości parametrów w ¯ i , ξ i {\displaystyle {\overline {w}}_{i},\,\xi _{i}} dla wielomianów stopni n 8. {\displaystyle n\leqslant 8.}

n {\displaystyle {}\;n\;{}} ξ 1 ; ξ n {\displaystyle \xi _{1};\,\xi _{n}} ξ 2 ; ξ n 1 {\displaystyle \xi _{2};\,\xi _{n-1}} ξ 3 ; ξ n 2 {\displaystyle \xi _{3};\,\xi _{n-2}} ξ 4 ; ξ n 3 {\displaystyle \xi _{4};\,\xi _{n-3}}
1 0
2 0,577 35027 {\displaystyle \mp 0{,}57735027}
3 0,774 59667 {\displaystyle \mp 0{,}77459667} 0
4 0,861 13631 {\displaystyle \mp 0{,}86113631} 0,339 98104 {\displaystyle \mp 0{,}33998104}
5 0,906 17985 {\displaystyle \mp 0{,}90617985} 0,538 46931 {\displaystyle \mp 0{,}53846931} 0
6 0,932 46951 {\displaystyle \mp 0{,}93246951} 0,661 20939 {\displaystyle \mp 0{,}66120939} 0,238 61919 {\displaystyle \mp 0{,}23861919}
7 0,949 10791 {\displaystyle \mp 0{,}94910791} 0,741 53119 {\displaystyle \mp 0{,}74153119} 0,405 84515 {\displaystyle \mp 0{,}40584515} 0
8 0,960 28986 {\displaystyle \mp 0{,}96028986} 0,796 66648 {\displaystyle \mp 0{,}79666648} 0,525 53242 {\displaystyle \mp 0{,}52553242} 0,183 43464 {\displaystyle \mp 0{,}18343464}
n {\displaystyle {}\;n\;{}} w ¯ 1 ; w ¯ n {\displaystyle {\overline {w}}_{1};\,{\overline {w}}_{n}} w ¯ 2 ; w ¯ n 1 {\displaystyle {\overline {w}}_{2};\,{\overline {w}}_{n-1}} w ¯ 3 ; w ¯ n 2 {\displaystyle {\overline {w}}_{3};\,{\overline {w}}_{n-2}} w ¯ 4 ; w ¯ n 3 {\displaystyle {\overline {w}}_{4};\,{\overline {w}}_{n-3}}
1 2 {\displaystyle 2}
2 1 {\displaystyle 1}
3 0,555 55556 {\displaystyle 0{,}55555556} 0,888 88889 {\displaystyle 0{,}88888889}
4 0,347 85484 {\displaystyle 0{,}34785484} 0,652 14516 {\displaystyle 0{,}65214516}
5 0,236 92688 {\displaystyle 0{,}23692688} 0,478 62868 {\displaystyle 0{,}47862868} 0,568 88889 {\displaystyle 0{,}56888889}
6 0,171 32450 {\displaystyle 0{,}17132450} 0,360 76158 {\displaystyle 0{,}36076158} 0,467 91394 {\displaystyle 0{,}46791394}
7 0,129 48496 {\displaystyle 0{,}12948496} 0,279 70540 {\displaystyle 0{,}27970540} 0,381 83006 {\displaystyle 0{,}38183006} 0,417 95918 {\displaystyle 0{,}41795918}
8 0,101 22854 {\displaystyle 0{,}10122854} 0,222 38104 {\displaystyle 0{,}22238104} 0,313 70664 {\displaystyle 0{,}31370664} 0,362 68378 {\displaystyle 0{,}36268378}

Cytowany w literaturze[1] sposób rozwiązania układu równań (c) polega na spostrzeżeniu, że dla dowolnie przyjętych wartości liczbowych ξ 1 < ξ 2 < < ξ n {\displaystyle \xi _{1}<\xi _{2}<\,\dots \,<\xi _{n}} macierz współczynników ξ i k , {\displaystyle \xi _{i}^{k},} pierwszych n {\displaystyle n} równań tego układu, jest macierzą Vandermonde’a. Dzięki temu wiadomo, że istnieje jednoznacznie określone rozwiązanie w i , i = 1 , 2 , n . {\displaystyle w_{i},\;i=1,\,2,\,\dots \,n.} Kwestią otwartą pozostaje jednak wyznaczenie optymalnych wartości ξ i . {\displaystyle \xi _{i}.}

W tym celu warunek (b) modyfikuje się do postaci obowiązującej dla wielomianów stopnia N = n + k , k = 0 , 1 , , n 1. {\displaystyle N=n+k,\;k=0,\,1,\,\dots ,\,n-1.}

i = 1 n w i ξ i k P n ( ξ i ) 1 1 ξ k P n ( ξ ) d ξ , k = 0 , 1 , n 1 , {\displaystyle \sum _{i=1}^{n}w_{i}\xi _{i}^{k}P_{n}(\xi _{i})\equiv \int _{-1}^{1}\!\!\xi ^{k}P_{n}(\xi )d\xi ,\quad k=0,\,1,\,\dots \,n-1,}
(d)

gdzie P n ( x ) {\displaystyle P_{n}(x)} jest wielomianem stopnia n . {\displaystyle n.}

Całka we wzorze (d) zeruje się, gdy wielomiany P n ( x ) {\displaystyle P_{n}(x)} są ortogonalne z jednomianami x k {\displaystyle x^{k}} dla k < n , {\displaystyle k<n,} przy x ( 1 , 1 ) . {\displaystyle x\in (-1,\,1).} Dokładnie taką własność[3] mają wielomiany Legendre’a. Dla nich mamy wtedy zamiast (d)

i = 1 n w i ξ i k P n ( ξ i ) 0 , k = 0 , 1 , n 1. {\displaystyle \sum _{i=1}^{n}w_{i}\xi _{i}^{k}P_{n}(\xi _{i})\equiv 0,\quad k=0,\,1,\,\dots \,n-1.}
(e)

Ten warunek jest spełniony tożsamościowo dla dowolnych wartości w i , {\displaystyle w_{i},} gdy ξ i {\displaystyle \xi _{i}} są pierwiastkami wielomianu Legendre’a n {\displaystyle n} -tego stopnia, wtedy bowiem P n ( ξ i ) 0 , i = 1 , 2 , n . {\displaystyle P_{n}(\xi _{i})\equiv 0,\;i=1,\,2,\,\dots \,n.}

Metody losowe

Do przybliżonego obliczania całki oznaczonej można również wykorzystać metody probabilistyczne. Należy pamiętać jednak, że wynik takiego całkowania jest też zmienną losową.

  • Monte Carlo

Idea opiera się na policzeniu pola pod wykresem funkcji dla f ( x ) > 0 {\displaystyle f(x)>0} i odjęciu pola nad wykresem dla f ( x ) < 0 {\displaystyle f(x)<0}

  • probabilistyczna
a b f ( x ) d x b a n i = 1 n f ( x i ) , {\displaystyle \int \limits _{a}^{b}f(x)dx\approx {\frac {b-a}{n}}\sum _{i=1}^{n}f(x_{i}),}
x i {\displaystyle x_{i}} jest losowo wybierane z przedziału < a , b > , {\displaystyle <a,b>,}
n {\displaystyle n} określa liczność próbki.

Przykłady

Przykład – metoda prostokątów

Spróbujmy scałkować funkcję cos ( x ) {\displaystyle \cos(x)} na przedziale od 0 do 1. Ponieważ da się ją scałkować analitycznie, znamy dokładny wynik i możemy łatwo obliczać błąd przybliżenia różnych metod całkowania. Z dokładnością do 10 miejsc dziesiętnych prawidłowy wynik wynosi:

0 1 cos ( x ) d x = sin ( 1 ) sin ( 0 ) = 0,841 4709848. {\displaystyle \int \limits _{0}^{1}\cos(x)dx=\sin(1)-\sin(0)=0{,}8414709848.}

Całkowanie numeryczne za pomocą zasady punktu środkowego da nam wynik:

0 1 cos ( x ) d x ( 1 0 ) cos ( 1 2 ) = 0,877 5825619 , {\displaystyle \int \limits _{0}^{1}\cos(x)dx\approx (1-0)\cos \left({\frac {1}{2}}\right)=0{,}8775825619,}

co daje błąd 0,0361115771 (błąd względny 4,3%) – niewielki jak na tak prostą metodę, jednak oczywiście niezadowalający do wielu zastosowań.

Żeby uzyskać lepsze przybliżenia możemy podzielić przedział całkowania:

0 1 cos ( x ) d x = 0 1 / 2 cos ( x ) d x + 1 / 2 1 cos ( x ) d x {\displaystyle \int \limits _{0}^{1}\cos(x)dx=\int \limits _{0}^{1/2}\cos(x)dx+\int \limits _{1/2}^{1}\cos(x)dx\approx }

( 1 2 0 ) cos ( 1 4 ) + ( 1 1 2 ) cos ( 3 4 ) = 0,850 3006452 {\displaystyle {}\quad \approx \left({\frac {1}{2}}-0\right)\cos \left({\frac {1}{4}}\right)+\left(1-{\frac {1}{2}}\right)\cos \left({\frac {3}{4}}\right)=0{,}8503006452}

z błędem bezwzględnym 0,0088296604 lub względnym 1%.

Dzieląc przedział całkowania na więcej fragmentów, możemy uzyskać lepsze przybliżenie:

Liczba
części
Wynik Błąd
bezwzględny względny
1 0,8775825619 0,0361115771 4,29%
2 0,8503006452 0,0088296604 1,05%
4 0,8436663168 0,0021953320 0,26%
8 0,8420190672 0,0005480824 0,07%
0,8414709848 0 0%

Przykład 2

Całkowanie numeryczne przebiegów czasowych. Spróbujmy scałkować spróbkowany przebieg sin ( t ) {\displaystyle \sin(t)} na przedziale od 0 do 4 π {\displaystyle 4\cdot \pi } [s]. Oznaczmy częstotliwość próbkowania przebiegu przez f p {\displaystyle f_{p}} [Hz].

Do obliczeń wykorzystamy metodę prostokątów. Średnica podziału t p = 1 f p = t i + 1 t i {\displaystyle t_{p}={\frac {1}{f_{p}}}=t_{i+1}-t_{i}} wynosi 1. Niech X i ( t ) {\displaystyle X_{i}(t)} oznacza próbkę po całkowaniu. Każdy wyraz X i {\displaystyle X_{i}} można obliczyć jako sumę częściową:

X i = n = 0 i x i ( t ) t p . {\displaystyle X_{i}=\sum _{n=0}^{i}x_{i}(t)t_{p}.}

Zobacz też

  • kwadratury Gaussa
  • metody Newtona-Cotesa

Przypisy

  1. a b c B.P. Demidowicz, I.A. Maron, Metody numeryczne, cz.2, PWN, Warszawa 1965.
  2. B. Olszowski, Wybrane metody numeryczne, Wyd. Politechniki Krakowskiej, Kraków 2007.
  3. Ш.Е. Микеладзе, Численные методы математического аналза, Гостехиздат, 1953, гл. XIII, XVIII.
Kontrola autorytatywna (obiekt matematyczny):
  • LCCN: sh85093246
  • GND: 4172168-8
  • NDL: 00571772
  • NE.se: numerisk-integration
  • DSDE: numerisk_integration