17.05.2015 Views

Kwadratury numeryczne - Instytut Metod Komputerowych w ...

Kwadratury numeryczne - Instytut Metod Komputerowych w ...

Kwadratury numeryczne - Instytut Metod Komputerowych w ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Michał Pazdanowski<br />

<strong>Instytut</strong> Technologii Informacyjnych w Inżynierii Lądowej<br />

Wydział Inżynierii Lądowej<br />

Politechnika Krakowska<br />

<strong>Kwadratury</strong> <strong>numeryczne</strong><br />

Kwadraturami numerycznymi nazywamy wzory służące do przybliżonego wyznaczania wartości<br />

całek oznaczonych w obszarze jedno lub wielo wymiarowym. Obliczanie całek oznaczonych w obszarze<br />

wielowymiarowym sprowadza się do wielokrotnego zastosowania kwadratur dla obszaru<br />

jednowymiarowego. Idea postępowania przy całkowaniu numerycznym jest zawsze taka sama, a<br />

mianowicie zastępujemy funkcję podcałkową funkcją łatwą do scałkowania analitycznego (wielomian)<br />

w drodze interpolacji, a następnie funkcję interpolującą całkujemy ściśle (analitycznie). W<br />

rezultacie otrzymujemy wzór <strong>numeryczne</strong>go całkowania.<br />

W zależności od sposobu postępowania przy wyborze położeń węzłów interpolacji w przedziale<br />

całkowania możemy mieć do czynienia z kwadraturami z:<br />

• zamkniętymi końcami (końce przedziału całkowania wchodzą do wzorów), a węzły są rozmieszczone<br />

równomiernie w całym przedziale całkowania,<br />

• otwartymi końcami (końce przedziału całkowania nie wchodzą do wzorów), a węzły są<br />

rozmieszczone w przedziale całkowania nierównomiernie, tak aby zminimalizować błąd<br />

kwadratury.<br />

Przykładem kwadratur pierwszego typu są kwadratury Newtona-Cotesa, a kwadratur drugiego typu<br />

kwadratury Gaussa.<br />

Na początek rozważmy wyprowadzenie kilku pierwszych kwadratur typu Newtona. Zgodnie z<br />

uwagami zapisanymi powyżej, operację wyznaczania całki:<br />

b<br />

∫ F( x)dx<br />

, (1)<br />

przeprowadzimy dwuetapowo. Najpierw dokonamy interpolacji funkcji ( x)<br />

a<br />

F wielomianem Lagrange’a<br />

stosownego stopnia (oznaczonego dalej jako n ), a następnie funkcję interpolującą scałkujemy.<br />

Wzory ogólne w takim przypadku przyjmują następującą postać:<br />

b<br />

( n<br />

( x) ≅ F( x ) ⋅ L )<br />

( x)<br />

∑<br />

j=<br />

0<br />

n<br />

( n<br />

( x) ⋅dx<br />

≅ F( x ) ⋅ L )<br />

( x)<br />

∫ F ∑ j ∫<br />

a<br />

F<br />

n<br />

j=<br />

0<br />

j<br />

b<br />

a<br />

j<br />

j<br />

⋅dx<br />

. (2)<br />

Po analitycznym wykonaniu całkowania (2) 2 , dla konkretnej wartości n , pamiętając o równomiernym<br />

rozmieszczeniu węzłów, otrzymamy ogólny wzór całkowania <strong>numeryczne</strong>go całkujący ściśle<br />

wielomiany stopnia n . Podamy teraz kilka pierwszych kwadratur typu Newtona:<br />

• interpolacja wielomianowa stopnia 0 ( n = 0 ), czyli funkcją stałą:<br />

b<br />

n = 0 → F<br />

( 0<br />

( x) ⋅dx<br />

≅ F( x ) ⋅ L )<br />

( x)<br />

∫ F ∑ j ∫<br />

a<br />

0<br />

j=<br />

0<br />

( 0<br />

( x) ≅ F( x ) ⋅ L )<br />

( x)<br />

b<br />

a<br />

∑<br />

j=<br />

0<br />

j<br />

0<br />

j<br />

⋅dx<br />

=<br />

j<br />

( b − a)<br />

1<br />

⋅ F<br />

( x )<br />

0<br />

, (3)<br />

1


Michał Pazdanowski<br />

<strong>Instytut</strong> Technologii Informacyjnych w Inżynierii Lądowej<br />

