FYSIKENS MATEMATISKA METODER TREDJE UPPLAGAN TORBJÖRN ERIKSON HENRIK CHRISTIANSSON ERIK LINDAHL JOHAN LINDE LARS SANDBERG MATS WALLIN mfl Boken är typsatt i L A TEX med 11pt Times Printed in Sweden by Universitetsservice US AB, Stockolm Webbadress: wwwus-abcom Copyrigt c 1996, 1997, 2001 Teoretisk fysik, KTH ISBN 91-7283-143-X
Kapitel 8 Numeriska metoder To err is uman, but to really mess tings up you need a computer Hittills ar vi studerat olika analytiska metoder för att lösa linjära partiella differentialekvationer Vi ar löst relativt enkla problem där ekvationer oc randvillkor varit anpassade för de metoder vi aft till vårt förfogande Tyvärr är detta ofta inte fallet för problem ute i den sk verkligeten, utan det är vanligt både med ickelinjära ekvationer oc komplicerade ränder Om man inte vill göra mycket kraftiga förenklingar av modellen måste man då använda approximativa, främst numeriska lösningsmetoder Under de senaste tjugo åren ar enorma framsteg gjorts när det gäller numeriska metoder för partiella differentialekvationer Tack vare den snabba utvecklingen av datorer oc nya bättre algoritmer ar komplicerade problem inom strömningsmekanik, elasticitets- oc potentialteori blivit möjliga att studera Det första steget i en numerisk lösning är att vi måste föra över problemet till en diskret form, dvs representera funktionen med ett ändligt antal parametrar Vi ska beandla två olika sätt att göra detta Enklast är kanske att välja funktionens värden i ett antal punkter oc ersätta derivator med differenser; sådana metoder kallas finita differensmetoder (FDM) Alternativt kan vi tänka på kapitel 4 oc välja ett ändligt antal basfunktioner, vars koeffecienter vi varierar för att få en bra lösning Detta är grunden för finita elementmetoder (FEM) 229
230 Kapitel 8 Numeriska metoder 81 Finita differensmetoder (FDM) 811 Grundläggande idéer Finita differensmetoden går ut på att punktvis ersätta derivatorna i ekvationerna med differensapproximationer Vi börjar därför med att ta fram sådana approximationer till derivator Låt u = u(x,y) vara en analytisk funktion av två variabler, x oc y, i ett område Ω av xy-planet Eftersom u(x, y) är analytisk kan funktionen utvecklas i en taylorserie med avseende på variabeln x, vilket kan göras på två sätt u(x +, y) = u(x, y) = u(x, y) + u x (x, y) + u xx (x, y) 2 2! + u xxx(x, y) 3 3! + O(4 ) (81) u(x, y) u x (x, y) + u xx (x, y) 2 2! u xxx(x, y) 3 3! + O(4 ), (82) Vi får då följande uttryck på den partiella derivatan med avseende på x med jälp av (81) u(x +,y) u(x,y) u x (x,y) Detta kallas för framåtapproximation av derivatan På samma sätt finner man med jälp av (82) u(x,y) u(x,y) u x (x,y), vilket kallas för bakåtapproximation av derivatan Om vi adderar (81) oc (82) får vi andraderivatan med avseende påx u xx (x,y) 1 ) (u(x 2 +,y) 2u(x,y) + u(x,y) På samma sätt kan vi utveckla partiella derivator med avseende på y, tex u yy (x,y) 1 ) (u(x,y k 2 + k) 2u(x,y) + u(x,y k) Man diskretiserar området Ω i xy-planet genom att dela upp det i små delområden Ω ij enligt { xj = x 0 + j där j = 0,1,2,,N y i = y 0 + ik där i = 0,1,2,,M Arean av Ω ij är k Detta rutnät, vars skärningspunkter kallas noder, ersätter nu Ω
81 Finita differensmetoder (FDM) 231 y Mk k (0,0) N x Figur 81: Rutnät över Ω där ofylld cirkel motsvarar en inre nod, medan en fylld cirkel är en del av randen till området 812 Randvärdesproblem Vi börjar med att beandla tidsoberoende funktioner som tex lyder Laplaces eller Poissons ekvation i ett område av xy-planet, samt uppfyller givna randvillkor PDE u(x,y) = u xx (x,y) + u yy (x,y) = F(x,y) (83) Vi approximerar vår differentialekvation med motsvarande differensekvation, vilket med variablerna x oc y samt = k ger 1 ( ) 2 u(x+, y)+u(x, y+)+u(x, y)+u(x, y ) 4u(x, y) = F(x, y) (84) För att förenkla skrivsättet inför vi konventionen 1 Alltså får (84) utseendet u(x,y) = u i,j, u(x,y + ) = u i+1,j, u(x,y ) = u i 1,j, u(x +,y) = u i,j+1, u(x,y) = u i,j 1 1 OBS! Vi ar valt index så att i motsvarar radnumret oc j kolumnnumret i den matris som uppstår
232 Kapitel 8 Numeriska metoder y Mk k u i,j (0,0) N x Figur 82: Randvärdesproblem där vi ar uttryckt u i,j i de närliggande nodernas värden 1 2(u i,j+1 + u i+1,j + u i,j 1 + u i 1,j 4u i,j ) = F i,j (85) Vi löser ut värdet i noden (i, j) uttryckt i de närliggande nodernas värden u i,j = 1 4 (u i,j+1 + u i+1,j + u i,j 1 + u i 1,j ) 2 4 F i,j (86) Noder som ligger på randen sätts lika med de givna randvillkoren För att lösa denna differensekvation kan man tex använda Liebmanns metod: Vi börjar med att gissa ett initialvärde för de inre noderna, vanligtvis genom att sätta dem lika med medelvärdet av alla randvillkor Sedan itererar vi över alla inre noder genom att ersätta det gamla nodvärdet med värdet enligt (86), tills vi ar kommit tillräckligt nära konvergens Vi räknar igenom ett exempel: Exempel 81 { 0 < x < 1 PDE u xx + u yy = 0, där 0 < y < 1 RV u(x, 0) = sin πx, u(x, 1) = 0, u(0, y) = 0, u(1, y) = 0
81 Finita differensmetoder (FDM) 233 Lösning: (analytisk) Med produktansatsen u(x, y) = X(x)Y (y) samt separationskonstanten λ = k 2 får vi på den senare villkoretk n = nπ Detta ger u n (x, y) = X n (x)y n (y) = c n sin nπx(sin nπy tannπ cosnπy) Vi superponerar u n (x, y) för att göra en anpassning till det första randvillkoret, u(x, 0) = sin πx Detta resulterar i lösningen ( u(x, y) = sin πx cosπy sinπy ) tanπ Lösning: (numerisk) Om vi diskretiserar så att vi får fyra inre noder, dvs = 1 3, får vi enligt (85) fyra ekvationer att lösa 4u 11 + 0 + sin(π/3) + u 12 + u 21 = 0, 4u 12 + u 11 + sin(2π/3) + 0 + u 22 = 0, 4u 21 + 0 + u 11 + u 22 + 0 = 0, 4u 22 + u 21 + u 12 + 0 + 0 = 0 Vi väljer en iterationsmetod för att bestämma lösningen till ovanstående ekvationssystem, tex Liebmanns metod Vi väljer initialvärdet noll för alla inre noder oc använder sedan (86) för att iterera fram vår lösning enligt nedanstående tabell steg u 11 u 12 u 21 u 22 1 0 0 0 0 2 0,2165 0,2165 0 0 3 0,2706 0,2706 0,0541 0,0541 4 0,2977 0,2977 0,0812 0,0812 14 0,3247 0,3247 0,1082 0,1082 analytiskt 0,2999 0,2999 0,0937 0,0937 Värdena för den exakta analytiska lösningen i våra nodpunkter är givna sist, under strecket i tabellen Lägg märke till att det är först i steg 14 som beräkningarna ar konvergerat i fjärde decimalen Att resultatet där inte särskilt väl stämmer överens med den analytiska lösningen beror på att vi ar använt en väldigt grov indelning av kvadraten (Det goda resultatet efter fyra iterationer är en ren slump) Lösningens utseende ges i figur 83 Om man väljer ett svårare randvillkor är det en bra oc enkel övning att med Maple V undersöka ur många termer som beövs i den analytiska lösningen för att uppnå samma noggrannet som i den numeriska
234 Kapitel 8 Numeriska metoder Figur 83: (a): Analytisk lösning i xy-planet (b): Analytisk lösning för y = 1 3 samt jämförelse med den numeriska lösningen (den streckade linjen), där vi sammanbundit noderna Vi kan också skriva ekvationssystemet i exempel 81 i matrisform Au = b: 4 1 1 0 1 4 0 1 1 0 4 1 0 1 1 4 u 11 u 12 u 21 u 22 = sin(π/3) sin(2π/3) 0 0 Om vi minskar intervallängden, dvs vi ökar antalet inre noder, kommer antalet ekvationer i ekvationssystemet att öka I allmänet är antalet ekvationer lika med antalet inre noder Att lösa sådana stora matrissystem är vanligtvis besvärligt, men eftersom differensekvationen (86) endast innefattar de fyra närliggande noderna blir A en tridiagonalmatris med fransar, dvs den inneåller många nollelement Iterativa metoder som är användbara för dessa glesa system är bla Jacobis oc Gauss-Seidels metoder Exempel 81 är ett diricletproblem Om randvillkoren istället var givna som neumannvillkor måste dessa derivator på randen också ersättas med differensapproximationer 813 Begynnelsevärdesproblem Om vi till skillnad från avsnitt 812 vill beandla problem med tidsutveckling, dvs vi ar variablerna x oc t, får vi ett begynnelsevärdesproblem Till skillnad från randvärdesproblem där vi finner en approximativ lösning genom att iterera måste vi ta änsyn till att tidsutvecklingen går i en specifik riktning framåt Vi