KU-LIFE; Matemati og modeller 009 Numeris løsning af differentialligninger Thomas Vils Pedersen 1 Numerise metoder Ved numeris analyse forstås tilnærmet, talmæssig løsning af problemer, som ie, eller un med urimeligt stort besvær, an løses teoretis/esat. Der er tale om numerise metoder, allerede når man tilnærmer et reelt tal med et andet, typis en decimalbrø, idet man f.es. sriver 0.57931 0.58, 1 0.33, π 3.14159, 3 og når man bruger de velendte regler for regning med sådanne decimaltal, herunder for afortning til et bestemt antal decimaler eller et bestemt antal betydende cifre. Andre numerise metoder, der endes fra tidligere er: 1) Tilnærmet løsning af en ligning f(x) = 0. En effetiv metode er Newtons metode, også aldet Newton-Raphson iteration. Ud fra en gætteværdi x 0 beregnes en forbedret gætteværdi x 1 = x 0 f(x 0 )/f (x 0 ), og beregningen an gentages (itereres), til den ønsede nøjagtighed er nået. ) Brug af Taylors formel til tilnærmet beregning af en funtions værdier i nærheden af et givet punt, idet funtionen erstattes af et Taylor-polynomium af passende grad. Den begåede fejl vurderes vha restleds-udtry. 3) Numeris integration, hvor specielt Simpsons formel gør det muligt på enel vis at udregne gode tilnærmelser til et forelagt bestemt integral. De to grundlæggende synsvinler i numeris analyse er dels at udvile effetive, dvs hurtigt onvergerende og ie for omfangsrige, metoder til at løse et foreliggende problem, dels for en given metode at undersøge, hvor stor en fejl man begår ved at bruge metoden i stedet for at løse problemet - eller tæne sig det løst - esat. Numeris løsning af 1. ordens differentialligninger Den underdisciplin af numeris analyse, der handler om numeris (tilnærmet) løsning af differentialligninger, er allerede gammel og særdeles omfattende. En del af de grundlæggende metoder inden for området bygger på følgende princip. Lad den forelagte differentialligning være y = f(x,y). Problemet an ansues grafis ved at indtegne et stort antal såaldte linieelementer, dvs. små liniestyer gennem forsellige punter (x 0,y 0 ), hver gang med hældningsoefficient f(x 0,y 0 ). 1
Esempel (Esempel 1, s. 54 i Differentialligninger af Poul Einer Hansen.) På Figur 1 er linieelementer indtegnet for differentialligningen y = x + y. y 1 1 1 x 1 Figur 1 Ved løsning af denne lineære 1. ordens differentialligning fås den fuldstændige løsning y = ce x x 1 (c R). Løsningen gennem puntet (0,1) svarer til c =, og er derfor givet ved y = e x x 1. Grafen for denne partiulære løsning ses ligeledes på Figur 1. Vi vender nu tilbage til den generelle differentialligning og tilføjer en begyndelsesbetingelse y = f(x,y) y(x 0 ) = y 0. Vi ved altså at løsningsurven i ethvert af sine punter (x,y) har tangenthældningen f(x,y), samt at den specifie løsningsurve, vi søger, går gennem puntet (x 0,y 0 ). Vi vil benytte dette til at finde tilnærmede værdier for y(x), når x er i nærheden af x 0. Eulers metode Vi bevæger os et lille step af længde h til højre for x 0, og approsimerer y(x 0 + h) vha. tangentligningen i (x 0,y 0 ) : Med y(x 0 + h) y(x 0 ) + y (x 0 )h = y(x 0 ) + f(x 0,y 0 )h. x 1 = x 0 + h og y 1 = y 0 + f(x 0,y 0 )h, har vi altså y(x 1 ) y 1 (se Figur ). Tilsvarende sætter vi så y er en tilnærmelse til y(x ). x = x 1 + h og y = y 1 + f(x 1,y 1 )h,
y y = y(x) y(x ) + y + + y 1 + y(x 1 ) Hældning f(x 0,y 0 ) y 0 + Hældning f(x 1,y 1 ) h h + + + x 0 x 1 x Figur x Generelt finder vi den næste tilnærmede værdi ved at sætte x n+1 = x n + h (= x 0 + (n + 1)h) og y n+1 = y n + f(x n,y n )h. På samme måde an man tilnærme y(x) når x < x 0. Vi sætter x 1 = x 0 h og y 1 = y 0 f(x 0,y 0 )h; derefter osv. x = x 1 h og y = y 1 f(x 1,y 1 )h, Esempel (Esempel, s. 55 i Differentialligninger af Poul Einer Hansen.) differentialligningen y = x + y, med begyndelsesbetingelsen y(0.5) = 0.3, og benytter h = 0.1. Vi har da (angivet med decimaler) Vi betragter x 1 = 0.5 + 0.1 = 0.6, y 1 = y 0 + (x 0 + y 0 )h = 0.3 + (0.5 + 0.3) 0.1 = 0.38, x = 0.6 + 0.1 = 0.7, y = y 1 + (x 1 + y 1 )h = 0.38 + (0.6 + 0.38) 0.1 = 0.48, x 3 = 0.7 + 0.1 = 0.8, y 3 = y + (x + y )h = 0.48 + (0.7 + 0.48) 0.1 = 0.60, osv. Tilsvarende fås x 1 = 0.5 0.1 = 0.4, y 1 = y 0 (x 0 + y 0 )h = 0.3 (0.5 + 0.3) 0.1 = 0., x = 0.4 0.1 = 0.3, y = y 1 (x 1 + y 1 )h = 0. (0.4 + 0.) 0.1 = 0.16, x = 0.3 0.1 = 0., y 3 = y (x + y )h = 0.16 (0.3 + 0.16) 0.1 = 0.11, 3
osv. For at vurdere den præcision, der opnås ved Eulers metode, vil vi finde den esate løsning til differentialligningen, og benytte denne til at beregne y(x n ). Som nævnt ovenfor er den fuldstændige løsning til differentialligningen y = x + y givet ved y = ce x x 1 (c R). For løsningen gennem (0.5,0.3) gælder 0.3 = ce 0.5 0.5 1, dvs. c = 1.8/e 0.5 = 1.09 og dermed y = 1.09 e x x 1. De tilnærmede og esate værdier fremgår af Tabel 1 (hvor vi har tilføjet værdierne svarende til n = 4 og n = 5): n x n y n y(x n ) 3 0. 0.11 0.13 0.3 0.16 0.17 1 0.4 0. 0.3 0 0.5 0.3 0.3 1 0.6 0.38 0.39 0.7 0.48 0.50 3 0.8 0.60 0.63 4 0.9 0.74 0.79 5 1.0 0.90 0.97 Tabel 1 Det ses, at fejlen bliver større jo længere væ fra udgangspuntet (0.3,0.5) man ommer, og at fejlen efterhånden bliver relativt stor. Generelt an man vise, at den begåede fejl i fast afstand fra udgangspuntet er omtrent proportional med h. Man siger derfor, at Eulers metode er af 1. orden. Eulers forbedrede metode Når løsningsfuntionen som på Figur er onves (opad rum), vil tangenthældningen i puntet (x 0,y(x 0 )) undervurdere den fatise hældning af linien mellem (x 0,y(x 0 )) og (x 1,y(x 1 )), så den beregnede tilnærmede funtionsværdi y 1 bliver for lille. Der sal dog ie så meget til for at forbedre metoden betragteligt. Den sande hældning af linien mellem (x 0,y(x 0 )) og (x 1,y(x 1 )) ligger betydeligt nærmere ved middeltallet mellem tangenthældningerne f(x 0,y(x 0 )) og f(x 1,y(x 1 )) i hhv. (x 0,y(x 0 )) og (x 1,y(x 1 )). (Dette an i øvrigt vises at gælde esat for enhver parabel i ethvert interval.) Dette giver og da x 1 x 0 = h fås y(x 1 ) y(x 0 ) f(x 0,y(x 0 )) + f(x 1,y(x 1 )), x 1 x 0 y(x 1 ) y(x 0 ) + f(x 0,y(x 0 )) + f(x 1,y(x 1 )) Nu ender man ganse vist ie y(x 1 ); det er jo netop den, vi ønser at finde (eller rettere tilnærme). Af denne grund vil vi først approsimere y(x 1 ) vha. Eulers metode og derefter benytte denne værdi til at approsimere f(x 1,y(x 1 )). Vi sætter altså y 1 = y 0 + f(x 0,y 0 )h, h. og derefter y 1 = y 0 + f(x 0,y 0 ) + f(x 1,y 1 ) h. 4
Den grafise fortolning af dette er, at vi i intervallet [x 0,x 0 + h/] approsimerer y(x) med en ret linie med hældning f(x 0,y 0 ), og i intervallet [x 0 + h/,x 1 ] approsimerer y(x) med en ret linie med hældning f(x 1,y1 ) (se Figur 3). y(x 1 ) y 1 y1 y 0 y Hældning f(x 0,y 0 ) y = y(x) Hældning f(x 1,y 1 ) h h x 0 x 1 Figur 3 x Generelt sætter vi yn+1 = y n + f(x n,y n )h, og derefter y n+1 = y n + f(x n,y n ) + f(x n+1,yn+1 ) h. Metoden an naturligvis også anvendes til at finde de tilnærmede værdier y 1, y osv. Esempel Benyttes Eulers forbedrede metode på esemplet ovenfor fås (med 3 decimaler) og dermed x 1 = 0.5 + 0.1 = 0.6, y 1 = y 0 + (x 0 + y 0 )h = 0.3 + (0.5 + 0.3) 0.1 = 0.380, y 1 = y 0 + (x 0 + y 0 ) + (x 1 + y 1 ) I næste sridt fås og dermed h = 0.3 + (0.5 + 0.3) + (0.6 + 0.38) 0.1 = 0.389. x = 0.6 + 0.1 = 0.7, y = y 1 + (x 1 + y 1 )h = 0.389 + (0.6 + 0.389) 0.1 = 0.488, y = y 1 + (x 1 + y 1 ) + (x + y ) h = 0.389 + (0.6 + 0.389) + (0.7 + 0.488) 0.1 = 0.498. 5
Fortsættes på denne måde fås værdierne i Tabel : n x n y n y n y(x n ) 3 0. 0.17 0.134 0.133 0.3 0.166 0.174 0.174 1 0.4 0.0 0.9 0.9 0 0.5 0.3 0.3 1 0.6 0.380 0.389 0.389 0.7 0.488 0.498 0.499 3 0.8 0.618 0.69 0.630 4 0.9 0.771 0.784 0.785 5 1.0 0.95 0.965 0.968 Tabel Det ses, at metoden giver væsentligt bedre resultater end Eulers simple metode. Generelt an man vise, at Eulers forbedrede metode er af. orden, dvs. at den begåede fejl i fast afstand fra udgangspuntet er omtrent proportional med h. Der findes forsellige videreudvilinger af Eulers forbedrede metode, som vi ie vil omme nærmere ind på her, men blot nævne den måse mest berømte af dem, nemlig Runge-Kuttas metode, der tilnærmer hældningen af linien mellem (x 0,y(x 0 )) og (x 1,y(x 1 )) med et vægtet gennemsnit af fire forsellige f-værdier valgt på så raffineret vis, at metoden bliver af 4. orden. Ved tilnærmet løsning ifølge Runge-Kuttas metode eller andre tilsvarende an man opnå meget stor nøjagtighed, selv med en ie særlig lille h. Det sal til slut nævnes, at mange metoder benytter sig af variable steplængder, hvor x n+1 x n an variere med n. Ideen er at benytte små steplængder de steder, hvor løsningsfuntionen varierer raftigt. Endvidere an de samme principper som i Eulers (forbedrede) metode overføres til numeris løsning af systemer af samhørende differentialligninger. Det er ofte sådanne principper, der er indbygget i færdige programpaer (såsom Maple) til behandling af disse spørgsmål. 3 Numeris løsning af diffusionsligningen Vi betragter metalstangen fra Esempel 1 i noterne om partielle differentialligninger, og har da diffusionsligningen T t = D T x, randbetingelserne T(0,t) = 0 og T(L,t) = 0, samt begyndelsesbetingelsen T(x,0) = u(x) (0 x L). 6
Vi vi finde tilnærmede værdier T nm til T(x n,t m ) for punter (x n,t m ) i et gitter (se Figur 4). t t t 3 t t 1 T(0,t) = 0 T(L,t) = 0 T 0 T 1 T T 3 T 4 T 5 T 01 T 11 T 1 T 31 T 41 T 51 T 00 T 10 T 0 T 30 T 40 T 50 x = 0 h x 1 h x x 3 h x 4 h x = L T(x,0) = u(x) Figur 4 Steplængden er h på x-asen og på t-asen, så x n = nh og t m = m. På x-asen er der ialt N step, hvor Nh = L, mens der på t-asen i princippet er et ubegrænset antal step. dvs. Nederste ræe (m = 0, dvs. t = t 0 = 0) findes vha. begyndelsesbetingelsen T n0 = T(nh,0) = u(nh), T 00 = u(0) = 0, T 10 = u(h), T 0 = u(h) osv. Endvidere vil første og sidste søjle være 0, dvs. for alle m pga. randbetingelserne. T 0m = 0 og T Nm = 0 For at unne benytte selve diffusionsligningen vil vi finde tilnærmede udtry for T t og T et gitterpunt (x n,t m ). Da har vi T(x n,t m+1 ) T(x n,t m ) T t (x n,t m ), For at tilnærme T x har vi brug for følgende Hjælperesultat For en funtion g(x) gælder tilnærmelsen x x i T t (x n,t m ) T n,m+1 T nm. ( ) g (x) g(x + h) g(x) + g(x h) h 7
når h er lille. Bevis Vi tilnærmer g med dets. Taylorpolynomium i udvilingspuntet x : g(x + h) g(x) + g (x)h + 1 g (x)h. Vi udsifter h med h g(x h) g(x) g (x)h + 1 g (x)h og lægger de to ligninger sammen: g(x + h) + g(x h) g(x) + g (x)h, hvoraf resultatet følger. Vi anvender hjælperesultatet på T(x,t) som funtion af x (med t = t m fastholdt) og får T x (x n,t m ) T(x n+1,t m ) T(x n,t m ) + T(x n 1,t m ) h T n+1,m T nm + T n 1,m h. ( ) Nu indsætter vi de tilnærmede udtry ( ) og ( ) for T t og T x i diffusionsligningen og får T n,m+1 T nm = D Tn+1,m T nm + T n 1,m h. Af de indgående størrelser er T n,m+1 den eneste, der ligger i (m + 1) te ræe, så vi isolerer denne: T n,m+1 = T nm + D h (T n+1,m T nm + T n 1,m ). Med r = D h fås T n,m+1 = (1 r)t nm + r(t n+1,m + T n 1,m ). Denne formel an nu anvendes succesivt til finde T nm ; f.es. er T 11 = (1 r)t 10 + r(t 0 + T 00 ). Når hele ræen med m = 1 er beregnet, an man gå videre og beregne ræen med m =, osv. Man an vise, at det er nødvendigt at r 1, dvs. D h 1 for på denne måde at få gode tilnærmelser til løsningsfuntionen T(x,t). 8