01.08.2013 Views

Föreläsning 5

Föreläsning 5

Föreläsning 5

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Lektion 5<br />

Ordinära differentialekvationer<br />

En ordinär differentialekvation av första ordningen kan skrivas i<br />

formen , där är någon given funktion. Lösningen till<br />

ekvationen är funktionen , som kan bestämmas entydigt, om man<br />

har ett randvillkor, t.ex. .<br />

En ekvation av den här typen kan lösas med Eulers metod:<br />

Man startar alltså i med (randvillkoret). Sedan<br />

beräknar man approximativa värden på i punkterna ,<br />

osv. Då steglängden blir det här en allt<br />

noggrannare approximation av .<br />

Exempelprogram. Löser x(t) med Eulers metod, då<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Differentialekvationer av högre ordning<br />

Differentialekvationer av högre ordning är viktiga i fysiken, t.ex.<br />

Newtons lagar kan skrivas som andra ordningens differentialekvationer.<br />

Differentialekvationer av högre ordning kan skrivas om som ett<br />

13<br />

system av kopplade första ordningens ekvationer.<br />

Exempel: Rörelse i en dimension<br />

Programmering för fysiker. Lektion 5.<br />

En partikel med massan m som påverkas av en kraft F accelererar med<br />

accelerationen a, enligt Newtons andra lag . Accelerationen<br />

är positionens andra derivata:<br />

Det här kan skrivas om som två första ordningens ekvationer:<br />

, ,<br />

där v är partikelns hastighet.<br />

Ekvationerna skrivs alltså som derivatan av en funktion uttryckt med<br />

funktionerna utan derivator. Ett ekvationssystem av den här typen kan<br />

lösas med Eulers metod, se nedan.<br />

Kopplade differentialekvationer<br />

Betrakta ett system av kopplade första ordningens differentialekvationer:<br />

, , osv,<br />

där , , ... är givna funktioner, och kan bero av och alla .<br />

Det här systemet kan lösas med Eulers metod på samma sätt som en<br />

ensam ekvation:<br />

I ett program beräknar man alltså derivatan för alla och adderar<br />

sedan till varje dess derivata gånger .<br />

Ekvationerna för ett tidssteg för rörelseekvationen i exemplet ovan<br />

blir:<br />

där kan bero av t, x och v, beroende på problemet som studeras.<br />

En pendel<br />

Differentialekvationen för pendelns rörelse är<br />

.<br />

För att kunna lösa ekvationen analytiskt, antar man att vinkeln är<br />

liten, och att . Lösningen blir då , där


. Exempelprogrammet nedan löser numeriskt, utan<br />

approximationen att vinkeln är liten.<br />

Exempelprogram. En pendel.<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Differentialekvationen skrivs om till två kopplade första ordningens<br />

ekvationer. Variablerna lagras i arrayen , så att vinkeln finns i <br />

och vinkelhastigheten i Ekvationerna har nu formen<br />

, .<br />

Derivatorna beräknas i funktionen Tidssteget utförs<br />

i funktionen . Variablerna är placerade i en array på det här sättet<br />

för att programmet ska vara mer allmänt. Om man vill lösa ett annat<br />

problem måste man skriva in ekvationerna för det nya problemet i<br />

funktionen och möjligen ändra längden på arrayen i<br />

, men funktionen kan användas som den är. En array är också<br />

praktisk om man har många likadana variabler, t.ex. ett system av<br />

kopplade pendlar. I det här exemplet kunde man istället ha använt två<br />

skilda variabler för vinkeln och dess derivata, men då hade också<br />

funktionen för tidssteget blivit specifik för just det här problemet.<br />

För varje tidssteg skriver programmet ut t, och . Värdena skrivs<br />

till skärmen, men kan fås i en fil om man kör programmet såhär:<br />

<br />

Resultatet kan plottas med gnuplot:<br />

<br />

Fler exempel finns på kurshemsidan.<br />

14<br />

Programmering för fysiker. Lektion 5.<br />

Mer information om lösning av differentialekvationer finns i<br />

W. H. Press et al.: Numerical Recipes in C - The art of scientific com-<br />

puting, 2:nd edition (Cambridge university press 1992)<br />

Gnu Scientific Library (GSL) innehåller funktioner för lösning av<br />

ODE:r: http://www.gnu.org/software/gsl/

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!