Wydział Inżynierii Lądowej<br />

Politechnika Krakowska<br />

• interpolacja wielomianowa stopnia 1 ( n = 1), czyli funkcją liniową:<br />

b<br />

n = 1 → F<br />

() 1<br />

( x) ⋅dx<br />

≅ F( x ) ⋅ L ( x)<br />

∫ F ∑ j ∫<br />

a<br />

1<br />

j=<br />

0<br />

b<br />

a<br />

() 1<br />

( x) ≅ F( x ) ⋅ L ( x)<br />

j<br />

1<br />

∑<br />

j=<br />

0<br />

⋅dx<br />

=<br />

j<br />

j<br />

( b − a)<br />

2<br />

⋅<br />

[ F( x ) + F( x )]<br />

• interpolacja wielomianowa stopnia 2 ( n = 2 ), czyli funkcją kwadratową:<br />

b<br />

( 2<br />

( x) ⋅dx<br />

≅ F( x ) ⋅ L )<br />

( x)<br />

∫ F ∑ j ∫<br />

a<br />

2<br />

j=<br />

0<br />

n = 2 → F<br />

b<br />

a<br />

j<br />

( 2<br />

( x) ≅ F( x ) ⋅ L )<br />

( x)<br />

⋅dx<br />

=<br />

2<br />

∑ j<br />

j=<br />

0<br />

( b − a)<br />

6<br />

⋅<br />

j<br />

0<br />

[ F( x ) + 4⋅<br />

F( x ) + F( x )]<br />

• interpolacja wielomianowa stopnia 3 ( n = 3), czyli funkcją trzeciego stopnia:<br />

b<br />

( 3<br />

( x) ⋅dx<br />

≅ F( x ) ⋅ L )<br />

( x)<br />

∫ F ∑ j ∫<br />

a<br />

3<br />

j=<br />

0<br />

b<br />

a<br />

n = 3 → F<br />

j<br />

⋅dx<br />

=<br />

3<br />

( 3<br />

( x) ≅ F( x ) ⋅ L )<br />

( x)<br />

∑<br />

j=<br />

0<br />

( b − a)<br />

8<br />

⋅<br />

j<br />

j<br />

0<br />

[ F( x ) + 3⋅<br />

F( x ) + 3⋅<br />

F( x ) + F( x )]<br />

0<br />

1<br />

1<br />

1<br />

2<br />

, (4)<br />

2<br />

, (5)<br />

3<br />

, (6)<br />

<strong>Kwadratury</strong> te noszą kolejno nazwy wzorów prostokątów, trapezów, Simpsona i Newtona. Dokładność<br />

kwadratury można podnieść zwiększając dokładność interpolacji (patrz rozdział poświęcony<br />

interpolacji). W szczególności jest to możliwe przy rezygnacji z warunku równomiernego rozmieszczenia<br />

węzłów interpolacji. I tak, jeżeli węzły interpolacji zostaną przyjęte w miejscach zerowych<br />

wielomianów Legendre’a, będziemy mieli do czynienia z kwadraturami typu Gaussa – Legendre’a.<br />

Ponieważ wielomiany Legendre’a podobnie jak wielomiany Czebyszewa (patrz rozdział<br />

Interpolacja) mają wszystkie miejsca zerowe w przedziale [ − 1,1]<br />

, to standardowo wzory te są podawane<br />

dla takiego właśnie przedziału, i wówczas wyglądają następująco:<br />

gdzie<br />

1<br />

∫<br />

−1<br />

F<br />

n<br />

( ξ ) ⋅ dξ = ∑w<br />

j<br />

⋅ F( ξ j<br />

)<br />

j=<br />

0<br />

, (7)<br />

w<br />

j<br />

oznaczają wagi, a ξ<br />

j<br />

węzły kwadratury. Jeżeli całkowanie ma być dokonane w dowolnym<br />

przedziale [ a, b]<br />

konieczna jest zmiana zmiennych:<br />

co prowadzi do:<br />

b<br />

∫<br />

a<br />

F<br />

b − a<br />

2<br />

a + b b − a<br />

x = + ξ ⋅<br />

[ a,<br />

b] [ −1,1]<br />

2 2<br />

2⋅<br />

x − a − b<br />

[ a , b]<br />

ξ =<br />

[ −1,1]<br />

b − a<br />

( x) ⋅dx<br />

= ⋅ F x( ξ )<br />

1<br />

∫<br />

n<br />

b − a<br />

