Kontinuerliga system, Datorövning 3

Relevanta dokument
Kontinuerliga system, Datorövning 3

Kontinuerliga system, Datorövning 3

Numerisk lösning av PDE: Comsol Multiphysics

Datorövning 2. För att få tillgång till några mer avancerade ritkommandon kör

Fouriers metod, egenfunktionsutvecklingar.

Egenvärdesproblem för matriser och differentialekvationer

Rita även upp grafen till Fourierseriens summa på intervallet [ 2π, 3π], samt ange summans värde i punkterna π, 0, π, 2π. (5) S(t) = c n e int,

Studio 6: Dubbelintegral.

SF1626 Flervariabelanalys Lösningsförslag till tentamen DEL A. 1. En svängningsrörelse beskrivs av

SF1626 Flervariabelanalys Lösningsförslag till tentamen DEL A

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

Laboration: Grunderna i Matlab

FFM234, Klassisk fysik och vektorfält - Föreläsningsanteckningar

TMA226 datorlaboration

FYSIKENS MATEMATISKA METODER

SF1626 Flervariabelanalys Lösningsförslag till tentamen DEL A

Högskolan i Skövde (SK, JS) Svensk version Tentamen i matematik Lösningsförslag till del I

= e 2x. Integrering ger ye 2x = e 2x /2 + C, vilket kan skrivas y = 1/2 + Ce 2x. Här är C en godtycklig konstant.

Uppsala Universitet Matematiska Institutionen Bo Styf. Sammanfattning av föreläsningarna 11-14, 16/11-28/

Tentamen i tmv036c och tmv035c, Analys och linjär algebra C för K, Kf och Bt A =, = det(a λi) = e 2t + c 2. x(t) = c 1. = c 1.

Projekt Finit Element-lösare

av envariabelfunktionen g(t) och flervariabelfunktionen t = h(x, y) = x 2 + e y.)

Institutionen för matematik och datavetenskap Karlstads universitet. GeoGebra. ett digitalt verktyg för framtidens matematikundervisning

SF1626 Flervariabelanalys Tentamen Måndagen den 16 mars 2015

Introduktion till Matlab

Flervariabelanalys och Matlab Kapitel 3

Datorövning 1. - med hjälp av matlab kort repetera fourier-, sinus- och cosinus-serier och deras konvergensegenskaper,

Introduktion till Matlab

Tentamen i matematik. f(x) = ln(ln(x)),

SF1669 Matematisk och numerisk analys II Lösningsförslag till tentamen DEL A. r cos t + (r cos t) 2 + (r sin t) 2) rdrdt.

Flervariabelanlys och Matlab Kapitel 3

CHALMERS Finit Elementmetod M3 Institutionen för tillämpad mekanik. Teorifrågor

FMNF15 HT18: Beräkningsprogrammering Numerisk Analys, Matematikcentrum

SF1625 Envariabelanalys Lösningsförslag till tentamen

Tentamen i matematik. f(x) = 1 + e x.

SF1625 Envariabelanalys Lösningsförslag till tentamen DEL A

SF1646 Analys i flera variabler Tentamen 18 augusti 2011, Svar och lösningsförslag

Institutionen för matematik KTH. Tentamensskrivning, , kl B1210 och 5B1230 Matematik IV, för B, M, och I.

TANA17 Matematiska beräkningar med Matlab

SF1661 Perspektiv på matematik Tentamen 24 oktober 2013 kl Svar och lösningsförslag. z 11. w 3. Lösning. De Moivres formel ger att

Lösningar av uppgifter hörande till övning nr 5.

= 0. Båda skärningsvinklarna är således π/2 (ortogonala riktningsvektorer).

SF1625 Envariabelanalys Lösningsförslag till tentamen DEL A

MMA127 Differential och integralkalkyl II

= = i K = 0, K =

Linjära ekvationssystem. Avsnitt 1. Vi ska lära oss en metod som på ett systematiskt sätt löser alla linjära ekvationssystem. Linjära ekvationssystem

Lösningsskiss för tentamen Vektorfält och klassisk fysik (FFM232)

TAIU07 Matematiska beräkningar med Matlab

Institutionen för matematik KTH. Tentamensskrivning, , kl B1202/2 Diff och Trans 2 del 2, för F och T.

Matematik 3 Digitala övningar med TI-82 Stats, TI-84 Plus och TI-Nspire CAS

v0.2, Högskolan i Skövde Tentamen i matematik

Lösningsförslag, preliminär version 0.1, 23 januari 2018

Introduktion. Torsionspendel

Rita även grafen till Fourierserien på intervallet [ 2π, 4π]. (5) 1 + cos(2t),

TATA42: Föreläsning 7 Differentialekvationer av första ordningen och integralekvationer

Institutionen för Matematik, KTH Torbjörn Kolsrud

SF1625 Envariabelanalys Lösningsförslag till tentamen DEL A

Innehåll. Vad är MATLAB? Grunderna i MATLAB. Informationsteknologi. Informationsteknologi.

Träff 1 Skissa & Extrudera

SF1626 Flervariabelanalys Lösningsförslag till tentamen DEL A

Mathematica. Utdata är Mathematicas svar på dina kommandon. Här ser vi svaret på kommandot från. , x

Problem inför KS 2. Problem i matematik CDEPR & CDMAT Flervariabelanalys. KTH -matematik

Introduktionskurs i matematik LÄSANVISNINGAR

Institutionen för Matematik. SF1625 Envariabelanalys. Lars Filipsson. Modul 1

Laboration: Grunderna i MATLAB

Precis som var fallet med förra artikeln, Geogebra för de yngre i Nämnaren

7 Extremvärden med bivillkor, obegränsade områden

Laboration 6. Ordinära differentialekvationer och glesa system

1 x. SF1626 Flervariabelanalys Lösningsförslag till tentamen DEL A

Gran Canaria - Arbetsbeskrivning knapplänkar (Mediator 8)

SF1626 Flervariabelanalys Lösningsförslag till tentamen DEL A

Laboration: Brinntid hos ett stearinljus

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

