postać centralna

Transkrypt

postać centralna
Metody numeryczne
Wykład nr 6
Różniczkowanie
dr hab. Piotr Fronczak
Różniczkowanie numeryczne
Wzory różniczkowania numerycznego znajdują zastosowanie wtedy, gdy trzeba wyznaczyć
pochodne odpowiedniego rzędu funkcji f(x), która określona jest tablicą lub ma
skomplikowaną postać analityczną.
Dwa podstawowe sposoby różniczkowania numerycznego:
1.
Metoda różnic skończonych – metoda polegająca
na przybliżeniu pochodnej funkcji poprzez skończone
różnice, w zdyskretyzowanej przestrzeni. Można ją
wyprowadzić wprost z ilorazu różnicowego, bądź
z rozwinięcia w szereg Taylora.
2.
Różniczkowanie funkcji aproksymującej –
aproksymujemy punkty wyrażeniem, które może być
łatwo różniczkowalne, np. wielomianem, funkcją
wykładniczą, itp.
Różniczkowanie numeryczne
Wzory różniczkowania numerycznego znajdują zastosowanie wtedy, gdy trzeba wyznaczyć
pochodne odpowiedniego rzędu funkcji f(x), która określona jest tablicą lub ma
skomplikowaną postać analityczną.
Dwa podstawowe sposoby różniczkowania numerycznego:
1.
Metoda różnic skończonych – metoda polegająca
na przybliżeniu pochodnej funkcji poprzez skończone
różnice, w zdyskretyzowanej przestrzeni. Można ją
wyprowadzić wprost z ilorazu różnicowego, bądź
z rozwinięcia w szereg Taylora.
2.
Różniczkowanie funkcji aproksymującej –
aproksymujemy punkty wyrażeniem, które może być
łatwo różniczkowalne, np. wielomianem, funkcją
wykładniczą, itp.
W przypadku silnie zaszumionych
danych różniczkowanie metodą
różnic skończonych może dać
fatalny efekt.
Wyprowadzenie metody różnic skończonych ze wzoru Taylora
Rozwinięcie funkcji analitycznej f(x) w otoczeniu punktu x w szereg Taylora
można wyrazić w postaci

h (1)
h 2 ( 2)
hk (k )
f ( x  h)  f ( x )  f ( x ) 
f ( x)     f ( x)
1!
2!
k 0 k !
Zdefiniujemy operator różniczkowania
Df ( x)  f (1) ( x)
D k f ( x)  D( D k 1 f ( x))  f ( k ) ( x)
Zatem
hD h 2 D 2
f ( x  h)  (1 

 ) f ( x)  e hD f ( x)
1!
2!
Zdefiniujmy operatory różnicy zwykłej , i wstecznej :
f ( x)  f ( x  h)  f ( x)
Czyli
f ( x)  f ( x)  f ( x  h)
f ( x  h)  (1  ) f ( x)
Z porównania zależności uzyskujemy wzór na równość operatorów
1     e hD
1     e hD
Logarytmując obustronnie otrzymamy
hD  ln(1  )
D  1h ln(1  )
Podnosząc obustronnie do potęgi k-tej, uzyskamy
Dk 
Ponieważ
1
k


ln(
1


)
hk
ln(1  )    2 
2
3
3
 4  
4
2
3
4
1



D k  k ( 
 
 ) k
h
2
3
4
1
2 3 4
D  k ( 
 
 ) k
h
2
3
4
k
Możemy zatem wyprowadzić wzory na dowolne pochodne funkcji f(x) wyrażone
za pomocą różnic zwykłych:
k=1


1
f ( x)  f ( x)  12 2 f ( x)  13 3 f ( x)  14 4 f ( x)  
h
(1)
k=2
f ( 2 ) ( x) 




1 2
3
10 5
11 4

f
(
x
)


f
(
x
)


f
(
x
)

12
12  f ( x )  
2
h
k=3
f
( 3)
1 3
45 6
( x)  3  f ( x)  32 4 f ( x)  74 5 f ( x)  24
 f ( x)  
h
Sprawdź, że
f ( xi 1 )  f ( xi )
h
 3 f ( xi )  4 f ( xi 1 )  f ( xi  2 )
f ' ( xi ) 
2h
f ( xi )  2 f ( xi 1 )  f ( xi  2 )
f ' ' ( xi ) 
h2
2 f ( xi )  5 f ( xi 1 )  4 f ( xi  2 )  3 f ( xi 3 )
f ' ' ( xi ) 
h2
f ' ( xi ) 
Zróbmy to samo za pomocą różnic wstecznych. Zauważmy, że
(1  )(1  ) f ( x)  (1  ) f ( x  h)  f ( x  h)  f ( x  h)
 f ( x  h)   f ( x  h)  f ( x )   f ( x )
Zatem
1     1   1
1
k
Wstawiając powyższy wzór do wzoru D  k ln(1   ), otrzymujemy
h
k
Dk 
Ponieważ


