Laboration 6. Ordinära differentialekvationer och glesa system

Relevanta dokument
Laboration 4. Numerisk behandling av integraler och begynnelsevärdesproblem

Laboration 4. Numerisk behandling av integraler och begynnelsevärdesproblem

Laboration 3. Funktioner, vektorer, integraler och felskattning

Laboration 3. Funktioner, vektorer, integraler och felskattning

Teorifrågor. 6. Beräkna konditionstalet för en diagonalmatris med diagonalelementen 2/k, k = 1,2,...,20.

NUMPROG, 2D1212, vt Föreläsning 9, Numme-delen. Stabilitet vid numerisk behandling av diffekvationer Linjära och icke-linjära ekvationssystem

LAB 4. ORDINÄRA DIFFERENTIALEKVATIONER. 1 Inledning. 2 Eulers metod och Runge-Kuttas metod

Denna föreläsning. DN1212 Numeriska metoder och grundläggande programmering FN Runge-Kuttas metoder. Repetition av FN6 (GNM kap 6.

FMNF15 HT18: Beräkningsprogrammering Numerisk Analys, Matematikcentrum

Laboration 2. Laborationen löses i grupper om två och redovisas individuellt genom en lappskrivning den 3/10. x = 1±0.01, y = 2±0.05.

Föreläsning 14: Exempel på randvärdesproblem. LU-faktorisering för att lösa linjära ekvationssystem.

Tentamen del 1 SF1546, , , Numeriska metoder, grundkurs

Laboration 1. Ekvationslösning

Laboration 2 Ordinära differentialekvationer

LABORATION 1. Introduktion

Ordinära differentialekvationer,

Laboration 1. x = 1±0.01, y = 2±0.05. a) Teoretiskt med hjälp av felfortplantningsformeln (Taylor-utveckling).

TMA226 datorlaboration

Tentamen, del 2 Lösningar DN1240 Numeriska metoder gk II F och CL

TENTAMEN I GRUNDKURS I NUMERISKA METODER - DEL 20

Kurs DN1215, Laboration 3 (Del 1): Randvärdesproblem för ordinära differentialekvationer

Omtentamen i DV & TDV

2D1240 Numeriska metoder gk II för T2, VT 2004 LABORATION 1. Ekvationslösning

Sammanfattning (Nummedelen)

