Metody numeryczne rozwiązywania równań różniczkowych
Marcin Orchel
Spis treści
1 Wstęp 1
1.1 Metody przybliżone dla równań pierwszego rzędu . . . 1
1.1.1 Metoda kolejnych przybliżeń Picarda . . . 1
1.1.2 Całkowanie przez rozwinięcie w szereg . . . 3
1.2 Metody przybliżone dla równań drugiego rzędu . . . 4
1.3 Rozwiązywanie zagadnień brzegowych metodami numerycznymi . . . 6
1.3.1 Metoda różnicowa . . . 6
1.3.2 Metoda postulowania postaci rozwiązania . . . 7
2 Zadania 9 2.1 Zadania na 3.0 . . . 9
2.2 Zadania na 4.0 . . . 11
2.3 Zadania na 5.0 . . . 11
1 Wstęp
1.1 Metody przybliżone dla równań pierwszego rzędu 1.1.1 Metoda kolejnych przybliżeń Picarda
Całkując równanie różniczkowe
y0= f (x, y) (1)
z warunkiem początkowym y = y0 dla x = x0 dostajemy wzór:
y = y0+ Z x
x0
f (x, y) dx (2)
Wzór iteracyjny:
yi= y0+ Z x
x0
f (x, yi−1) dx (3)
Przykład 1.
y0 = ex− y2 (4)
z warunkiem początkowym: x0 = 0, y0 = 0.
y0 = 0 (5)
y1= 0 + Z x
0
ex− y02dx = ex− 1 (6)
y2 = 0 + Z x
0
ex− (ex− 1)2dx = Z x
0
3ex− e2x− 1dx = 3ex− 3 −1
2e2x+ 1
2− x (7) ...
Przykład 2.
y0 = 1 4x −1
4y + 2 (8)
z warunkiem początkowym: x0 = 0, y0 = 0:
y0 = 0 (9)
y1= 0 + Z x
0
1
4x + 2dx = 2x + 1
8x2 (10)
y2= 0 + Z x
0
1 4x −1
4
2x +1
8x2
+ 2dx = Z x
0
−1 4x − 1
32x2+ 2dx (11) y2 = 2x −1
8x2− 1
96x3 (12)
y3= Z x
0
1 4x −1
4
2x −1
8x2− 1 96x3
+ 2dx = Z x
0
−1 4x + 1
32x2+ 1
384x3+ 2dx (13) y3= 2x − 1
8x2+ 1
96x3+ 1
1536x4 (14)
... Ponieważ
ex= 1 + x 1!+ x2
2! + . . . (15)
e−14x0 = −1
4e−14x (16)
e−14x00= − 1
16e−14x (17)
... Szereg Maclaurina ma postać
∞
X
n=0
1
n!f(n)(0) xn (18)
gdzie f(0)(0) = f (0). Z szeregu Maclaurina otrzymujemy, że:
e−14x= 1 −1 4x + 1
32x2− 1
384x3 (19)
x + 4 − 4e−14x= x + 4 − 4 + x −1
8x2+ 1
96x3− 1
1536x4. . . (20) Rozwiązanie na wolframalpha.com,http: // www. wolframalpha. com/ input/ ?i= y% 27+
%3D+ 1% 2F4x+ -+1% 2F4y+ %2B+ 2.
1.1.2 Całkowanie przez rozwinięcie w szereg Szereg Taylora dla funkcji:
y = y (x0) + (x − x0) y0(x0) +(x − x0)2
2 y00(x0) + . . . +(x − x0)n
n! y(n)(x0) + . . . (21) lub inaczej zapisany
∞
X
n=0
1
n!f(n)(x0) (x − x0)n (22) gdzie f(0)(x0) = f (x0).
Przykład 3.
y0 = ex− y2 (23)
Warunek początkowy: (0, 0) 1 sposób. Postulujemy rozwiązanie:
y = a1x + a2x2+ a3x3+ . . . + anxn+ . . . (24) Kwadrat szeregu potęgowego jest równy
∞
X
n=1
anxn
!2
=
∞
X
n=2 n−1
X
i=1
aian−i
!
xn (25)
Po podstawieniu tego szeregu do równania wyjściowego i zastosowaniu wzoru na kwadrat szeregu potęgowego otrzymujemy:
a1+2a2x+3a3x2+. . .+a21x2+ 2a1a2x3+a22+ 2a1a3x4+ . . .= 1+x+x2 2 +x3
6 +. . . (26) Mamy następujące równania na współczynniki:
a1 = 1 (27)
2a2 = 1 (28)
3a3+ a21 = 1
2 (29)
4a4+ 2a1a2 = 1
6 (30)
..., w rezultacie otrzymujemy:
y = x +x2 2 −x3
6 − 5
24x4+ . . . (31)
2 sposób. Obliczamy kolejne pochodne:
y00 = ex− 2yy0 (32)
y000 = ex− 2y02− 2yy00 (33) y(4)= ex− 6y0y00− 2yy000 (34) Wiemy, że wartość szukanej funkcji w punkcie x0 jest y0. Dlatego też
y0(x0) = ex0− y20 (35)
Z twierdzenia Taylora dla (0, 0) otrzymujemy:
y = x +x2 2 −x3
3! − 5
4!x4+ . . . (36)
1.2 Metody przybliżone dla równań drugiego rzędu
Jeśli znamy jedno rozwiązanie y1 to drugie rozwiązanie szczególne równania liniowego jednorodnego wynosi:
y2 = Ay1 Z e−
Rpdx
y12 dx (37)
Rozwiązanie równania typu:
s (x) y00+ p (x) y0+ q (x) y = F (x) (38) gdzie funkcje s (x), p (x), q (x) i F (x) są wielomianami lub w pewnym ustalonym obsza- rze dają się rozwinąć w szereg potęgowy względem x − x0 do nich zbieżny. Rozwiązanie wyznaczamy ze pomocą metody współczynników nieoznaczonych, rozwiązanie postulu- jemy w postaci
y = a0+ a1(x − x0) + a2(x − x0)2+ . . . (39) i podstawiamy do równania wyjściowego. Przyrównując współczynniki przy x-ach otrzy- mujemy wartości parametrów ai.
Przykład 4.
y00+ xy = 0 (40)
Podstawiamy do niego
y = a0+ a1x + a2x2+ a3x3+ a4x4+ a5x5. . . (41) y0= a1+ 2a2x + 3a3x2+ 4a4x3+ 5a5x4. . . (42) y00= 2a2+ 6a3x + 12a4x2+ 20a5x3. . . (43) i otrzymujemy:
2a2+ 6a3x + 12a4x2+ 20a5x3+ . . . + a0x + a1x2+ a2x3+ a3x4+ a4x5+ a5x6= 0 (44)
2a2 = 0 6a3+ a0 = 0 12a4+ a1 = 0 20a5+ a2 = 0 . . .
(45)
Rozwiązując je otrzymujemy:
a2 = 0 a3 = −2·3a0 a4 = −3·4a1 a5 = 0 . . .
(46)
Wszystkie współczynniki są 0 lub zależne od a0 i a1. Po ich podstawieniu do y otrzymamy rozwiązanie ogólne postaci:
y = a0 1 − x3
2 · 3+ x6
2 · 3 · 5 · 6− . . .
!
+ a1 x − x4
3 · 4 + x7
3 · 4 · 6 · 7− . . .
!
(47) Równanie na wolframalpha.com, http: // www. wolframalpha. com/ input/ ?i= y% 27%
27% 2Bxy% 3D0.
Rozwiązanie równania typu
x2y00+ xp (x) y0+ q (x) y = 0 (48) Rozwiązujemy za pomocą metody współczynników nieoznaczonych, przy założeniu, że p (x) i q (x) dają się rozwinąć w szereg potęgowy względem x. Rozwiązania wtedy mają postać:
y = xra0+ a1x + a2x2+ . . . (49) gdzie r jest pierwiastkiem równania wskaźnikowego (określającego)
r (r − 1) + p (0) r + q (0) = 0 (50)
Jeśli pierwiastki równania wskaźnikowego są różne i ich różnica nie jest liczbą całkowi- tą, to otrzymujemy w ten sposób dwa niezależne liniowo rozwiązania. W przeciwnym razie metoda współczynników nieoznaczonych daje tylko jedno rozwiązanie. Drugie roz- wiązanie możemy wtedy wyznaczyć ze wzoru (37). Przykładem tego typu równania jest równanie Bessela postaci:
x2y00+ xy0+x2− n2y = 0 (51) Przykład 5.
x2y00+ xy0+x2− 4y = 0 (52) Rozwiązanie na wolframalpha.com,http: // www. wolframalpha. com/ input/ ?i= x^2y%
27% 27+ %2B+ xy% 27+ %2B+ %28x^2-4% 29y+ %3D+ 0.
1.3 Rozwiązywanie zagadnień brzegowych metodami numerycznymi 1.3.1 Metoda różnicowa
Po angielsku finite difference method. Metoda ta będzie przedstawiona na przykładzie zagadnienia brzegowego dla równania liniowego drugiego rzędu:
y00(x) + p (x) y0(x) + q (x) y (x) = f (x) (53) gdzie
a ≤ x ≤ b (54)
y (a) = α (55)
y (b) = β (56)
Przedział [a, b] dzielimy za pomocą położonych w równych odstępach węzłów
xv = x0+ vh (57)
gdzie
v = 0, 1, . . . , n; x0 = a; xn= b (58) Zatem mamy n + 1 węzłów. Tworzymy n − 1 równań postaci:
y00(xv) + p (xv) y0(xv) + q (xv) y (xv) = f (xv) (59) dla
v = 1, . . . , n − 1 (60)
Następnie wartości pochodnych zastępujemy wyrażeniami skończonymi (finite differen- ce):
y0(xv) ≈ yv+1− yv−1
2h (61)
y00(xv) ≈ yv+1− 2yv+ yv−1
h2 (62)
Drugie wyrażenie można wyprowadzić z zastosowania do pierwszych pochodnych forward difference a do drugich backward difference: po pierwszych pochodnych mamy
y0(xv−1) ≈ yv− yv−1
h (63)
y0(xv) ≈ yv+1− yv
h (64)
i wreszcie
y00(xv) ≈ yv0 − yv−10
h (65)
Po podstawieniu otrzymujemy układ n − 1 równań liniowych, gdzie niewiadomymi są wartości funkcji w węzłach, yv. Wartości w pierwszym i ostatnim węźle są znane.
1.3.2 Metoda postulowania postaci rozwiązania
Metoda ta będzie przedstawiona na przykładzie zagadnienia brzegowego dla równania liniowego drugiego rzędu:
y00(x) + p (x) y0(x) + q (x) y (x) = f (x) (66) gdzie
a ≤ x ≤ b (67)
y (a) = α (68)
y (b) = β (69)
Postulujemy rozwiązanie postaci:
g (x) =
n
X
i=0
aigi(x) (70)
gdzie każda funkcja gi(x) spełnia warunki brzegowe i funkcje te są liniowo niezależne.
Po podstawieniu tego rozwiązania do równania wyjściowego otrzymujemy:
ε (x; a1, a2, . . . , an) = g00(x) + p (x) g0(x) + q (x) g (x) − f (x) (71) gdzie e jest błędem przybliżenia, tzw. defektem. Można zauważyć, że defekt jest funkcją liniową współczynników ai.
Często postuluje się rozwiązanie postaci:
g (x) = g0(x) +
n
X
i=1
aigi(x) (72)
gdzie g0(x) spełnia zadane warunki brzegowe, natomiast gi(x) warunki:
gi(a) = gi(b) = 0 (73)
i = 1, 2, . . . , n (74)
Wtenczas dla dowolnych wartości ai spełnione są warunki brzegowe. Przykład funkcji g0(x):
g0(x) = α +β − α
b − a (x − a) (75)
Widzimy, że są dla niej spełnione warunki (68), (69).
Metody wyznaczania współczynników ai.
• Metoda uzgodnienia. Zakładamy, że błąd znika w n punktach:
ε (xv; a1, a2, . . . , an) = 0 (76) gdzie
v = 1, 2, . . . , n (77)
a < x1 < x2< . . . < xn< b (78) Otrzymujemy układ n równań liniowych na współczynniki ai.
• Metoda kwadratu błędu. Minimalizujemy:
F (a1, a2, . . . , an) = Z b
a
ε2(x; a1, a2, . . . , an) dx (79) Warunek konieczny na ekstremum dostarcza nam układ równań liniowych:
∂F
∂ai
= 0 (80)
dla
i = 1, 2, . . . , n (81)
• Metoda Galerkina. Wymuszamy ortogonalność błędu, tzn. musi zachodzić:
Z b a
(x; a1, a2, . . . , an) gi(x) dx = 0 (82) dla i = 1, 2, . . . , n, otrzymujemy w ten sposób układ równań liniowych na współ- czynniki ai.
• Metoda Ritza. Często rozwiązanie zagadnienia brzegowego jest równocześnie roz- wiązaniem pewnego zagadnienia wariacyjnego, tzn. y (x) minimalizuje całkę po- staci:
I [y] = Z b
a
H x, y, y0dx (83)
Jeśli znamy funkcję H (x, y, y0) to wstawiamy g (x) za y (x). Następnie minimali- zujemy wyrażenie
I [y] = I (a1, a2, . . . , an) (84) Z warunków koniecznych na ekstremum:
∂I
∂ai = 0 (85)
dla
i = 1, 2, . . . , n (86)
otrzymujemy n równań na współczynniki ai.
Przykład 6. Pod ściśle określonymi warunkami nałożonymi na funkcje p, q, f i y zagadnienie brzegowe:
−p (x) y0(x)0+ q (x) y (x) = f (x) (87)
y (a) = α (88)
y (b) = β (89)
jest równoważne zagadnieniu wariacyjnemu:
miny I (y) = Z b
a
hp (x) y02(x) + q (x) y2(x) − 2f (x) y (x)idx (90)
y (a) = α (91)
y (b) = β (92)
2 Zadania
2.1 Zadania na 3.0
• Rozwiązać metodą numeryczną dowolne równanie zwyczajne z warunkiem począt- kowym oraz zwyczajne drugiego rzędu z warunkami brzegowymi oraz cząstkowe z wybranymi warunkami
• wyświetlić wykres fazowy, dla różnych wartości t wyświetlamy punkty y(t) i y0(t)
• rozwiązać równanie opisujące oscylator van der Pola
y00(t) + εy2(t) − 1y0(t) + y (t) = 0 (93) dla t ∈ (0, tmax) z warunkiem początkowym y (0) = 0, 01, y0(0) = 0.
Równanie to można przekształcić do układu równań pierwszego rzędu
y01 = y2 (94)
y02= −εy21− 1y2− y1 (95) Funkcja y1 odpowiada y, y2 odpowiada y0.
Naszkicować wykres y(t) oraz wykres fazowy dla t ∈ [0, 60], ε = 0, 8. Zaobserwować dokładność wykresu fazowego dla różnych wartości kroku.
• rozwiązać równanie van der Pola dla ε = 0 oraz dla dużego tmax, np. tmax = 0, 2 · 105. Na wykresie y(t) widzimy wygaszaną funkcję tymczasem norma jest stała i równa 0,01
• Rozwiązać układ równań różniczkowych zwyczajnych Lorentza dy1
dt = −σ (y1− y2) (96)
dy2
dt = −y1y3+ ry1− y2 (97)
dy3
dt = y1y2− by3 (98)
dla σ = 10, r = 28, b = 8/3. Aby sprawdzić czy rozwiązania są stabilne, porównać rozwiązania dla różnych tolerancji błędu. Inne wartości do przetestowania to r = 99, 96. Naszkicować wykres o współrzędnych (y1, y2, y3) dla różnych wartości t.
• Porównać z rozwiązaniem symbolicznym z wolframalpha.com.
Wskazówki
•
Wskazówki do R
• pakiet deSolve
• równanie van der Pola
• https://www.rdocumentation.org/packages/deSolve/topics/ode
• https://www.rdocumentation.org/packages/deSolve/topics/lsode
• https://journal.r-project.org/archive/2010/RJ-2010-013/RJ-2010-013.pdf Wskazówki do Matlaba
• Dla równań różniczkowych cząstkowych brak rozwiązania symbolicznego w Matla- bie.
• http://www.mathworks.com/help/matlab/ref/pdepe.html
• http://www.mathworks.com/help/matlab/ordinary-differential-equations.
html
• http://www.mathworks.com/help/matlab/boundary-value-problems.html
• http://www.mathworks.com/help/matlab/partial-differential-equations.
html
Przykłady w R
• library(deSolve)
## Time
t <- seq(0, 100, 1)
## Initial population N0 <- 10
## Parameter values
params <- list(r=0.1, K=1000)
## The logistic equation
fn <- function(t, N, params) with(params, list(r * N * (1 - N / K)))
## Solving and plotin the solution numerically out <- ode(N0, t, fn, params)
plot(out, lwd=2, main="Logistic equation\nr=0.1, K=1000, N0=10")
## Ploting the analytical solution
with(params, lines(t, K * N0 * exp(r * t) / (K + N0 * (exp(r * t) - 1)), col=2, lwd=2))
• równanie pierwszego rzędu library(deSolve)
t <- seq(0, 100, 1) N0 <- 10
fn <- function(t, N, parms) list(N * (1 - N)) out <- ode(N0, t, fn)
plot(out, lwd=2, main="")
• równanie drugiego rzędu zamienione na układ równań pierwszego rzędu t <- seq(0, 100, 1)
N0 <- c(10, 10)
fn <- function(t, N, parms) list(c(y[2], -y[1]-t)) out <- ode(N0, t, fn)
plot(out, lwd=2, main="")
2.2 Zadania na 4.0
Rozwiązać metodą numeryczną następujące zagadnienia brzegowe:
y00(x) + y (x) = 0 (99)
z warunkami:
y (0) = 0 (100)
y
π 2
= 2 (101)
Rozwiązać również powyższe równania symbolicznie na wolframalpha.com.
2.3 Zadania na 5.0
Rozwiązać metodą numeryczną następujący problem graniczny:
∂u
∂t = ∂2u
∂x2 (102)
z warunkami:
u (x, 0) = sin πx (103)
dla
x ∈ [0, 1] (104)
oraz
u (0, 1) = u (1, t) = 0 (105)
Rozwiązać również powyższe równania symbolicznie na wolframalpha.com.
Literatura
[1] I. N. Bronsztejn, K. Siemiendiajew, G. Musiol, and H. Möhlig, Nowoczesne kompen- dium matematyki. Wydawnictwo naukowe PWN, 2004.
[2] J. Niedoba and W. Niedoba, Równania różniczkowe zwyczajne i cząstkowe. Wydaw- nictwa AGH, 2001.