1 lof Runborg NADA 2 april 2002 2D1250 Tillämpade numeriska metoder II A LABRATIN 5 rdinära differentialekvationer I den här laborationen ska ni experimentera med olika numeriska metoder för ordinära differentialekvationer. Arbetspass för labben är 19 och 23 april. Skicka in lösning senast 29 april via Ping Pong. Uppgift 1. Explicita metoder Vi börjar med att studera tre kvalitativt olika problem som vi löser med explicita metoder. a) Betrakta det linjära DE-systemet dy 1 = y 1 y 2, dy 2 = y 1 y 2. Välj själv några begynnelsedata y 1 (0), y 2 (0) och lös DEn exakt. (Jämför med hemuppgift 2.a). Använd Heuns metod för att beräkna en approximation av lösningen vid en fix tid T. Plotta felet vid tiden T =1som funktion av steglängden h (s.k. konvergensdiagram). Vad är noggrannhetsordningen? (Liksom i lab 4, använd loglog för plotten.) Plotta stabilitetsområdet för Heuns metod och markera de punkter hλ som motsvarar det aktuella problemet för olika h. Bestäm teoretiskt h 0 så att Heuns metod (för detta problem) är absolutstabil när 0 <h<h 0. Verifiera stabilitetsgränsen numeriskt genom att lösa problemet för lång tid, t [0, 100], med olika steglängder h. Vad händer när h>h 0? Plotta två typiska numeriska lösningar, en stabil och en instabil, i fasplanet (y 1,y 2 ) tillsammans med den exakta lösningen. Upprepa dessa experiment med den explicita Runge-utta metoden på sid 511 i boken, y n+1 = y n + h 6 ( 1 +2 2 +2 3 + 4 ), 1 = f(t n,y n ), 2 = f(t n + h/2,y n + h 1 /2), 3 = f(t n + h/2,y n + h 2 /2), 4 = f(t n + h, y n + h 3 ). b) Vi studerar nu den enkla linjära oscillatorn, d 2 y 2 + y =0, y(0) = y 0, dy(0) =0. (1) Den här ekvationen modellerar till exempel odämpad svängning av en massa på en fjäder, där fjäderkonstanten/massan = 1. (Då är y avvikelsen från jämviktsläget. otkraften ges av Hooks lag, F = k fjäder y och rörelsen av Newtons andra lag, F = my.)
2 Den exakta lösningen till (1) är periodisk för alla y 0, närmare bestämt en cirkel i fasplanet (y, y ). Lös ekvationen med framåt Euler och lång tid, t [0,T] där T = 1/2h och h är steglängden. Låt y 0 =1. Plotta lösningen i fasplanet (använd axis equal i atlab). Blir det en cirkel? Prova olika små steglängder h. Förklara vad som händer. Välj en bättre metod och motivera valet. Lös problemet igen med samma y 0 och T.Hur stora h kan man nu ta utan att felen växer till? Plotta lösningen. c) En mer precis beskrivning av den linjära fjädern i förra uppgiften ges av den olinjära DEn (Duffings ekvation) d 2 y 2 + αdy + y + y3 =6cos(t/2), y(0) = y 0, dy(0) =0. (2) otkraften F = (αy + y + y 3 ) är nu relativt sett större ju mer fjädern töjs ut (pga y 3 -termen) och inbegriper även friktion (αy -termen). Vi har också lagt till ett högerled (6cos(t/2)), som motsvarar en yttre kraft som forcerar oscillationen. För linjära problem och fixt h är en metod antingen instabil eller stabil i hela fasplanet. För olinjära problem beror stabilitetsegenskaperna på lösningen själv, och en metod är generellt bara stabil i delar av fasplanet, när h hålls fixt. Välj α =0, 2 i(2)ochfixerah =0, 01. Beräkna var i fasplanet framåt Euler är (linjärt) stabil för detta problem. Lös (2) med framåt Euler med h =0, 01 för flera olika y 0 och relativt lång tid, T = 10. Hur stora y 0 kan man välja utan att den numeriska lösningen blir instabil och börjar växa okontrollerat? Finns det stabila lösningar som temporärt passerar utanför stabilitetsområdet i fasplanet? Hur kommer det sig? Illustrera dina resultat med några typiska plottar av lösningar i fasplanet där du även markerar området i vilket Euler framåt är (linjärt) stabil. Lös slutligen (2) med hög upplösning för lång tid, t [0, 100], och Euler framåt med h = 0, 005 (eller använd Runge-utta-metoden från a). Plotta hela lösningsbanan, t [0, 100], och jämför med att bara plotta lösningen för tiden t [70, 100]. Vad tror du händer asymptotiskt med lösningen när t? Extrauppgift: Experimentera med andra (mindre) värden på α och hitta liknande lösningar. Rent allmänt kan olinjära ekvationer ge mycket komplicerade lösningar. Duffings ekvation är ett bra exempel på detta. Uppgift 2. Styva DEer I denna uppgift undersöker vi de speciella numeriska svårigheterna som uppkommer när man löser styva DEer. Vi vill lösa det linjära systemet dy 1 = y 2, (3) dy 2 = 1000y 1 1001y 2, med begynnelsedata y 1 (0) = 1, y 2 (0) = 1. Våra noggrannhetskrav är att felet vid t =1ska vara mindre än 10 2. Visa att den exakta lösningen är y 1 (t) = y 2 (t) =e t. Heuns metod är som bekant en andra ordningens metod. Genom taylorutveckling av differensformeln kan det lokala trunkationsfelet uppskattas med τ n+1 Ch 2,
3 där h är steglängden och C bara beror på hur snäll lösningen är (maxnormen av de första derivatorna). När metoden är stabil är det globala felet begränsat av det maximala lokala trunkationsfelet, dvs vi har även E glob (T ) max 0 n N τ n Ch 2. (4) Uppskatta C genom att lösa (3) för några (riktigt) små h fram till T =1. (Jämför uppgift 1.a.) Baserat på uppskattningen (4), hur stor steglängd skulle man kunna använda och fortfarande uppnå den stipulerade noggrannheten? Vi säger att noggrannhetskravet sätter denna restriktion på steglängden h. Beräkna nu vilken restriktion stabilitetskravet sätter på h. Lös ekvationen fram till T =1med en steglängd strax under stabilitetsgränsen. Vad blir felet? För styva ekvationer utgör typiskt stabilitetskravet en mycket större begränsning på steglängden h än noggrannhetskravet, när man använder explicita metoder. Därför använder man med fördel istället implicita metoder för styva problem, helst så kallade A-stabila metoder (sådana som är absolutstabila i hela vänstra delen av komplexa talplanet). Den enklaste A-stabila metoden är bakåt Euler. Lös problemet ovan med denna metod. Hur stor steglängd kan ni använda och fortfarande uppfylla noggrannhetskravet? Bakåt Euler är bara en första ordningens metod. De så kallade BDF-metoderna är högre ordningens A-stabila metoder lämpliga för styva problem. Implementera den andra ordningens BDF-metoden y n+1 = 4 3 y n 1 3 y n 1 + 2h 3 f(y n+1). Notera att detta är en flerstegsmetod och behöver två startvektorer, för n =0och n =1. Använd bakåt Euler för att initialisera värdena vid n =1. Lös problemet som ovan, och visa i ett konvergensdiagram att ordningen faktiskt är två. Hur stor steglängd kan ni använda med denna metod för att klara noggrannhetskravet? Uppgift 3. Ray tracing Denna uppgift rör en tillämpning där ordinära differentialekvationer används för att modellera ett praktiskt ingenjörsproblem, vad som kallas det inversa problemet i geofysik. Ni får använda valfri metod för att lösa DE-erna, men ni ska kunna uppge ett ungefärligt mått på felet i slutsvaret. Bakgrund ålet är att hitta en oljeficka någonstans under marken. etoden man använder går ut på att detonera en sprängladdning vid markytan och sedan mäta tiden det tar innan en reflekterad våg når olika mätplatser runtomkring. Från de uppmätna tider går det, under vissa förutsättningar, att räkna ut läget på oljefickan. Detonationen initierar en våg som propagerar ner i marken i alla riktningar. När vågen träffar oljefickan reflekteras den i sin tur i alla riktningar, och en reflekterad våg når så småningom mätplatsen. Se skissen i figur 1. Vågutbredningen beskrivs egentligen av vågekvationen, u tt c(x) 2 u =0, x R 2, (5) där u är förskjutningen och c(x) > 0 är den lokala vågutbredningshastigheten. Det är bara när c(x) är konstant som vågfronten blir så enkel (cirkulär) som i figur 1. I praktiken är c(x) variabel och vågen utbreder sig på ett betydligt mer komplicerat sätt. Bland annat kan den böjas av och vika sig över sig själv så att flera olika delar av vågfronten kan nå nå fram till mätplatsen () vid olika tidpunkter. an registrerar då flera reflekterade vågor. Att lösa (5) numeriskt är dyrt när, som här, våglängden är kort i förhållande till totala utbredningsavståndet. Lyckligtvis går förloppet då att approximera väl med vad som kallas
4 t=0 t=t 1 t=t 1 t=t 2 Figur 1: Vågen initieras först i källan () vid tiden t =0, (överst, vänster). Efter en viss tid t = t 1 når vågen oljefickan (), (överst, höger). Då reflekteras den i alla riktningar (nederst, vänster). Slutligen, vid t = t 2 >t 1, når den reflekterade vågen mätplatsen (), (nederst, höger). geometrisk optik. Denna approximation brukar ofta beräknas med hjälp av ray tracing, som går ut på att betrakta vågen som en samling strålar, på samma sätt som vi oftast tänker oss att synligt ljus är strålar och inte elektromagnetiska vågor. Strålarna rör sig vinkelrätt mot vågfronten i varje punkt och beskrivs av DEn d ( 1 c(x) dx ) = c(x), x(0) = x 0, dx(0) = p 0, p 0 = c(x 0 ), (6) där x(t) =(x(t),y(t)) är strålens läge vid tiden t. Förloppet ovan kan då formuleras som följer: 1) strålar skjuts ut i alla riktningar från (); 2) minst en stråle träffar oljefickan (); 3) strålar skjuts ut i alla riktningar från (); 4) minst en av dessa träffar (). Strålarna utbreder sig enligt (6) och tiden mellan detonation och registrering vid () ges av motsvarande t i (6). Uppgifter Antag att y 0 är markytan och att koordinaterna för () och () är =(x m,y m )= ( 3, 0), respektive =(x k,y k )=(0, 0). Antag också att c(x, y) är känd, tex genom provborrningar i marken, och ges av { 1 c(x, y) = 2 + 1 2 exp( x2 + xy/2), x 0, 1, x < 0. Slutligen antar vi för enkelhetens skull att ni vet att oljefickan () ligger till vänster om källan (), dvs för koordinaterna =(x o,y o ) gäller att x o < 0 (och y o < 0). ätplatsen registrerar vågor vid tre 1 tidpunkter t = T 1 = 3, t = T 2 och t = T 3.Varje labgrupp ska använda olika värden på T 2 och T 3 : Välj själv både T 2 och T 3 som heltal sådana 1 I teorin registreras även en fjärde reflektion vid t =9.26, men den är lite speciell och vi bortser från den. Att förklara den är en extrauppgift.
5 att 6 T 2 14 och T 2 +2 T 3 T 2 +6. (Vi litar på att ni inte fuskar genom att välja samma som någon annan eller ändrar er när det verkar lättare med nåt annat värde.) Ni har nu tillräckligt med information för att kunna beräkna koordinaterna (x o,y o ) för oljefickan. Visa först att strålarna (lösningarna till (6)) blir raka linjer när c(x, y) är konstant, och att utbredningstiden då är lika med längden på strålen multiplicerat med denna konstant. Beräkna numeriska värden på koordinaterna (x o,y o ). Lista själva ut hur de kan beräknas utgående från beskrivningen ovan. Utnyttja att c(x, y) är konstant i delar av området. Några komponenter i beräkningarna blir: lite enkel geometri, numerisk lösning av DEer (valfri metod), numerisk interpolation (tex med hjälp av polyfit i atlab) och numerisk lösning av icke-linjära ekvationer (tex med sekantmetoden). Redovisa hur ni har gått tillväga, förståeligt och läsligt. Illustrera med lämpligt valda plottar. Glöm inte att uppge de framräknade koordinaterna. Antag att T 2 och T 3 är givna med 5% fel. Uppskatta vad detta ger för osäkerhet i ert framräknade läge (x o,y o ) genom att störa indata och se hur resultatet påverkas.