1
1
k
1 k


ln(
1


)


ln(
1


)
hk
hk


 2 3  4
ln(1  )    


 
2
3
4


1
D  k
h
k





  


 
2
3
4


2
3
4
k
1
D  k
h
k





  


 
2
3
4


2
3
4
k
Możemy zatem wyprowadzić wzory na dowolne pochodne funkcji f(x) wyrażone za
pomocą różnic wstecznych:
k=1
f (1) ( x) 


1
f ( x)  12  2 f ( x)  13  3 f ( x)  
h
k=2
f ( 2 ) ( x) 


1 2
3
4
11

f
(
x
)


f
(
x
)


f ( x)  
12
2
h
k=3
f ( 3) ( x ) 


1 3
3 4
7 5
34 6

f
(
x
)


f
(
x
)


f
(
x
)

2
4
24  f ( x) 
3
h
Różnice centralne
Wyprowadzone wcześniej wzory różniczkowania numerycznego funkcji f(x) w
punkcie x = x0 mają tę wadę, że wykorzystuje się w nich jedynie wartości
funkcji f(x) dla argumentów leżących z jednej strony x0 . Wady tej nie posiadają
wzory wykorzystujące wartości funkcji f(x) po prawej i po lewej stronie punktu x
= x0 . Są to wzory symetryczne, oparte na różnicach centralnych.
2
D
h
h D  h  D2

2
f  x    (1 
 
 ) f ( x)  e f ( x)
2
2 1!  2  2!

2
h
 D
h
h D  h  D2

f  x    (1 
 
 ) f ( x)  e 2 f ( x)
2
2 1!  2  2!

Zdefiniujmy operator różnicy centralnej
 f ( x)  f ( x  h2 )  f ( x  h2 )
h
Zatem
 h2 D  h2 D 
 f ( x )  e  e  f ( x )


 e
h
D
2
e
h
 D
2
 2 sinh  h2 D 
h
arcsinh(2 )  D
2
2
D  arcsinh(2 )
h
Rozwijając w szereg Taylora:
3
5
7


2  1 1    1 3 1    1 3  5 1   
D  
  
  
   ...
h  2 2 3  2  2  4 5  2  2  4  6 7  2 

2   
D  
h 2 h
f ( x  h2 )  f ( x  h2 )
Df ( x) 
h
 f ( x  h2 )  f ( x  h2 )  1
h
h

D f ( x)  D 

Df
(
x

)

Df
(
x

2
2 )

h

 h
2

1  f ( x  h)  f ( x )  f ( x )  f ( x  h)   f ( x  h)  2 f ( x )  f ( x  h)



h
h
h
h2

operator
uśredniania
Oszacowanie błędów
hk (k )
f ( x  h)  f ( x )  
f ( x)
k
!
k
W szczególności:
f ( x  h)  f ( x)  hf (1) ( x)  O(h2 )  O(h3 )
(1)
f ( x  h)  f ( x)  hf (1) ( x)  O(h2 )  O(h3)
(2)
O(h 3 )  O(h 2 )
f ( x  h)  f ( x )
z równ. (1)  f ( x) 
 O ( h)  O ( h 2 )
h
f ( x )  f ( x  h)
(1)
z równ. (2)  f ( x) 
 O ( h)  O ( h 2 )
h
(1)
z równ. (1)  (2)  f ( x  h)  f ( x  h)  2hf (1) ( x)  O(h3 )
f (1) ( x) 
f ( x  h)  f ( x  h)
 O(h 2 )
2h
Podsumowanie
Pierwsze pochodne
Dwupunktowe różnice zwykłe
f ' ( xi ) 
Trzypunktowe różnice zwykłe
f ' ( xi ) 
Dwupunktowe różnice wsteczne
f ' ( xi ) 
Trzypunktowe różnice wsteczne
f ' ( xi ) 
Dwupunktowe różnice centralne
f ' ( xi ) 
Czteropunktowe różnice centralne
f ' ( xi ) 
f ( xi 1 )  f ( xi )
h
 3 f ( xi )  4 f ( xi 1 )  f ( xi  2 )
2h
f ( xi )  f ( xi 1 )
h
f ( xi  2 )  4 f ( xi 1 )  f ( xi )
2h
f ( xi 1 )  f ( xi 1 )
2h
f ( xi  2 )  8 f ( xi 1 )  8 f ( xi 1 )  f ( xi  2 )
12h
O ( h)
O(h 2 )
O ( h)
O(h 2 )
O(h 2 )
O(h 4 )
Drugie pochodne
f ( xi )  2 f ( xi 1 )  f ( xi  2 )
h2
f ( xi  2 )  2 f ( xi 1 )  f ( xi )
f ' ' ( xi ) 
Trzypunktowe różnice wsteczne
h2
f ( xi 1 )  2 f ( xi )  f ( xi 1 )
f ' ' ( xi ) 
Trzypunktowe różnice centralne
h2
 f ( xi  2 )  16 f ( xi 1 )  30 f ( xi )  16 f ( xi 1 )  f ( xi  2 )
