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.

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,

Laboration: Grunderna i Matlab

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

Studio 6: Dubbelintegral.

SF1626 Flervariabelanalys Lösningsförslag till tentamen DEL A

Egenvärdesproblem för matriser och differentialekvationer

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

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

FYSIKENS MATEMATISKA METODER

= 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/

SF1626 Flervariabelanalys Lösningsförslag till tentamen DEL A

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

Projekt Finit Element-lösare

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

SF1626 Flervariabelanalys Tentamen Måndagen den 16 mars 2015

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

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.

TMA226 datorlaboration

Introduktion till Matlab

FMNF15 HT18: Beräkningsprogrammering Numerisk Analys, Matematikcentrum

Flervariabelanalys och Matlab Kapitel 3

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

Flervariabelanlys och Matlab Kapitel 3

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

SF1625 Envariabelanalys Lösningsförslag till tentamen DEL A

SF1625 Envariabelanalys Lösningsförslag till tentamen

Introduktion till Matlab

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

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

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

TANA17 Matematiska beräkningar med Matlab

MMA127 Differential och integralkalkyl II

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

Mathematica. Utdata är Mathematicas svar på dina kommandon. Här ser vi svaret på kommandot från. , 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.

Introduktion. Torsionspendel

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

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

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

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

Träff 1 Skissa & Extrudera

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

PRÖVNINGSANVISNINGAR

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

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

Lösningar till tentamen i Transformmetoder okt 2007

= = i K = 0, K =

Gamla tentemensuppgifter

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

SF1625 Envariabelanalys Lösningsförslag till tentamen DEL A

Laboration 6. Ordinära differentialekvationer och glesa system

TAIU07 Matematiska beräkningar med Matlab

SF1625 Envariabelanalys Lösningsförslag till tentamen DEL A

SF1626 Flervariabelanalys Lösningsförslag till tentamen DEL A

Laboration: Grunderna i MATLAB

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

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

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

Gran Canaria - Arbetsbeskrivning knapplänkar (Mediator 8)

Blixtkurs i komplex integration

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

Tentamensuppgifter, Matematik 1 α

Institutionen för Matematik, KTH Torbjörn Kolsrud

Till flera av ovanstående finns det dessutom varianter, vilka kommer att presenteras i de olika avsnitten.

Tillämpningar av komplex analys på spektralteori

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.

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

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

Introduktionskurs i matematik LÄSANVISNINGAR

SF1626 Flervariabelanalys Tentamen Tisdagen den 12 januari 2016

SIMULERINGAR MED FINITA-ELEMENT-METODEN inom ELEKTROMAGNETISM

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

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

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

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

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

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

GeoGebra i matematikundervisningen - Inspirationsdagar för gymnasielärare. Karlstads universitet april

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

Matematik D (MA1204)

Partiella differentialekvationer: Koppling Diskret - Kontinuum och Finita Elementmetoden

Sidor i boken f(x) = a x 2 +b x+c

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

Kontinuerliga system, Datorövning 1

x ( f u 2y + f v 2x) xy = 24 och C = f

MVE465. Innehållsförteckning

Undersökande arbetssätt i matematik 1 och 2

Ellipsen. 1. Apollonius och ellipsen som kägelsnitt.

Dubbelintegraler och volymberäkning

Del I. Modul 1. Betrakta differentialekvationen

LABORATION cos (3x 2 ) dx I =

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

KTH Matematik Tentamensskrivning i Differentialekvationer och transformer III, SF1637.

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 9. 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.5, 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: Ω) eller öppna rullgardinen Boundary och tryck på Boundary Mode. Gå vidare till Specify Boundary 2 Svenska? 5

