Közönséges Differenciálegyenletek Kezdetiérték Feladatainak Numerikus Megoldása Matlab Alkalmazásával

Hasonló dokumentumok
Differenciálegyenletek numerikus megoldása

Differenciálegyenletek. Vajda István március 4.

Közönséges differenciál egyenletek megoldása numerikus módszerekkel: egylépéses numerikus eljárások

ODE SOLVER-ek használata a MATLAB-ban

Néhány közelítő megoldás geometriai szemléltetése

Baran Ágnes, Burai Pál, Noszály Csaba. Gyakorlat Differenciálegyenletek numerikus megoldása

valós számot tartalmaz, mert az ilyen részhalmazon nem azonosság.

Ipari matematika 2. gyakorlófeladatok

Konjugált gradiens módszer

BIOMATEMATIKA ELŐADÁS

3. Lineáris differenciálegyenletek

Matematika III. harmadik előadás

Közönséges differenciálegyenletek megoldása Mapleben

Utolsó el adás. Wettl Ferenc BME Algebra Tanszék, Wettl Ferenc (BME) Utolsó el adás / 20

(1 + (y ) 2 = f(x). Határozzuk meg a rúd alakját, ha a nyomaték eloszlás. (y ) 2 + 2yy = 0,

Annak a function-nak a neve, amiben letároltuk az egyenletünket.

Gauss-Seidel iteráció

MATLAB. 8. gyakorlat. Differenciálegyenletek

9. feladatsor: Többváltozós függvények deriválása (megoldás)

DIFFERENCIÁLEGYENLETEK. BSc. Matematika II. BGRMA2HNND, BGRMA2HNNC

Baran Ágnes, Burai Pál, Noszály Csaba. Gyakorlat Differenciálegyenletek

Merev differenciálegyenletek numerikus megoldása

0-49 pont: elégtelen, pont: elégséges, pont: közepes, pont: jó, pont: jeles

Matematika II. 1 sin xdx =, 1 cos xdx =, 1 + x 2 dx =

Numerikus integrálás

sin x = cos x =? sin x = dx =? dx = cos x =? g) Adja meg a helyettesítéses integrálás szabályát határozott integrálokra vonatkozóan!

Differenciálegyenletek

1. Számsorok, hatványsorok, Taylor-sor, Fourier-sor

Runge-Kutta módszerek

6. Függvények. 1. Az alábbi függvények közül melyik szigorúan monoton növekvő a 0;1 intervallumban?

Meghatározás: Olyan egyenlet, amely a független változók mellett tartalmaz egy vagy több függvényt és azok deriváltjait.

Megoldott feladatok november 30. n+3 szigorúan monoton csökken, 5. n+3. lim a n = lim. n+3 = 2n+3 n+4 2n+1

Matematikai háttér. 3. Fejezet. A matematika hozzászoktatja a szemünket ahhoz, hogy tisztán és világosan lássa az igazságot.

Differenciálegyenletek numerikus integrálása április 9.

4. Laplace transzformáció és alkalmazása

Kétváltozós függvények differenciálszámítása

Numerikus módszerek beugró kérdések

2 (j) f(x) dx = 1 arcsin(3x 2) + C. (d) A x + Bx + C 5x (2x 2 + 7) + Hx + I. 2 2x F x + G. x

MODELLEK ÉS ALGORITMUSOK ELŐADÁS

A Richardson-extrapoláció és alkalmazása a Dániai Euleri Modellben

Numerikus módszerek 1.

Mátrixhatvány-vektor szorzatok hatékony számítása

Feladatok megoldásokkal a 9. gyakorlathoz (Newton-Leibniz formula, közelítő integrálás, az integrálszámítás alkalmazásai 1.

1.9. B - SPLINEOK B - SPLINEOK EGZISZTENCIÁJA. numerikus analízis ii. 34. [ a, b] - n legfeljebb n darab gyöke lehet. = r (m 1) n = r m + n 1

Matematika szigorlat június 17. Neptun kód:

Differenciálegyenletek december 13.

Lineáris algebra numerikus módszerei

Szakdolgozat. M esz aros Mirjana

NUMERIKUS MÓDSZEREK FARAGÓ ISTVÁN HORVÁTH RÓBERT. Ismertet Tartalomjegyzék Pályázati támogatás Gondozó

Függvények vizsgálata

Az egyenlőtlenség mindkét oldalát szorozzuk meg 4 16-al:

KOVÁCS BÉLA, MATEMATIKA II.

First Prev Next Last Go Back Full Screen Close Quit

Differenciálegyenlet rendszerek

BIOMATEMATIKA ELŐADÁS

Gyakorló feladatok. Agbeko Kwami Nutefe és Nagy Noémi

Numerikus módszerek 1.

Matematika III előadás

Taylor-polinomok. 1. Alapfeladatok április Feladat: Írjuk fel az f(x) = e 2x függvény másodfokú Maclaurinpolinomját!

Numerikus matematika vizsga

JPTE PMMFK Levelező-távoktatás, villamosmérnök szak

10. Előadás. 1. Feltétel nélküli optimalizálás: Az eljárás alapjai

Elhangzott tananyag óránkénti bontásban

4. fejezet. Egyváltozós valós függvények deriválása Differenciálás a definícióval

DIFFERENCIÁLEGYENLETEK. BSc. Matematika II. BGRMA2HNND, BGRMA2HNNC

Gauss-eliminációval, Cholesky felbontás, QR felbontás

Numerikus matematika. Irodalom: Stoyan Gisbert, Numerikus matematika mérnököknek és programozóknak, Typotex, Lebegőpontos számok

Alap-ötlet: Karl Friedrich Gauss ( ) valószínűségszámítási háttér: Andrej Markov ( )

Matematika A1a Analízis

Numerikus integrálás április 20.

x 2 e x dx c) (3x 2 2x)e 2x dx x sin x dx f) x cosxdx (1 x 2 )(sin 2x 2 cos 3x) dx e 2x cos x dx k) e x sin x cosxdx x ln x dx n) (2x + 1) ln 2 x dx

Eötvös Loránd Tudományegyetem Természettudományi Kar

Bevezetés az algebrába 2 Differencia- és differenciálegyenlet-rendszerek

Kalkulus I. gyakorlat Fizika BSc I/1.

A brachistochron probléma megoldása

2. Alapfeltevések és a logisztikus egyenlet

MATLAB. 5. gyakorlat. Polinomok, deriválás, integrálás

Végeselem modellezés alapjai 1. óra

Szélsőérték-számítás

Gauss-Jordan módszer Legkisebb négyzetek módszere, egyenes LNM, polinom LNM, függvény. Lineáris algebra numerikus módszerei

GPK M1 (BME) Interpoláció / 16

λx f 1 (x) e λx f 2 (x) λe λx f 2 (x) + e λx f 2(x) e λx f 2 (x) Hasonlóan általában is elérhető sorműveletekkel, hogy csak f (j)

Egyenletek, egyenlőtlenségek VII.

Kalkulus 2., Matematika BSc 1. Házi feladat

Feladatok a Diffrenciálegyenletek IV témakörhöz. 1. Határozzuk meg következő differenciálegyenletek általános megoldását a próba függvény módszerrel.

Matematika II képletek. 1 sin xdx =, cos 2 x dx = sh 2 x dx = 1 + x 2 dx = 1 x. cos xdx =,

Bevezetés az algebrába 2

Maple: Deriváltak és a függvény nevezetes pontjai

Többváltozós, valós értékű függvények

Differenciálegyenletek analitikus és numerikus megoldása

Károlyi Katalin Eötvös Loránd Tudományegyetem Alkalmazott Analízis Tanszék. Abstract

Gibbs-jelenség viselkedésének vizsgálata egyszer négyszögjel esetén

Numerikus módszerek I. zárthelyi dolgozat (2017/18. I., A. csoport) Megoldások

Fraktálok. Kontrakciók Affin leképezések. Czirbusz Sándor ELTE IK, Komputeralgebra Tanszék. TARTALOMJEGYZÉK Kontrakciók Affin transzformációk

Feladatok az 5. hétre. Eredményekkel és teljesen kidolgozott megoldásokkal az 1,2,3.(a),(b),(c), 6.(a) feladatokra

Matematika A1a Analízis

Csomós Petra. Loránd Tudományegyetem, Budapest. függvénytan, valós és komplex vonalintegrál)

(!), {z C z z 0 < R} K (K: konv. tart.) lim cn+1

