33
Metody numeryczne- wybrane zagadnienia dr Bogdan Grabiec Zielona Góra 2010 Tytuł projektu: Unowocześnienie programów, poprawa jakości kształcenia oraz otwarcie nowej specjalności ekofizyka na kierunku fizyka w Uniwersytecie Zielonogórskim, Wniosek: POKL 04.01.01-00-041/09-00 Program Operacyjny Kapitał Ludzki Priorytet: IV. Szkolnictwo wyższe i nauka Działanie: 4.1 Wzmocnienie i rozwój potencjału dydaktycznego uczelni oraz zwiększenie liczby absolwentów kierunków o kluczowym znaczeniu dla gospodarki opartej na wiedzy, Poddziałanie: 4.1.1 Wzmocnienie potencjału dydaktycznego uczelni Beneficjent: Uniwersytet Zielonogórski, ul. Licealna 9, 65-417 Zielona Góra

Metody numeryczne- wybrane zagadnienia - if.uz.zgora.plekokomp/metody_numeryczne.pdf · Metody numeryczne- wybrane zagadnienia dr Bogdan Grabiec Zielona Góra 2010 Tytuł projektu:

Embed Size (px)

Citation preview

Page 1: Metody numeryczne- wybrane zagadnienia - if.uz.zgora.plekokomp/metody_numeryczne.pdf · Metody numeryczne- wybrane zagadnienia dr Bogdan Grabiec Zielona Góra 2010 Tytuł projektu:

Metody numeryczne- wybrane zagadnienia

dr Bogdan Grabiec

Zielona Góra 2010

Tytuł projektu: Unowocześnienie programów, poprawa jakości kształcenia oraz otwarcie nowejspecjalności ekofizyka na kierunku fizyka w Uniwersytecie Zielonogórskim,

Wniosek: POKL 04.01.01-00-041/09-00Program Operacyjny Kapitał Ludzki

Priorytet: IV. Szkolnictwo wyższe i naukaDziałanie: 4.1 Wzmocnienie i rozwój potencjału dydaktycznego uczelni oraz zwiększenie liczby

absolwentów kierunków o kluczowym znaczeniu dla gospodarki opartej na wiedzy,Poddziałanie: 4.1.1 Wzmocnienie potencjału dydaktycznego uczelniBeneficjent: Uniwersytet Zielonogórski, ul. Licealna 9, 65-417 Zielona Góra

Page 2: Metody numeryczne- wybrane zagadnienia - if.uz.zgora.plekokomp/metody_numeryczne.pdf · Metody numeryczne- wybrane zagadnienia dr Bogdan Grabiec Zielona Góra 2010 Tytuł projektu:

Spis treści

1 Interpolacja. Interpolacja Lagrange’a 3

2 Aproksymacja 92.0.1 Aproksymacja średniokwadratowa . . . . . . . . . . . . 92.0.2 Aproksymacja jednostajna . . . . . . . . . . . . . . . . 11

3 Numeryczne różniczkowanie 15

4 Całkowanie numeryczne 174.0.3 Metoda trapezów . . . . . . . . . . . . . . . . . . . . . 184.0.4 Metoda Simpsona . . . . . . . . . . . . . . . . . . . . . 20

5 Numeryczne rozwiązywanie równań 23

6 Równania rożniczkowe 27

1

Page 3: Metody numeryczne- wybrane zagadnienia - if.uz.zgora.plekokomp/metody_numeryczne.pdf · Metody numeryczne- wybrane zagadnienia dr Bogdan Grabiec Zielona Góra 2010 Tytuł projektu:

2 SPIS TREŚCI

Page 4: Metody numeryczne- wybrane zagadnienia - if.uz.zgora.plekokomp/metody_numeryczne.pdf · Metody numeryczne- wybrane zagadnienia dr Bogdan Grabiec Zielona Góra 2010 Tytuł projektu:

Rozdział 1

Interpolacja. InterpolacjaLagrange’a

Wyobraźmy sobie że mamy zadaną funkcje y=f(x) dla x0 ∈ [x1, x2]. Określe-nie wartości funkcji dla x z tego przedziału, nie stanowi problemu, wystarczywyznaczyć y0 = f(x0). Sprawa się komplikuje gdy nie dysponujemy już ścisłąpostacią funkcji a jedynie zbiorem punktów (x1, y1), ..., (xN , yn). Sposób wy-znaczenia przybliżonej wartości funkcji dla argumentu x0 znajdującego siemiędzy zadanymi punktami już nie jest takie proste. Jednym z sposobówrealizujących powyższe zagdanienie nosi nazwę interpolacji.

Przykład 1

3

Page 5: Metody numeryczne- wybrane zagadnienia - if.uz.zgora.plekokomp/metody_numeryczne.pdf · Metody numeryczne- wybrane zagadnienia dr Bogdan Grabiec Zielona Góra 2010 Tytuł projektu:

4 ROZDZIAŁ 1. INTERPOLACJA. INTERPOLACJA LAGRANGE’A

Dysponując dwoma punktami o współrzędnych : (x1, y1 = f(x1)) oraz(x2, y2 = f(x2)).Określimy przybliżoną watość funkcji dla argumentu x0 zprzedziału należącego do [x1, x2]. Problem ten możemy rozwiązać następują-co: szukamy równanie prostej przechodzącej przez dane punkty

y1 − y

x1 − x=y2 − y1x2 − x1

.

Na podstawie powyższego równania, możemy wyznaczyć wartość y

y =y2 − y1x2 − x1

(x− x1) + y1

