dr hab. Piotr Fronczak Metody numeryczne Wykład nr 7
dr hab. Piotr Fronczak
Metody numeryczne
Wykład nr 7
Całkowanie numeryczne
Całkowanie numeryczne to przybliżone obliczanie całek oznaczonych.
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.
I. Metoda prostokątów
b
a
b
a
abafdxafdxxffI ))(()()()(
b
a
b
a
abbfdxbfdxxffI ))(()()()(
Podzielmy przedział [a,b] na N podprzedziałów.
))((...))(())(()()( 1232121 NNN
b
a
xxxfxxxfxxxfdxxffI
N
i
iii xxxffI1
1 ))(()(
Gdy podprzedziały są równe
N
i
ixfhfI1
)()(
Pewnym udoskonaleniem metody kwadratów jest wybór wartości funkcji
w środku przedziału.
b
a
abba
fdxba
ffI )(22
)(
N
i
ii xxfhfI
1
1
2)(
W przypadku wielu podprzedziałów:
II. Metoda trapezów
x0 x1 x
f(x)
L(x) Przybliżamy funkcję podcałkową
prostą.
010 1
0 1 1 0
0 1
( ) ( ) ( )
dx a x , b x , , d ;
h
0( ) (1 ) ( ) ( ) ( )
1
x xx xL x f x f x
x x x x
x alet h b a
b a
x aL f a f b
x b
010 1
0 1 1 0
0 1
( ) ( ) ( )
dx a x , b x , , d ;
h
0( ) (1 ) ( ) ( ) ( )
1
x xx xL x f x f x
x x x x
x alet h b a
b a
x aL f a f b
x b
010 1
0 1 1 0
0 1
( ) ( ) ( )
dx a x , b x , , d ;
h
0( ) (1 ) ( ) ( ) ( )
1
x xx xL x f x f x
x x x x
x alet h b a
b a
x aL f a f b
x b
1
0
1 1
0 0
1 12 2
0 0
( ) ( ) ( )
( ) (1 ) ( )
( ) ( ) ( ) ( ) ( )2 2 2
b b
a af x dx L x dx h L d
f a h d f b h d
hf a h f b h f a f b
W przypadku wielu podprzedziałów:
N
i
ii xfxfh
fI1
1)()(2
)(
II. Metoda Simpsona 1/3
x0 x1 x
f(x)
x2 h h
L(x)
Przybliżamy funkcję podcałkową
parabolą.
1 xx
0 xx
1 xx
h
dxd ,
h
xx ,
2
abh
2
ba x ,bx ,ax let
)x(f)xx)(xx(
)xx)(xx(
)x(f)xx)(xx(
)xx)(xx( )x(f
)xx)(xx(
)xx)(xx()x(L
2
1
0
1
120
2
1202
10
1
2101
20
0
2010
21
1 xx
0 xx
1 xx
h
dxd ,
h
xx ,
2
abh
2
ba x ,bx ,ax let
)x(f)xx)(xx(
)xx)(xx(
)x(f)xx)(xx(
)xx)(xx( )x(f
)xx)(xx(
)xx)(xx()x(L
2
1
0
1
120
2
1202
10
1
2101
20
0
2010
21
1 xx
0 xx
1 xx
h
dxd ,
h
xx ,
2
abh
2
ba x ,bx ,ax let
)x(f)xx)(xx(
)xx)(xx(
)x(f)xx)(xx(
)xx)(xx( )x(f
)xx)(xx(
)xx)(xx()x(L
2
1
0
1
120
2
1202
10
1
2101
20
0
2010
21
1 xx
0 xx
1 xx
h
dxd ,
h
xx ,
2
abh
2
ba x ,bx ,ax let
)x(f)xx)(xx(
)xx)(xx(
)x(f)xx)(xx(
)xx)(xx( )x(f
)xx)(xx(
)xx)(xx()x(L
2
1
0
1
120
2
1202
10
1
2101
20
0
2010
21
)x(f2
)1()x(f)1()x(f
2
)1()(L 21
2
0
1
1
23
2
1
1
3
1
1
1
23
0
1
12
1
0
2
1
1
10
1
1
b
a
)2
ξ
3
ξ(
2
h)f(x
)3
ξ(ξ)hf(x)
2
ξ
3
ξ(
2
h)f(x
)dξ1ξ(ξ2
h)f(x)dξξ1()hf(x
)dξ1ξ(ξ2
h)f(xdξ)(Lhf(x)dx
)x(f2
)1()x(f)1()x(f
2
)1()(L 21
2
0
)f(x)4f(x)f(x3
hf(x)dx 210
b
a
W przypadku N podprzedziałów o szerokości h = (b – a) / N:
UWAGA: Ponieważ wielomian kwadratowy jest określony poprzez trzy punkty
(a zatem dwa przedziały), to liczba przedziałów musi być parzysta.
)()(4)(3
)(),()( 11
6,4,2
iiii
N
i
i xfxfxfh
fIgdziefIfI
)()(2)(4)(3
)(1
7,5,36,4,2
bfxfxfafh
fIN
j
j
N
i
i
Jest to ważona suma wartości funkcji w punktach definiujących podprzedziały.
II. Metoda Simpsona 3/8
x0 x1 x
f(x)
x2 h h
L(x)
x3 h
Przybliżamy funkcję podcałkową
wielomianem trzeciego stopnia.
)x(f)xx)(xx)(xx(
)xx)(xx)(xx(
)x(f)xx)(xx)(xx(
)xx)(xx)(xx(
)x(f)xx)(xx)(xx(
)xx)(xx)(xx(
)x(f)xx)(xx)(xx(
)xx)(xx)(xx()x(L
3
231303
210
2
321202
310
1
312101
320
0
302010
321
)x(f)x(f3)x(f3)x(f8
h3
3
a-bh ; L(x)dxf(x)dx
3210
b
a
b
a
W przypadku N podprzedziałów o szerokości h = (b – a) / N:
UWAGA: Ponieważ wielomian kubiczny jest określony poprzez cztery punkty
(a zatem trzy przedziały), to liczba podprzedziałów musi być podzielna przez 3.
)()(2)()(3)(8
3)(
2
10,7,4
1
8,5,2
1 bfxfxfxfafh
fIN
j
j
N
i
ii
Przykład: dxxeI4
0
x2
(= 5216.93)
metoda
prostokątów
metoda
trapezów
metoda
Simpsona 1/3
metoda
Simpsona 3/8
N = 1 436 23847 15898 6819
-91.64% 357.19% 204.79% 30.73%
N = 6 4749 6179 5331 5430
-8.95% 18.46% 2.20% 4.10%
N = 12 5094 5468 5225 5235
-2.34% 4.83% 0.17% 0.36%
N = 18 5162 5326 5218 5220
-1.04% 2.11% 0.04% 0.08%
Oszacowanie błędów
Metoda prostokątów
b
a
b
a
abafdxafdxxffI ))(()()()(
))((')()( axfafxf
2))(('2
1))(())((')()( abfabafdxaxfafdxxf
b
a
b
a
b
a
abafdxxfE ))(()(Błąd wynosi
Rozwijając f(x) w szereg Taylora blisko punktu a otrzymujemy
gdzie jest punktem między a i b.
Całkując obie strony tego równania otrzymujemy
2))(('2
1abfE Zatem błąd wyniesie
Zależy on od szerokości przedziału całkowania i wartości pierwszych
pochodnych f(x) w tym przedziale.
Błąd można znacząco zredukować dzieląc przedział na mniejsze podprzedziały.
2))(('2
1abfE
Ponieważ
2)('2
1hfE ii
to
N
i
i
i
i fhEE1
2 )('2
1
Całkowity błąd
N
f
f
N
i
i 1
)('
'
Przyjmując, że średnio
'2
)(fh
abE
N
abh
)( oraz
)(hO
2))((2
1))(()()( xafxaxfxfaf
b
a
abfabbfdxxfabaf 3))((6
1))(()(2))((
b
a
abfabbfafdxxf 3))((12
1)))(()((
2
1)(
Metoda trapezów
Rozwijając w szereg Taylora
b
a
b
a
abfdxxfxaafbafdxxfabaf 3))((6
1)()()()())((
Całkując
b
a
b
a
b
a
dxxfxxfdxxfx )()()(Pamiętając, że
N
f
f
N
i
i 1
)(''
''
Przyjmując, że średnio
N
abh
)( oraz
b
a
abfabbfafdxxf 3))((12
1)))(()((
2
1)(
)(24
)( 22 hOhfab
E
Metoda prostokątów (udoskonalona)
)(180
)( 44 hOhfab
E IV
Metoda Simpsona 1/3
)(80
)( 44 hOhfab
E IV
Metoda Simpsona 3/8
)(12
)( 22 hOhfab
E
Otrzymujemy
Ekstrapolacja Richardsona
...''')( 21 kkk hKhKKhhII
)()( 1 kk hOKhhII
)()2/()2/( 1 kk hOhKhII
Idea: zredukować błąd metody numerycznej z O(hk) do O(hk+1)
Rozwińmy całkę jako funkcję h w szereg wokół punktu h=0.
K,K’,K’’ niewiadome – reprezentują wartości błędów
I – rzeczywista wartość całki
I(h) – numeryczna wartość całki
Redukując h otrzymujemy inne równanie na I:
Pamiętajmy, że O(hk+1) w obu równaniach jest inne.
(2)
oraz (1)
)(2
)2/()()2/()2/(
)()(
11
1
k
k
kkk
kk
hOKh
hIhOhKhII
hOKhhII
)()()2/(2
)()()()2/(212
2 2
1
11
kk
kkkkkk
kk
hOhIhI
hOKhhIhOKhhI)I-(
II (1)(2)
Zatem mamy dwa równania na I
Wyeliminujmy wiodący błąd K:
)(12
)()2/(2 1
k
k
k
hOhIhI
I
Czyli wyeliminowaliśmy błąd Khk i zredukowaliśmy rząd błędu z k do k+1.
Przykład: metoda trapezów
2
12
)()( hf
abhII
2
11)( KhhII
2
22)( KhhII
K jest takie same (średnia wartość
drugiej pochodnej po f nie zależy
od h).
2
2
1
2
2
2
11
1
)()(
h
h
hIh
hhI
I
Eliminując K otrzymujemy:
Dla h1 = 2h2
3
)()(4 12 hIhII
=> Błąd O(h4) ...)( 6
3
4
2
2
1 hKhKhKhIIMożna pokazać, że
4
11)( KhhII
4
22)( KhhII
4
2
1
2
4
2
11
1
)()(
h
h
hIh
hhI
I
Eliminując K otrzymujemy:
Dla h1 = 2h2
15
)()(16 12 hIhII
Błąd O(h6)
Gdy mamy całkę obliczoną numerycznie z dokładnością O(h4) postępujemy
analogicznie:
Uogólnienie:
Jeśli In jest przybliżeniem wartości całki przy użyciu n podprzedziałów (krok h),
a I2n jest przybliżeniem wartości całki przy użyciu 2n podprzedziałów (krok h/2)
Jeśli oba przybliżenia mają ten sam błąd rzędu h p, to nowe przybliżenie całki
12
2 2
p
nn
p III
będzie miało błąd rzędu h p+2.
3, 2, 1,k
;14
4 ,,1
1, k
kjkj
k
kj
III
255
256
63
64
15
16
3
4
16/
8/
4/
2/
)()()()()(
43210
3,3,12,2,11,1,10,0,1
0,4
1,30,3
2,21,20,2
3,12,11,10,1
4,03,02,01,00,0
108642
jjjjjjjj IIIIIIII
Ih
IIh
IIIh
IIIIh
IIIIIh
hOhOhOhOhO
kkkkk
Metoda Romberga
Metoda ta zwiększa dokładność oszacowania całki poprzez sukcesywne
zastosowanie ekstrapolacji Richardsona.
926477.5216dxxeI4
0
x2
%00050.0%00168.0%0053.0%0527.0%66.2
95.535525.0
68.521976.57645.0
20.521775.525679.72881
01.521714.522998.56702.121422
95.521684.522468.549941.82407.238474
)()()()()(
43210
.
108642
h
h
h
h
h
hOhOhOhOhO
kkkkk
trapezówMet
Przykład:
Błąd przy całkowaniu podstawową
metodą trapezów.
By uzyskać błąd rzędu 10-8 należy
przyjąć krok 10-8 (czyli 108 podprzedziałów)
Kolejne przybliżenia metodą Romberga
O(h2), O(h4) i O(h6).
Ten sam błąd można uzyskać przy
znacznie mniejszej liczbie podprzedziałów.
Kwadratura Gaussa na przedziale [-1, 1]
Dotychczas wszystkie metody wykorzystywały do obliczenia całki ważone wartości
równo rozmieszczonych punktów. Położenia punktów były stałe dla danej metody.
W metodzie zwanej kwadraturą Gaussa nie są rozłożone równomiernie (ponadto
punkty krańcowe również nie są brane pod uwagę). Położenie punktów oraz
odpowiadające im wagi są dobierane tak, by zminimalizować błąd.
Wybieramy (c1, c2, x1, x2) tak, by metoda zwróciła dokładną wartość całki, gdy
funkcja ma postać f(x) = x0, x1, x2, x3
)()()()()( 2211
1
11
nni
n
i
i xfcxfcxfcxfcdxxf
)f(xc)f(xc
f(x)dx: n
2211
1
12
x2 x1 -1 1
Ogólna postać kwadratury Gaussa
Dokładna całka dla f = x0, x1, x2, x3
– Cztery równania z czterema niewadomymi
)f(xc)f(xcf(x)dx: n 2211
1
12
3
1
3
1
1
1
0
3
2
0
211
2
1
2
1
3
22
3
1
1
11
33
2
22
2
1
1
11
22
221
1
11
2
1
11
x
x
c
c
xcxcdxxxf
xcxcdxxxf
xcxcxdxxf
ccdxf
)3
1()
3
1()(
1
1ffdxxfI
-1 0 1
0.5
1.0
f(x) = x2
3
1
3
1
Kwadratura Gaussa daje dokładną wartość,
gdy funkcja f(x) = 1, x, x2, x3, lub liniowa kombinacja
powyższych.
-1 0 1
0.5
1.0
3
1
3
1
46829.1)cos(
1
1
dxx
676.13
1cos
3
1cos
Błąd 4.2%
)()()()(:3 332211
1
1xfcxfcxfcdxxfn
x3 x1 -1 1 x2
Aby zwiększyć dokładność obliczeń należy wziąć więcej wyrazów w kwadraturze:
Wybieramy (c1, c2, c3, x1, x2, x3) tak, by metoda zwróciła dokładną wartość całki,
gdy funkcja ma postać f(x) = x0, x1, x2, x3, x4, x5
5
33
5
22
5
11
1
1
55
4
33
4
22
4
11
1
1
44
3
33
3
22
3
11
1
1
33
2
33
2
22
2
11
1
1
22
332211
1
1
321
1
1
0
5
2
0
3
2
0
21
xcxcxcdxxxf
xcxcxcdxxxf
xcxcxcdxxxf
xcxcxcdxxxf
xcxcxcxdxxf
cccxdxf
5/3
0
5/3
9/5
9/8
9/5
3
2
1
3
2
1
x
x
x
c
c
c
Sześć równań z sześcioma niewiadomymi
)5
3(f
9
5)0(f
9
8)
5
3(f
9
5dx)x(fI
1
1
46829.1)cos(
1
1
dxx
676.13
1cos
3
1cos
Błąd 4.2%
68285.15
3cos
9
50cos
9
8
5
3cos
9
5
Błąd 0.005%
Wagi i położenia punktów Gaussa są słuszne tylko w przypadku całkowania
w granicach [-1, 1].
dt
abbatabf
dtabdx
baabtxdxxf
b
a2
)(
2
)(
)(2
1
)(2
1
)(
1
1
W ogólności konieczna transformacja zmiennych:
Przykład:
926477.52164
0
2 dxxeI x
1
1
1
1
444
0
2 )()44(
2;2222
dttfdtetdxxeI
dtdxtab
tab
x
tx
%)37.0(54375.5197
)339981.0()339981.0(652145.0
)861136.0()861136.0(34785.0)(1
1
ff
ffdttfI
Przybliżenie czterema punktami Gaussa:
0 4 8
0
3
6
N
i
ii xfxfh
fI1
1)()(2
)(
]4840400[24
]54707054[24
]24646472[24
2688]256496496448[23
256
496
448
Całki wielokrotne
A
b
a
dxxGdAyxfI )(),(
)(
)(
),()(
xp
xg
dyyxfxG