Pięciopunktowe różnice centralne f ' ' ( xi ) 
12h 2
Trzypunktowe różnice zwykłe
f ' ' ( xi ) 
O ( h)
O ( h)
2
O(h )
O(h 4 )
Różniczkowanie za pomocą wielomianów Lagrange’a
Zapiszmy wielomian przechodzący przez trzy punkty (xi, yi), (xi+1, yi+1), (xi+2, yi+2)
f ( x) 
( x  xi 1 )( x  xi  2 )
( x  xi )( x  xi  2 )
( x  xi )( x  xi 1 )
yi 
yi 1 
yi  2
( xi  xi 1 )( xi  xi  2 )
( xi 1  xi )( xi 1  xi  2 )
( xi  2  xi )( xi  2  xi 1 )
Różniczkując
f ' ( x) 
2 x  xi 1  xi  2
2 x  xi  xi  2
2 x  xi  xi 1
yi 
yi 1 
yi  2
( xi  xi 1 )( xi  xi  2 )
( xi 1  xi )( xi 1  xi  2 )
( xi  2  xi )( xi  2  xi 1 )
Podstawmy x = xi+1
f ' ( xi 1 ) 
xi 1  xi  2
2 xi 1  xi  xi  2
xi 1  xi
yi 
yi 1 
yi  2
( xi  xi 1 )( xi  xi  2 )
( xi 1  xi )( xi 1  xi  2 )
( xi  2  xi )( xi  2  xi 1 )
f ' ( xi 1 ) 
xi 1  xi  2
2 xi 1  xi  xi  2
xi 1  xi
yi 
yi 1 
yi  2
( xi  xi 1 )( xi  xi  2 )
( xi 1  xi )( xi 1  xi  2 )
( xi  2  xi )( xi  2  xi 1 )
Uwagi:
1. Gdy punkty są równomiernie rozłożone, czyli xi+2 - xi+1 = xi+1 - xi = h
f ' ( xi 1 ) 
h
hh
h
yi 
yi 1 
yi  2
(h)(2h)
(h)(h)
(2h)(h)
f ' ( xi 1 ) 
y  yi
1
1
yi 
yi  2  i  2
2h
2h
2h
Wzór dla różnic
centralnych
2. Zaleta nr 1: punkty nie muszą być równomiernie rozłożone
3. Zaleta nr 2: możemy policzyć pochodną w dowolnym punkcie między xi a xi+2.
Błąd w różniczkowaniu numerycznym
Rozważmy funkcję
f(x) = ex
Policzmy pochodną w punkcie x=0 korzystając z dwupunktowych różnic centralnych.
f ' ( xi ) 
f ( xi 1 )  f ( xi 1 )
 O(h 2 )
2h
gdzie xi 1  h oraz xi 1  h
eh  eh
f ' (0) 
 O(h 2 )
2h
Podczas obliczeń komputer wprowadza błąd zaokrąglenia
e h  e h  R2
eh  eh  R1
Wartości dokładne
e h  R1  e  h  R2
e h  e  h R1  R2
2
f ' (0) 
 O(h ) 

 O(h 2 )
2h
2h
2h
Błąd
Błąd
zaokrąglenia obcięcia
Gdy zmniejszamy h, błąd obcięcia maleje,
ale błąd zaokrąglenia rośnie.
całkowity
błąd
h
Pochodne cząstkowe
Proste rozszerzenie metod dla pochodnych zupełnych (jednowymiarowych)
(i, j+2)
(i-2, j)
(i-1, j+1)
(i, j+1)
(i+1, j+1)
(i-1, j)
(i, j)
(i+1, j)
(i-1, j-1)
(i, j-1)
(i+1, j-1)
(i, j-2)
fx 
f xx 
f
x
2 f
x 2
 1
 h1  1

1
2h
0
2
2

1 
1
(i+2, j)
Operator Laplace’a
1
h2
 2 f  f xx  f yy
|
1  2  1
j+1
1
j+1
j
|
 2 
j
+
|
1
h2
|
j-1
i-1
i
i+1
=
i-1
1
h2
j-1
1
i
1
j+1
|
1  4  1
j
|
j-1
1
i-1
i
i+1
i+1
Pochodne mieszane
f

yx
1

y 2 h
0
 0 
|
|
|
-1
 0 
1
|
|
|
0
 0 
0
i-1
i
=
1
4h2
1
|
j-1
j+1
|
0  0  0
|
|
1
 0 
i-1
j
i+1
1  0 
|
j+1
0
i
|
1
i+1
j
j-1
=
Bilaplasjan (operator bi-harmoniczny)
4
2
4



f
f
f
4f 



2
4
2
2
4
x
x y
y
1
h4
1
|
2  8  2
|
|
|
1   8  20   8  1
|
|
|
2  8  2
|
1
i-2
i-1
i
i+1
i+2
j+2
j+1
j
j-1
j-2