KÖZÖNSÉGES DIFFERENCIÁLEGYENLETEK TÖBBPONTOS PEREMÉRTÉK PROBLÉMÁI Károlyi Katalin Eötvös Loránd Tudományegyetem Alkalmazott Analízis Tanszék 1117 Budapest, Pázmány Péter sétány 1/c. (karolyik@cs.elte.hu) Abstract Egy numerikus módszert és ennek számítógépes adaptálását mutatjuk be, amely Közönséges Differenciálegyenletek Többpontos Peremérték Problémáinak megoldására alkalmazható. A bemutatott algoritmus lényegében egy módosított shooting módszer, melynél az iterációs ciklusokban az adott és a variációs egyenletekre vonatkozóan Cauchy problémákat oldunk meg, majd az adott peremfeltételeket egy lineáris algebrai egyenletrendszerbe építve keressük a problémának egy közelítő megoldását. Az algoritmus az adott peremérték problémára vonatkozó módosított Newton módszernek is megfeleltethető. (Az elkészített programcsomag C és Turbo Pascal programnyelveken íródott.) 1. Bevezetés A Közönséges Differenciálegyenletek Peremérték Problémái a természettudományok számos területén felmerülnek a jelenségek matematikai modellezésénél. Széleskörű alkalmazásuk a számítógépre adaptálható numerikus módszerek fejlesztését különösen fontossá teszik. Többpontos Peremérték Problémák megoldására visszavezethető feladatokat oldottunk meg a Budapesti Műszaki Egyetem Erősáramú Tanszékén, továbbá tudományos együttműködés keretében a Swedish Transmission Research Institute (Ludvika) munkatársaival, többvezetős elektromos hálózatok tervezésénél, vasúti áramkörök biztosító berendezéseinek fejlesztésénél, valamint telekommunikációs hálózatok vizsgálatainál ([8],[9]), az alábbiakban ismertetésre kerülő algoritmus felhasználásával. 1
2. A numerikus módszer Az algoritmus az alábbi probléma numerikus megoldásához alkalmazható: Az (1) x (t) = f(t, x(t)), t [t 1, t m ] R, x : [t 1, t m ] R n, f : [t 1, t m ] R n R n, n, m N +, m > 1, differenciálegyenlet megoldását keressük az (2) r(x(t 1 ), x(t 2 +),..., x(t m 1 +), x(t m )) = 0, r : (R n ) m R n, t 1 < t 2 <... < t m, (3) g j (x(t j ), x(t j +)) = 0, g j : (R n ) 2 R n, (j =2, 3,..., m 1), peremfeltételek mellett, ahol x(t j ) és x(t j +) az x függvény t j pontbeli bal és jobboldali határértékei (j =2, 3,..., m 1). Feltesszük, hogy az f függvény folytonos és második változója szerint kétszer folytonosan differenciálható a [t j, t j+1 ] R n intervallumokon (j = 1, 2,..., m 1), továbbá, hogy az r és g j függvények folytonosan differenciálhatók. Ezek a megszorítások gyengíthetők, de figyelembe véve hogy az alkalmazásokban ezen feltételek rendszerint amúgyis teljesülnek, az egyszerűbb tárgyalhatóság miatt ezeket itt nem vizsgáljuk. Az (1) (2) (3) feladat megoldásának meghatározásához a többszörös belövéses módszerre alapozva ([1],[2]) dolgoztuk ki az alábbi iterációs algoritmust. Minden egyes iterációs lépésben megoldjuk az (4) x (t) = f(t, x(t)), t [t j, t j+1 ], (5) x(t j ) = s j, (j =1, 2,..., m 1), kezdetiérték feladatokat, ahol az s j R n kezdeti értékeket az első iterációs lépésben tetszőlegesen adjuk meg (ill. egy előzetesen kidolgozott stratégiát alkalmazhatunk, ld. 3.paragrafus), a további iterációkban pedig a (12) formula alapján határozzuk meg. 2
Legyenek a (4) (5) probléma megoldásai rendre a ξ j ( ; s j ) függvények, j =1, 2,..., m 1. Az s j kezdeti értékeket úgy kell meghatároznunk, hogy a (6) ξ(t) := ξ j ( t ; s j ), t [ t j, t j+1 ), ξ(t m ) := ξ m 1 ( t m ; s m 1 ), formulák által meghatározott (2) (3) peremfeltételeket, azaz ξ : [t 1, t m ] R n függvény kielégítse a (7) r( s 1, s 2,..., s m 1, ξ m 1 ( t m ; s m 1 ) ) = 0, (8) g j ( ξ j 1 ( t j ; s j 1 ), s j ) = 0 (j =2, 3,..., m 1), teljesüljenek, vagyis ξ az (1) (2) (3) probléma megoldása legyen. Meg kell tehát oldanunk az F (s 1, s 2,..., s m 1 ) = 0 egyenletet, ahol az F : (R n ) m 1 (R n ) m 1 függvényre (9) F (s 1, s 2,..., s m 1 ) := r( s 1, s 2,..., s m 1, ξ m 1 ( t m ; s m 1 ) ), g 2 ( ξ 1 ( t 2 ; s 1 ), s 2 ),.. g m 1 ( ξ m 2 ( t m 1 ; s m 2 ), s m 1 ) A fenti egyenlet megoldásához a Newton iteráció módszerét alkalmazzuk, mely szerint az (i + 1)-dik iterációbeli közelítésre: (10) (s 1, s 2,..., s m 1 ) (i+1) := (s 1, s 2,..., s m 1 ) (i) (DF ((s 1, s 2,..., s m 1 ) (i) )) 1 F ((s 1, s 2,..., s m 1 ) (i) ). Minden egyes iterációs lépésben megoldjuk tehát a (11) DF (s 1, s 2,..., s m 1 ) ( s 1, s 2,..., s m 1 ) = = F (s 1, s 2,..., s m 1 ) lineáris egyenletrendszert, s a megoldás felhasználásával az (12) s (i+1) j := s (i) j + s j (j =1, 2,..., m 1) formula alapján megkapjuk a következő iterációbeli s j kezdeti értékeket. 3
Az egyenletrendszer DF (s 1, s 2,..., s m 1 ) mátrixának előállításához meg kell határoznunk az F függvény j dik változója szerinti parciális deriváltjait (j = 1, 2,..., m 1), melyek k dik komponenseinek (k = 1, 2,..., n) előállításánál felhasználjuk hogy a ξ j ( ; s j ) függvények j l esetén nem függnek s l től, továbbá hogy 2k ξ ji ( t j ; s j ) = δ ki. A Jacobi mátrix [(j 1) n + k] dik oszlopai tehát (13) j =1 esetére 1k F (s 1, s 2,..., s m 1 ) = 1k r( s 1, s 2,..., s m 1, ξ m 1 ( t m ; s m 1 ) ) n 1i g 2 ( ξ 1 ( t 2 ; s 1 ), s 2 ) 2k ξ 1i (t 2 ; s 1 ) i=1 0 n }.. (m 3) 0 (14) j =2,..., m 2 esetére jk F (s 1, s 2,..., s m 1 ) = n i=1 n jk r( s 1, s 2,..., s m 1, ξ m 1 ( t m ; s m 1 ) ) 0 n }. (j 2) 0 n 2k g j ( ξ j 1 ( t j ; s j 1 ), s j ) 1i g j+1 ( ξ j ( t j+1 ; s j ), s j+1 ) 2k ξ ji (t j+1 ; s j ) 0 n }. (m 2 j) 0 n 4
(15) és j =m 1 esetére (m 1)k F (s 1, s 2,..., s m 1 ) = (m 1)k r( s 1, s 2,..., s m 1, ξ m 1 ( t m ; s m 1 ) ) + + n mi r( s 1, s 2,..., s m 1, ξ m 1 ( t m ; s m 1 ) ) i=1 2k ξ (m 1)i (t m ; s m 1 ) 0 n }.. (m 3) 0 n 2k g m 1 ( ξ m 2 ( t m 1 ; s m 2 ), s m 1 ) ahol 0 n Rn beli zero oszlopvektor; ji r, 1i g j és 2i g j pedig rendre az r és g j függvények parciális deriváltjai a j dik, első és második változóinak i dik komponensei szerint. A 2k ξ ji (t j+1 ; s j ) parciális deriváltakat (j =1, 2,..., m 1, k =1, 2,..., n, i=1, 2,..., n), az alábbi lineáris kezdetiérték problémák (16) y (t) = 2 f( t, ξ j ( t ; s j ) ) y(t), t [ t j, t j+1 ], (17) y(t j ) = e k, (j =1, 2,..., m 1), (k =1, 2,..., n), megoldása után kapjuk (ahol e k (18) 2k ξ ji ( ; s j ) = (η j,k ) i az R n beli k dik egységvektor) a formula szerint ( j =1, 2,..., m 1, k =1, 2,..., n, i=1, 2,..., n), ahol η j,k a (16) (17) megoldásait jelöli. Összefoglalva a fenti algoritmust, a legfontosabb lépések a következők: Az iterációs lépések indítása előtt meghatározzuk az első iterációbeli s j kezdeti értékeket, majd ezután minden egyes iterációs lépésben 5
megoldjuk a (4) (5) és (16) (17) kezdetiérték problémákat, meghatározzuk az F (s 1, s 2,..., s m 1 ) függvényt a (9) formula szerint, felhasználva a (4) (5) problémák megoldásait, meghatározzuk a DF (s 1, s 2,..., s m 1 ) mátrixot a (13), (14), (15) formuláknak megfelelően, felhasználva a (4) (5) és (16) (17) problémák megoldásait, megoldjuk a (11) lineáris egyenletrendszert, hogy meghatározzuk a s 1, s 2,..., s m 1 vektorokat, meghatározzuk az új s j kezdeti értékeket a (12) formula szerint, ellenőrizzük, hogy az új s j kezdeti értékek az (1) (2) (3) probléma megoldását a megadott pontossággal közelítik-e, illetve a pontosság eléréséhez még további iterációs lépésekre van-e szükség. Mivel a Newton módszer csak lokálisan konvergens, a (12) formula helyett a módosított Newton módszerbeli formulát alkalmazzuk ([2]), azaz az új s j kezdeti értékeket az (19) s (i+1) j := s (i) j + λ s j (j =1, 2,..., m 1), formula szerint határozzuk meg, ahol λ a konvergenciát biztosító módosító faktor ([2],[3]), feltételezve természetesen, hogy az (1) (2) (3) probléma megoldható. 3. A számítógépes program A számítógépes alkalmazások esetén különös gonddal kell kezelni az algoritmus alábbi, kulcsfontosságú lépéseit: az első iterációbeli s j (j = 1, 2,..., m 1) kezdeti értékek megválasztása, a (4) (5) és (16) (17) kezdetiérték problémák megoldásánál alkalmazott integrálási módszer, a (11) lineáris egyenletrendszer megoldásánál alkalmazott numerikus módszer, a módosított Newton módszerbeli λ paraméter meghatározásához alkalmazott numerikus módszer ((19) formula). 6
Az s j (j =1, 2,..., m 1) kezdeti értékek első iterációbeli megválasztása, valamint meghatározásuk a további iterációs lépésekben nem csupán a módszer konvergenciája miatt kulcsfontosságú. A gyakorlati alkalmazások esetén sokszor előfordulhat, hogy a 2 f parciális deriváltak nem korlátosak a [t j, t j+1 ] R n intervallumokon, és a (4) (5) valamint (16) (17) kezdetiérték problémák megoldásai az s j bizonyos értékeire nem léteznek a teljes [t j, t j+1 ] intervallumokon, hanem csak a t j pontok valamely szűkebb környezeteiben, melynek következtében ilyenkor a módszer nem működtethető. Ezen túlmenően, mégha a (4) (5) valamint (16) (17) kezdetiérték problémák megoldásai léteznének is elméletileg, a gyakorlatban, ha a megoldások rendkívül érzékenyen függnek a kezdeti értékektől, a közelítő megoldások értékei a [t j, t j+1 ] intervallumok végpontjaiban rendkívül pontatlanok lehetnek. Még a legpontosabb gépi számítások és integráló rutinok esetén sem garantálható, hogy a megoldások elegendő pontossággal meghatározhatók legyenek. A fenti problémát az alábbi ismert becsléssel is szemléltethetjük, (20) ξ j (t; s 1 j) ξ j (t; s 2 j) s 1 j s 2 j e L j t t j, ahol ξ j (t; s 1 j ) és ξ j(t; s 2 j ) a (4) (5) kezdetiérték problémák s j := s 1 j és s2 j értékekkel vett megoldásainak a t helyen felvett értékei, L j pedig az f függvényre vonatkozó, második változó szerinti Lipschitz konstans, a [t j, t j+1 ] R n intervallumokon. A (20) becslés azt is mutatja, hogy valamely pontatlan s j kezdeti érték hatása tetszőleges mértékben csökkenthető, ha a [t j, t j+1 ] intervallumok belsejében egymáshoz elegendően közeli újabb t jk pontokat veszünk fel, t j =: t j1 < t j2 <... < t jl := t j+1, majd ezeket a közbeiktatott pontokat is úgy tekintjük ezután, mint az (1) (2) (3) problémában megadott t j pontokat. Az új pontokban egyszerű folytonosságot meghatározó (21) x(t jk +) x(t jk ) = 0, peremfeltételeket adunk meg, vagyis a (3) peremfeltételeket a (22) g jk : (R n ) 2 R n, (u, v) u v. feltételekkel egészítjük ki az új t jk pontokra vonatkozóan. 7
A (2) peremfeltételben szereplő r leképezés az új osztópontok beiktatása kapcsán lényegében nem változik, azonban r értelmezési tartományát az új pontoknak megfelelően módosítanunk szükséges. Az új osztópontok beiktatását az L j Lipschitz konstansok ismeretének hiányában úgy végezzük el az egyes iterációs ciklusokban, hogy a (4) (5) és (16) (17) kezdetiérték problémák integrálásakor minden egyes lépésben vizsgáljuk a megoldásfüggvények helyettesítési értékeinek normáit, s ha ezek valamely t [ t j, t j+1 ] pontban meghaladják a t j beli értékek normáinak előre megadott γ konstansszorosát, akkor az integrálást ezen az intervallumon megszakítjuk és a t pontot egy új t jk pontként értelmezzük. Vagyis a (4) és (5) differenciálegyenletek [t j, t j+1 ] intervallumokon történő integrálásakor azt vizsgáljuk, hogy a ξ j (t; s j ) és η j,k (t) értékek az s j és 1 értékekhez képest milyen mértékben változnak. Ha (23) ξ j ( t; s j ) > γ ( s j + 1 ) vagy η j,k (t) > γ, akkor a t pont t jk pontkénti beiktatásával az integrálást megszakítjuk az adott intervallumon, majd ezután a [t jk, t j+1 ] intervallumra vonatkozóan folytatjuk az integrálást úgy, hogy az (5) kezdeti értékeket lineáris interpolációval számítjuk az előző iterációs ciklusbeli trajektóriából, illetve az első iterációban az induló közelítésekből. A γ paramétert a felhasználónak kell a rutin számára megadnia. Fontos még megjegyeznünk, hogy a program a második és az azt követő iterációkban a megadottnál nagyobb γ értékkel számol bizonyos numerikus megfontolások miatt, célszerű lehet, különösen olyan esetekben, amikor az integrálgörbéknél nagy meredekségekre számíthatunk, a (2) (3) peremfeltételekhez már eleve megadott pontokként beiktatni közbenső pontokat, tehát ezt nem feltétlenül mindig a módszerre bízni, az adott t j valamint a program által generált t jk közbenső pontokat együttesen shooting pontoknak fogjuk nevezni a továbbiak során. 8
A megoldásfüggvény adott t j pontbeli közelítéseit, vagyis az induló s j (j = 1, 2,..., m 1) kezdeti értékeket a felhasználónak kell megadnia a program meghívása előtt. Ez viszonylag könnyebb lehet olyankor, amikor a megoldás menete a probléma fizikai jellege folytán legalábbis főbb vonalaiban ismertnek tekinthető, és így egy első durva közelítés megadható. Azonban bonyolultabb esetekben, ha a feladat rendkívül instabil, vagy ha ismeretlen a fizikai probléma lefolyása, az első közelítést nagyon körültekintően kell megadnunk. Ilyenkor sok esetben célszerű az u.n. homotopy módszert alkalmazni, amelynél a problémát fokozatos közelítésekkel oldjuk meg olymódon, hogy először egy egyszerűbb problémából indulunk ki, majd ennek megoldását felhasználva (mint induló közelítést) oldjuk meg lépésről lépésre az egyre nehezebb feladatokat, s így jutunk el végül az adott probléma megoldásához. A fenti homotopy módszer egyszerű alkalmazását is lehetővé teszik az induló közelítések alábbi megadási lehetőségei: Az induló trajektória konstans függvény, tehát az s j értékek valamennyi komponense megegyező, a felhasználónak csak ezt a konstans értéket kell megadnia a program meghívása előtt. Az induló s j értékeket a program lineáris interpolációval határozza meg egy a felhasználó által megadott adatfile-ból. Az adatokat a file-ban mátrix elrendezésben kell megadni olymódon, hogy a mátrix sorai τ k pontokat, majd az itt megadott ξ(τ k ) közelítő függvényértékeket tartalmazzák. Legalább két pontot ( τ 1 és τ 2 ) meg kell adni (a hozzájuk tartozó közelítésekkel együtt) úgy, hogy a [τ 1, τ 2 ] intervallum valamennyi t j adott pontot tartalmazzon. Az induló s j értékeket a program lineáris interpolációval határozza meg az előző programfutás shooting pontokbeli megoldásfüggvényeiből. A felhasználónak tehát nem kell közelítő értékeket a programhívás előtt megadnia, azonban egy előzetes sikeres programfutás feltétele ennek a megadásnak, a program ennek a futásnak az eredményeiből automatikusan előállítja az interpolációhoz szükséges adatfile-t. 9
Az induló s j értékeket a program lineáris interpolációval határozza meg egy a felhasználó által a fentiek szerint megadott mátrix formátumú adatfile-ból, de figyelembe veszi az az előző programfutást is úgy, hogy annak shooting pontjait tekinti a probléma megadott pontjainak. Egy előzetes sikeres programfutás tehát feltétele ennek a megadásnak is, és a felhasználónak célszerű az adatfile-t az előző futás eredményeiből megadnia. A felhasználónak nem kell közelítő értékeket a programhívás előtt megadnia, u.i. a program az előző programfutást veszi figyelembe olymódon, hogy annak shooting pontjait tekinti a probléma megadott pontjainak, az e pontokbeli eredményeket pedig az induló s j (j = 1, 2,..., m 1) kezdeti értékeknek. Egy előzetes sikeres programfutás tehát feltétele ennek a megadásnak is. Vegyük észre, hogy a két utolsó esetben a program kiegészíti az adott pontokat, u.i. az előző futásbeli shooting pontokat tekinti a probléma megadott pontjainak, a homotopy módszer tehát így alkalmazható, továbbá hogy a felhasználónak csak a második és negyedik esetben kell adatfile-t megadnia, a többi esetben ezeket a program automatikusan előállítja (a megadott konstansból illetve az előző programfutás shooting pontokbeli megoldásfüggvényeiből). Fontos hangsúlyoznunk azt is, hogy az első két esetet kivéve egy előzetes sikeres programfutás szükséges a megadáshoz, továbbá hogy bár a homotopy módszer automatikusan alkalmazásra kerül az utolsó esetben, mégis sokszor célszerűbb az utolsó előtti esetet alkalmazni úgy, hogy a felhasználó az adatfile-t az előző futásnak egy megfelelően részletesebb eredményeiből adja meg. A (4) és (16) differenciálegyenletek integrálásához az alábbi egylépéses módszereket alkalmazhatjuk a programban: harmad, negyed, ötöd hatod és heted-nyolcad rendű Runge-Kutta módszerek ([2],[4],[5]), negyedrendű Runge-Kutta-Fehlberg módszerek ([2]), negyed, ötöd és hatodrendű ROW stiff módszerek ([6],[7]). Mindegyik módszer automatikus lépésköz választással és előre illetve visszafelé történő integrálással is működtethető. 10
Irodalom: [ 1 ] K.Károlyi: An interactive code to solve MBVP s, Int.Conference on Diff.Equations, Barcelona,1991. (621-626) [ 2 ] J.Stoer,R.Bulirsch: Introduction to Numerical Analysis, Springer-Verlag 1983. [ 3 ] R.E.Bank,D.J.Rose: Glob.Appr.Newton Meth. Num.Math.37.1981. (279-295) [ 4 ] P.J.Prince,J.R.Dormand: High order embedded Runge-Kutta formulae, J.Comp.Appl.Math.vol.7.no.1.1981. (67-75) [ 5 ] J.H.Verner: Explicit Runge-Kutta Methods with Estimates of the Local Error, Report 92.Univ.Auckland, New Zealand,1976. [ 6 ] P.Kaps,P.Rentrop: Generalized Runge-Kutta Meth.of Ord.Four with Steps Contr. for Stiff ODE s, Numer.Math.vol.33,1979 (55-68) [ 7 ] P.Kaps,G.Wanner: A Study of Rosenbrock-Type Methods of High Order, Numer.Math.vol.38,1981 (279-298) [ 8 ] G.Varjú,K.Károlyi: Calculating screening effect of a metal cable sheath with nonlinearity, Int.Symp.EMC. Wroclaw,1990. (252-256) [ 9 ] F.Jonas,G.Varjú: Gen.Model & Num.Method for Multicond.Systems Frequ.Dom., IEEE/KTH Pow.Tech.Conf.Stockholm,1995. (227-232) 11