Tananyag. Amikor ez nem sikerül (vagy nem érdemes előállítani a megoldás képletét, mert pl. nagyon

Átírás:

Eötvös Loránd Tudományegyetem Természettudományi Kar Alkalmazott Analízis és Számításmatematikai Tanszék Közönséges Differenciálegyenletek Kezdetiérték Feladatainak Numerikus Megoldása Matlab Alkalmazásával Szakdolgozat Készítette: Macsotai Ágnes matematika BSc Témavezető: Dr Faragó István egyetemi tanár elemző szakirányos allgató Budapest 2010

Tartalomjegyzék Bevezetés 4 1 Matematikai bevezetés 6 11 Differenciálegyenletek alapvető tulajdonságai 6 12 Numerikus módszer 7 2 Egylépéses módszerek 8 21 Az explicit Euler-módszer 9 211 Az expilicit Euler-módszer konzisztenciája 10 212 Az explicit Euler-módszer konvergenciája 10 213 Az explicit Euler-módszer megvalósítása Matlabbal 12 214 Lotka-Volterra Modell 16 22 A javított Euler-módszer 17 221 A javított Euler-módszer rendje 18 222 A javított Euler-módszer megvalósítása Matlabbal 18 23 Az implicit Euler-módszer 20 231 Az implicit Euler-módszer konzisztenciája 21 232 Az implicit Euler-módszer megvalósítása Matlabbal 21 24 Runge-Kutta típusú módszerek 26 241 Kétlépcsős Runge-Kutta módszerek 28 242 Magasabb rendű Runge-Kutta módszerek a Matlabban 30 3 Többlépéses módszerek 35 31 A lineáris többlépéses módszer rendje 35 32 Adams típusú módszerek 36 2

33 Többlépéses módszer a Matlabban 38 4 Összefoglalás 40 Köszönetnyilvánítás 42 Irodalomjegyzék 43

Bevezetés Szakdolgozatom a közönséges differenciálegyenletek numerikus megoldásával foglalkozik De mik azok a differenciálegyenletek és miért is olyan fontosak? Differenciálegyenlet alatt egy olyan speciális függyényegyenletet értünk, amelyben a megatározandó ismeretlen egy megfelelő rendben differenciálató függvény, és az egyenlet kapcsolatot fejez ki az ismeretlen függvény különböző rendű deriváltjai között A differenciálegyenlet megoldása azt jelenti, ogy találunk egy olyan függvényt (függvényeket), amely kielégíti az egyenletet A fizika, kémia, biológia vagy akár a közgazdaságtan számos alaptörvénye felírató differenciálegyenletekkel Nézzünk néány példát! Fizikai példa: Newton második törvénye azt mondja, ogy az elmozdulás idő szerinti második deriváltja egyenesen arányos a testre ató erővel Ha az erő minden időpillanatban csak a test elyzetétől függ, akkor a differenciálegyenlet: x (t) = m x(t) alakú, aol a x(t) az ismeretlen függvény Ezt a másodrendű differenciálegyenletet át tudjuk írni elsőrendűvé a következőképpen: legyen x 1 (t) = x(t) és x 2 (t) = x (t), ekkor a differenciálegyenletünk a így néz ki: x 1 = x 2, x 2 = mx 1 Biológia példa: A nemlineáris differenciálegyenletek fontos szerepet játszanak a populáció dinamikai modellezésben Vegyünk egy ragadozó-préda modellt Legyen x(t) egy nyúlpopuláció mérete a t időpontban, míg y(t) egy rókapopuláció mérete Ismerjük a populációk kezdeti méretét, x(0)-at és y(0)-at Ekkor felíratjuk a következő diffreneciálegyenletrendszert: x (t) = ax(t) bx(t)y(t) y (t) = cx(t)y(t) dy(t), 4

TARTALOMJEGYZÉK 5 aol a a nyulak növekedési rátája, d a rókapopuláció alálozási aránya Mikor egy róka és egy nyúl találkozik, akkor a nyulak számának csökkennie kell és a rókák számának nőnie, ezt fejezi ki b, illetve c A továbbiakban egy konkrét példában megadjuk a paraméterek egy leetséges megválasztását és megvizsgáljuk a modellünket

1 fejezet Matematikai bevezetés 11 Differenciálegyenletek alapvető tulajdonságai A differenciálegyenleteknek két típusa van, a közönséges differenciálegyenletek (ebben az esetben egyváltozós az ismeretlen függvény) és a parciális differenciálegyenletek (itt pedig többváltozós az ismeretlen függvény) Differenciálegyenletek néány fontosabb jellemzői: rend: egy differenciálegyenlet rendjén a differenciálegyenletben szereplő legmagasabb rendű derivált rendjét értjük, explicit: a a függvénykapcsolatból explicit kifejezető a legmagasabb rendű derivált, implicit: a nem explicit, teát nem tudjuk kifejezni a legmagasabb rendű deriváltat Az elsőrendű explicit közönséges differenciálegyenlet alakja teát a következő: u = f(t, u), u(t 0 ) = u 0, aol u: R R az ismeretlen differenciálató függvény, és f : T R, T R 2 adott folytonos függvény, (t 0, y 0 ) T és az u (t) = du(t) dt jelölést asználjuk Tétel: (egzisztenciatétel) Tegyük fel, ogy teljesülnek az alábbi feltételek: f : T R, T R 2 egy tartomány, 6

1 FEJEZET MATEMATIKAI BEVEZETÉS 7 f C(T ), azaz f folytonos T -n, f a második változójában eleget tesz a Lipscitz-feltételnek, azaz létezik olyan L 0 állandó, ogy minden (t, u 1 ), (t, u 2 ) T -re igaz, ogy f(t, u 1 ) f(t, u 2 ) L u 1 u 2 Ekkor a kezdeti feltételbeli t 0 pontnak létezik olyan K(t 0 ) környezete, ogy a kezdetiérték feladatnak egyértelműen létezik megoldása K(t 0 )-n 12 Numerikus módszer Körülöttünk lévő világunk jobb megismerése céljából a különböző jelenségeket próbáljuk meg modellezni Mivel világunk bonyolultan működik, így modelljeinket egyszerűsítenünk kell, ogy azokat tesztelni tudjuk (például szabadesésnél eltekintetünk a közegellenállástól, ogy egyszerűbben ki tudjuk számolni a testre ató erőt) Ilyen folytonos modellek diszkretizációjával foglalkozik a numerikus analízis és az ezeket megoldó numerikus módszerekkel Természetesen a megoldások közelítőek, de megköveteljük, ogy bizonyos elfogadató és kontrolálató ibaatáron belül maradjanak A modellekkel szembeni elvárások: létezik megoldás (egzisztencia), a megoldás egyértelmű (unicitás), a megoldás folyamatosan függ a feladatot leíró adatoktól (stabilitás) Ezt összefoglalóan korrekt kitűzésű feladatnak nevezzük

2 fejezet Egylépéses módszerek Tekintsük a következő kezdetiérték feladatot: u = f(t, u), (21) u(t 0 ) = u 0 (22) Tegyük fel, ogy létezik u : I R megoldás, azaz u C 1 (I) olyan függvény, melyre u (t) = f(t, u(t)), u(t 0 ) = u 0 Eez először definiáljuk ω rácsálót ily módon: Legyen > 0 esetén ω := {t n = n, n = 0, 1, 2} Jelölje y az ω -n értelmezett úgynevezett rácsfüggvényt Vezessünk be néány egyszerűsítő jelölést Legyen y n = y (t n ) a közelítő érték, u n = u(t n ) pedig a pontos megoldás a rácsáló t n pontjában Feladatunk: úgy megatározni y rácsfüggvényt, mely a rácsáló pontjaiban közel legyen az u függvény értékeiez Hibafüggvény: u(t) a kezdetiérték feladat pontos megoldása és y n a numerikus megoldása, z n := y n u n, z : ω R függvény a ibafüggvény Definíció: Azt mondjuk, ogy egy numerikus módszer által előállított y (t) rácsfüggvénysorozat finomodó lépésközök esetén konvergál az u(t) kezdetiérték feladat megoldásáoz, a valamely t I pontban t mindegyik rácsálónak pontja, azaz t ω lim y (t ) u(t ) = 0 (23) 0 8

2 FEJEZET EGYLÉPÉSES MÓDSZEREK 9 Megjegyzés: A (23) esetén azt mondjuk, ogy a numerikus módszer konvergens a t pontban Általánosan a numerikus módszert konvergensnek nevezzük, a az konvergens minden t I pontban Definíció: Ha egy numerikus módszer konvergens, akkor az (23)-beli nulláoz tartásnak rendjét y (t ) y(t ) = O( p ) z (t ) = O( p ) a konvergencia rendjének nevezzük 21 Az explicit Euler-módszer Ismerjük az u = f(t, u) kezdetiérték feladatot és az u 0 értékét, így ismerjük u(t) deriváltját a t 0 pontban: u (t 0 ) = f(t 0, u(t 0 )), és legyen a kezdeti pontban y (t 0 ) = u (t 0 ) Egy megfelelően kicsi > 0-t választva a derivált irányában teszünk egy vetületű lépést Az első lépés után: t 1 = t 0 +, y 1 = y t0 + f(t 0, y t0 ) Ekkor kapunk egy új (t 1, y 1 ) pontot, ebből a pontból újabb vetületű lépést teszünk a f(t 1, y 1 ) irányban Ezt folytatva kapjuk az explicit Euler-módszert: y n+1 = y n + f(t n, y n ), (24) y 0 = u 0 (25) Most pedig ellenőrizzük az explicit Euler-módszer konvergens-e és nézzük meg, ogy milyen rendben konvergens! Az egyszerűség kedvéért legyen u n = u(t n ) A ibafüggvénybe elyettesítsük be az Euler eljárást, ekkor a következő ibaegyenletet kapjuk: z n+1 z n = [ u ] n+1 u n + f(t n, u n ) + [f(t n, u n + z n ) f(t n, u n )] (26) A ψ (1) n := u n+1 u n + f(t n, u n ) kifejezést a lokális approximációs ibának vagy más néven a reziduális ibának nevezzük A ibaegyenletből ez a tag fejezi ki, ogy a numerikus módszer milyen pontosan approximálja a folytonos kezdetiérték feladatot, mivel a másik tag csak f-től függ

2 FEJEZET EGYLÉPÉSES MÓDSZEREK 10 Definíció: Az explicit Euler-módszert konzisztensnek nevezzük, a lim 0 ψ(1) n = 0 (27) A (27)-beli konvergencia rendjét a numerikus módszer konzisztencia rendjének nevezzük Ha ψ (1) n = O( p ), akkor a módszert p-ed rendűnek nevezzük 211 Az explicit Euler-módszer konzisztenciája Az explicit Euler-módszer lokális approximációs iba egyenletéből a következőt kapjuk: ψ n (1) := u(t n+1) u(t n ) + f(t n, u(t n )) Írjuk át u(t n+1 )-et u(t n +)-ra, feltesszük, ogy u C 3 (I) és Taylor-sorba fejtsük u(t n +) kifejezést a t n pont körül u(t n + ) u(t n ) = u(t n) + u (t n ) + 2 2 u (t n ) + O( 3 ) u(t n ), f(t, u(t)) elyett írjunk u (t), majd egyszerűsítünk Így a következőt kapjuk: ψ (1) n = 1 2 u (t n ) + O( 2 ) Teát az explicit Euler-módszer konzisztens és rendje egy 212 Az explicit Euler-módszer konvergenciája Definíció: Egy numerikus módszer stabilnak nevezünk, a f Lip(y) és létezik olyan K > 0 állandó, amely mellett: z n+1 K ( z 0 + n ψ (1) i i=0 ) Tétel: Ha az explicit Euler-módszer konzisztens és stabil, akkor konvergens is, és a konvergencia rendje egybeesik a konzisztencia rendjével Bizonyítás: Feljebb már szerepelt az explicit Euler-módszer ibaegyenlete, ami a következő: z n+1 z n = [ u ] n+1 u n + f(t n, u n ) + [f(t n, u n + z n ) f(t n, u n )],

2 FEJEZET EGYLÉPÉSES MÓDSZEREK 11 Alkalmazva a [ ψ n (1) := u ] n+1 u n + f(t n, u n ), ψ (2) n := [f(t n, u n + z n ) f(t n, u n )] jelöléseket, rendezzük át a ibaegyenletet a következőképpen: z n+1 = z n + ψ (1) n + ψ (2) n Felasználva a f Lipscitz-tulajdonságát a következő becslés írató fel: z n+1 z n + L z n + ψ (1) n = (1 + L) zn + ψ (1) n, ezt a becslést továbbfejtve kapjuk a következőt: z n (1 + L) z n 1 + [ (1 + L) (1 + L) z n 2 + = (1 + L) 2 z n 2 + (1 + L) [ = (1 + L) 2 z n 2 + (1 + L) Most becsüljük felül 1 + L-et e L -vel: mivel n = t így: ψ (1) n 1 ψ (1) n 2 ψ (1) n 2 ψ (1) n 2 ] + + + ψ (1) n 1 ψ (1) n 1 ψ (1) n 1 (1 + L) n z 0 + (1 + L) i ψ (1) n 1 z n e Ln z 0 + e Ln n 1 = e [ z Lt 0 + ψ (1) n i 1 i=0 ψ (1) n i 1 i=0 ] [ e Lt i=0 n 1 n i 1 = = ] n 1 e [ z Ln 0 + z 0 + M 2 2 n ψ (1) n i 1 i=0 ], ] [ = e Lt z 0 + M ] 2 2 t, aol M 2 a maximuma u -nek a [0, t ] intervallumon Azt tudjuk, ogy z 0 = 0, mivel a kezdeti pontban ismerjük a pontos megoldást Így z n e Lt M 2 2 t = konstans Teát az explicit Euler-módszer stabil és konzisztens, így konvergens is és a konvergencia rendje egy Megjegyzés: A tétel általánosan is igaz, teát, a egy numerikus módszer konzisztens és

2 FEJEZET EGYLÉPÉSES MÓDSZEREK 12 stabil, akkor konvergens is, és a konvergencia rendje egybeesik a konzisztencia rendjével A további módszereknél szintén érvényes a stabilitás (ezt a továbbiakban nem számoljuk ki), ezért elég lesz csak a konzisztencia rendjét megatározni, amiből a konvergencia rendje közvetlenül adódik 213 Az explicit Euler-módszer megvalósítása Matlabbal A Matlabban léteznek már megírt, ún beágyazott algoritmusok a közönséges differenciálegyenletek megoldására Mivel az explicit Euler-módszer nincs benne a már megírtak között, így nekünk kell megírni ezt az algoritmust egy m-fájlban Először is indítsuk el a Matlabot, majd az Editorba írjuk a következőket, majd mentsük el function [t, y] = eeuler(diffegy, t0, y0,, N) t = zeros(n+1,1); y = zeros(n+1,1); t(1) = t0; y(1) = y0; for i=1:n t(i+1) = t(i) + ; y(i+1) = y(i) + * diffegy(t(i),y(i)); end Az első sorban azt adtuk meg, ogy ogyan fogjuk megívni a módszerünket Mi eeuler-nek neveztük el, öt bemenő és kettő kimenő paramétere van A két kimenő paraméter az idő vektor és a közelített értékek vektora Az első bemenő paraméter egy alfüggvény, aminek jelen esetben diffegy a neve, ebben a függvényben írjuk meg azt differenciál függvény, amit szeretnénk oldani A második paraméter t0, ez a kezdeti időpontot jelöli, a armadik y0, ami a kezdetiérték, a következő, a lépéstávolság, majd végül N jelöli, ogy ány lépést teszünk meg A második és armadik sorban vesszük fel t és y vektorokat, amikben az értékeket először mind 0-ra állítjuk A következő két sorban beállítjuk a kezdőértékeket Utána egy ciklus következik, melyben először beállítjuk a t i értékeket, majd kiszámoljuk a meredekséget, végül az y i értékeket is, úgy, aogy az az explicit Euler-módszerben van Ez még csak az explicit Euler-módszer megvalósítása, még nem tudjuk egy adott

2 FEJEZET EGYLÉPÉSES MÓDSZEREK 13 differenciálegyenletre lefuttatni Eez szükségünk van egy alfüggvényre, aminek a neve diffegy lesz A következő példát fogjuk leprogramozni: u (t) = u(t) + t + 1, aol t [0, 1] és u(0) = 1 Kétféle lépéstávolságot fogunk vizsgálni, 1 = 01-et és 2 = 001-et A példánkat természetesen exact módon is ki leet számolni, ogy meg tudjuk nézni, mennyire pontos a módszer Most pedig írjuk meg a diffegy nevű alfüggvényünket Nyissunk egy új m-fájlt, amibe írjuk a következőket, majd mentsük el function dydt = diffegy(t,y) dydt = -y + t + 1; Most már megírtunk mindkét függvényt, futtassuk le a programunkat először 1 = 01- es lépéstávolsággal, majd 2 = 001-es lépéstávolsággal is A Command ablakba írjuk a következőt: [T1,Ye] = eeuler(@diffegy, 0, 1, 01, 10) Enter után kiadja T1 és Ye vektorokat Ha ki is szeretnénk rajzoltatni, akkor a plot(t1,ye) paranccsal egy külön ablakban megjelenik a függvényünk A 2 = 001-es lépéstávolságoz pedig írjuk ezt: [T2,Xe] = eeuler(@diffegy, 0, 1, 001, 100) Mivel az explicit Euler-módszer ibájára vagyunk kíváncsiak, a pontos megoldást is le kell programoznunk A példánk pontos megoldása: u(t) = e t + t függvény A Matlabban egy új m-fájlba írjuk a következőket: function e = exact(t) e = exp(-t) + t; A Command ablakban ívjuk meg Legyen Yp a pontos megoldás T1 intervallumon, míg Xp a pontos megoldás T2 intervallumon A plot(t1, [Ye, Yp]) és plot(t2, [Xe, Xp]) parancsokkal egy ábrán is megtekintetjük a pontos és az approximált függvényeket Az alábbi táblázatban látatjuk, a módszer ibáját 1 = 01 és 2 = 001 lépéstávolságoknál

2 FEJEZET EGYLÉPÉSES MÓDSZEREK 14 t i u(t i ) y(t i ) z i 0 10000 10000 0 01000 10048 10000 48374e-003 02000 10187 10100 87308e-003 03000 10408 10290 11818e-002 04000 10703 10561 14220e-002 05000 11065 10905 16041e-002 06000 11488 11314 17371e-002 07000 11966 11783 18288e-002 08000 12493 12305 18862e-002 09000 13066 12874 19149e-002 10000 13679 13487 19201e-002 t i u(t i ) y(t i ) z i 0 10000 10000 0 00100 10000 10000 49834e-005 00200 10002 10001 98673e-005 01000 10048 10044 45534e-004 05000 11065 11050 15246e-003 08000 12493 12475 18058e-003 09800 13553 13535 18468e-003 09900 13616 13597 18471e-003 10000 13679 13660 18471e-003

2 FEJEZET EGYLÉPÉSES MÓDSZEREK 15

2 FEJEZET EGYLÉPÉSES MÓDSZEREK 16 Amint azt látatjuk, a minél kisebb lépéstávolságot asználunk, annál pontosabb lesz a közelítésünk a t = 1 pontban 01 001 0001 z i 19201e-002 18471e-003 18402e-004 214 Lotka-Volterra Modell A bevezetőben már említett ragadozó-préda vagy más néven Lotka-Volterra modellt fogjuk ebben a részben Matlabban megvalósítani Legyen x(t) a préda populáció mérete a t időpontban, míg y(t) a ragadozó populáció mérete Ha nincs ragadozó, akkor feltesszük, ogy a préda populáció exponenciális vagy x = ax dinamikájú, aol a a préda populáció növekedési rátája Feltesszük még, ogy préda iányában a ragadozók kialnak y = dy egyenlet szerint, aol d a ragadozó populáció alálozási aránya Mikor préda ragadozóval találkozik, a préda populációnak csökkennie kell x (t) = ax(t) bx(t)y(t) és a ragadozó populációnak növekednie y (t) = cx(t)y(t) dy(t) Ismerjük a populációk kezdeti méretét, x(0)-at és y(0)-at, mely a két populáció kezdeti arányát mutatja meg Ekkor felíratjuk a következő differenciálegyenlet-rendszert: x (t) = ax(t) bx(t)y(t) y (t) = cx(t)y(t) dy(t) Nézzük a következő példát: x = x 2x 2 xy y = 2y + 6xy, legyen x(0) = 1, y(0) = 01 és a t = [0, 20] Matlabban nyissunk egy új m-fájlt és írjuk bele a következőket: function euler (x, y, T, N) xistory=x; yistory=y; =T/N; for n=1:n u=f(x,y); v=g(x,y); x=x+*u; y=y+*v; xistory=[xistory,x]; yistory=[yistory,y]; end

2 FEJEZET EGYLÉPÉSES MÓDSZEREK 17 t=0::t; plot(t,xistory, red, t, yistory, blue ) xlabel( idő ), ylabel( préda (piros), ragadozó (kék) ) function U=f(x,y) U=x-2*x*x-x*y; function V=g(x,y) V=-2*y+6*x*y; Mentsük el, futtassuk így: euler(1, 01, 20, 250) után ezt a grafikont kapjuk: Aogy az a valóságban is van, a populáció vagy kial, vagy egyensúlyba kerül A grafikonon is jól látszik, ogy a kezdeti időpontokban a ragadozók száma csökken, mivel nincsenek préda állatok, ezzel egy időben a prédaállatok száma nő és, aogy telik az idő úgy kerülnek egyensúlyba a populáció méretei 22 A javított Euler-módszer Próbáljuk meg javítani az Euler-módszert úgy, ogy ne elsőrendű, anem másodrendű legyen Először egy fél lépést téve kiszámítjuk f(t n+ 1, y 2 n+ 1 ) értékét, majd ezzel az új 2 meredekséggel teszünk egy egész lépést az eredeti (t n, y n ) pontból A módszer algoritmikus leírása a következő: y n+1 = y n + f(t n+ 1, y 2 n+ 1 ) (28) 2

2 FEJEZET EGYLÉPÉSES MÓDSZEREK 18 221 A javított Euler-módszer rendje A lokális approximációs iba kiszámolásáoz fel kell tennünk, ogy f mindkét változója szerint kétszer folytonosan differenciálató, azaz f C 2 (T ) ψ (1) n = u n+1 u n + f(t n+ 1, y 2 n+ 1 ) 2 Az u n+1 és u (t n+ 1 2 ) = f(t n+ 1 2 ψ (1) n, y(t n+ 1 )) függvényeket sorba fejtve a t n pont körül a kapjuk: 2 = u(t n) + u (t n ) + 2 2 u (t n ) + O( 3 ) u(t n ) +u (t n ) + 2 u (t n ) + 2 8 u (t n ) + O( 3 ) A zárójel felbontása és a -val való osztás után: = u (t n ) 2 u (t n ) + o( 2 ) + u (t n ) + 2 u (t n ) + 2 8 u (t n ) + O( 3 ) = 2 8 u (t n ) + O( 2 ) Teát a javított Euler-módszer másodrendben konzisztens, aogy vártuk 222 A javított Euler-módszer megvalósítása Matlabbal Az explicit Euler-módszerez asonlóan a javított Euler-módszer sincs a beágyazott algoritmusok között, ezt is nekünk kell megírnunk Nyissunk egy új m-fáljt, amibe írjuk a következőket: function [t, y] = javeuler(diffegy, t0, y0,, N) t = zeros(n+1,1); y = zeros(n+1,1); t(1) = t0; y(1) = y0; fel = 05 * ; for i=1:n t(i+1) = t(i) + ; y(i+1) = y(i) + *diffegy(t(i)+fel, y(i)+ fel*diffegy(t(i), y(i))); end

2 FEJEZET EGYLÉPÉSES MÓDSZEREK 19 A program nem sokban tér el az explicit Euler-módszernél asználttól A különbség az az érték, mikor fél lépést teszünk, eez csak a meredekséget kell megváltoztatnunk Először is a cikluson kívül még definiálnunk kell fel = + 0, 5 -t, és a ciklusban a meredekség definícióját is megfelelően módosítjuk Most is ugyanazt a példát vizsgáljuk 1 = 01 és 2 = 001 lépéstávolságokkal A Command ablakban a következőképpen ívjuk meg [T1, Yj] = javeuler(@diffegy, 0, 1, 01, 10) és [T2, Xj] = javeuler(@diffegy, 0, 1, 001, 100) A plot(t1, [Yj, Yp]) és a plot(t2, [Xj, Xp]) parancsokkal megint ki tudjuk rajzoltatni a közelítő és a pontos megoldást Az alábbi táblázatban látatjuk a pontos értékeket, a javított Euler-módszer közelítéseit és ibáját 1 = 01 és 2 = 001 lépéstávolságoknál t i u(t i ) y(t i ) z i 0 10000 10000 0 01000 10048 10050 16258e-004 02000 10187 10190 29425e-004 03000 10408 10412 39940e-004 04000 10703 10708 48190e-004 05000 11065 11071 54511e-004 06000 11488 11494 59193e-004 07000 11966 11972 62492e-004 08000 12493 12500 64629e-004 09000 13066 13072 65795e-004 10000 13679 13685 66154e-004

2 FEJEZET EGYLÉPÉSES MÓDSZEREK 20 t i u(t i ) y(t i ) z i 0 10000 10000 0 00100 10000 10001 16625e-007 00200 10002 10002 32919e-007 01000 10048 10048 15194e-006 05000 11065 11065 50925e-006 08000 12493 12493 60362e-006 09000 13066 13066 61445e-006 09900 13616 13616 61772e-006 10000 13679 13679 61775e-006 EE EE jav E jav E 01 001 01 0001 z n 19201e-002 18471e-003 66154e-004 61775e-006 A példán is jól látatjuk, ogy a javított Euler-módszer gyorsabban konvergál, mint az explicit Euler-módszer 23 Az implicit Euler-módszer Próbáljuk meg még jobban javítani az Euler-módszer Most ne a (t n, y n ) meredekséggel lépjünk, anem a (t n+1, y n+1 ) meredekséggel Ekkor a módszerünk implicit lesz, és azt reméljük, ogy magasabb rendű, mint az explicit Euler-módszer Módszer leírása képlettel: y n+1 = y n + f(t n+1, y n+1 ), (29) y 0 = u 0 (210)

2 FEJEZET EGYLÉPÉSES MÓDSZEREK 21 231 Az implicit Euler-módszer konzisztenciája Az explicit Euler-módszerez asonlóan számolatjuk ki az implicit módszer rendjét mivel f(t n+1, u(t n+1 )) = u (t n+1 )-gyel, így ψ n (1) := u(t n+1) u(t n ) + f(t n+1, u(t n+1 )), = u(t n+1) u(t n+1 ) + u (t n+1 ) Ha u(t n+1 ) kifejezést a t n+1 körül Taylor-sorba fejtjük, a következőt kapjuk: ψ n (1) = u(t n+1) (u(t n+1 ) u (t n+1 ) + O( 2 )) + u (t n+1 ), a zárójelet felbontva és egyszerűsítve: = u(t n+1) + u(t n+1 ) u (t n+1 ) + O( 2 ) = O() Teát az implicit Euler-módszer, a várttal ellentétben az explicit módszerez asonlóan első rendben konzisztens 232 Az implicit Euler-módszer megvalósítása Matlabbal Az implicit feladatok leprogramozása általában bonyolult, így én két egyszerűbb megoldást fogok bemutatni a fentebb említett példánkra Elsőnek nézzük azt a megoldást, ami pontosabb, de csak erre a példára alkalmazató Eez először is kicsit át kell írnunk a feladatunkat Teát az u (t) = u(t) + t + 1 egyenletet írjuk be az implicit Eulermódszerbe: y n+1 = y n + ( y n+1 + t n+1 + 1) Most bontsuk fel a zárójelet, majd rendezzük át: y n+1 = y n y n+1 + t n+1 +, y n+1 = y n + t n+1 + 1 + Ezt programozzuk le a már megszokott módon Nyissunk egy új m-fájlt, amibe írjuk az alábbiakat: function [t, y] = ieuler(t0, y0,, N)

2 FEJEZET EGYLÉPÉSES MÓDSZEREK 22 t = zeros(n+1,1); y = zeros(n+1,1); t(1) = t0; y(1) = y0; for i=1:n t(i+1) = t(i) + ; y(i+1) = (y(i) + * t(i+1) + ) / (1+); end Mentsük el, majd a Command ablakban ívjuk meg így: [T1, Yi] = ieuler(0, 1, 01, 10) Majd 2 = 001 lépéstávolsággal is futtassuk le A módszer ibáját a táblázatban látatjuk 1 = 01 és 2 = 001 lépéstávolságok mellett t i u(t i ) y(t i ) z i 0 10000 10000 0 01000 10048 10091 42535e-003 02000 10187 10264 77155e-003 03000 10408 10513 10497e-002 04000 10703 10830 12693e-002 05000 11065 11209 14391e-002 06000 11488 11645 15662e-002 07000 11966 12132 16573e-002 08000 12493 12665 17178e-002 09000 13066 13241 17528e-002 10000 13679 13855 17664e-002

2 FEJEZET EGYLÉPÉSES MÓDSZEREK 23 t i u(t i ) y(t i ) z i 0 10000 10000 0 00100 10000 10001 49176e-005 00200 10002 10003 97376e-005 01000 10048 10053 44954e-004 05000 11065 11080 15082e-003 08000 12493 12511 17890e-003 09000 13066 13084 18215e-003 09900 13616 13634 18316e-003 10000 13679 13697 18318e-003 Nézzünk meg egy másik módszert is, ami nem ennyire pontos, de nem kell minden megoldani kívánt differenciálegyenletez írnunk egy-egy új módszert function [t, y] = ie(diffegy, t0, y0,, N) t = zeros(n+1,1); y = zeros(n+1,1); t(1) = t0; y(1) = y0; for i=1:n t(i+1) = t(i) + ; yexp = y(i) + * diffegy(t(i),y(i)); y(i+1) = y(i) + * diffegy(t(i+1), yexp); end Itt explicit Euler-módszerrel közelítjük y n+1 értékét, amit az implicit Euler-módszerben asználunk fel, bár így nem lesz annyira pontos a módszer, mint az előbb Természetesen nem muszáj az explicit Euler-módszert asználni, bármelyik másik explicit módszer is jó, ogy approximáljuk y n+1 -et Tulajdonképpen a (29) implicit Euler-módszer nemlineáris

2 FEJEZET EGYLÉPÉSES MÓDSZEREK 24 egyenletét oldjuk meg az egyszerű iteráció módszerével, amikor is egy iterációs lépést teszünk csak meg és kezdőértéknek az explicit Euler-módszer eredményét asználjuk Mentsük el az m-fájlt, majd ívjuk meg a következőképpen: [T1, Yie] = ie(@diffegy, 0, 1, 01, 10), majd 2 = 001 lépéstávolsággal is: [T2, Xie] = ie(@diffegy, 0, 1, 001, 100) A módszer ibáját az alábbi táblázatokban látatjuk: t i u(t i ) y(t i ) z i 0 10000 10000 0 01000 10048 10100 51626e-003 02000 10187 10281 93692e-003 03000 10408 10536 12753e-002 04000 10703 10857 15430e-002 05000 11065 11240 17501e-002 06000 11488 11679 19058e-002 07000 11966 12168 20176e-002 08000 12493 12703 20924e-002 09000 13066 13279 21360e-002 10000 13679 13894 21537e-002

2 FEJEZET EGYLÉPÉSES MÓDSZEREK 25 t i u(t i ) y(t i ) z i 0 10000 10000 0 00100 10000 10001 50166e-005 00200 10002 10003 99337e-005 01000 10048 10053 45859e-004 05000 11065 11081 15386e-003 08000 12493 12512 18251e-003 09000 13066 13084 18583e-003 09800 13553 13572 18683e-003 09900 13616 13634 18686e-003 10000 13679 13697 18687e-003 ieuler ieuler ie ie 01 001 01 0001 z i 17664e-002 18318e-003 21537e-002 18687e-003 Ha egy grafikonon ábrázoljuk az implicit Euler-módszer, az explicit Euler-módszer és a

2 FEJEZET EGYLÉPÉSES MÓDSZEREK 26 pontos megoldásokat, észreveetjük, ogy az implicit Euler közelítése a pontos megoldás felett, míg az explicit Euler-módszeré a pontos megoldás alatt fut Ebből az észrevételből jön a középponti szabály, amit teát úgy származtatunk, ogy az implicit Euler-módszer és az explicit Euler-módszer közelítéseit összeadjuk, majd elosztjuk kettővel Ekkor egy még jobb közelítést kapunk: 24 Runge-Kutta típusú módszerek Ebben a fejezetben ismerkedetünk meg a Runge-Kutta módszerekkel, amik szintén az egylépéses módszerekez tartoznak, azaz y n -ből y n+1 -et számoljuk Más egylépéses módszerektől eltérően itt az eredmény kiszámolásáoz előbb több "lépcsőt" is ki kell számolnunk Így magasabb rendű módszereket is elő tudunk állítani Definiáljuk az alábbi m darab k i számokat a következőképpen: k 1 = f(t n, y n ) k 2 = f(t n + a 2, y n + b 21 k 1 ) k 3 = f(t n + a 3, y n + (b 31 k 1 + b 32 k 2 )) k m = f(t n + a m, m 1 i=1 b mi k i )

2 FEJEZET EGYLÉPÉSES MÓDSZEREK 27 Ezen k i számok lineáris kombinációjának segítségével definiáljuk az általános, m-lépcsős Runge-Kutta módszert: m y n+1 = y n + σ i k i A paramétereket az ún Butcer-táblázatba rendezzük: i=1 a 1 b 11 b 1m a 2 b 21 b 2m a m b m1 b mm σ 1 σ m Az explicit Runge-Kutta módszereknél a mátrix egy szigorúan alsóáromszög mátrix, míg az implicit Runge-Kutta módszereknél nem ilyen Ha alsóáromszög mátrix, teát a főátlóban nem csak nulla elemek vannak diagonális implicit Runge-Kutta (DIRK) módszernek nevezzük Az explicit Euler-módszer értelmezető Runge-Kutta módszernek is A Butcer táblája a következő: 0 0 1 Az explicit Euler-módszer elsőrendű volt, de nem is tudunk nagyobb rendű, egylépcsős módszert előállítani Az implicit Euler-módszer Butcer táblája: 1 1 1 A javított Euler-módszer Butcer táblája: 0 0 0 05 05 0 0 1 A javított Euler-módszer kétlépcsős, másodrendű módszer Nézzük meg, ogy van-e más kétlépcsős, másodrendű módszer, illetve létezik-e kétlépcsős, armadrendű módszer!

2 FEJEZET EGYLÉPÉSES MÓDSZEREK 28 241 Kétlépcsős Runge-Kutta módszerek Általános módszer m = 2 esetén: k 1 = f(t n, y n ) k 2 = f(t n + a 2, y n + b 21 k 1 ) y n+1 = y n + (σ 1 k 1 + σ 2 k 2 ) A megválasztató szabad paramétereink a 2, b 21, σ 1 és σ 2 Írjuk fel először a lokális approximációs iba egyenletét erre az általános esetre ψ n (1) = u(t n+1) u(t n ) + [σ 1 f(t n, u(t n )) + σ 2 f(t n + a 2, u(t n ) + b 21 f(t n, u(t n )))] Fejtsük Taylor-sorba u(t n+1 )-et t n pont körül u(t n + ) u(t n ) = u(t n) + u (t n ) + 2 2 u (t n ) + O( 3 ) u(t n ) = u (t n )+ 2 u (t n )+O( 2 ) Most pedig f(t n + a 2, u(t n ) + b 21 f(t n, u(t n )))-et kell a (t n, u(t n )) pont körül ψ (1) n f(t n + a 2, u(t n ) + b 21 f(t n, u(t n ))) = f + 1 f a 2 + 2 f b 21 f + O( 2 ), aol f, 1 f és 2 f a (t n, u(t n )) elyen értendő Az alábbiakat kaptuk: [ = [ u (t n ) + σ 1 f + σ 2 f] + 1 2 u (t n ) + σ 2 (a 2 1 f + b 21 2 f f) ] + O( 2 ) Mivel u (t) = f(t, u(t)) megoldása a differenciálegyenletnek és u (t) = 1 f + f 2 f a (t, u(t)) elyen, így ψ 1 n = f + (σ 1 + σ 2 )f + Hogy az általános módszerünk másodrendű legyen az alábbi feltételeknek kell teljesülniük: [ 1 2 ( 1f) 1 ] 2 ( 2f)f + a 2 σ 2 ( 1 f) + σ 2 ( 2 f)b 21 f + O( 2 ) σ 1 + σ 2 = 1, a 2 σ 2 = 1 2, b 21 σ 2 = 1 2 Legyen σ := σ 2 Ekkor σ 1 = 1 σ és legyen a := a 2 = b 21 = 1, σ 0 az előbbi feltételek 2σ miatt Teát az általános kétlépcsős, másodrendű Runge-Kutta módszer táblázata így néz ki:

2 FEJEZET EGYLÉPÉSES MÓDSZEREK 29 aol aσ = 1 2 0 0 0 a a 0 1 σ σ Másik kérdésünk az volt, ogy leet-e kétlépcsős, armadrendű módszer előállítani Teát a fenti paraméteres módszerben a-t vagy σ-át leet-e úgy megválasztani, ogy a módszer armadrendű legyen? Először is írjuk fel az általános alakot: aol a aσ = 05 y n+1 = y n + [(1 σ)f(t n, y n ) + σf(t n + a, y n + af(t n, y n ))], Megmutatjuk, ogy nem leetséges ilyen megválasztás Eez elég azt megmutatnunk, ogy van olyan elsőrendű közönséges differenciálegyenlet, amelyre semmilyen paraméterválasztás mellett sem leet a kétlépcsős módszer armadrendű Tekintsük a következő differenciálegyenletet: u = u, u(0) = u 0 Mivel ebben a feladatban f(t, u) = u, így f(t n, y n ) = y n Ezen megválasztás esetén az alábbi módon módosul a képletünk y n+1 = y n + [(1 σ)y n + σ(y n + ay n )] Elvégezve a beszorzásokat és egyszerűsítéseket, ekkor Mivel aσ = 0, 5, így: y n+1 = y n + (y n σy n + σy n + ay n ) = y n + (1 + aσ)y n y n+1 y n = (1 + 0, 5)y n Most már felíratjuk az approximációs ibaegyenletét: ψ (1) n = u(t n+1) u tn + (1 + 0, 5)u n, Taylor-sorba fejtjük u(t n+1 )-et t n körül: ψ n (1) = (u (t n ) + 2 ) u (t n ) + 2 6 u (t n ) + O( 3 ) + (1 + 0, 5)u(t n )

2 FEJEZET EGYLÉPÉSES MÓDSZEREK 30 A differenciálegyenletből következik, ogy u(t) = u (t) = u (t) = u (t) ψ n (1) 2 2 = u(t n ) [ 1 6 + 1 + 1 ] 2 + O( 3 ) = 2 6 u(t n) + O( 3 ) Mivel u(t n ) 0, ezért a módszer legfeljebb másodrendű leet Hogy egy módszer p rendben konzisztens legyen az alábbi feltétel(ek)nek kell teljesülnie: rend(p) Feltétel 1 σe = 1 2 σa = 1 2 3 σa 2 = 1 3, σba = 1 6 4 σa 3 = 1 4, σaba = 1 8, σaa2 = 1 12, σa2 a = 1 24 aol e = (1, 1,, 1), a k = [ a k 1, a k 2,, a k s], A = diag[a1,, a s ] és B a Butcer táblázatból a b ij -k által alkotott mátrix Azt már tudjuk, ogy kevesebb lépcső biztosan nem elég magasabb rendű módszerek előállításoz Sokszor több lépcsőre van szükségünk, mint a kívánt rend A következő táblázatban látatjuk, ogy ogyan kapcsolódik a rend p és a lépcsők m száma egymásoz Lépcsők száma (m) Rend(p) 1 m 4 p(m) = m 5 m 7 p(m) m 1 8 m 10 p(m) m 2 m > 10 p(m) m 3 242 Magasabb rendű Runge-Kutta módszerek a Matlabban Már említettem, ogy léteznek beágyazott differenciálegyenlet megoldó algoritmusok a Matlabban Ilyen például az ode45, ami a Dormand-Prince módszert alkalmazza Ez egy egylépéses, váltakozó lépésközű módszer Kiszámol egy negyed és egy ötöd rendű Runge-Kutta módszert, és úgy választ lépésközt, ogy a iba a negyed rendű módszer ibája legyen A következő táblázatban látatjuk a módszer Butcer-tábláját Az első σ sor a negyed rendű módszer megoldását adja, míg a második az ötöd rendűjét

2 FEJEZET EGYLÉPÉSES MÓDSZEREK 31 0 1 5 3 10 4 5 8 9 1 5 3 40 44 45 19372 6561 1 9017 3168 9 40 56 15 25360 2187 355 33 32 9 64448 6561 46732 5247 1 35 384 0 500 1113 212 729 49 176 125 192 5103 18656 2187 6784 11 84 5179 7571 0 57600 16695 35 384 0 500 1113 393 640 125 192 92097 339200 2187 6784 187 2100 1 40 11 0 84 Hívjuk meg az ode45 algoritmust asonló módon, mint a saját magunk által írt programokat: [T1, Y45] = ode45(@diffegy, T1, 1) Itt is két kimenő paraméter van, az idő és a közelítő érték vektor A bemenő paramétere rendre: az alfüggvény, amiben a differenciálegyenletünk definíciója van, az idő vektor, ogy melyik időpontokban számoljuk ki a megoldást, a kezdetiérték vektor Meg leet adni egy negyedik választató paramétert is (options), aminek segítségével a default integrálási értékeket átállítatjuk Az alábbi táblázatokban látatjuk, ogy mennyire pontos az ode45 nemcsak 2 = 001, anem 1 = 01 lépéstávolság mellett is t n u(t n ) y(t n ) z n 0 10000 10000 0 01000 10048 10048 29737e-010 02000 10187 10187 53815e-010 03000 10408 10408 73041e-010 04000 10703 10703 88120e-010 05000 11065 11065 99668e-010 06000 11488 11488 10822e-009 07000 11966 11966 11424e-009 08000 12493 12493 11814e-009 09000 13066 13066 12026e-009 10000 13679 13679 12090e-009

2 FEJEZET EGYLÉPÉSES MÓDSZEREK 32 t n u(t n ) y(t n ) z n 0 10000 10000 0 00100 10000 10000 22204e-016 00200 10002 10002 88940e-011 01000 10048 10048 54080e-009 05000 11065 11065 28278e-009 08000 12493 12493 16519e-009 09000 13066 13066 13610e-009 09900 13616 13616 10920e-009 10000 13679 13679 10903e-009 A módszer pontossága igen keveset javult 2 = 001 lépéstávolságnál Ez egyrészt azért van, mert az ode45 algoritmus változó lépésközű, másrészt van egy beépített default érték a pontosságra is (ezt az értéket már 1 = 01-nél elérte) A negyedik bemenő paraméterrel állítatjuk át a módszer pontosságát az odeset függvény segítségével vagy mi magunk is íratunk ilyen függvényeket Nézzünk egy másik beágyazott módszert is, nevezetesen az ode23, ami szintén Runge- Kutta módszereken alapszik, mégpedig a Bogacki-Sampine módszeren Bogacki-Sampine Butcer-táblája: 0 1 2 1 2 3 3 0 4 4 1 2 9 2 9 7 24 1 3 1 3 1 4 4 9 4 0 9 Most futtassuk le a példánkra az ode23 algoritmust is Először 1 = 01 lépéstávolsággal: [T1, Y23] = ode23(@diffegy, T1, 1), majd 2 = 001 lépéstávolsággal: [T2, 1 3 1 8

2 FEJEZET EGYLÉPÉSES MÓDSZEREK 33 X23] = ode23(@diffegy, T2, 1) A következő táblázatok mutatják a módszer ibáját 1 = 01 és 2 = 001 lépéstávolság mellett t n u(t n ) y(t n ) z n 0 10000 10000 0 01000 10048 10048 40847e-006 02000 10187 10187 73920e-006 03000 10408 10408 10033e-005 04000 10703 10703 12104e-005 05000 11065 11065 13690e-005 06000 11488 11488 14865e-005 07000 11966 11966 15692e-005 08000 12493 12493 16227e-005 09000 13066 13066 16518e-005 10000 13679 13679 16607e-005 t n u(t n ) y(t n ) z n 0 10000 10000 0 00100 10000 10000 41583e-010 00200 10002 10002 33825e-008 01000 10048 10048 18521e-006 05000 11065 11065 12194e-005 09000 13066 13066 15515e-005 09900 13616 13616 15233e-005 10000 13679 13679 15087e-005 Itt azt is látatjuk, ogy alig javult a módszer pontossága Ez ugyancsak azért van, mert az ode23 is változó lépésközű és elérte a pontosság a beállított default értéket

2 FEJEZET EGYLÉPÉSES MÓDSZEREK 34 ode45 ode45 ode23 ode23 01 001 01 001 z n 12090e-009 10903e-009 16607e-005 15087e-005 A táblázatból látatjuk, ogy ennél a példánál az ode45 pontosabb, mint az ode23 Az ode23 algoritmust atékonyabb leet nagyobb ibaatárnál vagy, a differenciálegyenlet enyén merev

3 fejezet Többlépéses módszerek Az eddig vizsgált módszerek mind egylépésesek voltak, melyeknél t 0 pontból indulva, ismerve y 0 értékét megpróbáltuk megatározni t 1 -et Ezután t 1 ismeretében közelítettük t 2 -t y 1 segítségével, de itt már nem asználtuk fel y 0 ismeretét, és így tovább A többlépéses módszereknél az alapötlet az, ogy az adott pontbeli megoldás ne csak az eggyel előző értéktől függjön, anem a többi korábbitól is Egy általános r-lépéses numerikus módszer általános alakja a következőképpen írató fel: a 0 y n + a 1 y n 1 + + a r y n r = b 0 f n + b 1 f n 1 + + b r f n r (31) aol a 0,, a r, b 0,, b r a módszert leíró paraméterek és f n f(t n, y n )-t jelöli Hogy egy módszer egyértelmű legyen (ún normalizáló) feltételt adunk meg: r b k = 1 (32) k=0 Ha ki tudjuk kifejezni a legmagasabb deriváltat explicit módon, azaz b 0 = 0, akkor a módszer explicit, a nem tudjuk kifejezni, azaz b 0 0, akkor pedig implicit 31 A lineáris többlépéses módszer rendje A módszer indulásáoz kellenek az y 0,, y r 1 értékek Ezek vagy adottak, vagy egy másik módszerrel kell megatározni őket (például Runge-Kutta módszerekkel) A (31) lineáris többlépéses módszernek is csak a konzisztenciát fogjuk vizsgálni, a stabilitás itt is érvényes 35

3 FEJEZET TÖBBLÉPÉSES MÓDSZEREK 36 Hogyan válasszuk meg a 0,, a r, b 0,, b r adott p-ed rendű legyen? Lokális approximációs iba: ψ (1) n = 1 r a k y(t n k ) + k=0 2r + 2 darab együttatót, ogy a módszer r b k f(t n k, y tn k ) Fejtsük Taylor-sorba y(t n k ) és f(t n k, y tn k )-t úgy, ogy majd a módszer p-ed rendben konzisztens legyen y(t n k ) = y(t n k) = p k=0 k=0 k=0 ( 1) l (k)l l! y (l) (t n ) + O( p+1 ), p 1 f(t n k, y tn k ) = y (t n k ) = ( 1) l (k)l y (l+1) (t n ) + O( p ) l! Ha l = 0, akkor kapjuk a következő feltételt: r a k = 0 (33) k=0 Ha l = 1, 2,, p, akkor: r a k ( 1) l+1 kl l 1 y (l) (t n ) + l! k=0 r k=0 l 1 (k)l 1 b k ( 1) (l 1)! y(l) (t n ) = 0 Osszuk el mindkét oldalt l 1 -gyel, ( 1) l 1 -gyel és y (l) (t n )-nel: r k l r a k l! + k=0 k=0 b k k l 1 (l 1)! = 0 Vonjuk össze a szummákat, szorozzuk fel l!-sal és emeljük ki k l 1 -et: r k l 1 (ka k + lb k ) = 0 (34) k=0 Ez p darab újabb feltétel A (32), (33), (34) egyenletekből p + 2 darab feltételünk van és 2r + 2 darab paraméterünk, teát p 2r leet legfeljebb a módszer rendje 32 Adams típusú módszerek Basfort (1883) egy kapilláris jelenség leírására egy matematikai modellt készített Ennek megoldására javasolta Adams a módszert y(x k+1 ) y(x k ) = xk+1 x k f(x, y(x)) dx

3 FEJEZET TÖBBLÉPÉSES MÓDSZEREK 37 Legyen az egyszerűség kedvéért f k = f(x k, y(x k )) Illesszünk interpolációs polinomot az (x k r, f k r ),, (x k, f k ) pontokra és azt integráljuk az adott intervallumon xk+1 x k r f k i l k i (x) dx i=0 aol x k+1 x k = r xk+1 f k i l k i (x) dx, i=0 x k l k i (x) dx előre kiszámítatóak Ebből kapjunk explicit Adams módszert vagy más néven Adams-Basfort-módszert: y n y n 1 = b 1 f n 1 + + b r f n r Az Adams-Moulton-módszerez most az (x k r, f k r ),, (x k+1, f k+1 ) pontokra illesszünk polinomot és azt integráljuk az [x k, x k+1 ] intervallumon aol x k+1 x k jutunk: = xk+1 x k r f k i l k i (x) dx i= 1 r xk+1 f k i l k i (x) dx, i= 1 x k l k i (x) dx előre kiszámítatóak Az előzőek alapján a következő módszerez y n y n 1 = b 0 f n + b 1 f n 1 + + b r f n r, aol b 0 0 Ez egy implicit séma, f k+1 -ez szükségünk van y k+1 -re Az indulásoz kellenek y 0,, y r 1 értékek Ezek vagy adottak, vagy egy másik módszerrel kell megatározni őket Az Adams-Basfort-módszerrel együtt prediktor-korrektor párként asználják, azaz először Adams-Basfort-módszerrel megatározzuk u k+1 egy y k+1 közelítését, majd ennek segítségével az Adams-Moulton-módszerrel megatározzuk y k+1 -et Összefoglaló néven Adams típusú módszereknek nevezzük azokat a többlépéses módszereket, aol a 0 = 1, a 1 = 1, a 2 = = a r = 0 Általános alakjuk: y n y n 1 = b 0 f n + b 1 f n 1 + + b r f n r (35) Ha a módszer explicit, azaz a b 0 = 0, akkor a módszer Adams-Basfort módszernek nevezzük, míg, a a módszer implicit, b 0 0, akkor Adams-Moulton módszernek

3 FEJEZET TÖBBLÉPÉSES MÓDSZEREK 38 33 Többlépéses módszer a Matlabban Természetesen többlépéses módszerek algoritmusai is megtalálatók a Matlabban Ilyen például az ode113, mely rendje 1-től 13-ig változat és az Adams-Basfort-Moulton PECE módszeren alapszik Az algoritmus először egy Adams-Basfort módszerrel "prediktálja" y n+1 -et, majd az Adams-Moulton módszer "korrigálja" azt A PECE módszert (P = prediction step, E = evaulate, C = correction step) prediktor-korrektor módszernek (magyarul: jósló-javító módszernek) is szokás nevezni A módszer egy explicit és egy implicit módszer egymás utáni alkalmazása Prediktor: Egy explicit módszer, amellyel megmondjuk, ogy az iterációt onnét indítsuk az implicit módszer esetén Korrektor: Az alkalmazott implicit módszer, amellyel finomítjuk y n+1 értékét Futtassuk le a példánkra ezt a programot is Hívjuk meg a következőképpen, 1 = 01 lépésközre: [T1, Y113] = ode113(@diffegy, T1, 1), majd 2 = 001 lépéstávolságra: [T2, X113] = ode113(@diffegy, T2, 1) A módszer pontosságát az alábbi táblázatokban látatjuk: t n u(t n ) y(t n ) z n 0 10000 10000 0 01000 10048 10048 62300e-006 02000 10187 10187 18714e-005 03000 10408 10408 27885e-005 04000 10703 10703 21933e-005 05000 11065 11065 18889e-005 06000 11488 11488 17254e-005 07000 11966 11966 15668e-005 08000 12493 12493 14228e-005 09000 13066 13066 12872e-005 10000 13679 13679 11643e-005

3 FEJEZET TÖBBLÉPÉSES MÓDSZEREK 39 t n u(t n ) y(t n ) z n 0 10000 10000 0 00100 10000 10001 16625e-007 00200 10002 10002 14800e-007 01000 10048 10048 14004e-007 05000 11065 11065 17178e-008 08000 12493 12493 20090e-008 09000 13066 13066 18052e-008 09800 13553 13553 16692e-008 09900 13616 13616 16525e-008 10000 13679 13679 16360e-008

4 fejezet Összefoglalás Célunk az volt, ogy numerikus megoldást találjunk közönséges differenciálegyenlet kezdetiérték feladataira Erre számos módszert néztünk Megismerkedtünk egylépéses és többlépéses módszerekkel is Mindegyik módszernek kiszámoltuk a rendjét és egy adott példán teszteltük a pontosságukat Az alábbi táblázatban összefoglaltam azon módszerek pontosságát t = 1 pontban, melyekkel a szakdolgozatom foglalkozott: módszer 1 = 01 2 = 001 explicit Euler 19201e-002 18471e-003 javított Euler 66154e-004 61775e-006 implicit Euler (pontosabb) 17664e-002 18318e-003 implicit Euler 21537e-002 18687e-003 ode45 12090e-009 10903e-009 ode23 16607e-005 15087e-005 ode113 11643e-005 16360e-008 Természetesen a Matlabban nemcsak az itt szerepelt beágyazott módszerek léteznek Ezek és az odeset függvény bemutatása, a merev rendszerek vizsgálata megaladja a szakdolgozat kereteit, így csak egy röviden foglaltuk össze ezen beágyazott módszerek főbb jellemzőt Az ode45 egy explicit Runge-Kutta formulán alapszik, mégozzá a Dormand-Prince páron Általában ez az algoritmus a legjobb első próbálkozásnak a legtöbb differenciálegyenletre 40 z n

4 FEJEZET ÖSSZEFOGLALÁS 41 Az ode23 is explicit Runge-Kutta módszeren alapszik, a Bogacki-Sampine páron Hatékonyabb leet az ode45-nél, a nagyobb a ibaatár vagy, a differenciálegyenlet enyén merev Az ode113 változó rendű Adams-Basfort-Moulton PECE módszer Hatékonyabb leet az ode45-nél, a szigorúbb ibaatárnál vagy, a a differenciálegyenletet drága kiszámolni Ezeket a módszereket nem merev feladatok megoldására tervezték, így a nagyon lassúak, akkor inkább egy másikat próbáljunk az alábbiak közül Az ode15s változó rendű módszer, mely a differencia képleteken alapszik Általában a Gear-módszert vagy más néven BDF módszert asználja, ami kevésbé atékony Az ode15s is többlépéses, mint az ode113 Használjuk ezt, a az ode45 elbukik, vagy nem atékony, a a feladat merev, vagy algebrai differenciálegyenlet-rendszert akarunk megoldani Az ode23s egy módosított másodrendű Rosenbrock formulán alapszik Ez egy egylépéses módszer, így eredményesebb leet az ode15s-nél nagyobb ibaatárnál Több olyan merev rendszert is meg tud oldani, amelyeknél az ode15s nem atékony Az ode23t a trapéz szabály egyfajta megvalósítása Használjuk ezt a megoldót, a a feladat csak enyén merev és, a a megoldást számítási ibák nélkül szeretnénk megkapni Az ode23t algebrai differenciálegyenlet-rendszert is meg tud oldani Az ode23tb a TR-BDF2 módszer megvalósítása, egy implicit Runge-Kutta módszer, melynek első lépése egy trapéz szabály, a második lépés pedig egy másodrendű differencia képlet A konstrukció miatt mindkét lépésben ugyanazt az iterációs mátrixot asználja Hasonlóan, mint az ode23s atékonyabb leet az ode15s-nél nagy ibaatárnál Végül pedig az ode15i változó lépésközű algoritmus Ez a módszer teljesen implicit differenciálegyenletek megoldására alkalmas

Köszönetnyilvánítás Köszönettel tartozom témavezetőmnek, Faragó Istvánnak, odaadó segítségéért és türelméért Köszönöm Valkó Évának és Karsai Tamásnak az ötleteiket és tanácsaikat, melyek segítségével munkám eredményesebb leetett Hálás vagyok családomnak és a szeretteimnek támogatásukért 42

Irodalomjegyzék [1] Bogacki, P and L F Sampine, A 3(2) pair of Runge-Kutta formulas, Appl Mat Letters, Vol 2, 1989 [2] Dormand, J R and P J Prince, A family of embedded Runge-Kutta formulae, J Comp Appl Mat, Vol 6, 1980 [3] Sampine, L F and M K Gordon, Computer Solution of Ordinary Differential Equations: te Initial Value Problem, W H Freeman, SanFrancisco, 1975 [4] J David Logan, A First Course in Differential Equations, Springer Science+Business Media, Inc, 2006 [5] Internetes forrás, David Houcque, Applications of MATLAB: Ordinary Differential Equations (ODE) ttp://wwwmccormicknortwesternedu/docs/efirst/odepdf [6] Faragó István, Horvát Róbert, Numerikus Módszerek Egyetemi Jegyzet, 2011 [7] Stoyan Gisbert, Takó Galina, Numerikus Módszerek II, Typotex, 1995 43