( ) ⋅dξ<br />

= ⋅∑w<br />

j<br />

⋅ F( x( ξ<br />

j<br />

))<br />

2<br />

−1 j=<br />

0<br />

, (8)<br />

. (9)<br />

Po przyjęciu położeń węzłów wartości wag wyznacza się w taki sposób, aby kwadratura dawała<br />

ścisłe wyniki dla jednomianów możliwie najwyższego stopnia. Ponieważ operacja taka jest dość<br />

żmudna i musi być wykonana z dużą dokładnością, praktyczniej jest korzystać z wartości tablico-<br />

2


Michał Pazdanowski<br />

<strong>Instytut</strong> Technologii Informacyjnych w Inżynierii Lądowej<br />

Wydział Inżynierii Lądowej<br />

Politechnika Krakowska<br />

wych. Tablice takie można znaleźć w każdym podręczniku dotyczącym metod numerycznych. Tutaj<br />

przytoczymy współczynniki wybranych kwadratur za [ 1 ].<br />

Tablica 1. <strong>Kwadratury</strong> Gaussa rzędu 1 do 9<br />

n<br />

i<br />

ξ<br />

= −ξ<br />

( n)<br />

( n)<br />

i n−i+<br />

1<br />

( n)<br />

( n)<br />

w<br />

i<br />

= wn−i<br />

+ 1<br />

1 1 0,0000000000 2,0000000000<br />

2 1 0,5773502692 1,0000000000<br />

3<br />

1 0,7745966692 0,5555555556<br />

2 0,0000000000 0,8888888889<br />

4<br />

1 0,8611363116 0,3478548451<br />

2 0,3399810436 0,6521451549<br />

5<br />

1<br />

2<br />

3<br />

0,9061798459<br />

0,5384693101<br />

0,0000000000<br />

0,2369268851<br />

0,4786286705<br />

0,5688888889<br />

Wyznaczenie wartości wag i położeń węzłów jest również możliwe wprost z warunku ścisłego całkowania<br />

jednomianów możliwie najwyższego stopnia. Warunek ten pozwala zapisać tyle równań<br />

nieliniowych (10), ile jest niewiadomych (wag i położeń węzłów). Niestety ten sposób postępowania,<br />

pomimo, że najprostszy koncepcyjnie jest też najbardziej żmudny numerycznie, gdyż prowadzi<br />

do układu nieliniowych równań algebraicznych, który musi być rozwiązany z dużą dokładnością,<br />

ponieważ dokładność ta decyduje o jakości uzyskanych wyników całkowania.<br />

1<br />

∫<br />

−1<br />

x<br />

k<br />

1<br />

⋅dx<br />

= ⋅ x<br />

k + 1<br />

1<br />

k+<br />

1<br />

−1<br />

1<br />

= ⋅<br />

k + 1<br />

n<br />

k+<br />

1<br />

[ 1−<br />

( −1)<br />

] = ∑<br />

j=<br />

0<br />

w ⋅ x<br />

j<br />

k<br />

j<br />

. (10)<br />

I tak na przykład rozpisując stosowne zależności dla trójpunktowej kwadratury Gaussa, która prowadzi<br />

do wzorów <strong>numeryczne</strong>go całkowania ścisłych dla wielomianów do stopnia piątego włącznie<br />

otrzymujemy następujący układ sześciu nieliniowych równań algebraicznych:<br />

∫<br />

∫<br />

∫<br />

∫<br />

1<br />

∫<br />

−1<br />

1<br />

2<br />

−1<br />

1<br />

−1<br />

1<br />

4<br />

−1<br />

1<br />

x<br />

−1<br />

1<br />

∫<br />

−1<br />

x ⋅dx<br />

=<br />

1⋅dx<br />

= x<br />

⋅dx<br />

=<br />

3<br />

x ⋅dx<br />

=<br />

x<br />

⋅dx<br />

=<br />

5<br />

x ⋅dx<br />

=<br />

1<br />

2<br />

1<br />

3<br />

1<br />

4<br />

1<br />

5<br />

1<br />

6<br />

⋅ x<br />

⋅ x<br />

⋅ x<br />

⋅ x<br />

⋅ x<br />

1<br />

−1<br />

2<br />

1<br />

−1<br />

3<br />

1<br />

−1<br />

4<br />

1<br />

5<br />

1<br />

−1<br />

−1<br />

6<br />

1<br />

−1<br />

= w<br />