a tym samym, przybliżona wartość dla x=x0

y0 =y2 − y1x2 − x1

(x0 − x1) + y1

Przykład 2

Zagadnienie to możemy rozszerzyć o znajomość wspólrzędnych następnegopunktu. Tym razem zadamy sobie pytanie jaki wielomian, tzn. o jakim stop-niu możemy przeprowadzic przez podane trzy punkty. Odpowiedzią na zada-ny problem jest funkacja kwadratowa postaci f(x) = a2x

2+a1x+a0. Musimyznaleźć wielkości a,b i c wyrażone poprzez znajomość x1, x2, x3, y1, y2, y3 Uzy-skujemy układ równań postaci:

a2x21 + a1x1 + a0 = y1

a2x22 + a1x2 + a0 = y2

a2x23 + a1x3 + a0 = y3

Rozwiązanie ma postać:

a2 =

x21 x1 y1x22 x2 y2x23 x3 y3

W

a1 =

x21 y1 1x22 y2 1x23 y3 1

W

a2 =

y1 x1 1y2 x2 1y3 x3 1

W

Page 6: Metody numeryczne- wybrane zagadnienia - if.uz.zgora.plekokomp/metody_numeryczne.pdf · Metody numeryczne- wybrane zagadnienia dr Bogdan Grabiec Zielona Góra 2010 Tytuł projektu:

5

gdzie

W =

x21 x1 1x22 x2 1x23 x3 1

= (x3 − x2)(x3 − x1)(x2 − x1)

Co pozwala zapisać ostatecznie:

W3(x) = y1(x− x2)(x− x3)

(x2− x1)(x3− x1)−y2(x− x1)(x− x2)

(x2 − x1)(x3 − x2)+y3(x− x1)(x− x2)

(x3 − x1)(x3 − x1)

Możemy sformułować następującą własność w postaci twierdzenia.

Twierdzenie 1.0.1 Dla zadanych N punktów :(x1, y1), ...., (xN , yN), którebędziemy nazywać węzłami interpolacyjnymi, istnieje dokładnie jeden wie-

lomian stopnia N, postaci

WN(x) =N∑

i=0

aixi.

dowód

Zadane punkty muszą spełniać powyższe rownania

a0 + a1x1 + ...+ aNxN1 = y1

...........................a0 + a1xN + ... + aNx

NN = yN

Page 7: Metody numeryczne- wybrane zagadnienia - if.uz.zgora.plekokomp/metody_numeryczne.pdf · Metody numeryczne- wybrane zagadnienia dr Bogdan Grabiec Zielona Góra 2010 Tytuł projektu:

6 ROZDZIAŁ 1. INTERPOLACJA. INTERPOLACJA LAGRANGE’A

Ponownie, rozwiązania dla powyższego układu stosując twierdzenie Cra-mera, możemy zapisać w postaci:

ai =1

D

n∑

j=0

yjDij

gdzieDij oznacza dopełnienia algebraiczne elementów i-tej kolumny macierzyA postaci

A =

1 x1 x21 ... x

N1

1 x2 x22 ... x

N2

... ... ... ... ...1 xN x

2N ... x

NN

co kończy dowód. Warto wspomnieć że wyznacznik macierzy A nie jest trudnydo obliczenia.

|A| =∏

0¬j<i¬n

(xi − xj) 6= 0

Jest to tzw. wyznacznik Vandermonde’a.

Twierdzenie 1.0.2 Dla danych węzłów interpolacyjnych x0, x1, ..., xN ∈ [a, b]i danej funkcji f ∈ C [n+1][a, b] możemy dla dowolnego punktu x ∈ [a, b] zna-leźć takie ζ = ζ(x) ∈ [a, b] że

f(x) = P (x) +f (n+1)(ζ(x))

(n+ 1)!(x− x0)(x− x1)...(x− xN )

gdzie

P (x) =N∑

k=0

f(xk)Ln,k(x),

Ln,k(x) =N∏

i=0,i6=k

(x− xi)

(xk − xi)

dla k = 0, 1, ..., n.dowód:

Jeśli x = xk dla k = 0, 1, ..., n, f(xk) = P (xk).Natomiast gdy x 6= xk wprowadzam funkcję:

g(t) = f(t)− P (t)− [f(x)− P (x)](t− x0)(t− x1)...(t− xN )

(x− x0)(x− x1)...(x− xN)

= f(t)− P (t)− [f(x)− P (x)]n∏

i=0

(t− xi)

(x− xi)

Page 8: Metody numeryczne- wybrane zagadnienia - if.uz.zgora.plekokomp/metody_numeryczne.pdf · Metody numeryczne- wybrane zagadnienia dr Bogdan Grabiec Zielona Góra 2010 Tytuł projektu:

7

Patrząc na funkcję g, widać że musi być klasy c[n+1][a, b]. Dla t = xk orazt = x g = 0. W związku z tym mogę wykorzystać n+1 razy twierdzenieRolle’a. Wobec tego mogę zapisać:

0 = g(n+1)(ζ) = f (n+1)(ζ)−P (n+1)(ζ)− [f(x)− P (x)]d(n+1)

dt(n+1)

n∏

i=0

(t− xi)

(x− xi)|t=ζ .

Wielkość P (x) jest wielomianem stopnia n. Pochodna (n+1) rzędu z wielkościdaje nam w wyniku zero. Natomiast

d(n+1)

dt(n+1)

n∏

i=0

(t− xi)

(x− xi)|t=ζ =

(n+ 1)!∏ni=0(x− xi)

.

ostatecznie uzyskujemy