Innehåll 1. Kapitel 6: Separation of Variables 1

Undersökande arbetssätt i matematik 1 och 2

Gamla tentemensuppgifter

= y(0) för vilka lim y(t) är ändligt.

Lösningar till tentamen i Transformmetoder okt 2007

SIMULERINGAR MED FINITA-ELEMENT-METODEN inom ELEKTROMAGNETISM

SF1633, Differentialekvationer I Tentamen, torsdagen den 7 januari Lösningsförslag. Del I

Laboration: Att inhägna ett rektangulärt område

SF1626 Flervariabelanalys Tentamen Tisdagen den 12 januari 2016

6. Nu skall vi ställa in vad som skall hända när man klickar på knappen samt att markören skall ändra sig till en hand när markören är på knappen.

Lösningsförslag till tentamen Tisdagen den 10 januari 2017 DEL A

PRÖVNINGSANVISNINGAR

Del I. Modul 1. Betrakta differentialekvationen

= 1, fallet x > 0 behandlas pga villkoret. x:x > 1

Lösningsförslag till tentamen i SF1683, Differentialekvationer och Transformmetoder (del 2) 4 april < f,g >=

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

Blixtkurs i komplex integration

(x + 1) dxdy där D är det ändliga område som begränsas av kurvorna

Tentamensuppgifter, Matematik 1 α

R AKNE OVNING VECKA 2 David Heintz, 13 november 2002

Moment Viktiga exempel Övningsuppgifter Ö , Ö1.25, Ö1.55, Ö1.59

Chalmers Tekniska Högskola och Mars 2003 Göteborgs Universitet Fysik och teknisk fysik Kristian Gustafsson Maj Hanson. Svängningar

Prov i matematik Distans, Matematik A Analys UPPSALA UNIVERSITET Matematiska institutionen

LABORATION cos (3x 2 ) dx I =

Tentamen i Envariabelanalys 2

Lösningsförslag TATM

Dubbelintegraler och volymberäkning

Transkript:

Vårterminen 2002 Kontinuerliga system, Datorövning 3 1 Inledning Matlab består, förutom grundpaketet, av ett antal toolboxar 1. Dessutom finns tilläggsprodukter. En sådan är programpaket FEMLAB. Det handlar om numerisk lösning av partiella differentialekvationer med finita elementmetoden. I avsnitt 2 nedan kommer vi att göra en mycket kort presentation av denna, se även kapitel 8 i läroboken. Finita elementmetoden är den ena av två förhärskande metoder för numerisk lösning av partiella differentialekvationer, där den andra är finita differensmetoden, se kapitel 2 i boken. Kursen i stort går främst ut på att studera analytiska lösningsmetoder. Sådana finns bara i ganska speciella situationer, med enkla områden, differentialekvationer och randvillkor. De numeriska metoderna fungerar i mycket allmännare situationer, med godtyckliga områden och där koefficienterna i differentialekvation och randvillkor får bero av rums- och tidsvariabler. Man finner dock ganska snart att för att effektivt och kritiskt kunna använda ett numeriskt programpaket som FEMLAB så måste man vara väl förtrogen med den analytiska teorin. Syftet med denna datorlaboration är att Du skall bli något bekant med FEMLAB och se hur programmet kan användas som stöd för förståelsen av teori och lösningsmetoder från kursen i övrigt, för numerisk lösning av olika problemtyper för partiella differentialekvationer, för visualisering av lösningar. Hinner du inte med alla uppgifterna under den handledda övningen, så genomför de återstående momenten på egen hand. För att laborationen inte bara skall bli en lek med en svart låda, där man stoppar in ett problem och ut kommer en lösning, är det viktigt att läsa igenom avsnitt 2 nedan. Likaså skall man läsa igenom texten i övrigt, och utföra förberedelseuppgiften på sidan 10. På sista sidan finns en tabell, som ska vara ifylld innan laborationen börjar. 2 Om finita elementmetoden Antag att u är en lösning till randvärdesproblemet u = f i Ω u n + qu = g på Ω (1) 1 I brist på någon bra benämning säger vi toolbox även på svenska. 1

för ett område Ω med styckvis glatt rand Ω. Låt ϕ vara en C 1 -funktion i en omgivning av Ω. Sådana funktioner kallar vi testfunktioner. Multiplicera differentialekvationen med ϕ och integrera över Ω. Med hjälp av en partialintegration, Greens formel I, får vi ( u)ϕ dv = fϕ dv D D D grad u grad ϕ dv Insättning av randvillkoret ger grad u grad ϕ dv + D D D u n ϕ ds = quϕ ds = D D fϕ dv. gϕ ds + D fϕ dv. (2) Om u är en lösning till (1) så gäller alltså (2) för varje testfunktion ϕ. Om (2) är uppfylld för alla testfunktioner sägs u vara en svag lösning till (1). För att u skall vara en svag lösning till (1) krävs bara att u är en gång deriverbar, trots att andraderivator ingår i problemformuleringen (1). Situationen påminner om derivation i distributionsmening, fast där har man en annan klass av testfunktioner. Om Ω, f och q är tillräckligt regulära kan man visa att varje svag lösning också är en klassisk lösning till (1). Vid finita elementmetoden går man ett steg längre, och betraktar en diskret variant av (2). Börja med att göra en uppdelning av området Ω i trianglar, se figuren nedan, och ersätt klassen av testfunktioner ovan med klassen T av funktioner vars grafer är plana över var och en av trianglarna. Hörnen i trianglarna kallas noder. Ett viktigt exempel på en funktion i T är tältfunktionen τ k i figuren nedan. Den har värdet 1 i centralnoden (x k, y k ) och 0 i alla andra noder. Det fina med tältfunktioner är att varje funktion ϕ T kan skrivas ϕ(x, y) = ϕ(x k, y k )τ k (x, y). k Tänk efter att detta är riktigt. Tältfunktionerna utgör alltså en bas för T, och koefficienterna i utvecklingen av en funktion i denna bas är helt enkelt funktionens värde i centralnoden. 1 0.8 0.6 0.4 0.2 0 0.5 1 0 0.5 1 0.5 0 0.5 2