0<br />

= w<br />

= w<br />

0<br />

= w<br />

= w<br />

0<br />

0<br />

= w<br />

⋅1+<br />

w ⋅1+<br />

w<br />

0<br />

0<br />

⋅ x<br />

⋅ x<br />

2<br />

0<br />

⋅ x<br />

⋅ x<br />

0<br />

3<br />

0<br />

4<br />

0<br />

⋅ x<br />

5<br />

0<br />

1<br />

+ w ⋅ x<br />

1<br />

+ w ⋅ x<br />

1<br />

+ w ⋅ x<br />

1<br />

+ w ⋅ x<br />

1<br />

+ w ⋅ x<br />

1<br />

1<br />

2<br />

1<br />

3<br />

1<br />

4<br />

1<br />

5<br />

1<br />

2<br />

⋅1<br />

= 2<br />

+ w<br />

2<br />

+ w<br />

2<br />

+ w<br />

+ w<br />

2<br />

+ w<br />

⋅ x<br />

2<br />

2<br />

2<br />

⋅ x<br />

2<br />

2<br />

⋅ x<br />

⋅ x<br />

3<br />

2<br />

4<br />

2<br />

⋅ x<br />

5<br />

2<br />

= 0<br />

=<br />

= 0<br />

=<br />

2<br />

3<br />

2<br />

5<br />

= 0<br />

. (11)<br />

Ze wzorów (10) bądź (11) można natomiast natychmiast wywnioskować, że w przedziale [ − 1,1]<br />

węzły i wagi są rozmieszczone symetrycznie względem punktu 0 , co wprost zostało wykorzystane<br />

przy konstruowaniu Tablicy 1.<br />

1 J.Szmelter – <strong>Metod</strong>y komputerowe w mechanice, PWN 1980<br />

3


Michał Pazdanowski<br />

<strong>Instytut</strong> Technologii Informacyjnych w Inżynierii Lądowej<br />

Wydział Inżynierii Lądowej<br />

Politechnika Krakowska<br />

Możliwości podnoszenia dokładności kwadratury wiążą się oczywiście z:<br />

• zwiększaniem liczby węzłów w przedziale całkowania (podnoszenie stopnia wielomianu interpolującego);<br />

istotnym ograniczeniem jest tu występowanie efektu Rungego (patrz Interpolacja),<br />

powodujące, że do praktycznego stosowania nadają się wyłącznie kwadratury<br />

względnie niskiego (nie wyżej niż czwarty do siódmego) stopnia;<br />

• wykorzystaniem addytywności całki, podzieleniem przedziału całkowania na wiele części i<br />

stosowanie w każdej z nich kwadratury niskiego rzędu (tak zwane kwadratury złożone).<br />

Dla praktycznego prześledzenia sposobu postępowania przy numerycznym obliczaniu całek wyznaczymy<br />

wartość wyrażenia:<br />

4<br />

∫<br />

1<br />

ln<br />

4<br />

( ) ⋅ dx = ( x ⋅ln(<br />

x)<br />

− x) = 2. 545177<br />

x , (11)<br />

korzystając z różnych kwadratur. I tak kolejno korzystając ze wzorów (3)-(6) otrzymujemy odpowiednio<br />

dla kwadratur typu Newtona:<br />

4<br />

∫<br />

1<br />

4−1<br />

⎪ ( ln(1,0) + ln(4,0) ) ⋅<br />

2<br />

⎨<br />

4−1<br />

⎪ ( ln(1,0) + 4⋅ln(2,5)<br />

+ ln(4,0) ) ⋅<br />

6<br />

⎪( ln(1,0) + 3⋅ln(2,0)<br />

+ 3⋅ln(3,0)<br />

+ ln(4,0) )<br />

⎩<br />

1<br />

3<br />

⎧<br />

ln(1,0) ⋅<br />

1<br />

= 0,000000<br />

⎪<br />

= 2,079442<br />

ln( x ) ⋅ dx =<br />

, (12)<br />

= 2,525729<br />

4 <br />

⋅<br />

4−1<br />

8<br />

= 2,535590<br />

a dla kwadratur typu Gaussa po dokonaniu transformacji (8) 1 na położeniach węzłów danych w Ta-<br />

1 ,4 :<br />

blicy 1 w celu sprowadzenia ich do przedziału [ ]<br />

otrzymujemy ostatecznie:<br />

4<br />

∫<br />

1<br />

⎧<br />