0 = f (n+1)(ζ)− 0− [f(x)− P (x)](n+ 1)!

∏ni=0(x− xi)

.

f(x) = P (x) +f (n+1)(ζ)

(n+ 1)!

n∏

i=0

(x− xi).

Przykład 3

Dla danych punktów:(-2,3),(1,1),(2,-3),(4,8) znaleźć wielomian interpolacyj-nyrozwiązanie

W4(x) = 3(x− 1)(x− 2)(x− 4)

(−2− 1)(−2− 2)(−2− 4)+ 1(x+ 2)(x− 2)(x− 4)

(1− 3)(1− 2)(1− 4)

− 3(x+ 2)(x− 1)(x− 4)

(2 + 2)(2− 1)(2− 4)+ 8(x+ 2)(x− 1)(x− 1)

(4 + 2)(4− 1)(4− 2).

Oszacowanie błędu wzoru interpolacyjnego. Problem tego zagadnienia po-lega na wyznaczeniu wielkości

ε(x) = f(x)−Wn(x),

która będzie nas informowała o tym jak poważne są odchylenia wartości funk-cji od wartości opartej na wielomianie interpolacyjnym. W tym celu wpro-wadzamy funkcje typu:

ϕ(u) = f(u)−Wn(u) +K(U − x0)(u− x1)...(u− xn),

wykorzystujac twierdzenie Rolle’a (n+1) razy, uzyskamy

K =f (n+1)(ζ)

(n+ 1)!

a tym samym

|f(x)−Wn(x)| ¬Mn+1(n+ 1)!

|Wn(x)|.

Page 9: Metody numeryczne- wybrane zagadnienia - if.uz.zgora.plekokomp/metody_numeryczne.pdf · Metody numeryczne- wybrane zagadnienia dr Bogdan Grabiec Zielona Góra 2010 Tytuł projektu:

8 ROZDZIAŁ 1. INTERPOLACJA. INTERPOLACJA LAGRANGE’A

Page 10: Metody numeryczne- wybrane zagadnienia - if.uz.zgora.plekokomp/metody_numeryczne.pdf · Metody numeryczne- wybrane zagadnienia dr Bogdan Grabiec Zielona Góra 2010 Tytuł projektu:

Rozdział 2

Aproksymacja

Wprowadzmy następujące oznaczenia:f(x) - funkcja która chcemy przbliżyć,F(x) - funkcja która przybliżamy funkcję f(x) i nazywamy ją funkcją aprok-symującą.Warto wspomieć że jeśli aproksymacje rozważamy na przedziale to bę-

dziemy ją nazywać aproksymacją intergralna, natomiast jeśli na zbiorze dys-kretnym to aproksymacją punktową.Poprzez aproksymacje funkcji f(x) rozumiemy znalezienie takiej funkcji

F(x)F (x) = a0φ0(x) + ...+ amφm(x)

gdzie φ0, φ1, ..., φm oznacza bazę w przestrzeni m+1 wymiarowej, tak aby np.minimalizowała normę ||f(x) − F (x)||. Całe zagadnienie sprowadza się dowyznaczenia współczynników a0, a1, ..., am.

2.0.1 Aproksymacja średniokwadratowa

Dla tego problemu rozważymy aproksymacje punktową, której podstawą jestzminmalizowanie normy postaci

||F (x)− f(x)|| =n∑

i=0

(F (xi)− f(xi))2

gdzie i = 1, 2, 3, ...n.Jeśli rozważymy wykorzystanie bazy przestrzeni w postaci:

φ0(x) = 1, φ1(x) = x, φ2(x) = x2, ...., φm(x) = x

m.

Funkcje aproksymujacą możemy zapisać w postaci

F (x) =m∑

i=0

φi(x)xi.

9

Page 11: Metody numeryczne- wybrane zagadnienia - if.uz.zgora.plekokomp/metody_numeryczne.pdf · Metody numeryczne- wybrane zagadnienia dr Bogdan Grabiec Zielona Góra 2010 Tytuł projektu:

10 ROZDZIAŁ 2. APROKSYMACJA

Definiujemy funkcje H postaci:

H(a0, a1, a2, ..., am) =n∑

j=1

(

fj −m∑

i=0

aiφi(xj)

)2

Warunek konieczny pozwalający znaleźć minimum:

∂H

∂ak= −2

n∑

j=0

(

fj −m∑

i=0

aiφi(xj)

)

xkj = 0

Co pozwala zapisać powyższa zależność w postaci

m∑

i=0

aigik = ρk, k = 0, 1, 2, ..., m

gdzie

gik =n∑

j=0

xi+kj

ρk =n∑

j=0

f(xj)xkj

Przykład: regresja liniowa

Dysponujemy znajmościa współrzędnych punktów:(xi, yi), i = 1, 2, ..., mAproksymacji dokonujemy za pomocą funkcji:

F (x) = a0 + a1x.

W tym przypadku musimy zminimalizowac wyrażenie:

H(a0, a1) =m∑

j=1

(f(xj)− (a0 + a1xj))2 .

Warunek konieczny na istnienie minimum:

∂H(a0,a1)∂a0

= −2m∑

j=1

(f(xj)− (a0 + a1xj)) = 0

∂H(a0,a1)∂a1

= −2m∑

j=1

xj (f(xj)− (a0 + a1x)) = 0

Rozwiązując powyższe równania uzyskujemy

a0 =〈y〉〈x2〉 − 〈x〉〈xy〉

〈x2〉 − (〈x〉)2

a1 =〈xy〉 − 〈x〉〈y〉

