Vous êtes sur la page 1sur 10

7.

Početni problem za obične


diferencijalne jednadžbe
Promatrat ćemo običnu diferencijalnu jednadžbu

dy
= f (x, y), y(x0 ) = y0 ,
dx

pri čemu pretpostavljamo da je funkcija f (x, y) neprekidna na vremenskom intervalu


x0 ≤ x ≤ b i za −∞ < y < ∞.
Najjednostavnije metode rješavanja te diferencijalne jednadžbe su jednokoračne
Runge–Kutta metode, od kojih smo spomenuli one reda 1, RK-1 (poznata još i
kao Eulerova metoda),

yn+1 = yn + hn f (xn , yn ), n = 0, 1, . . . ,

reda 2, tzv. RK-2

1
yn+1 = yn + (k1 + k2 ), n = 0, 1, 2, . . . ,
2

gdje je

k1 = hn f (xn , yn )
k2 = hn f (xn + hn , yn + k1 ),

i reda 4, tzv. RK-4

1
yn+1 = yn + (k1 + 2k2 + 2k3 + k4 ), n = 0, 1, 2, . . . ,
6

gdje je

k1 = hn f (xn , yn )
1 1
k2 = hn f (xn + hn , yn + k1 )
2 2
1 1
k3 = hn f (xn + hn , yn + k2 )
2 2
k4 = hn f (xn + hn , yn + k3 ).

Ako umjesto jedne jednadžbe želimo rješavati sustav jednadžbi, onda treba
upamtiti da veličine yn , kn i f (xn , yn ) postaju vektori, dok hn i xn ostaju ska-
lari.
128 7. Početni problem za obične diferencijalne jednadžbe

Ako želite riješiti diferencijalnu jednadžbu višeg reda, prvo je treba svesti na
sustav prvog reda.
Diferencijalna jednadžba je kruta ako mala perturbacija početnih vodi na veliku
perturbaciju u rješenju.
Zadatak 7.1. Eulerovom metodom s korakom h = 0.5 nađite rješenje diferencijalne
jedandžbe
dy
= y 2 + x, y(0) = 0.25.
dx
u točki x = 0.5.
Rješenje. Primijetite da nam je potreban samo jedan korak, jer startamo iz točke
x0 = 0 u kojoj je y0 = 0.25. U sljedećem koraku smo u x1 = x0 + h = 0.5. Funkcija
je
f (x, y) = y 2 + x,
pa dobivamo

y1 = y0 + hf (x0 , y0 ) = 0.25 + 0.5 · f (0, 0.25) = 0.25 + 0.5 · (0.252 + 0)


= 0.25 + 0.5 · 0.0625 = 0.28125.

Prema tome, približno rješenje ove diferencijalne jednadžbe u 0.5 je 0.28125.


Zadatak 7.2. Riješite diferencijalnu jednadžbu iz prethodnog zadatka korištenjem
RK-2 i RK-4 metoda.
Rješenje. Ponovno, potreban je samo jedan korak, x0 = 0, y0 = 0.25. Za RK-2 prvo
moramo izračunati k1 i k2

k1 = hn f (xn , yn ) = 0.5f (0, 0.25) = 0.5 · (0.252 + 0) = 0.03125,


k2 = hn f (xn + hn , yn + k1 ) = 0.5f (0 + 0.5, 0.25 + 0.03125) = 0.5f (0.5, 0.28125)
= 0.5 · (0.281252 + 0.5) = 0.28955078.

Nadalje,
1 1
y1 = y0 + (k1 + k2 ) = 0.25 + (0.03125 + 0.28955078) = 0.41040039.
2 2
Za RK-4 imamo

k1 = hn f (xn , yn ) = 0.5f (0, 0.25) = (ovo smo već izračunali) = 0.03125,


1 1
k2 = hn f (xn + hn , yn + k1 ) = 0.5f (0 + 0.5 · 0.5, 0.25 + 0.5 · 0.03125)
2 2
= 0.5f (0.25, 0.265625) = 0.5 · (0.2656252 + 0.25) = 0.16027832
1 1
k3 = hn f (xn + hn , yn + k2 ) = 0.5f (0.25, 0.25 + 0.5 · 0.16027832)
2 2
= 0.5f (0.25, 0.33013916) = 0.5 · (0.330139162 + 0.25) = 0.17949593
k4 = hn f (xn + hn , yn + k3 ) = 0.5f (0 + 0.5, 0.25 + 0.17949593)
= 0.5f (0.5, 0.42949593) = 0.5 · (0.429495932 + 0.5) = 0.34223338.
129