x<br />

x<br />

x<br />

x<br />

(1)<br />

(2)<br />

(3)<br />

(4)<br />

:<br />

{<br />

x<br />

(1)<br />

1<br />

⎧x<br />

: ⎨<br />

⎩x<br />

⎧ x<br />

⎪<br />

: ⎨x<br />

⎪<br />

⎩x<br />

⎧x1<br />

⎪<br />

x2<br />

: ⎨<br />

⎪x3<br />

⎪<br />

⎩x4<br />

(4)<br />

(4)<br />

(4)<br />

(4)<br />

=<br />

(2)<br />

1<br />

(2)<br />

2<br />

(3)<br />

1<br />

(3)<br />

2<br />

(3)<br />

3<br />

1+<br />

4<br />

2<br />

=<br />

=<br />

=<br />

=<br />

=<br />

=<br />

=<br />

=<br />

=<br />

1+<br />

4<br />

2<br />

1+<br />

4<br />

2<br />

1+<br />

4<br />

2<br />

1+<br />

4<br />

2<br />

1+<br />

4<br />

2<br />

1+<br />

4<br />

2<br />

1+<br />

4<br />

2<br />

1+<br />

4<br />

2<br />

+ 0,000000⋅<br />

1+<br />

4<br />

2<br />

− 0,577350⋅<br />

+ 0,577350⋅<br />

− 0,774596⋅<br />

+ 0,000000⋅<br />

+ 0,774596⋅<br />

− 0,861136⋅<br />

− 0,339981⋅<br />

+ 0,339981⋅<br />

+ 0,861136⋅<br />

4−1<br />

2<br />

4−1<br />

2<br />

4−1<br />

2<br />

4−1<br />

2<br />

4−1<br />

2<br />

4−1<br />

2<br />

4−1<br />

2<br />

4−1<br />

2<br />

4−1<br />

2<br />

4−1<br />

2<br />

= 2,500000<br />

= 1,633974<br />

= 3,366025<br />

= 1,338105<br />

= 2,500000<br />

= 3,661895<br />

= 1,208296<br />

= 1,990028<br />

= 3,009972<br />

= 3,791704<br />

⎪<br />

(2) (2) (2) (2) 4−1<br />

( ln( x1<br />

) ⋅ w1<br />

+ ln( x2<br />

) ⋅ w2<br />

) ⋅<br />

2<br />

⎨<br />

(3) (3) (3) (3) (3) (3) 4−1<br />

⎪ ( ln( x1<br />

) ⋅ w1<br />

+ ln( x2<br />

) ⋅ w2<br />

+ ln( x3<br />

) ⋅ w3<br />

) ⋅<br />

2<br />

(4) (4) (4) (4) (4) (4) (4) (4)<br />

⎪( ln( x ) ⋅ w + ln( x ) ⋅ w + ln( x ) ⋅ w + ln( x ) ⋅ w )<br />

⎩<br />

ln( x<br />

) ⋅ w<br />

, (13)<br />

= 2,748872<br />

= 2,557122<br />

ln( x ) ⋅dx<br />

=<br />

.(14)<br />

= 2,546084<br />

1<br />

1<br />

2<br />

2<br />

(1)<br />

1<br />

(1)<br />

1<br />

3<br />

⋅<br />

4−1<br />

2<br />

3<br />

4<br />

4<br />

⋅<br />

4−1<br />

2<br />

= 2.545254<br />

Zestawmy tak obliczone wartości całki w tablicy w celu porównania dokładności uzyskanych wyników.<br />

W kolejnych kolumnach Tablicy 2 przedstawiono liczbę węzłów kwadratury n , wyniki całkowania<br />

kwadraturą typu Newtona i Gaussa oraz błąd względny procentowy tych wyników obliczony<br />

w stosunku do wartości analitycznej całki.


Tablica 2. Wyniki całkowania <strong>numeryczne</strong>go<br />

Michał Pazdanowski<br />

<strong>Instytut</strong> Technologii Informacyjnych w Inżynierii Lądowej<br />

Wydział Inżynierii Lądowej<br />

Politechnika Krakowska<br />

n<br />

Kwadratura<br />

Błąd<br />

Newtona Gaussa Newton Gauss<br />

1 0,000000 2,748872 100,000% 8,003%<br />

2 2,079442 2,557122 18,298% 0,469%<br />

3 2,525729 2,546084 0,764% 0,036%<br />

4 2,535590 2,545254 0,377% 0,003%<br />

Jak widać w każdym przypadku przy porównywalnym nakładzie pracy (liczba obliczeń wartości<br />

funkcji podcałkowej) zastosowanie kwadratury Gaussa prowadzi do znacząco (od 12 do ponad 120<br />

razy) dokładniejszych wyników.<br />

Rozważmy jeszcze kwestię kwadratur złożonych. Jak już zostało to zaznaczone powyżej, w ich<br />

konstrukcji wykorzystujemy addytywność całki, która oznacza, że całkę po pewnym przedziale<br />

możemy zastąpić sumą całek po przedziałach których suma daje przedział wyjściowy, czyli:<br />

gdzie oczywiście<br />

b<br />

m−1<br />

pi<br />

1 + 1<br />

∫ f x)<br />