〈x2〉 − (〈x〉)2

Page 12: Metody numeryczne- wybrane zagadnienia - if.uz.zgora.plekokomp/metody_numeryczne.pdf · Metody numeryczne- wybrane zagadnienia dr Bogdan Grabiec Zielona Góra 2010 Tytuł projektu:

11

gdzie

〈x〉 =

m∑

i=0

xi

m

〈y〉 =

m∑

i=0

yi

m

〈xy〉 =

m∑

i=0

xiyi

m

〈x2〉 =

m∑

i=0

(xi)2

m

2.0.2 Aproksymacja jednostajna

W tym przypadku rozważamy funkcję f(x), x ∈< a, b >. Szukamy najmniej-szej maksymalnej różnicy

||F (x)− f(x)|| = supx∈<a,b>|F (x)− f(x)|

Metoda szeregów potęgowych

Metoda ta jest jedną z najbardziej znanych sposobów aproksymacji jedno-stajnej. Polega ona na przybliżaniu funkcji szregiem potęgowym, oczywiścieskończonym.

F (x) = f(x0) +f (1)(x0)

1!(x− x0) + ...+

f (m)(x0)

m!(x− x0)

m

W tym przypadku błąd aproksymacji wyznaczymy za pomocą zależności

|f(x)− F (x)| ¬Mm+1(m+ 1)!

δm+1

Przykład

Funkcje f(x) = sin(x), dla x ∈< −0.1; 0.1 > możemy przybliżyć funkcją

sin(x) = x−x3

6+x5

120

Page 13: Metody numeryczne- wybrane zagadnienia - if.uz.zgora.plekokomp/metody_numeryczne.pdf · Metody numeryczne- wybrane zagadnienia dr Bogdan Grabiec Zielona Góra 2010 Tytuł projektu:

12 ROZDZIAŁ 2. APROKSYMACJA

Przybliżenie Pade’go

W tym przypadku funkcja aproksymujacą przyjmuje postać

F (x) = Rn,k(x) =Ln(x)

Mk(x)=a0 + aax+ ...+ anx

n

1 + b1x+ ...+ bkxk

gdzie N = n+m. Na podaną funkcję nakładamy następującę warunki

1. f(0) = Rn,k(0) =Ln(0)Mk(0)

2. pochodne f (m)(0)−R(m)n,k (0) = 0 dla m=1,2,..., N

Rozwinięcie funkcji f(x) w szereg Taylora w x = 0 można zapisać:

f(x) =∞∑

i=0

cixi.

Błąd aproksymacji będzie miał następującą postać:

ε(x) = f(x)−Ln(x)

Mk(x).

Uwzględniając warunki (1) i (2) uzyskujemy równanie:

∞∑

i=0

cixik∑

i=0

bixi −n∑

i=0

aixi =∞∑

i=n+k+1

dixi

które prowadzi do następujących zależności pomiędzy wspołczynnikami a, bi c

cj = = 0 j < 0bj = = 0 j > kk∑

j=0

cn+k−s−jbj = 0 s = 0, 1, ..., k − 1

ar =k∑

j=0

cr−jbj r = 0, 1, ..., n.

Przykład

Rozważmy funkcje f(x) = ex na przedziale x ∈< −0.5; 0.5 >. Znajdziemyprzybliżenie Pade’go R2,1(x), n = 2, k = 1, N = 3 dla tej funkcji.Rozwinięcie Taylora ma postać

f(x) = 1 + x+x2

2+x3

6= R3,0(x)

Page 14: Metody numeryczne- wybrane zagadnienia - if.uz.zgora.plekokomp/metody_numeryczne.pdf · Metody numeryczne- wybrane zagadnienia dr Bogdan Grabiec Zielona Góra 2010 Tytuł projektu:

13

wobec tego c0 = 1, c1 = 1, c2 = 0.5, c3 = 1/6.Z równań na wspołczynniki b i c otrzymujemy:

c3−0−0b0 + c3−0−1b1 = c3b0 + c2b1 =1

6+1

2b1 = 0⇒ b1 = −

1

3

a0 = c0b0 = 1, a1 = c1b0 + c0b1 = 1−1

3=2

3, a2 = c2b0 + c1b1 =

1

2−1

3=1

6.

Ostatecznie możemy zapisać

R2,1 =1 + 2

3x+ 1

6x2

1− 13x.

Page 15: Metody numeryczne- wybrane zagadnienia - if.uz.zgora.plekokomp/metody_numeryczne.pdf · Metody numeryczne- wybrane zagadnienia dr Bogdan Grabiec Zielona Góra 2010 Tytuł projektu:

14 ROZDZIAŁ 2. APROKSYMACJA

Page 16: Metody numeryczne- wybrane zagadnienia - if.uz.zgora.plekokomp/metody_numeryczne.pdf · Metody numeryczne- wybrane zagadnienia dr Bogdan Grabiec Zielona Góra 2010 Tytuł projektu:

Rozdział 3

Numeryczne różniczkowanie

Bogata w informację jest znajomość pochodnej pewnej wielkości. W fizycenajczęściej podawane przykłady to definicje prędkości i przyśpieszenia.

v(t) = dr(t)dt

a(t) = dv(t)dt= d

2r(t)dt2

Znając równanie toru ruchu ciała, czyli funkcje r = r(t), jesteśmy w sta-nie powiedzieć z jaką szybkością porusza się ciało oraz jaka działa na niegosiła. Pierwszą uzyskamy z wyznaczenia pochodnej polożenia po czasie a dru-gą z pomnożenia masy przez drugą pochodną polożenia po czasie. Na tymprzykładzie widac, że, umiejętność policzenia pochodnej z danej funkcji jestniezbędna dla każdego inżyniera, fizyka czy matematyka.1. Pochodna numeryczna dwu-punktowa