Vid en vanlig variant av finita elementmetoden, Galerkins metod, vill man att även lösningen u skall tillhöra klassen T. Detta leder till problemet: Bestäm u T så att (2) gäller för alla ϕ T. Eftersom tältfunktionerna är en bas för T räcker det här att låta ϕ genomlöpa tältfunktionerna τ j. För varje j är det lätt att räkna ut tex första integralen i (2), D u(x k, y k ) grad τ k (x, y) grad τ j (x, y) dv. k Här är alla gradienter konstanta över varje triangel, och alla termer i summan försvinner utom det fåtal som svarar mot noder k som ingår i någon triangel tillsammans med noden j. På samma sätt hanteras de andra termerna i (2). Detta leder till ett kvadratiskt ekvationssystem KU = F, där U är en kolonnmatris som innehåller u:s värden i noderna, F är en kolonnmatris uträknad från f och g, och där koefficientmatrisen K kallas för styvhetsmatrisen. Beräkningen av K och F kallas assemblering. På detta sätt övergår problemet att lösa randvärdesproblemet (1) till att lösa ett, i allmänhet mycket stort, linjärt ekvationssystem. Antalet obekanta är lika med antalet noder. Man kan visa att om Ω, f, q och g är tillräckligt regulära, och om man väljer en svit av allt finare indelningar, så kommer de lösningar man får ur finita elementmetoden att konvergera mot lösningen till (1). På liknande sätt kan man behandla allmännare differentialekvationer av Sturm- Liouvilletyp och allmännare randvillkor. 3 Om FEMLAB Allmänt FEMLAB kan användas för att lösa problem i en, två eller tre rumsdimensioner, tex randvärdesproblem för Laplace-Poissons ekvation, begynnelse-randvärdesproblem för värmelednings- och vågekvationen samt egenvärdesproblem. Man kan göra väldigt mycket enbart med hjälp av menyer, men har man speciella krav finns även möjlighet att köra programmet med kommandon i Matlab. Huvuduppgifterna i laborationen är att formulera och lösa randvärdesproblem, studera approximationsegenskaper och lösa ett egenvärdesproblem. Försök också att hinna med åtminstone en av sex extrauppgifter. Extrauppgifterna kan utföras i valfri ordning. Det finns även några rubriker Frågor att besvara. Tänk själv ut svaret på dessa, men be handledaren förklara om du inte känner dig säker på att du snappat poängen med frågan. 3

Starta nu Matlab via klick på Start, Program och Matlab6.1. I Matlabs Command Window skriver du femlab. (I Windows-miljö kan du alternativt klicka direkt på Femlab.) Efter en stunds initiering visas följande fönster: Det är nu dags att välja mellan 1-D, 2-D eller 3-D för att sedan fortsätta valen med Geometry only, +Physics mode etc. Vilket spår man väljer beror givetvis på den uppgift som ska lösas. Till allmänna kunskaper om FEMLAB hör också att veta hur programmet avslutas: Man går ut ur FEMLAB genom att välja Exit i File-menyn eller genom en kryss - knapp längst upp till höger i FEMLAB-fönstret. 4 Användning av FEMLAB 4.1 Formulering och lösning av randvärdesproblem Här skall du bekanta dig med det grundläggande handhavandet av FEMLAB 2.1.0.127 och experimentera med Poissons ekvation u = f i ett lagom komplicerat område och med ganska allmänna randvillkor. Följ nedanstående anvisningar. a) Uppgiften går ut på att lösa u = 10 i ett området Ω. Området ska anges grafiskt. Precisering kommer senare. Flera typer av randvillkor ska testas. 4

Markera 2-D. Klicka på +Classical PDEs, Poisson s equation och OK. Nu öppnar sig en ritbräda med ett flertal knappar. För musen långsamt över dessa knappar. Då visar sig en hjälptext till varje knapp. Överst finns också en rad fönsternamn File, Edit Options etc En musklick på någon av dessa öppnar fönster med flera kommandon. Generering av område. Du har nu tillgång till ett rutnät vars indelning duger i detta inledande skede. (Om rutnätet behöver modifieras går det bra via Options, Axes/Grid Settings... följt av Axes och/eller Grid.) Med hjälp av mus och knappkommandon ska du nu försöka rita följande område: I grundinställningen fäster rektanglarna vid rutnätet. (Den nyfikne kan titta under Draw och Properties.) Klicka nu på knappen Draw Rectangle. För sedan musen till punkten ( 1, 0.4). Väl där trycker du ner vänster musknapp och med den nedtryckt för du musen till (0, 0.4). Släpp musknappen och rektangeln R1 är klar. Rita sedan rektanel R2 på analogt sätt. Notera hur rektanglarna fäster vid rutnätet. E1 är en ellips som kan skapas på följande sätt: Tryck på Draw Centered Ellipse. För musen till punkten (0, 0). Tryck där ner vänster musknapp och rör musen tills dess att du har en ellips med föreskrivna halvaxlar. Släpp musknappen. Du ska nu markera alla delområden. Snabbast sker det med Ctrl a. Alternativt kan du med Ctrl-knappen nedtryckt klicka på ett delområde åt gången. Tryck nu på knappen Union (till vänster). Då uppstår en del inre ränder som du tar bort med ett tryck på Delete Internal Borders. Området Ω är nu klart. Randvillkor. Du ska nu ställa in homogena Dirichletvillkor, vilket egentligen är detsamma som att inte göra något alls, ty detta är defaultläge. 2 Tryck på knappen Boundary Mode (utseende: Ω) och dubbelklicka på området. Alternativt kan du öppna rullgardinen 2 Svenska? 5