⋅dx<br />

= ∫ f ( x)<br />

⋅dx<br />

+ ∑ ∫ f ( x)<br />

⋅ dx + ∫<br />

a<br />

p<br />

( f ( x)<br />

⋅dx<br />

, (15)<br />

a < p < ... < p < ... < p<br />

1 i m<br />

< .<br />

a<br />

b<br />

i=<br />

1 p<br />

W przypadku kwadratur typu Newtona przy stałej długości przedziału całkowania [ ]<br />

p<br />

i, p i +1<br />

równej<br />

h dla (16) i (17), 2 ⋅h<br />

dla (18) i 3 ⋅h<br />

dla (19) ( h oznacza tu odległość pomiędzy węzłami kwadratury)<br />

postępowanie powyższe prowadzi do wzorów:<br />

• interpolacja wielomianowa stopnia 0 ( n = 0 ), czyli funkcją stałą:<br />

b<br />

∫<br />

a<br />

F<br />

h<br />

1<br />

( x) ⋅dx<br />

≅ ⋅∑<br />

F( a + h⋅i)<br />

• interpolacja wielomianowa stopnia 1 ( n = 1), czyli funkcją liniową:<br />

b<br />

1⋅<br />

h<br />

2<br />

⎡<br />

⎢<br />

⎣<br />

m<br />

i=<br />

0<br />

m−1<br />

⎤<br />

∫ F( x) ⋅ dx ≅ ⋅ F( a) + 2⋅∑ F(<br />

a + h⋅i)<br />

+ F( b)<br />

⎥ ⎦<br />

a<br />

• interpolacja wielomianowa stopnia 2 ( n = 2 ), czyli funkcją kwadratową:<br />

b<br />

∫<br />

a<br />

F<br />

2⋅h<br />

6<br />

⎡<br />

⎢<br />

⎣<br />

m−1<br />

( x) ⋅dx<br />

≅ ⋅ F( a) + 4⋅<br />

∑ F( a + h⋅i) + 2⋅<br />

∑ F(<br />

a + h⋅i)<br />

+ F( b)<br />

i=<br />

1,3,...<br />

i<br />

i=<br />

1<br />

b<br />

p<br />

m<br />

m−2<br />

i=<br />

2,4,...<br />

, (16)<br />

• interpolacja wielomianowa stopnia 3 ( n = 3), czyli funkcją trzeciego stopnia:<br />

b<br />

∫<br />

a<br />

F<br />

3⋅<br />

h<br />

8<br />

⎡<br />

⎢<br />

⎣<br />

m−2<br />

, (17)<br />

( x) ⋅ dx ≅ ⋅ F( a) + 3⋅<br />

∑ F( a + h⋅i) + 2⋅<br />

∑ F( a + h⋅i) + 3⋅<br />

∑ F( a + h⋅i) + F( b)<br />

i=<br />

1,4,...<br />

m−3<br />

i=<br />

3,6,...<br />

m−1<br />

i=<br />

2,5,...<br />

⎥ ⎦<br />

⎤<br />

, (18)<br />

⎥ ⎦<br />

⎤<br />

, (19)<br />

Postępowanie to w przypadku kwadratur typu Gaussa jest równoznaczne z zastosowaniem prostej<br />

kwadratury odpowiedniego rzędu do każdego podprzedziału z osobna i zsumowaniem tak uzyskanych<br />

wyników.<br />

Dla zorientowania się, jaki jest wpływ gęstości podziału przedziału całkowania na dokładność wyniku<br />

finalnego rozwiążemy zadanie (11) tak dobierając liczbę podprzedziałów całkowania o jednakowej<br />

długości w każdej z metod, aby wynik finalny uzyskać z błędem względnym procentowym<br />

nie przekraczającym 0,003%. Wyniki tych obliczeń przedstawiono w Tablicy 3.<br />

5


Michał Pazdanowski<br />

<strong>Instytut</strong> Technologii Informacyjnych w Inżynierii Lądowej<br />

Wydział Inżynierii Lądowej<br />

Politechnika Krakowska<br />

Tablica 3. Porównanie efektywności metod całkowania<br />

n<br />

Newton<br />

Gauss<br />

h ile całka błąd h ile całka błąd<br />

1 0,00011 26850 2,545100 0,003% 0,05000 60 2,545255 0,003%<br />

2 0,03488 87 2,545101 0,003% 0,60000 10 2,545230 0,002%<br />

3 0,30000 11 2,545098 0,003% 1,50000 6 2,545224 0,002%<br />

4 0,20000 13 2,545142 0,003% 3,00000 4 2,545254 0,003%<br />

W kolejnych kolumnach tablicy, dla obydwu metod całkowania, przedstawiono długość pojedynczego<br />

przedziału całkowania (h), całkowitą liczbę punktów, w których należało obliczyć wartość<br />

funkcji podcałkowej (ile), obliczoną wartość całki (całka) oraz błąd względny procentowy uzyskanego<br />

wyniku w stosunku do wartości ścisłej (błąd).<br />

Ponieważ zasadniczym czynnikiem wpływającym na czas całkowania jest liczba obliczeń wartości<br />

funkcji podcałkowej, zgodnie z oczekiwaniem okazało się, że najbardziej efektywna z rozważanych<br />

powyżej jest czteropunktowa kwadratura Gaussa.<br />

Problemem z którym spotykamy się dość często przy numerycznym całkowaniu jest problem granic<br />

niewłaściwych (czyli w − ∞ lub + ∞ ). Możemy sobie z nim poradzić na dwa sposoby:<br />

• przez odpowiednią zmianę zmiennych (typu x =<br />

1<br />

t ):<br />

b<br />

∫<br />

a<br />

1<br />

a<br />

1 ⎛1⎞<br />

f ( x)<br />

⋅dx<br />

= ∫ ⋅ f ⎜ ⎟⋅dt<br />

; (20)<br />

2<br />

1 t ⎝ t ⎠<br />

b<br />

• zastosowanie kwadratur specjalnych:<br />

∞<br />

∫<br />

0<br />

∞<br />

∫<br />

x<br />

0<br />

∞<br />

∫<br />

α<br />

−∞<br />

(1 − x)<br />

e<br />

α<br />

⋅e<br />

−x<br />

−x<br />

2<br />

⋅ f ( x)<br />

⋅dx<br />

=<br />

⋅(1<br />

+ x)<br />

⋅ f ( x)<br />

⋅dx<br />

=<br />

β<br />

∑<br />

n<br />

∑<br />

j=<br />

1<br />

n<br />

j=<br />

1<br />

⋅ f ( x)<br />

⋅dx<br />

=<br />

w ⋅ f ( x )<br />

j<br />

j<br />

w ⋅ f ( x )<br />

n<br />

∑<br />

j=<br />

1<br />

j<br />

j<br />

j<br />

w ⋅ f ( x )<br />

j<br />

, (21)<br />

kwadratury te noszą odpowiednio nazwy Gaussa–Laguerre’a, Gaussa–Hermita i Gaussa–<br />

Jacobiego.<br />

Stosując kwadratury te należy pamiętać o tym, że ich współczynniki (położenia węzłów i wagi) są<br />

określone i mogą być używane jedynie wówczas gdy przedział całkowania i funkcja podcałkowa<br />

mają postać dokładnie taką jak we wzorach (21).<br />

W przypadku osobliwości całkowalnej (np. typu (22) ) powinniśmy najpierw przez odpowiednią<br />

zmianę zmiennych pozbyć się osobliwości i dopiero wtedy zastosować którąś z standardowych<br />

kwadratur.<br />

1<br />

( x − a)<br />

Stosowne wzory przedstawiono poniżej:<br />

γ<br />

,<br />

0 ≤ γ < 1<br />

. (22)<br />

b<br />

∫<br />

a<br />

x − a = t<br />

1−γ<br />

( b−a)<br />

1<br />

f ( x)<br />

⋅dx<br />

= ⋅<br />

−<br />

∫ t<br />

1 γ<br />

0<br />

1−<br />

1<br />

γ<br />

1−<br />

1<br />

γ<br />

⋅ f ( t<br />

1−<br />

1<br />

γ<br />

+ a)<br />

⋅dt<br />

. (23)<br />

6


Michał Pazdanowski<br />

<strong>Instytut</strong> Technologii Informacyjnych w Inżynierii Lądowej<br />

Wydział Inżynierii Lądowej<br />

Politechnika Krakowska<br />

Rozpatrzmy takie postępowanie na bardzo prostym przykładzie:<br />

4<br />

2<br />

⎧ x = t ⎫<br />

⎩dx<br />

= 2⋅t<br />

⋅ dt⎭<br />

2<br />

∫ ⋅ dx = ⎨ ⎬ = 2⋅∫cos(<br />

t ) ⋅<br />

0<br />

cos( x)<br />

x<br />

2<br />

0<br />

dt<br />

. (24)<br />

W przypadku całkowania w obszarze dwuwymiarowym korzystamy z twierdzenia, że całkowanie w<br />

takim obszarze po powierzchni czworokąta D może być zastąpione całkowaniem po powierzchni<br />

obszaru wzorcowego (kwadrat ∆ ). Warunkiem poprawności tego postępowania jest skonstruowanie<br />

odwzorowania, w którym obszar D jest przedstawiony jako obraz obszaru ∆ . Stosowne odwzorowanie<br />

można zbudować posługując się wielomianami interpolacyjnymi Lagrange’a w dwóch<br />

wymiarach (patrz rozdział dotyczący interpolacji, wzory (68) i następne, w których elementem<br />

wzorcowym jest obszar ∆ , a wzory transformacyjne x = u( ξ,<br />

η)<br />

i y = v( ξ,<br />

η)<br />

mają postać (69)).<br />

Wówczas, jeżeli tylko spełniona jest zależność:<br />

dla każdego punktu obszaru ∆ , to prawdziwy jest wzór:<br />

∫∫<br />

D<br />

∂u(<br />

ξ,<br />

η)<br />

∂u(<br />

ξ,<br />

η)<br />

∂ξ ∂η<br />

J =<br />

≠ 0 , (25)<br />

∂v(<br />

ξ,<br />

η)<br />

∂v(<br />

ξ,<br />

η)<br />

∂ξ ∂η<br />

∫∫<br />

∆<br />

( u( ξ,<br />

η) , v( ξ,<br />

η)<br />

)<br />

f ( x,<br />

y)<br />

⋅dxdy<br />

= f<br />

⋅ J ⋅dξdη<br />

, (26)<br />

i wtedy całkę w dwóch wymiarach można obliczyć jako złożenie dwóch całek w jednym wymiarze,<br />

co ostatecznie prowadzi do zależności:<br />

∫∫<br />

D<br />

f<br />

N N<br />

x y<br />

( x y) ⋅dxdy<br />

= w ⋅ w ⋅ F( x( ξ , η ),<br />

y( ξ , η<br />

)<br />

∑∑<br />

, , (27)<br />

j = 1j<br />

= 1<br />

x<br />

y<br />

j<br />

x<br />

j<br />

y<br />

j<br />

x<br />

j<br />

y<br />

j<br />

x<br />

j<br />

y<br />

gdzie:<br />

F<br />

∂x<br />

∂x<br />

4<br />

4<br />

⎛<br />

⎞ ∂ξ ∂η<br />

, ⋅ yi<br />

⎟⋅ , (28)<br />

⎝ i= 1<br />

i=<br />

1 ⎠ ∂y<br />

∂y<br />

∂ξ ∂η<br />

( ξ η) = f ⎜∑<br />

Ni( ξ,<br />

η) ⋅ xi<br />

, ∑ Ni( ξ,<br />

η)<br />

(patrz wzory (69) w rozdziale dotyczącym interpolacji).<br />

Warto zauważyć, że ze wzorów (27) wynika możliwość całkowania w kierunkach ξ i η przy użyciu<br />

kwadratur różnego rzędu (z różną dokładnością). Postępowanie takie może być uzasadnione w<br />

przypadku rozwiązywania zadań, w których zmienne podstawowe mają różny charakter (np. przestrzeń<br />

i czas).<br />

Podaną procedurę można łatwo uogólnić na przypadki całkowania w obszarze trój i więcej wymiarowym.<br />

7

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!