Nadalje
1
y1 = y0 + (k1 + 2k2 + 2k3 + k4 )
6
1
= 0.25 + (0.03125 + 2 · 0.16027832 + 2 · 0.17949593 + 0.34223338)
6
= 0.42550531.

Zadatak 7.3. Diferencijalna jednadžba

y 0 + y = sin x + 3 cos x

uz početni uvjet y(0) = 1 ima egzaktno rješenje

y(x) = 2 sin x + cos x.

Diferencijalnu jednadžbu rješavamo korištenjem RK-3 metode:


1
yn+1 = yn + (k1 + 4k2 + k3 )
6
pri čemu je

k1 = hn f (xn , yn ),
 
1 1
k2 = hn f xn + h, yn + k1 ,
2 2
k3 = hn f (xn + h, yn − k1 + 2k2 ),

za x = 0.2 uz fiksni korak h = 0.2. Odredite relativnu grešku dobivene aproksimacije


s obzirom na egzaktno rješenje.
Rješenje. Očito je x0 = 0, y0 = y(0) = 1, a prebacivanjem y na desnu stranu
dobivamo
f (x, y) = −y + sin x + 3 cos x.
Tražimo rješenje u 0.2 pa treba napraviti samo jedan korak duljine h = h0 = 0.2.
Prvo računamo k1 , zatim k2 i na kraju k3 :

k1 = hf (x0 , y0 ) = 0.2f (0, 1) = 0.2(−1 + sin 0 + 3 cos 0) = 0.4


 
1 1
k2 = hf x0 + h, y0 + k1 = 0.2f (0 + 0.1, 1 + 0.2) = 0.2f (0.1, 1.2)
2 2
= 0.2(−1.2 + sin 0.1 + 3 cos 0.1) ≈ 0.376969
k3 = hf (x0 + h, y0 − k1 + 2k2 ) ≈ 0.2f (0 + 0.2, 1 − 0.4 + 2 · 0.376969)
≈ 0.2f (0.2, 1.353938) = 0.2(−1.353938 + sin 0.2 + 3 cos 0.2) ≈ 0.3569862.

Tražena aproksimacija jednaka je


1 1
y1 = y0 + (k1 + 4k2 + k3 ) ≈ 1 + (0.4 + 4 · 0.376969 + 0.3569862) ≈ 1.377477.
6 6
130 7. Početni problem za obične diferencijalne jednadžbe

Egzaktno rješenje je

y(0.2) = 2 sin 0.2 + cos 0.2 ≈ 1.377405,

stoga relativna greška približno iznosi

|y1 − y(0.2)| 1.377477 − 1.377405


rel_err = ≈ ≈ 0.000052.
|y(0.2)| 1.377405

Zadatak 7.4. Implicitna Eulerova metoda izgleda ovako

yn+1 = yn + hn f (xn+1 , yn+1 ).

Tom metodom nađite aproksimaciju rješenja diferencijalne jednadžbe

y0 = x + y

u točki 0.2, ako je početni uvjet y(0) = 1, a fiksni korak h = 0.2.

Rješenje. Iz početnih uvjeta je x0 = 0, y0 = y(0) = 1 i

f (x, y) = x + y.

Treba napraviti samo jedan korak metode i to za h = 0.2. Uvrštavenjem funkcije f


dobivamo da je prvi korak metode

y1 = y0 + hf (x1 , y1 ) = y0 + h(x1 + y1 ),

pri čemu ne znamo y1 . Uvrštavanjem poznatih veličina y0 = 1, h = 0.2 i x1 = 0.2


dobivamo
y1 = 1 + 0.2(0.2 + y1 ) = 1.04 + 0.2y1 .
Prebacivanjem člana s y1 na lijevu stranu i dijeljenjem s 0.8 dobivamo približno
rješenje y(0.2) ≈ y1 = 1.3.

Zadatak 7.5. Diferencijalnu jednadžbu