Rozważmy funkcję f ∈ C2[a, b], oraz dwa punkty x0, x1 = x0 + h ∈ [a, b].Korzystając z twierdzenia z rodziału 1, możemy zapisać

f(x) = f0x− x1x0 − x1

+ f1x− x0x1 − x0

+(x− x0)(x− x1)

2!f ”(ζ)

Po podstawieniu i obliczeniu pochodnej po x

f ′(x) =f(x0 + h)− f(x0)

h+((x−x0)−h)f

”(ζ(x))+(x− x0)(x− x0 − h)

2!

d

dxf ”(ζ(x)).

Gdy podstawimy za x = x0, uzyskamy

f ′(x0) =f(x0 + h)− f(x0)

h−h

2f ”(ζ).

czyli

f ′(x0) =f(x0 + h)− f(x0)

h+O(h).

15

Page 17: Metody numeryczne- wybrane zagadnienia - if.uz.zgora.plekokomp/metody_numeryczne.pdf · Metody numeryczne- wybrane zagadnienia dr Bogdan Grabiec Zielona Góra 2010 Tytuł projektu:

16 ROZDZIAŁ 3. NUMERYCZNE RÓŻNICZKOWANIE

W podobny sposób możemy wyprowadzić wzory:2. Pochodna numeryczna trzy-punktowa

f ′(x0) =f(x0 + h)− f(x0 − h)

2h+O(h2)).

3. Pochodna numeryczna piecio-punktowa

f ′(x0) =f(x0 − 2h)− 8f(x0 − h) + 8f(x0 + h) + f(x0 + 2h)

12h+O(h4).

Natomiast wyższe pochodne wyznaczymy za pomocą wzorów:5. Druga pochodna numeryczna trzy-punktowa

f”(x0) =f(x0 + h)− 2f(x0) + f(x0 − h)

h2+O(h2).

oraz6. Druga pochodna numeryczna piecio-punktowa

f”(x0) =−f(x0 − 2h) + 16f(x0 − h)− 30f(x0) + 16f(x0 + h)− f(x0 + 2h)

12h2+O(h2).

Powyższe równania można wyprowadzić korzystając z rozwinięcia w sze-reg Taylora funkcji f(x) w otoczeniu punktu x0