Boundary och trycka på Boundary Mode. I fönstret som kommer upp finns ett fönster med rubriken Boundary Settings. Klicka där. Som synes består randen av åtta delar. Du kan få veta vilket nummer en speciell del av randen har genom att klicka en gång på den randdelen. Då markeras motsvarande del i fönstret Boundary Settings. Genom att hålla Ctrl-knappen nedtryckt medan du klickar på de olika randdelarna kan du markera samtliga. Snabbast går det dock genom att i fönstret Boundary Settings markera rand 1 och sedan gå till rand 8, trycka ner Shift-tangenten och klicka på 8. I rutan Boundary conditions ser du att Dirichlet redan är markerat och att r = 0. Du behöver därför bara trycka på OK. Differentialekvation Tryck på knappen Subdomain Mode (utseende: Ω) eller öppna rullgardinen Subdomain. Klicka sedan på Subdomain settings. Klicka på 1 i fönstret Domain selection. Byt i rutan PDE coefficients ut 1 mot 10 som värde för f. Avsluta med OK. Triangelgenerering. Genom ett tryck på knappen - kallad Initialize Mesh - genereras en indelning av Ω i triangulära delområden. (Trianglar som ansluter till randen är inga perfekta trianglar.) Triangelgenereringen kunde också åstadkommits via Mesh följt av Initialize Mesh. Genom ett tryck på knappen Refine Mesh åstadkommer du ett mera finmaskigt triangelnät.(vanligen ger finare nät bättre precision i lösningen men beräkningarna tar mera tid och är mera minneskrävande.) Lös problemet. Randvärdesproblemet löses genom att man väljer Solve Problem på Solve-rullgardinen eller trycker på snabbknappen =. Det tar några sekunder att få fram en numerisk lösning. Visualisering. Notera att nya snabbknappar nu har dykt upp till vänster i FEMLABfönstret. För musen långsamt över ikonerna så framträder deras namn och i stort deras funktion. Tryck på var och en av de fem första knapparna. Begrunda frågorna nedan. Den som vill att figuren ska hamna i ett vanligt Matlab-fönster trycker på snabbknappen Plot Parameters. Välj sedan fliken General. Ta där bort bocken framför Plot in main GUI axes. Tryck sedan på OK. Figuren hamnar nu i Figure No 1 om inget annat har begärts i Matlab. En 3D Surface Plot kan du rotera. När du ser på bilden rakt ovanifrån återfår du 2D Surface Plot Frågor att besvara: Hur stämmer lösningen med randvillkoren? Verkar nivåkurvorna och flödesbilden stämma med randvillkoren? b) Nästan samma uppgift som under a). Men randvillkoren ska modifieras. Randvillkor. Ändra till homogena Neumannvillkor på randdel 1 och 8. Gå via Boundary och Boundary Settings. Markera randdel 1 och 8 och Neumannvillkor. Avsluta med OK. Notera att randdelar med Neumannvillkor har blivit streckade. 6

Triangelgenerering. Tryck på Initialize Mesh följt av Refine Mesh. Lös problemet. Se först till så att lösningen inte visas i ett Matlabfönster. Klicka för den sakens skull på Plot Parameters-knappen och under fliken General bockar du för Plot in main GUI axes. Nu kan du trycka på = Visualisering. Upprepa förfarande från föregående problem. Betänk samtidigt frågorna nedan. Frågor att besvara. Hur stämmer lösningen med randvillkoren? Hur ser man i en 3D-plot av lösningen att den uppfyller homogena Neumannvillkor? Hur ser nivåkurvorna ut vid de randdelar, där homogena Neumanvillkor gäller? c) Samma problem som tidigare men med homogena Neumannvillkor på hela randen. Försök att följa rutinerna från föregående problem.markera randdelarna 2-7 och byt där från Dirichlet- till Neumannvillkor. Frågor att besvara. Vilken lösning visas upp vid olika type av visualisering? Jämför anmärkningen på sidan 36 i läroboken. Har problemet någon lösning? d) Uppgift: Lös u = 10 i Ω, där Ω är en cirkelring med inre radien 0.4 och yttre radien 1. På den inre cirkelringen ska homogena Dirichletrandvillkor gälla och på den yttre homogena Neumannvillkor. Några tips. Gå till File och välj New. Spara inget. Välj sedan 2-D, Clasicals PDEs, Poisson s equation och OK. Gå till Options, Axes/Grid Settings. Fyll i Xmin = -2, Xmax = 2, Ymin= -1.5 och Ymax = 1.5. Klicka sedan på Grid. Ta bort bocken för Auto och fyll i 0.2 för X spacing och Y spacing. Avsluta med OK. Klicka nu på Draw Centered Ellipse. Flytta musen till (0, 0). Tryck ner höger musknapp. Med knappen nere flyttar du musen tills du har en cirkel med radien 1. Rita sedan ytterligare en cirkel med medelpunkt i (0, 0) men med radien 0.4. Tryck nu på Ctrl a och sedan på Difference. Avsluta ritningen med att klicka på Zoom Extents. Cirkelringen Ω är nu klar. Ställ in rätt randvärden och rätt f i Poisson s ekvation. Gör en triangelindelning med förfining. Lös problemet och visualisera lösningen. Frågor att besvara. Hur stämmer lösningen med randvillkoren? Beter sig nivåkurvorna vid den yttre randen som du väntat dig? Syns de olika typerna av randvillkor i en 3D-bild? 7