y 0 = xy + x + 1,

uz početnu uvjet y(0) = 2 rješavamo korištenjem dvokoračne metode (svaki korak


koristi vrijednosti prethodna dva) s fiksnim korakom h,

3 1
yn+2 = yn+1 + hf (xn+1 , yn+1 ) − hf (xn , yn ), n ≥ 0,
2 2
Budući da su na početku potrebne dvije vrijednosti, y0 i y1 , vrijednost y1 računamo
RK-1 metodom. Korištenjem dvokoračne metode s korakom h = 0.1 nađite približno
rješenje zadane diferencijalne jednadžbe u x = 0.3.
131

Rješenje. Tražimo aproksimaciju rješenja u x = 0.3, a radimo s korakom h = 0.1 pa


treba napraviti tri koraka. Prvo tražimo y1 korištenjem Eulerove metode s x0 = 0,
y0 = 2 i
f (x, y) = xy + x + 1.
Dobivamo
y1 = y0 + hf (x0 , y0 ) = 2 + 0.1f (0, 2) = 2 + 0.1 = 2.1.
Sada možemo napraviti dva koraka dvokoračne metode
3 1
y2 = y1 + hf (x1 , y1 ) − hf (x0 , y0 )
2 2
3 1
= 2.1 + · 0.1 · f (0.1, 2.1) − · 0.1 · f (0, 2)
2 2
3 1
= 2.1 + · 0.1 · (0.1 · 2.1 + 0.1 + 1) − · 0.1 · (0 · 2 + 0 + 1) = 2.2465
2 2
3 1
y3 = y2 + hf (x2 , y2 ) − hf (x1 , y1 )
2 2
3 1
= 2.2465 + · 0.1 · f (0.2, 2.2465) − · 0.1 · f (0.1, 2.1)
2 2
3 1
= 2.2465 + · 0.1 · (0.2 · 2.2465 + 0.2 + 1) − · 0.1 · (0.1 · 2.1 + 0.1 + 1)
2 2
= 2.428395.
Tražena aproksimacija je y(0.3) ≈ y3 = 2.428395.
Zadatak 7.6. Za sustav diferencijalnih jednadžbi
y10 = y1 + y2 , y1 (0) = 0,
y20 = −y1 + y2 , y2 (0) = 1,
nađite aproksimaciju rješenja u x = 0.2 RK-2 metodom s korakom h = 0.1.
Rješenje. Prvo treba pravilno napisati sustav, imenujući neke funkcije vektorima
       
y1 y1 (0) 0 ~ y1 + y2
~y = , ~y0 = ~y (0) = = , f (x, ~y ) = .
y2 y2 (0) 1 −y1 + y2
Najprije, vidimo da su nam potrebna 2 koraka duljine 0.1 da bismo stigli u 0.2.
Za RK-2 prvo moramo naći k1 i k2 koji su vektori. Da bismo razlikovali k-ove u
(i)
raznim koracima, indeksirajmo ih još i gornjim indeksom, tako da, na primjer, k1
znači vektor k1 u i-tom koraku.
Dakle,
        
(1)
~k = hf~(x0 , ~y0 ) = 0.1f~ 0, 0 0 + 1 1 0.1
1 = 0.1 = 0.1 =
1 −0 + 1 1 0.1
       
~k (1) = hf~(x0 + h, ~y0 + ~k (1) ) = 0.1f~ 0 + 0.1, 0 + 0.1 ~
= 0.1f 0.1,
0.1
2 1
1 0.1 1.1
     
0.1 + 1.1 1.2 0.12
= 0.1 = 0.1 = .
−0.1 + 1.1 1.0 0.10
132 7. Početni problem za obične diferencijalne jednadžbe

Nadalje, (ovdje y1 označava sljedeću iteraciju, a ne varijablu)


           
1 ~ (1) ~ (1) 0 1 0.1 0.12 0 0.11 0.11
~y1 = ~y0 + (k1 + k2 ) = + + = + = .
2 1 2 0.1 0.10 1 0.1 1.10

Dakle, u 0.1 su aproksimacije rješenja y1 (0.1) ≈ 0.11 i y2 (0.1) ≈ 1.10.


Sada treba napraviti još jedan korak
    