Conditions... I fönstret som kommer upp finns ett fönster med rubriken Boundary selection. 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 selection. 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 selection markera rand 1 och sedan gå till rand 8, trycka ner Shift-tangenten och klicka på 8. I rutan Boundary condition type 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 PDE Mode (utseende: Ω) eller öppna rullgardinen PDE. Klicka sedan på PDE Specification. Klicka på 1 i fönstret Subdomain 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 nu rotera i Matlab-bilden. 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 Specify Boundary Conditions. 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. Om Neumann- och Dirichletvillkoren är grå sätt då en bock i rutan framför Enable borders. 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.Cirkelringen Ω är nu klar. Ställ in rätt randvärden. 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? 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. 7

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. Formulera detta problem i FEMLAB. Använd dina kunskaper från föregående uppgifter. 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 losningen 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 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 8

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å Plot 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 u-(1-x.^2-y.^2)/4 som värde på Height 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å Ω 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. 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! 9

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. Kommandona PDE, PDE Specifications... öppnar ett fönster där förinställda parametrar 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 Solvertype. 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 mitten på övre halvan finns en ruta ovanför vilken det står 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. 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 10

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? 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. 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. 11

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/kontsys/kontsys2002.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) 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 1 + z = 1 + e iθ = e iθ/2 (e iθ/2 + e iθ/2 ) = 2 cos(θ/2)e iθ/2. 12

Härav följer att 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å samma sätt som i avsnitt 4.1 ovan. 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 δ. 3 En sådan är ((x-.5).^2+y.^2<5e-5)/(pi*5e-5) Sedan området är ritat förs punktkällan in som f under PDE, PDE Specifications Detta är Matlabs sätt att representera en funktion som har integralen = 1, är = 0 för 3 I FEMLAB 2.2 finns andra möjligheter, vars styrka ligger i en svag formulering av problemet. 13

(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. Skicka också en 3D-bild av lösningen till Matlab. Klicka på Plot Parameters, General och bocka av Plot in main GUI Axes och avsluta med Apply. Figuren finns nu i fönstret Figure No 1. 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å Ω För nu in detta problem i FEMLAB. Ändra inte på meshen. Välj Bondary, Specify Boundary Conditions. För in som värde på r uttrycket 0.25/pi*log((x-0.5).^2+y.^2). Under PDE, PDE Specifications 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). Kontrollera under fliken General att Plot in main GUI axes inte är förbockat. Gå till Matlab och skriv figure(2) följt av return. Tryck nu på Solve-knappen i FEMLAB. En 3-D bild av v + K hamnar nu i fönstret Figure No 2. I två olika figurer har du nu 3D-plottar av lösningarna från de två metoderna. Man ser med ögat en viss skillnad, och denna kan göras ännu tydligare genom att man vrider plottarna så att man ser funktionsytan rakt från sidan. Här är den senast beräknade lösningen den exaktaste. Detta exempel visar hur man kan kombinera analytiska och numeriska metoder för att få bättre resultat. 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. 14

För enkelhets skull förutsätter vi att strängen har längden 1 och att kvoten S ρ l mellan 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 Specify Boundary Conditions. Grundinställningen är homogena Dirichletvillkor. Därför kan du klicka OK och gå vidare till PDE, PDE Specifications. 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 Solve, Specify Initial Cond s. Ge u(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 Numer 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, Eigenvalue och 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 15

till att 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. Kalla FEM Structure exempelvis för femtom. Räkna också ut egenvärdena enligt sista raden på sidan 110. Jämför! Påverkas egenvärdena av möbler? Hämta filen rum.mat från kursens hemsida. Klicka sedan på Open. Spara inte. Öppna file rum.mat. När det är klart är samma rum möblerat med soffgrupp och TV med högtalare. Ställ in homogena Neumannvillkor på var och en av de 74 randdelarna. Lös sedan problemet som tidigare. Exportera egenvärdena till Matlab exepelvis under strukturnamnet femfull. Jämför i Matlab egenvärdena med de som gällde för det omöblerade rummet. Det tar mer tid än vi disponerar men den som har lust kan klicka på Help och FEMLAB Help Desk. Starta Netscape. Gå vidare till Index, acoustics models 2-28, Next. Väl där öppnar sig en artikel om Eigenfrequences of a Room. Läs den och du får kanske en aning om var högtalarna ska placeras. 16