4.2 Approximationsegenskaper Vi skall nu betrakta ett enkelt modellproblem, där vi känner det analytiska uttrycket för lösningen, och studera hur noggrannheten hos finita elementlösningen varierar med antalet noder. Det problem vi betraktar är u = 1 i Ω : x 2 + y 2 < 1 u = 0 på Ω I detta fall känner vi lösningen analytiskt: u(x, y) = (1 x 2 y 2 )/4, jfr övning 0.4 b). Formulera detta problem i FEMLAB. Använd dina kunskaper från föregående uppgifter. Dock behöver viss modifikation ske. Börja med kommandona File, New. Spara inte. Markera 2-D i M odeln avigator. Välj Classical PDEs. Markera Poisson s equation. Dubbelklicka inte! Långt ner i fönstret står det Element Lagrange-Quadratic. Klicka på nedåtpilen och välj Lagrange Linear. Klicka sedan på OK. Fortsätt som vanligt. Om en del av enhetscirkeln inte syns så klicka på Zoom Extents. Det är viktigt att cirkeln har exakt radien 1. Kontrollera genom att dubbelklicka på cirkelskivan då du ritat den. Då öppnas ett fönster Objetcs Properties. Där kan du avläsa både medelpunkt och radie. Använd till att börja med den triangelindelning man får direkt, före förfining. Lös problemet och gör en 3D-plot. Titta även på en 2D-plot via snabbknapparna Arrow Plot och Contour Plot. För att numeriskt jämföra värdena för finita elementlösningen och den analytiska lösningen i noderna behöver du till Matlab exportera strukturdata, nodernas koordinater och lösningen u. Detta åstadkommer via följande svit av kommandon: File, Export to Workspace, FEM Structure. Acceptera det föreslagna namnet fem som variabelnamn. Exportera sedan noderna genom File, Export to Workspace, Mesh. Acceptera namnet mesh genom att trycka OK. Slutligen ska lösningen exporteras. Utför: File, Export to Workspace, Solution. Acceptera variabelnamnet sol. Innan du temporärt går över till Matlab kan du i loggfönstret längst ner avläsa antalet noder. Fönstret bör se ut på ingefär följande sätt 8

Gå över till Command Window i Matlab. Där finns nu noderna lagrade i en matris fem.mesh.p. Matrisen har två rader och antalet kolonner är detsamma som antalet noder. Sätt p = fem.mesh.p; och skriv size(p). Anteckna antalet noder. Jämför med noteringen i loggfönstret. Varje kolonn i p innehåller positionen för en nod. Du ska nu räkna ut värdet av den exakta lösningen i varje nod. Skriv därför exact = (1-p(1,:).^2-p(2,:).^2)/4; Genom kommandot u = fem.sol.u ; hamnar lösningen i radmatrisen u. Avvikelsen mellan den exakta lösningen och den numeriska kan mätas med maximumnormen. Notera resultatet av kommandot max(abs(u-exact)) tillsammans med antalet noder. (Avvikelsen kan även mätas med L 2 (Ω)-normen. Det åstadkommer du på följande sätt: Gå tillbaka till FEMLAB. Klicka på Post följt av Subdomain Integration. Under Expression skriver du (u-(1-x.^2-y.^2)/4).^2 Innan du trycker på OK bockar du för Export result to workspace. I Command Window i Matlab drar du kvadratroten ur det beräknade värdet. Det värde du då erhåller är u exact L2 (Ω). Eftersom arean av enhetscirkeln är π gäller att u exact L2 (Ω) π u exact Gäller det i detta fall?) En plot av differensen mellan den numeriska och den exakta lösningen kan åstadkommas via Plot Parameters-knappen.Tryck på den och välj fliken Surface. Skriv in abs(u-(1-x.^2-y.^2)/4) som värde på Height expression och Surface expression och tryck OK. Jämför storleken med den maximumnorm du beräknade tidigare. Gör nu en förfinad mesh och lös problemet på nytt. Exportera sedan data på samma sätt som ovan och beräkna maximala avvikelsen mellan numerisk och exakt lösning. Anteckna detta tillsammans med antalet noder. Upprepa detta tills felet blivit mindre än 10 4. Fråga: Hur många noder behövs för att få ett fel mindre än 10 4? Lärdomen av detta är att även i mycket snälla situationer, med enkla geometrier och randvillkor, så behöver man lösa stora ekvationssystem. Vi ser också att lösandet ändå går ganska snabbt, om man inte har extrema krav. Betydligt värre blir det om det finns diskontinuiteter eller singulariteter hos koefficientfunktionerna. Vi kommer nedan att se några enkla exempel på detta. 4.3 Ett egenvärdesproblem Vi använder nu FEMLAB för att lösa egenvärdesproblemet u = λu i Ω : x 2 + y 2 < 1 u = 0 på Ω 9

Här vet vi att lösningarna beskrivs av Besselfunktioner och trigonometriska funktioner, enligt exempel S.4 i boken. Förberedelseuppgift: Gör med hjälp av ex S.4 och formelsamlingen en lista över alla egenvärden som är mindre än 100, sorterade i storleksordning. Notera också motsvarande värden på parametrarna n och k. Notera dina värden på sista sidan i denna handledning! Om egenfunktionen svarande mot egenvärdet λ k är begynnelsevärde för en svängningsrörelse som beskrivs av ekvationen u tt c 2 (u xx + u yy ) = 0, vilken är svängningens vinkelfrekvens? Jämför ex. 3.14! Börja med kommandona File, New. Spara inte. Markera 2-D. Klicka sedan på PDE modes, Coefficient, Eigenvalue, OK. Rita sedan som vanligt en enhetscirkel. Kontrollera så att homogena Dirichletvillkor gäller. Klicka på Subdomain, Subdomain Settings och markera området 1. De värden som c, a, f etc har passar oss. Tryck därför på OK. Tryck på Initialize Mesh. Innan du löser problemet ska du trycka på snabbknappen Solver Parameters. Välj fliken Eigenvalue. Markera sedan All eigenvalues in search range. Som Eigenvaule search range duger [0 100]. Kontrollera också på fliken General att Eigenvalue är förprickat i det inramade området Solver type. Tryck sedan på OK. Det är nu dags att lösa problemet. Tryck på =. När problemet lösts kommer det upp en plot som visar egenfunktionen som hör till det minsta egenvärdet. Klicka på Plot Parameters och General. I övre högra hörnet finns en ruta. Till vänster om den står det Eigenvalue. Genom att klicka på pilen till höger om rutan får du tillgång till övriga beräknade egenvärden. Markera ett nytt egenvärde och klicka på Apply. Då visas motsvarande egenfunktion. Om du vill kan du spara bilderna av de olika egenfunktionerna i Matlabmiljö genom att i Plot Parameters, General ta bort bocken framför Plot in main GUI axes. Innan du ritar en egenfunktion ska du dessutom i Matlab ge kommandot figure(n), där n är ett positivt heltal som du väljer olika för varje egenfunktion. För att återgå till visning i FEMLAB-miljö är det bara att sätta tillbaka bocken du tog bort. Uppgifter och frågor att besvara: Hur kan man i den följd av egenvärden som FEMLAB räknat ut med en blick avgöra vilka som svarar mot vinkeloberoende egenfunktioner? Hur stämmer de egenvärden som FEMLAB beräknat med dem i tabellen som du gjort som förberedelseuppgift? Undersök om man kan få bättre överensstämmelse genom att använda en finare indelning. Lokalisera i en 2D-plot noderna för de stående svängningar som kan förekomma för olika värden på n och k (beteckningar enligt läroboken). (Observera att här används ordet nod i en annan betydelse än ovan.) Hur kan man från en bild av dessa noderna (eller en 3D-bild av en egenfunktion) avgöra vilka värden parametrarna n och k har? För framtida behov (uppgift Extra A) exporterar du egenvärdena till Matlab-fönstret genom att välja File, Export to Workspace, FEM Structure. Välj namnet fem43. Kör sedan ett varv till med File, Export to Workspace, Solution. I Matlab hittar du nu egenvärdena med kommandot fem43.sol.lambda. 10