f(x) = (f(x0)+f ′(x0)

1(x−x0)+

f“(x0)

2!(x−x0)

2+ ...+f (n)(x0)

n!(x−x0)

n+ ..

Dla x = xk+1 oraz wiedząc, ze xk+1 − x0 = xk+1 − xk = h

f(xk+1) = fk+1 = fk + f′k · h +

1

2f ′′k · h

2 +1

6f(3)k · h

3 + ...

Przykład

Wyprowadzimy powyższa metoą wzór na pierwszą pochodną numeryczna3-punktowa. Wymagana jest zanjomość:

f(xk+1) = fk+1 = fk + f′k · h +

1

2f ′′k · h

2 +O(h3)

f(xk−1) = fk−1 = fk − f′k · h+

1

2f ′′k · h

2 +O(h3)

Tworzymy następującą kombinacje:

fk+1 − fk−1 = f′k · h+O(h

3)

Po przeksztłceniu uzyskujemy:

f ′k =fk+1 − fk−1h

+O(h2).

Page 18: Metody numeryczne- wybrane zagadnienia - if.uz.zgora.plekokomp/metody_numeryczne.pdf · Metody numeryczne- wybrane zagadnienia dr Bogdan Grabiec Zielona Góra 2010 Tytuł projektu:

Rozdział 4

Całkowanie numeryczne

Sytuacja jest bardzo podobna jak do analizowanych zagadnień w rodziałepoprzednim. Tym razem szukamy sposobu na obliczenie

r(t) =∫ t2

t1

v(t)dt

lub

v(t) =∫ t2

t1

a(t)dt.

Zagadnienie możemy rozważyc w sposob następujący:

∫ b

af(x)dx ≃

n∑

i=0

aif(xi).

Rozważymy stosowane najczęściej w obliczeniach: metode trapezów i Simp-sona.

17

Page 19: Metody numeryczne- wybrane zagadnienia - if.uz.zgora.plekokomp/metody_numeryczne.pdf · Metody numeryczne- wybrane zagadnienia dr Bogdan Grabiec Zielona Góra 2010 Tytuł projektu:

18 ROZDZIAŁ 4. CAŁKOWANIE NUMERYCZNE

4.0.3 Metoda trapezów

Niech x0 = a, x1 = b, h = b − a ponownie wykorzystujemy twierdzenie zrozdziału pierwszego

f(x) =x− x1x0 − x1

f(x0) +x− x0x1 − x0

f(x1)

Po podstawieniu:

∫ b

af(x)dx =

∫ x1

x0

(

x− x1x0 − x1

f(x0) +x− x0x1 − x0

f(x1))

dx

+1

2

∫ x1

x0

f”(ζ(x))(x− x0)(x− x1)dx.

Wykorzystując twierdzenie o wartości średniej:∫ x1

x0

f”(ζ(x))(x− x0)(x− x1)dx = f”(ζ)∫ x1

x0

(x− x0)(x− x1)dx

= −1

6h3.

Ostatecznie po obliczeniach:

∫ b

af(x)dx =

h

2(f(x0) + f(x1))−

1

12h3f”(ζ).

Program w c/c++ oparty na tej metodzie możemy zrealizować w nastę-pujący sposób, wynik uzyskamy tak jak w obliczeniach, oczywiście 0.5.

Page 20: Metody numeryczne- wybrane zagadnienia - if.uz.zgora.plekokomp/metody_numeryczne.pdf · Metody numeryczne- wybrane zagadnienia dr Bogdan Grabiec Zielona Góra 2010 Tytuł projektu:

19

#include<iostream>

#include<cmath>

using namespace std;

double fun(double x)

{

return x;

}

int main()

{

double a=0.0;

double b=1.0;

int N=100;

double h=(b-a)/100;

double calka=0.;

double x0=a;

for(int i=0;i<N;i++)

{

calka=calka+(h/2.)*(fun(x0+i*h)+fun(x0+(i+1)*h));

}

cout<<calka<<endl;

return 0;

}

Page 21: Metody numeryczne- wybrane zagadnienia - if.uz.zgora.plekokomp/metody_numeryczne.pdf · Metody numeryczne- wybrane zagadnienia dr Bogdan Grabiec Zielona Góra 2010 Tytuł projektu:

20 ROZDZIAŁ 4. CAŁKOWANIE NUMERYCZNE

4.0.4 Metoda Simpsona

Tym razem wybieramy trzy punkty : x0 = a, x2 = b, x1 = a + h, h =(b− a)/2

∫ b

af(x)dx =

∫ x2

x0

(x− x1)(x− x2)

(x0 − x1)(x0 − x2)f(x0)dx

+∫ x2

x0

(x− x0)(x− x2)

(x1 − x0)(x1 − x2)f(x1)dx

+∫ x2

x0

(x− x0)(x− x1)

(x2 − x0)(x2 − x1)f(x2)dx

+ 16

∫ x2

x0

f (3)(ζ(x))(x− x0)(x− x1)(x− x2)dx.

Po odpowiednim wycałkowaniu, uzyskujemy:

∫ x2

x0

f(x)dx =h

3(f(x0) + 4f(x1) + f(x2))−

h5

90f (4)(ζ)

Kod programu w c/c++ realizujący powyższy problem:

#include<iostream>

#include<cmath>

using namespace std;

double fun(double x)

{

Page 22: Metody numeryczne- wybrane zagadnienia - if.uz.zgora.plekokomp/metody_numeryczne.pdf · Metody numeryczne- wybrane zagadnienia dr Bogdan Grabiec Zielona Góra 2010 Tytuł projektu:

21

return x;

}

int main()

{

double a=0.0;

double b=1.0;

int N=100;

double h=(b-a)/100;

double calka=0.;

double x0=a;

for(int i=0;i<N/2;i++)

{

calka=calka+(h/3.)*(fun(x0+2*i*h)+4.*fun(x0+(2*i+1)*h)+fun(x0+(2*i+2)*h));

}

cout<<calka<<endl;

return 0;

}

Page 23: Metody numeryczne- wybrane zagadnienia - if.uz.zgora.plekokomp/metody_numeryczne.pdf · Metody numeryczne- wybrane zagadnienia dr Bogdan Grabiec Zielona Góra 2010 Tytuł projektu:

22 ROZDZIAŁ 4. CAŁKOWANIE NUMERYCZNE

Page 24: Metody numeryczne- wybrane zagadnienia - if.uz.zgora.plekokomp/metody_numeryczne.pdf · Metody numeryczne- wybrane zagadnienia dr Bogdan Grabiec Zielona Góra 2010 Tytuł projektu:

Rozdział 5

Numeryczne rozwiązywanierównań

Kiedy mamy dane równanie kwadratowe typu

f(x) = ax2 + bx+ c = 0,

bez problemu, przypominamy sobie odpowiednie wzory, które pozwalają namanalitycznie wyznaczyć miejsca zerowe. Pojawia sie problem gdy mamy dorozwiązania równanie postaci

f(x) = exp(−x) ln(x)− x ∗ x = 0.

Niestety już nie jesteśmy analitycznie rozwiązać to równanie. Możemy jedy-nie podać przybliżona wartość miejsca zerowego.Numeryczne metody rozwiązywanie równan f(x) = 0 z jedną niewiadoma:1.Metoda połowienia (bisekcji)Jeśli f ∈ C[a, b] i f(a) · f(b) < 0 to pierwiatek równania jest x0 ∈ [a, b].Metoda oparta jest na procedurze zmiejszania przedziału w taki sposób żepo każdym kroku jest o połowę mniejszy.przyklad

Rozważmy funkcje f(x) = x3 + 4x2 − 10. Zadamy sobie pytanie czy w prze-dziale < 1, 2 > znajduję się miejsce zerowe. Wyznaczamy:

f(1) = −5; f(2) = 6, f(1) · f(2) < 0.

Miejsce zerowe znajduję się w tym przedziale.

23

Page 25: Metody numeryczne- wybrane zagadnienia - if.uz.zgora.plekokomp/metody_numeryczne.pdf · Metody numeryczne- wybrane zagadnienia dr Bogdan Grabiec Zielona Góra 2010 Tytuł projektu:

24 ROZDZIAŁ 5. NUMERYCZNE ROZWIĄZYWANIE RÓWNAŃ

Przykład

Numerycznie rozwiązujemy równanie typu f(x) = exp(−x) ln(x)−x∗x = 0..Program w c/c++ realizujący ten problem może mieć postać:

#include<iostream>

#include<cmath>

using namespace std;

double fun(double x)

{

return exp(x)*log(x)-x*x;

}

int main()

{

double a=1.0;

double b=2.0;

double ab=b-a;

double delta=0.001;

double x0;

while( fabs(ab) > delta)

{

x0=(a+b)/2.0;

if(fun(a)*fun(x0) < 0.)

{

Page 26: Metody numeryczne- wybrane zagadnienia - if.uz.zgora.plekokomp/metody_numeryczne.pdf · Metody numeryczne- wybrane zagadnienia dr Bogdan Grabiec Zielona Góra 2010 Tytuł projektu:

25

b=x0;

ab=b-a;

}

else

{

a=x0;

ab=b-a;

}

cout<<x0<<endl;

}

return 0;

}

i uzyskujemy rozwiązania kolejno krok po kroku:1.5; 1.75; 1.625; 1.6875; 1.71875; 1.70312; 1.69531; 1.69141; 16336; 1.69434

2. Metoda Newtona

Jeśli f ∈ C2[a, b] tworzę ciąg typu

xn = xn−1 −f(xn−1)

f ′(xn−1).

Procedura trwa do momentu aż dla zadanej dokładności δ

|xn − xn−1| ¬ δ.

Page 27: Metody numeryczne- wybrane zagadnienia - if.uz.zgora.plekokomp/metody_numeryczne.pdf · Metody numeryczne- wybrane zagadnienia dr Bogdan Grabiec Zielona Góra 2010 Tytuł projektu:

26 ROZDZIAŁ 5. NUMERYCZNE ROZWIĄZYWANIE RÓWNAŃ

#include<iostream>

#include<cmath>

using namespace std;

double fun(double x)

{

return exp(x)*log(x)-x*x;

}

double fun1(double x)

{

return exp(x)*log(x)+exp(x)*(1./x)-2.*x;

}

int main()

{

double a=1.0;

double b=2.0;

double ab=b-a;

double delta=0.001;

double x0=(a+b)/2.;

double x1;

while( fabs(ab) > delta)

{

x1=x0-fun(x0)/fun1(x0);

ab=x1-x0;

x0=x1;

cout<<x1<<endl;

}

return 0;

}

Otrzymujemy w kolejnych krokach miejsc zerowe:1.7398; 1.69657; 1.6946; 1.6946.3.Metoda siecznych

xn+1 = xn −(xn − xn−1)fnfn − fn−1

.

Page 28: Metody numeryczne- wybrane zagadnienia - if.uz.zgora.plekokomp/metody_numeryczne.pdf · Metody numeryczne- wybrane zagadnienia dr Bogdan Grabiec Zielona Góra 2010 Tytuł projektu:

Rozdział 6

Równania rożniczkowe

Opis wielu zagadnień dla układów dynamicznych sprowadza się do równańrożniczkowych pierwszego rzędu. Ogólnie możemy zapisać to w postaci:

dy1dt= g1(y1, y2, ..., yn, t)

dy2dt= g2(y1, y2, ..., yn, t)

.... ... ..............................dyndt= gn(y1, y2, ..., yn, t)

Przyklad

Rozważmy oscylator harmoniczny w jednym wymiarze

dx

dt= g1(x, v, t)

dv

dt= g2(x, v, t)

gdzie g1(x, v, t) = v, g2(x, v, t) = −kx/m.1.Metoda EuleraNajprostszą metodą numerycznego przedstawienia równań różniczkowych jestmetoda Eulera. Polega ona na zastąpieniu pochodnych, pochodnymi nume-rycznymi.

dy

dt=yn+1 − yntn+1 − tn

=yn+1 − ynh

= g(yn, tn)

co pozwala zapisaćyn+1 = yn + hgn +O(h

2).

Algorytm oparty na metodzie Eulera jest mało dokładny i szybko robiega-jący się. Dokładność metody można zwiększyć jedynie poprzez zwiększenie

27

Page 29: Metody numeryczne- wybrane zagadnienia - if.uz.zgora.plekokomp/metody_numeryczne.pdf · Metody numeryczne- wybrane zagadnienia dr Bogdan Grabiec Zielona Góra 2010 Tytuł projektu:

28 ROZDZIAŁ 6. RÓWNANIA ROŻNICZKOWE

punktów początkowych. Dla wielu zagadnień nie jest to korzystne dlatego zezwykle zadany jest tylko jeden punkt zwany warunkiem początkowym.

2.Metoda Rungego-KuttyMetoda Rungego-Kutty należy do tych algorytmow które nie wymagaja zna-jomości wielu punktów początkowych. Korzysta ona z dwóch rożnych szergówTaylora dla zmiennych dynamicznych.

y(t+ h) = y + hy′ + h2

2y“ + h

3

3!y(3) + ...

= y + hg + h2

2(gt + ggy) +

h3

3!(gtt + 2ggtuy + g

2gyy + gg2y + gtgy) + ...

gdzie gα,β =∂2g

∂α∂β.

Równanie to możemy zapisać formalnie w postaci

y(t+ h) = y(t) + α1k1 + α2k2 + ...+ αnkn,

gdzie

kn = hg(y +n−1∑

l=1

mnlkl + hn−1∑

l=1

mnl).

2a.Metoda Rungego-Kutty 2-go rzęduW tym przypadku n=2, równania mają postać, wyższe rzędy zaniedbujemy,traktując je jako zaniedbywalnie małe.

y(t+ h) = y(t) + hg +h2

2(gt + ggy)

y(t+ h) = y(t) + α1k1 + α2k2k1 = hg(y, t),k2 = h(y +m21k1, t+m21h) = hg +m21h

2(gt + ggy)

wraz z ich postaciami po rozwinięciu w szerg Taylora z dokładnością dowyrazów stopnia co najwyzej 2. Porównując oba równania uzyskujemy

y(t+h) = y(t)+hg+h2

2(gt+ggy) ≡ y(t)+α1hg(y, t)+α2hg+m21h

2(gt+ggy).

Poszukujemy współczynników spełniających relacje{

1 = α1 + α212= α2m21

Rozwiązania mogą mieć postać:

α1 = α2 =12, m21 =

13

α1 =13, α2 =

23, m21 =

34

Page 30: Metody numeryczne- wybrane zagadnienia - if.uz.zgora.plekokomp/metody_numeryczne.pdf · Metody numeryczne- wybrane zagadnienia dr Bogdan Grabiec Zielona Góra 2010 Tytuł projektu:

29

2b. Metoda Rungego-Kutty 4-go rzęduPostępując podobnie jak w poprzedniej metodzie (w tym przypadku n=4)

y(t+ h) = y(t) + α1k1 + α2k2 + α3k3 + α4k4,

gdzie i ich postać po rozwinięciu w szereg Taylora z dokładnością do wyrazówstopnia co najwyżej 2

k1 = hg(y, t),k2 = h(y +m21k1, t+m21h) = hg +m21h

2(gt + ggy),k3 = hg(y +m31k1 +m32k2, t+m31h+m32h),k4 = hg(y +m41h1 +m32k2 +m33k3, t+m31h+m32h +m33h).

Uzyskujemy następujące zależności pomiędzy współczynnikami

y(t+ h) =1

6(k1 + 2k2 + 2k3 + k4),

k1 = hg(y, t)k2 = hg(y + 0.5k1, t+ 0.5h)k3 = hg(y + 0.5k3, t+ 0.5h)k4 = hg(y + k3, t+ h)

Przyklad

Rozważmy oscylator harmoniczny z tłumieniem (y1 = x, y2 = v) z warunkamipoczątkowymi x(0) = 0, v(0) = v0. Równania mają postać:

dx

dt= g1(x, v, t) = v

dv

dt= g2(x, v, t) = −

kxm− bv

Wykorzystując metodę Rungego-Kutty 4-rzędu uzyskujemy

#include<iostream>

#include<cmath>

using namespace std;

double g1(double x, double v,double t)

{

return v;

}

Page 31: Metody numeryczne- wybrane zagadnienia - if.uz.zgora.plekokomp/metody_numeryczne.pdf · Metody numeryczne- wybrane zagadnienia dr Bogdan Grabiec Zielona Góra 2010 Tytuł projektu:

30 ROZDZIAŁ 6. RÓWNANIA ROŻNICZKOWE

double g2(double x, double v, double t)

{

double a1=0.1;

double a2=0.1;

return -a1*x-a2*v;

}

int main()

{

double h=0.001;

int N=50;

double x0=1.;

double v0=0.;

double k11,k12,k13,k14;

double k21,k22,k23,k24;

double x,v;

double t;

t=0.;

x=x0;

v=v0;

for(int i=0;i<N;i++)

{

t=i*h;

k11=h*g1(x,v,t);

k21=h*g2(x,v,t);

k12=h*g1(x+k11/2.,v+k21/2.,t+h/2.);

k22=h*g2(x+k11/2.,v+k21/2.,t+h/2.);

k13=h*g1(x+k12/2.,v+k22/2.,t+h/2.);

k23=h*g2(x+k12/2.,v+k22/2.,t+h/2.);

k14=h*g1(x+k13,v+k23,t+h);

k24=h*g2(x+k13,v+k23,t+h);

x=x+(k11+2.*k12+2.*k13+k14)/6.;

v=v+(k21+2.*k22+2.*k23+k24)/6.;

cout<<t<<"\t"<<x<<endl;

cout<<t<<"\t"<<v<<endl;

}

return 0;

}

Page 32: Metody numeryczne- wybrane zagadnienia - if.uz.zgora.plekokomp/metody_numeryczne.pdf · Metody numeryczne- wybrane zagadnienia dr Bogdan Grabiec Zielona Góra 2010 Tytuł projektu:

Bibliografia

[1] Tao Pang, Metody obliczeniowe w fizyce, PWN 2001

[2] Z.Fortuna, B.Macukow, J.Wąsowski, Metody Numeryczne, WNT 1998

[3] J.N.Bronsztajn, K.A. Siemiendiajew, Matematyka. Poradnik encyklope-dyczny, PWN 1999

[4] Jerzy Grębosz, Symfonia C++, Oficyna Kallimach, Kraków 1996

31

Page 33: Metody numeryczne- wybrane zagadnienia - if.uz.zgora.plekokomp/metody_numeryczne.pdf · Metody numeryczne- wybrane zagadnienia dr Bogdan Grabiec Zielona Góra 2010 Tytuł projektu:

Skorowidz

aproksymacjaa. jednostajna 11a. sredniokwadratowa 9a. Pade’go 12a. szeregami funkcyjnymi 11

interpolacja 3całkowanie numerycznec. numeryczne trapezami 18c. numeryczne Simpsona 20

numeryczne rozwiązywanie równań 23metoda Newtona 23metoda połowienia 25metood siecznych 26

pochodna numerycznapierwsza pochodna numeryczna 2-punktowa 15

pierwsza pochodna numeryczna 3-punktowa 16

pierwsza pochodna numeryczna 5-punktowa 16

równania różniczkowe 27metoda Eulera 27metoda Rungego-Kutty 28

32