(2)
~k = hf~(x1 , ~y1 ) = 0.1f~ 0.1, 0.11 0.11 + 1.10
1 = 0.1
1.10 −0.11 + 1.10
   
1.21 0.121
= 0.1 =
0.99 0.099
    
~k (2) = hf~(x1 + h, ~y1 + ~k (2) ) = 0.1f~ 0.1 + 0.1, 0.11 + 0.121
2 1
1.10 0.099
        
0.231 0.231 + 1.199 1.430 0.1430
= 0.1f~ 0.2, = 0.1 = 0.1 = .
1.199 −0.231 + 1.199 0.968 0.0968

Nadalje, (ovdje ~y1 i ~y2 označavaju iteracije, a ne varijable)


     
1 ~ (2) ~ (2) 0.11 1 0.121 0.1430
~y2 = ~y1 + (k1 + k2 ) = + +
2 1.10 2 0.099 0.0968
     
0.11 0.132 0.2420
= + = .
1.10 0.0979 1.1979

Znajući da je pravo rješenje ovog sustava

y1 (x) = ex sin x
y2 (x) = ex cos x

nije teško pokazati da su prava rješenja u 0.2

y1 (0.2) = 0.24265527
y2 (0.2) = 1.19705602,

pa smo dobili dobre aproksimacije rješenja.

Zadatak 7.7. Diferencijalnu jednadžbu

y (4) + (x + 1)y 0 + y + x + 1 = 0

napišite u obliku sustava diferencijalnih jednadžbi prvog reda.

Rješenje. Redom zamjenjujemo derivacije y-a novim varijablama:

y0 = z
z 000 + (x + 1)z + y + x + 1 = 0.
133

Vidimo da u drugoj jednadžbi imamo treću derivaciju. Ponovimo zamjenu

y0 = z
z0 = u
u00 + (x + 1)z + y + x + 1 = 0.

Očito nam treba još jedna zamjena

y0 = z
z0 = u
u0 = v
v 0 + (x + 1)z + y + x + 1 = 0,

pa sustav uobičajeno pišemo

y0 =z
z0 =u
u0 =v
v0 = −(x + 1)z − y − x − 1.

Ako zadamo i početne uvjete (u kojima na isti način supstituiramo varijable), onda
možemo takvu diferencijalnu jednadžbu riješiti proizvoljnom RK-metodom. U vek-
toru rješenja su komponente redom y(xn ), y 0 (xn ), y 00 (xn ), y 000 (xn ).
Zadatak 7.8. Diferencijalna jednadžba

y (4) − y 2 = sin2 x + cos x − 1

uz početne uvjete y(0) = 1, y 0 (0) = 0, y 00 (0) = −1, y (3) (0) = 0 ima egzaktno rje-
šenje y(x) = cos x. Diferencijalnu jednadžbu prvo svedite na sustav diferencijalnih
jednadžbi prvog reda, a zatim nađite njeno približno rješenje Runge–Kutta meto-
dom 1. reda za x = 0.5 uz korak h = 0.5. Odredite apsolutnu grešku dobivene
aproksimacije s obzirom na egzaktno rješenje.
Rješenje. Uvodimo supstitucije

y 0 = z,
z 0 = y 00 = u,
u0 = y 000 = v,
v 0 = y (4) = y 2 + sin2 x + cos x − 1,

čime dobivamo sustav

y0 = z,
z0 = u,
u0 = v,
v0 = y 2 + sin2 x + cos x − 1.
134 7. Početni problem za obične diferencijalne jednadžbe

Definiramo vektore
       
y y(0) 1 z
z   y 0 (0)   0 u
f~(x, ~y ) = 
 
~y = 
u , ~y0 = ~y (0) =  y 00 (0)  = −1 ,
     .
 v 
v y 000 (0) 0 2 2
y + sin x + cos x − 1

Rješenje ćemo dobiti u prvom koraku jer tražimo aproksimaciju u x1 = 0.5 = x0 +h,

~y1 = ~y0 + hf~(x0 , ~y0 )


        
1 1 1 0
 0
 + 0.5f~ 0,  0 =  0 + 0.5 
      −1 
= −1  −1 −1

 0 
2 2
0 0 0 1 + sin 0 + cos 0 − 1
     