Extra A: Hur ändras egenfrekvenserna då man lägger trumpinnen på trumman? Vi skall undersöka hur egenvärdena ändras då man skär bort ett segment av cirkeln. Vi ska skapa området i den högra figuren nedan. Börja med kommandona File, New. Spara inte. Markera 2-D. Klicka sedan på PDE modes, Coefficient, Eigenvalue, OK. Fortsätt med Options, Axes/Grid Settings. Fyll i Xmin = -2, Xmax = 2, Ymin= -1.5 och Ymax = 1.5. Klicka sedan på Grid. Ta bort bocken för Auto och fyll i 0.2 för X spacing och Y spacing. Ange 0.9 1.3 som Extra X spacing. Rita nu en cirkel (med radie 1) och en rektangel enligt vänstra figuren. Markera båda områdena med Ctrl a. Tryck sedan på Difference. Välj homogena Dirichletvillkor längs hela randen och beräkna egenvärden och egenfunktioner som i uppgift 4.3. Titta på egenfunktionerna i 3D- och 2D-plottar. Exportera egenvärdena till Matlabfönstret, välj då ett annat namn än FEMLABs förslag. Jämför med egenvärdena för hela cirkeln. Gör sedan motsvarande undersökning av en halvcirkel, en kvartscirkel och eventuellt en trekvartscirkel. Frågor att besvara: Hur förändras egenvärdena då man skär av ett segment av cirkeln? Vilka samband finns mellan egenvärdena/egenfunktionerna för hel- och halvcirkeln, för hel-, kvarts- eller trekvartscirkeln? Är några egenvärden gemensamma? I så fall vilka? Studera lösningen av övning S.15. Anm: Problemet med det avskurna segmentet kan ses som en matematisk idealisering av ett svängande trumskinn, där man lagt trumpinnen på trumman. Att egenvärdena och därmed egenfrekvenserna ökar då man lägger på trumpinnen kan förklaras med Rayleighkvoten. Det minsta egenvärdet λ 1 är λ 1 = min u D A R A (u) = min u D A (u Au)/(u u). Då man lägger på trumpinnen inför man ytterligare bivillkor under pinnen. Detta innebär att definitionsmängden D A minskar och således att minimivärdet ökar. Samma sak gäller sen för det näst minsta egenvärdet osv. 11

Extra B: Kan man lyssna sig till formen på en trumma? Vi tänker oss en trumma som ett membran Ω, inspänt i en plan ram av någon form Ω. Dess svängningsrörelse antas beskrivas av vågekvationen u tt c 2 u = 0 i Ω med randvillkoret u = 0 på Ω. Att bestämma u som uppfyller differentialekvation och randvillkor är exempel på ett direkt problem. Detta står i motsats till inversa problem, där modellen inte är fullständigt känd, men där man istället har information om lösningarna i olika situationer. Problemet kan sedan vara att ur sådan information dra slutsatser om modellen, tex koefficienter i differentialekvationen eller geometrin hos ett område. Kursen handlar bara om direkta problem, men inversa spelar en allt viktigare roll i praktiken (tex tomografi inom medicinen, icke-förstörande mätningar inom materialteknik, etc.) Ett exempel på ett inverst problem är det i rubriken. Genom spektralanalys av ljudet från en trumma kan man bestämma egenvärdena för Laplaceoperatorn med homogena Dirichletvillkor längs ränderna. Räcker denna information för att bestämma trummans form? Att svaret är nej visades för mindre än tio år sedan. Ett motexempel, bestående av två olika trumformer med samma egenvärden, kan laddas ner från http://www.maths.lth.se/matematiklth/personal/jang/ks2003/kontsys2003.html Hämta filerna trumma1.mat och trumma2.mat. I stället för att rita områdena klickar du på Open och väljer först trumma1.mat. Beräkna alla egenvärden i intervallet [0, 20]. Exportera egenvärdena till Matlab under lämpligt namn. Gör sedan samma sak med trumma2. Välj ett annat namn vid exporten till Matlab. Jämför egenvärdena i Matlab. De stämmer inte exakt, men nästan. Förfina indelningen, och konstatera att man får allt bättre överensstämmelse. Titta också på några 3d-plottar, och se hur Naturen skapar egenfunktioner. Extra C. Diskontinurliga randvillkor I Matlab finns en funktion atan2(y, x), som är arcustangens, utsträckt till fyra kvadranter. För denna funktion gäller π < atan2(y, x) < π. Betrakta nu problemet u = 0 i Ω : x 2 + y 2 < 1 u = atan2(y, x) på Ω Det gäller alltså att finna en harmonisk funktion med ett randvillkor som varierar mellan π och π, med en diskontinuitet i x = 1. Detta problem kan lösas exakt. För att inse detta observerar vi att funktionen atan2(y, x) kan beskrivas som principalgrenen av argumentet för det komplexa talet z = x + iy. Den är alltså imaginärdel till den analytiska funktionen log(z), z 0, principalgrenen. Detta medför att atan2(y, x) är harmonisk utanför origo. Vi påstår att funktionen u(x, y) = 2 atan2(y, x + 1) = 2arg(1 + z) 12