Denna föreläsning. DN1212 Numeriska metoder och grundläggande programmering FN Differentialekvationer. Repetition av FN5 (GNM kap 6.

2 Matrisfaktorisering och lösning till ekvationssystem

Ordinära differentialekvationer,

Denna föreläsning. DN1212 Numeriska metoder och grundläggande programmering FN Standardform för randvärdesproblem

Tentamen i Teknisk-Vetenskapliga Beräkningar

LABORATION cos (3x 2 ) dx I =

Laboration 1. 1 Matlab-repetition. 2 Störningsräkning 1. 3 Störningsräkning 2

Tentamen i Beräkningsvetenskap II, 5.0 hp,

TANA17 Matematiska beräkningar med Matlab

LABORATION 2. Trapetsregeln, MATLAB-funktioner, ekvationer, numerisk derivering

Matlab övningsuppgifter

Tentamen i Beräkningsvetenskap I, DV, 5.0 hp, OBS: Kurskod 1TD394

DN1212 Numeriska Metoder och Grundläggande Programmering DN1214 Numeriska Metoder för S Lördag , kl 9-12

LAB 3. INTERPOLATION. 1 Inledning. 2 Interpolation med polynom. 3 Splineinterpolation. 1.1 Innehåll. 3.1 Problembeskrivning

Tentamen i Beräkningsvetenskap II, 5.0 hp,

Tentamen i Beräkningsvetenskap I/KF, 5.0 hp,

Numeriska metoder för fysiker Lördag , kl 10-14

Tentamen del 1 SF1511, , kl , Numeriska metoder och grundläggande programmering

SF1513 NumProg för Bio3 HT2013 LABORATION 4. Ekvationslösning, interpolation och numerisk integration. Enkel Tredimensionell Design

Lösningsanvisningar till de icke obligatoriska workoutuppgifterna

Tentamen i Beräkningsvetenskap II, 5.0 hp,

Uppgift 1 R-S. Uppgift 2 R-M. Namn:...

TENTAMEN I LINJÄR ALGEBRA OCH NUMERISK ANALYS F1, TMA671

Numeriska metoder för ODE: Teori

Tentamen, del 2 DN1240 Numeriska metoder gk II för F

FMN140 VT07: Beräkningsprogrammering Numerisk Analys, Matematikcentrum

Föreläsningen ger en introduktion till differentialekvationer och behandlar stoff från delkapitel 18.1, 18.3 och 7.9 i Adams. 18.

Omtentamen i DV & TDV

Numeriska metoder för ODE: Teori

Laboration 1, M0039M, VT16

Tentamen i Beräkningsvetenskap II, 5.0 hp,

Inlämningsuppgift 4 NUM131

Tentamen i Beräkningsvetenskap II, 5.0 hp,

TAIU07 Matematiska beräkningar med Matlab

0.31 = f(x 2 ) = b 1 + b 2 (x 3 x 1 ) + b 3 (x 3 x 1 )(x 3 x 2 ) = ( ) + b 3 ( )(

Tentamen del 2 SF1511, , kl , Numeriska metoder och grundläggande programmering

Lösningar till Tentamen i Beräkningsvetenskap II, 5.0 hp, Del A. 1. (a) ODE-systemet kan skrivas på formen

f(x + h) f(x) h f(x) f(x h) h

Del I: Lösningsförslag till Numerisk analys,

Numeriska metoder, grundkurs II. Dagens program. Gyllenesnittminimering, exempel Gyllenesnittetminimering. Övningsgrupp 1

Samtliga deluppgifter i denna uppgift använder följande differentialekvation. Deluppgift a görs för hand

Numeriska metoder för ODE: Teori

Föreläsning 5. Approximationsteori

Repetitionsfrågor: 5DV154 Tema 4: Förbränningsstrategier för raketer modellerade som begynnelsevärdesproblem

Lösningsanvisningar till vissa av de icke obligatoriska workout-uppgifterna i Beräkningsvetenskap II

2D1240, Numeriska metoder gk2 för F2 och CL2 MATLAB-introduktion, minstakvadratmetoden, differensapproximationer,

Lösningsförslag till tentamensskrivningen i Numerisk analys

Tentamen i Beräkningsvetenskap II, 5.0 hp,

Tentamen i Beräkningsvetenskap II, 5.0 hp,

LABORATIONSHÄFTE NUMERISKA METODER GRUNDKURS 1, 2D1210 LÄSÅRET 03/04. Laboration 3 3. Torsionssvängningar i en drivaxel

Laboration: Vektorer och matriser

NUMPROG, 2D1212, vt Föreläsning 1, Numme-delen. Linjära ekvationssystem Interpolation, Minstakvadratmetoden

Institutionen för Matematik TENTAMEN I LINJÄR ALGEBRA OCH NUMERISK ANALYS F1, TMA DAG: Fredag 30 augusti 2002 TID:

Linjär Algebra och Numerisk Analys TMA 671, Extraexempel

Akademin för utbildning, kultur och kommunikation MMA132 Numeriska Metoder Avdelningen för tillämpad matematik Datum: 2 juni 2014

Tentamen i Beräkningsvetenskap II, 5.0 hp,

TAIU07 Matematiska beräkningar med Matlab

FEM1: Randvärdesproblem och finita elementmetoden i en variabel.

DN1212+DN1214+DN1215+DN1240+DN1241+DN1243 mfl Tentamen i Grundkurs i numeriska metoder Del 2 (av 2) Lördag , kl 9-12

Egenvärdesproblem för matriser och differentialekvationer

ODE av andra ordningen, och system av ODE

TENTAMEN I GRUNDKURS I NUMERISKA METODER - DEL 2

DN1212/numpm Numeriska metoder och grundläggande programmering Laboration 1 Introduktion

Lösningsanvisningar till de icke obligatoriska workoutuppgifterna

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 9 november 2015 Sida 1 / 28

Block 2: Lineära system

Tentamen i Beräkningsvetenskap II, 5.0 hp,

TANA19 NUMERISKA METODER

Tentamen i Beräkningsvetenskap I och KF, 5.0 hp,

Ordinära differentialekvationer (ODE) 1 1

6. Temperaturen u(x) i positionen x av en stav uppfyller värmeledningsekvationen. u (x) + u(x) = f(x), 0 x 2, u(0) = 0 u(2) = 1,

Tentamen del 2 SF1511, , kl , Numeriska metoder och grundläggande programmering

Tentamen i Beräkningsvetenskap II, 5.0 hp, Del A

2D1212 NumProg för P1, VT2006 PROJEKTUPPGIFT

Andra EP-laborationen

Numerisk lösning till den tidsberoende Schrödingerekvationen.

Transkript:

1 DN1212 VT2012 för T NADA 20 februari 2012 Laboration 6 Ordinära differentialekvationer och glesa system Efter den här laborationen skall du känna igen problemtyperna randvärdes- och begynnelsevärdesproblem för ordinära differentialekvationer och kunna lösa dessa med differensmetoder. Du skall kunna analysera noggrannhetsordning och bestämma stabilitetsegenskaper både teoretiskt och experimentellt. Du skall också lära dig att lösa stora linjära ekvationssystem och hantera GUI:s. 1. Begynnelsevärdesproblem Läsanvisning: GNM Kap 6.1-6.2 a) Givet är följande differentialekvation dy dt = cos(t) 6y, y(0) = 0.4, t [0,12]. I denna deluppgift ska ovanstående differentialekvation lösas numeriskt med Eulers framåtmetod, Eulers bakåtmetod och trapetsmetoden. Uppgiften går ut på att undersöka hur trunkeringsfelet avtar med steglängden h (för små värden på h), dvs noggrannheten hur den numeriska lösningen uppför sig för stora h-värden (stabilitet) (a) Lös först differentialekvationen exakt (analytiskt), dvs med metoder som du lärt dig i matematik. Denna lösning betecknas y(t). (b) Dela in tidsintervallet [0,12] i n ekvidistanta steg h. Eulerlösningen i en punkt t skattad med steglängden h betecknas y E (t,h). Skriv ett Matlabprogram som beräknar Eulerlösningarna för n = 100, n = 200, n = 400 och n = 800. Plotta i samma graf den exakta lösningen y(t) samt de de tre Eulerlösningarna. Plotta även i ett loglog-diagram felet i slutpunkten, dvs y(12) y E (12,h) som funktion av h. Vilken ordning hos Eulers framåtmetod kan utläsas ur diagrammet? Stämmer det med teorin? (c) Gör samma beräkningar, grafer, diagram och dra slutsatser för Eulers bakåt-metod. (d) Gör samma beräkningar, grafer, diagram och dra slutsatser för trapetsmetoden. (e) Dela in tidsintervallet [0,12] i n = 10,20,40 och 80 ekvidistanta steg. Beräkna de fyra Eulerlösningarna och plotta dem tillsammans med den exakta lösningen i varsin graf. Gör samma sak med Eulers bakåt-metod. Gör samma sak med trapetsmetoden. Vilken slutsats kan du dra beträffande den numeriska stabiliteten för de tre metoderna genom att titta på graferna? För den eller de icke-stabila, undersök vilken steglängd h går gränsen? (Tips: prova n = 25, 30, 35 och 40 med Euler framåt).

2 2. Högre ordningens differentialekvation Följande andra ordningens differentialekvation beskriver en pendels rörelse. d 2 φ dt 2 + g π sin(φ) = 0, φ(0) = L 3.1, dφ (0) = 0, t = [0,T] dt Här är φ vinkeln mot lodlinjen och φ vinkelhastigheten. Längden på snöret är L = 3.5 m och tyngdkraften g = 9.81 m/s 2. (a) Skriv om differentialekvationen som ett system av första ordningens differentialekvationer. Systemet skall redovisas på papper. (b) Lös systemet med MATLABs inbygga ode-lösare ode45. Välj ett tidsintervall, [0, T], som gör att pendeln hinner svänga lite drygt två hela perioder. Plotta vinkel och vinkelhastighet som funktion av tiden. (c) Animera pendelns gång. Animeringen kan göras med tex ett anrop av följande MATLAB-kod: function anim(tut,fiut,l); for i=1:length(tut)-1 x0=l*sin(fiut(i));y0=-l*cos(fiut(i)); plot([0,x0],[0,y0], -o ) axis( equal ) axis([-1 1-1 0]*1.2*L) drawnow pause(tut(i+1)-tut(i)) end; end där tut är tidpunkterna vid vilka ode45 har räknat ut lösningen, fiut är den uträknade vinkeln vid motsvarande tidpunkt och L är pendelns längd. (d) Bestäm pendelns svängningstid (dvs period) med minst 1 decimal genom att göra interpolation i den beräknade pendelrörelsen och bestämma interpolationspolynomets nollställe. (Tips: Välj ett lämpligt interpolationspolynom! Ledning: över vilket intervall bör interpolationspolynomet gå?) (e) Beror svängningstiden av L? 3. Randvärdesproblem och stora linjära ekvationssystem Läsanvisning: GNM Kap 6.3 och 4.1 (glesa matriser). En homogen balk av höghållfast stål är fritt upplagd horisontellt på två rullstöd med avståndet L = 2.40 m. Balken har ett cirkulärt tvärsnitt med en radie r = 2.80 10 2 m och en elasticitetsmodul E = 2.60 10 11 N/m 2. Mitt på balken verkar en nedåtriktad kraft P = 250 N. Man vill beräkna balkens utböjning, w(x). P L/2 L/2 000 111 w(x) 000 111

3 För ett tvärsnitt vid lägetxfinns ett samband mellan momentet M(x) och balkens utböjning w(x). Om kraften P är tillräckligt liten ges detta samband av följande linjära modell M(x) EI I är yttröghetsmomentet för balken och ges utav formeln Momentet beror av kraften P enligt M(x) = = w (x). (1) I = πr4 4 { Px 2 x L 2 PL 2 (1 x L ) x L 2 Randvillkoren, att balken är fritt upplagd, kan skrivas som w(0) = 0, och w(l) = 0. (2) Ekvation (1) tillsammans med randvillkoren (2) kan lösas numeriskt med hjälp av finita differensmetoden. Diskretisera balken i N delar (dvs N+1 punkter), x j = jh, j = 0,1,...N, h = L/N, och w j är utböjningen i punkten x = x j. Använd en andra ordningens noggrann differens-approximation. Diskretiseringen leder till ett linjärt ekvationssystem Aw = f (3) där A är en matris och w = (w 1,w 2,...) är en vektor med de obekanta utböjningarna. a) Härled och skriv ner matrisen A och vektorn f med papper och penna. Vilken struktur har matrisen A? Vilken dimension har matrisen A? Vilken dimension har vektorn f? b) Skriv ett Matlab-program som löser randvärdesproblemet. Matrisen A kommer endast att ha ett fåtal nollskilda element. (Tips: Skapa matrisen i Matlab med Matlabs diag och eye). Räkna ut utböjningen w för fallet N = 200. Lösningen får du genom att lösa det linjära ekvationssystemet Aw = f. Du behöver också räkna ut f som ges av högerledet i ekvation (3) och sambanden för momentet, M(x), och yttröghetsmomentet, I. Använd värdena på L, E, P och r enligt ovan. Lösningen, w, kommer att innehålla utböjningen i alla punkter, x j (eventuellt utom i randpunkterna där w = 0). Plotta utböjningen som funktion av x för 0 x L. Vilket värde på maximala utböjningen fås med N = 250? Ge en skattning på trunkeringsfelet i ditt värde för maximala utböjningen du fick med N = 200. c) Bestäm balkens maximala utböjning med (minst) 6 korrekta decimaler. d) Föreslå ett lämpligt minsta antal delar, N, att dela upp stången i om man söker utböjningen i x = 1.74? e) Backslash-kommandot i MATLAB använder vanlig Gauss-eliminering för att lösa ekvationssystemet. Undersök hur tidsåtgången för gausseliminering beror av systemmatrisens storlek genom att lösa Aw = f för olika N, tex N = 100,200,400,800. För att mäta tiden kan MATLAB-funktionen cputime eller tic och toc användas (help ger mer information). För att få en bra noggrannhet av mätningen av cpu-tiden (eftersom den är kort) bör man kanske upprepa beräkningarna (dvs

4 lösandet av det linjära ekvationssystemet) i en for-slinga (tex 5, 20 eller 100 gånger, beroende på dator) och sedan ta medelvärdet. Plotta tidsåtgången mot antal intervall N i en loglog-plot. Hur beror tidsåtgången av N? (dvs t N p, för vilket p?) Hur är beroendet enligt teorin? Stämmer dina resultat med teorin? (Tips: kolla att det verkligen bara är själva lösandet av det linjära ekvationssystemet som ni mäter tid för!) f) När en matris är gles (fåtal nollskilda element) kan betydligt effektivare metoder än vanlig Gauss-eliminering användas för att lösa ekvationssystemet. Genom att tala om för Matlab att matrisen är gles kommer bättre metoder automatiskt användas när backslash-operatorn anropas. Detta kan ni enkelt göra här genom att skriva A=sparse(A). Gå igenom beräkningarna i deluppgift d igen. (Tiden är nu ännu kortare, kanske behövs fler varv i for-slingan?) Hur stor tidsvinst gör man i detta fall genom att låta Matlab använda metoder för glesa matriser? Plotta tidsåtgången mot antal delintervall N i en loglog-plot. Hur beror tidsåtgången av N? (dvs t N p, för vilket p?) Hur är beroendet enligt teorin för glesa matriser? Stämmer dina resultat med teorin? Tre små kommentarer: Kan det vara så att ens resultat inte riktigt tycks stämma med teorin i boken? Hur motiverar man sitt (korrekta) resultat då? Om man redan från början vet att matrisen skall vara gles kan man istället skapa den med kommandona e = ones(n-1,1)/h^2; A = spdiags([e -2*e e], -1:1, N-1, N-1); Faktum är att det egentligen är rätt dumt att dela upp balken i så pyttesmå bitar. Uppdelning i N = 10, 20 och 40 följt av ett stegs Richardson-extrapolation ger ett svar med högre noggrannhet trots mindre mängd arbete än körningarna med N = 1000 och 2000. Men med så små N får vi så usla tids-studier ;) 4. Kombinationer Läsanvisning: GNM Kap X+Y Bestäm k med minst 6 säkra decimaler då 1.0 e kx2 dx = 0.6+k k +x2 0.5 Tips: Börja med att strukturera en algoritm. Vilka delproblem behöver lösas och vilka numeriska metoder är tillämpliga? Vilka kapitel i boken beskriver dessa numeriska metoder? Inför lämpliga beteckningar och formulera en algoritm. Fundera sedan på hur trunkeringsfelen i metoderna bidrar till felgränsen för det som söks. 5. Grafiskt användargränssnitt, GUI Frivillig: Utöka ditt MATLAB-program med Caesar-chiffret så att in- och utmatning sker via ett GUI. En vy av ditt program kan tex se ut enligt följande

5 Hur många timmar ungefär har den här laborationen tagit? / NC /