1 0 1
 0 −0.5 −0.5
= −1 +  0  = −1  .
    

0 0.5 0.5

Dobivene aproksimacije jednake su

y(0.5) ≈ 1, y 0 (0.5) ≈ −0.5, y 00 (0.5) ≈ −1, y 000 (0.5) ≈ 0.5.

Egzaktno rješenje diferencijalne jednadžbe je y(x) = cos x pa imamo

y(0.5) ≈ 0.8775826,

stoga je apsolutna greška približno jednaka 0.1224174.


Zadatak 7.9. Poznato je opće rješenje neke diferencijalne jednadžbe koje glasi

y(x) = c1 e−25x + x2 − x.

Zadan je početni uvjet y(−1) = 2. Je li ta diferencijalna jednadžba kruta ako


napredujemo po x? Objasnite!
Rješenje. Za krute diferencijalne jednadžbe vrijedi da mala perturbacija početnog
uvjeta bitno mijenja partikularno rješenje.
U ovoj diferencijalnoj jednadžbi, zbog početnog uvjeta y(−1) = 2, određujemo
c1 i dobivamo da mora vrijediti

2 = y(−1) = c1 e−25·(−1) + (−1)2 − (−1),

tj.
2 = c1 e25 + 2,
pa je c1 = 0.
Dakle, partikularno rješenje te diferencijalne jednadžbe je

y(x) = x2 − x.
135

Sada malo perturbirajmo početni uvjet. Neka je

y(−1) = 2 + ε, |ε|  1.

Uvrštavanjem tog početnog uvjeta dobivamo:

2 + ε = y(−1) = c1 e−25·(−1) + (−1)2 − (−1),

tj.
2 + ε = c1 e25 + 2,
pa je
ε
c1 = .
e25
Tada je partikularno rješenje
ε −25x
y(x) = e + x2 − x = εe−25(x+1) + x2 − x.
e25
Usporedimo sad oba partikularna rješenja. Pitanje je samo hoće li član

e−25(x+1)

dominirati nad x2 − x za x > −1. Jasno je da neće, jer funkcija e−25(x+1) brzo pada
kad x raste, pa diferencijalna jednadžba nije kruta.
Ako po x “nazadujemo” tj. od većih x idemo na manje, onda eksponent u e−25(x+1)
za x < −1 postane pozitivan, pa diferencijalna jednadžba postane kruta.

Zadatak 7.10. Poznato je opće rješenje neke diferencijalne jednadžbe koje glasi

y(x) = c1 e25x + x2 − x.

Zadan je početni uvjet y(−1) = 2. Je li ta diferencijalna jednadžba kruta ako


napredujemo po x? Objasnite!

Rješenje. Iz početnog uvjeta y(−1) = 2, određujemo c1 i dobivamo

2 = y(−1) = c1 e25·(−1) + (−1)2 − (−1),

tj.
2 = c1 e−25 + 2,
pa je c1 = 0.
Dakle, partikularno rješenje te diferencijalne jednadžbe je

y(x) = x2 − x.

Sada malo perturbirajmo početni uvjet. Neka je

y(−1) = 2 + ε, |ε|  1.
136 7. Početni problem za obične diferencijalne jednadžbe

Uvrštyavanjem tog početnog uvjeta dobivamo:

2 + ε = y(−1) = c1 e25·(−1) + (−1)2 − (−1),

tj.
2 + ε = c1 e−25 + 2,
pa je
ε
c1 = = εe25 .
e−25
Tada je partikularno rješenje

y(x) = (εe25 ) · e25x + x2 − x = εe25(x+1) + x2 − x.

Usporedimo sad oba partikularna rješenja. Pitanje je samo hoće li član

e25(x+1)

dominirati nad x2 − x za x > −1. Jasno je da hoće, jer funkcija e25(x+1) brzo raste
kad x raste, pa će x2 −x vrlo brzo postati malo prema dotičnom članu. Zaključujemo
diferencijalna jednadžba je kruta.
Ako po x “nazadujemo” tj. od većih x idemo na manje, onda eksponent u e25(x+1)
za x < −1 postane negativan, pa diferencijalna jednadžba u tom smjeru nije kruta.

Vous aimerez peut-être aussi