löser randvärdesproblemet. Enligt vad vi sett ovan uppfyller den differentialekvationen u = 0 för z 1. Det återstår att undersöka randen Ω, där det gäller att z = e iθ, π < θ < π. Vi finner att Härav följer att 1 + z = 1 + e iθ = e iθ/2 (e iθ/2 + e iθ/2 ) = 2 cos(θ/2)e iθ/2. u(x, y) = 2arg(1 + z) = θ = arg(z) på Ω. Alltså är u(x, y) = 2 atan2(y, x + 1) en harmonisk funktion som uppfyller randvillkoren. Presentera nu problemet för FEMLAB på nästan samma sätt som i avsnitt 4.1 ovan. Välj inte Poisson s utan Laplace s equation. För att skriva in randvillkoret välj först Boundary Mode sedan Specify Boundary Conditions... Lös sedan randvärdesproblemet för indelningar av olika finhetsgrad. Plotta skilladen mellan den beräknade och den exakta lösningen genom att klicka på Plot Parameters, gå till fliken Surface och där fylla i u-2*atan2(y,x+1) som Height expression. Använd även samma uttryck för Surface expression. Ett tryck på OK och bilden genereras. Du kommer att finna att finita elementmetoden har stora svårigheter att korrekt beskriva lösningen i närheten av diskontinuitetspunkten på randen, även om du tar ett mycket stort antal indelningspunkter. I ett fall som detta är det oekonomiskt att förfina triangelindelningen lika mycket överallt. Tryck på Mesh, Initialize Mesh och Display Triangle Quality. Trianglarna är i stort lika stora överallt. Det finns en option under Solve, Parameters, General. Bocka för Adaption inom ramen Solver options. Lös problemet igen via Solve-knappen. Nu känner programmet efter hur lösningen varierar, och anpassar indelningen efter det. Ju mer lösningen varierar inom ett visst område, desto tätare indelning gör man där. När denna option används görs automatiskt en följd av förfinade indelningar tills något stop-kriterium uppfylls. Ta en titt på den använda indelningen genom att välja Mesh följt av Mesh Mode. Extra D. Poissons ekvation med punktkälla En annan svårighet för rent numeriska metoder uppträder vid punktkällor, som när man försöker lösa { u = δ(a,b) i Ω : x 2 + y 2 < 1 (3) u = 0 på Ω med (a, b) = (0.5, 0). Här står δ (a,b) för Diracs δ-funktion i två variabler, lokaliserad till punkten (a, b), dvs en punktkälla. Lösningen till detta problem kallas Greenfunktionen G(x, y; a, b) för Poissons ekvation med Dirichletvillkor för enhetscirkeln, se kapitel 5 i boken. En möjlighet är att i Matlab använda en approximation av δ. En sådan är 13

((x-.5).^2+y.^2<5e-5)/(pi*5e-5) Sedan området är ritat förs punktkällan in som f under Subdomain, Subdomain Settings Detta kan vara ett sätt att i Matlabs representera en funktion som har integralen = 1, är = 0 för (x.5) 2 + y 2 > r 2 och konstant för (x.5) 2 + y 2 < r 2 med r 2 = 5 10 5, jfr handledningen till laboration 1. Lös problemet med den triangulering som fås utan förfining. Vad händer och varför? Förfina sedan, lös problemet och titta på lösningen i 3D och 2D, i det senare fallet även med Contour och Arrows. Upprepa tills du får drygt 5000 noder, totalt två tryck på förfiningsknappen. I detta fall är den exakta lösningen känd, nämligen 1 ( ln((x 0.5) 2 + y 2 ) ln((x 2) 2 + y 2 ) ln 0.25 ). 4π Jämför den framräknade lösningen u med den exakta. Avvikelsen kan mätas med L 2 - norm. Klicka på Post och sedan Subdomain Integration. Markera området 1 inom ramen Integration on subdomains. Som Expression skriver du in (u+0.25/pi*(log((x-0.5).^2+y.^2)-log((x-2).^2+y.^2)-log(0.25))).^2 Innan du trycker på Apply bockar du för Export result to workspace. Gå till Matlabfönstret. Som ans finner du resultatet av integrationen. Skriv sqrt(ans) och L 2 -normen ( u 1 ( ln((x 0.5) 2 + y 2 ) ln((x 2) 2 + y 2 ) ln 0.25 )), 4π L2(Ω) där Ω är enhetscirkelskivan, är beräknad. I kapitel 5.3 i boken visas att lösningen närheten av punktkällan beter sig som K(x, y) = 1 4π ln ((x 0.5)2 + y 2 ). Funktionen K(x, y) är den så kallade fundamentallösningen till Laplaceoperatorn.Vi kan förvänta oss att numeriska metoder har problem att ta fram sådana lösningar. Vi löser därför (3) på ett annat sätt, där vi utnyttjar kännedomen om fundamentallösningen. Ett sätt att lösa problemet är att utnyttja att vi känner fundamentallösningen. Bilda v(x, y) = u(x, y) K(x, y). Här gäller att v är lösning till ett snällare problem, där det är lätt att få en god numerisk approximation: v = 0 i Ω v(x, y) = K(x, y) på Ω 14

För nu in detta problem i FEMLAB. Ändra inte på meshen. Välj Bondary, Boundary Settings. För in som värde på r uttrycket 0.25/pi*log((x-0.5).^2+y.^2). Under Subdomain, Subdomain Settings ska f ändras till 0. Klicka på Plot Parameters och fliken Surface. Skriv under Height expression och under Surface expression u - 0.25/pi*log((x-0.5).^2+y.^2). Klicka på OK och Solve Problem. En 3-D bild av lösningen träder fram. Jämför den beräknade lösningen med den exakta. Mät avvikelsen med L 2 -norm. Gör som ovan men skriv under Expression in (u-0.25/pi*(log((x-2).^2+y.^2)+log(0.25))).^2 Vilken av de de två metoderna har i detta fall givit bäst resultat? I FEMLAB finns fr o m version 2.2 ytterligare en metod, som bygger på en s k svag formulering av problemet. Gå tillbaka till Draw mode. Klicka på Draw Point och klicka på punkten (0.5, 0). Även om skuggning av cirkelskivan gör att punktens läge inte är så lätt att pricka lyckas du säkert. Ty programmet är inställt på att fästa vid rutnätet. För alltså musen tills du tycker dig befinna dig i positionen (0.5, 0) och klicka. En rund ring markerar punkten PT1. En dubbelklickning på punkten tar fram dess data och du kan se att du har skapat rätt punkt. Gå nu vidare till fönstret Point. I detta markera du View as Point Coefficients. Sedan öppnar en klickning på Point Settings ett fönster. Dra fönstret så mycket åt sidan att punkten blir synlig. Inom ramen Domain selection markerar du område 4. Det leder till att punkten blir rödmarkerad. Byt till fliken Weak. Där byter du på raden weak ut 0 mot u_test. Det är nu dags att trycka på OK. Gå till Boundary och Boundary Settings. Skriv där in homogena Dirichletvillkor. Gå vidare till Subdomain och Subdomain Settings. Markera området 1 och ändra f till 0. Lämna fönstret via OK. Klicka på Initialize Mesh. Gå vidare till Solver Parameters. På fliken General bockar du för Adaption. Byt till fliken Adaption. Ta bort bocken för Automatic increment. Ändra sedan Maximum number of elements till 2000. Gå till ramen Error norm. Klicka på den nedåtpekande pilen. Välj L2 norm. Avsluta med OK. Du kan nu lösa problemet via Solve Problem. Studera liksom tidigare en 3-D bild av lösningen. Beräkna på samma sätt som i det första fallet skillnaden mellan den beräknade lösningen och den exakta. Mät differensen med L 2 -normen. Vilken av de tre metoderna verkar vara bäst? Extra E. Svängande sträng Vi ska här använda FEMLAB för att studera en svängande sträng utan yttre krafter. Se läroboken sidorna 17-19 och 32. För enkelhets skull förutsätter vi att strängen har längden 1 och att kvoten S ρ l mellan 15

spännkraften och längddensiteten är 1. Vågekvationen blir då u tt u xx = 0, 0 < x < 1, t > 0 Som begynnelsevillkor använder vi { u(x, 0) = (θ(x 0.4) θ(x 0.6)) cos 2 5π(x 0.5), 0 < x < 1 u t (x, 0) = 0, 0 < x < 1 Vi ska studera två typer av randvillkor nämligen de som förekommer i övningsuppgift 3.30. Strängen är fastinspänd i båda ändarna. I FEMLAB börjar du med File, New och sparar ej. Klicka sedan på 1-D, Classical PDEs, Wave equation och OK. Gå till Specify Geometry under Draw. Sätt Start till 0 och Stop till 1. Gå sedan till Boundary och Boundary Settings. Grundinställningen är homogena Dirichletvillkor. Därför kan du klicka OK och gå vidare till Subdomain, Subdomain Settings. Där för du in 0 som värde på f och går vidare till Initialize Mesh. Förfina indelningen tills 961 noder uppnåtts. Begynnelsevärdena matas in under Subdomain, Subdomain Settings. Välj fliken Init. Ge u(t 0 värdet ((x>0.4)-(x>0.6)).*(cos(5*pi*(x-0.5))).^2. Hastigheten u t är redan klar. I rullgardinsfönstret Solve finns också kommandot Parameters. Gå där till Timestepping och fyll i 0:0.05:2 i rutan för Output times:. Tryck på OK och sedan =. Lösningen tar en stund att beräkna. Gå sedan till Plot Parameters. Klicka på fliken Animate. Sätt Number of repeats till 0. Klicka sedan på Animate i nedre högra hörnet. Observera hur vågen reflekteras vid ändpunkterna. Strängen är fastinspänd i vänstra ändpunkten men fri i den högra. Randvillkoren preciseras närmare i övning 3.30 b. I FEMLAB behöver du bara ändra två saker. Först ändrar du till homogent Neumannvillkor då x = 1. Sedan ändrar du Timestepping till 0:0.05:4. Annars får du bara se en halv period. Lös sedan problemet och animera lösningen som ovan. Extra F. Akustiska resonansfrekvenser i ett rum Vi ska räkna på det rum som förekommer i exempel 3.15 i boken. FEMLAB bestämmer de första av de egenvärden som anges nederst på sidan 110. Börja som vanligt med File, New. När FEMLAB startat om väljer du 3-D, PDE modes, Coefficient och Eigenvalue. Gå ner till Element: och välj där Lagrange- Linear. Gå vidare till OK. Klicka på ikonen Block och fyll i X = 4.7, Y = 4.1 och Z = 3.1. Jämför med rummet i exempel 3.15. Klicka sedan på Zoom Extents. Se till att 16

du får homogena Neumannvillkor på alla randdelar. Gå till Solver Parameters och se till att egenvärdena i intervallet [0, 4] beräknas. Klicka på Initialize Mesh men förfina inte indelningen. (Beräkningen kan ta onödigt lång tid eller kan minnet ta slut.) Lös problemet. Exportera egenvärdena till Matlab. Räkna också ut egenvärdena enligt sista raden på sidan 110. Jämför! Det kunde varit intressant att räkna på ett möblerat rum också. Men minnet räcker inte till. Om du vill läsa om vad som sker kan du klicka på Help och FEMLAB Help Desk. Internet Explorer startar. Välj Model Library [HTML]. I vänstra delen av fönstret, som kommer upp, finns en innehållsförteckning. Under rubriken Acoustics Models klickar du på Eigenfrequences of a Room. Läs där och du får kanske en aning om var högtalarna ska placeras. λ k n Egenfunktioner 1 0 J 0 (α 01 r) J 1 (α 11 r) cos θ sin θ 17