FYS2130 forelesning 1. februar 2013 Noen kommentarer til kapittel 3: Numeriske løsningsmetoder

Like dokumenter
Kapittel 3. Numeriske løsningsmetoder. 3.1 Innledning. 3.2 Eulers metode og varianter

Obligatorisk oppgave nr 3 FYS Lars Kristian Henriksen UiO

Kapittel 3. Numeriske løsningsmetoder

4. Numeriske løsningsmetoder

Løsning, gruppeoppgave om corioliskraft og karusell, oppgave 7 uke 15 i FYS-MEK/F 1110 våren 2005

Kapittel 3. Numeriske løsningsmetoder

Svingninger i en elektrisk RCL-krets med og uten påtrykt vekselspenning.

Tar først 2 metoder for å løse differensialligninger. Se forøvrig pdf-dokumentet del 9, diskretisering, sampling i Industriell IT.

Matlab-tips ved oblig3 i FYS-MEK/F 1110 våren 2006

Prosjekt 2 - Introduksjon til Vitenskapelige Beregninger

Oppgave 4. Med utgangspunkt i eksemplet gitt i oppgaveteksten er veien ikke lang til følgende kode i Matlab/Octave:

UNIVERSITETET I OSLO

Fra harmoni til kaos

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Fjæra i a) kobles sammen med massen m = 100 [kg] og et dempeledd med dempningskoeffisient b til en harmonisk oscillator.

Prosjektoppgave FYS2130. Vår Innleveringsfrist: 09/ , 20 CEST

Oblig 3 i FYS mars 2009

ProFag Realfaglig programmering

UNIVERSITETET I OSLO

Øving 2. a) I forelesningene har vi sett at det mekaniske svingesystemet i figur A ovenfor, med F(t) = F 0 cosωt, oppfyller bevegelsesligningen

Numeriske løsningsmetoder

4. Numeriske løsningsmetoder

Løsningsforslag MAT102 Vår 2018

Simulering i MATLAB og SIMULINK

Løsningsforslag til øving 1

Viktig informasjon. Taylorrekker

Oblig 1 FYS2130. Elling Hauge-Iversen

Kapittel Oktober Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 14.

PROSJEKTOPPGAVE I FYS-MEK1110 VÅR BØRGE SÆTER

Mandag F d = b v. 0 x (likevekt)

UNIVERSITETET I OSLO

Øvingsforelesning i Matlab TDT4105

MA2501 Numeriske metoder

TDT4105 IT Grunnkurs Høst 2014

ITGK - H2010, Matlab. Repetisjon

Øvingsforelesning 5 Python (TDT4110)

FYS1120 Elektromagnetisme, Oppgavesett 4

Kapittel 3. Numeriske løsningsmetoder. Dummy tekst for å spenne ut et åpent felt for et førsteside-opplegg.

UNIVERSITETET I OSLO

Differensjalligninger av førsteorden

Tegning av fasediagram med Maple

Øving 13. Et diffraksjonsgitter med N meget smale spalter og spalteavstand d resulterer i en intensitetsfordeling. I = I 0, φ = πdsin(θ)/λ

Et større programeksempel. Hvordan løse et reelt problem med en objektorientert fremgangsmåte

Oppgaver for gruppeundervisningen i FYS2130 uke 18 våren 2009

Øvingsforelesning 5 Python (TDT4110)

1. Finn egenverdiene og egenvektorene til matrisen A = 2 1 A =

TDT4105 Informasjonsteknologi grunnkurs Øvingsforelesning 2. Iver Dihle Skjervum Vit.ass. ITGK

Eksamensoppgave i MA1102/6102 Grunnkurs i analyse II

TFY4104 Fysikk. Institutt for fysikk, NTNU. Høsten Obligatorisk numerikkøving. Innleveringsfrist: Søndag 13. november kl

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

Oblig 2 - MAT1120. Fredrik Meyer 23. september 2009 A =

Øvingsforelesning i Matlab TDT4105

Matematikk Øvingsoppgaver i numerikk leksjon 4 m-ler

Obligatorisk oppgave MAT-INF Lars Kristian Henriksen UiO

EKSAMENSOPPGAVE / EKSAMENSOPPGÅVE

Finne ut om en løsning er helt riktig og korrigere ved behov

UNIVERSITETET I OSLO

Løse reelle problemer

Løsningsforslag til øving 10

Python: Intro til funksjoner. TDT4110 IT Grunnkurs Professor Guttorm Sindre

TMA4100 Matematikk 1, høst 2013

TFY4106 Fysikk. Institutt for fysikk, NTNU. Våren Løsningsforslag til øving 8.

FYS-MEK 1110 OBLIGATORISK INNLEVERING 1 ROBERT JACOBSEN ( GRUPPE 1 )

Pendler, differensialligninger og resonansfenomen

Øving 4. a) Verifiser at en transversal bølge som forplanter seg langs x-aksen med utsving D med komponentene

EKSAMEN I MATEMATIKK 1000

Løsningsforslag for Obligatorisk Oppgave 2. Algoritmer og Datastrukturer ITF20006

Løsningsforslag MAT102 - v Jon Eivind Vatne

EKSAMENSOPPGAVE / EKSAMENSOPPGÅVE

Løsningsforslag. Innlevering i BYFE 1000 Oppgavesett 4 Innleveringsfrist:??? klokka 14:00 Antall oppgaver: 5, 20 deloppgaver.

FYS1120: Oblig 2 Syklotron

Utførelse av programmer, funksjoner og synlighet av variabler (Matl.)

TDT4110 Informasjonsteknologi grunnkurs: Eksempler. Mangekanter

V1 = input( Gjett p V1: ) %%Riktig verdi er omtrent V1= ; %%f.eks gir 4*E-4 i feil for T=123K. %%Bestemmer tilsvarende P1: P1 =

Matematikk Øvingsoppgaver i numerikk leksjon 3 Løsningsforslag

FYS1120: Oblig 2 Syklotron

Øving 1 ITD Industriell IT

I dag skal vi ved hjelp av ganske enkel Python-kode finne ut om det er mulig å tjene penger på å selge og kjøpe en aksje.

Prosjektoppgave i FYS-MEK 1110

Newtons lover i én dimensjon (2)

Matematikk Øvingsoppgaver i numerikk leksjon 3. Løsningsforslag

Simulerings-eksperiment - Fysikk/Matematikk

Viktig informasjon. Taylorrekker

MAT 1110: Oblig 1, V-12, Løsningsforslag

TDT4105 Informasjonsteknologi, grunnkurs MatLab: Filbehandling - load, save, type - fopen, fgetl, feof, fprintf, fclose

Prosjektoppgave, FYS-MEK1110 V06 ROBERT JACOBSEN

Repetisjon Novice Videregående Python PDF

Oppgave 1A.8: En forenklet kode for stjernedannelse

Løsningsforslag til øving 1

UNIVERSITETET I OSLO

Løsningsforslag. Innlevering i BYFE/EMFE 1000 Oppgavesett 1 Innleveringsfrist: 14. september klokka 14:00 Antall oppgaver: 3.

Matlab-tips til Oppgave 2

1. (a) Finn egenverdiene og egenvektorene til matrisen A =

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

FYS2140 Hjemmeeksamen Vår Ditt kandidatnummer

UNIVERSITETET I OSLO

Om plotting. Knut Mørken. 31. oktober 2003

41070 STABILITET I ELKRAFTSYSTEMER

Transkript:

FYS2130 forelesning 1. februar 2013 Noen kommentarer til kapittel 3: Numeriske løsningsmetoder

Numerisk løsning av annen ordens differensialligning: 1. Kan skrive differensialligningen som en sum av to koblede første ordens differensialligninger. 2. Starter så med initialbetingelsene og integrerer opp trinn for trinn, basert på den underliggende differensialligningen.

x n+1 x(t) x n tan θ = x n tan θ = x n x n x(t) t n t n+1 Tid x n+1 t n t n+1 Tid x(t n ) = lim t 0 x n+1 = + x n x(t n+1 ) t x n t x(t n ) x(t n ) = lim t 0 x n+1 = + x n x(t n+1 ) t x n t x(t n )

3.0.1 Matlab-kode for Eulers metode function [xnp,vnp,tnp] = euler(xn,vn,tn,delta_t,param) vnp = vn + an(xn,vn,tn,param)*delta_t; xnp = xn + vn*delta_t; tnp = tn + delta_t; return; 3.0.2 Matlab-kode for Euler-Cromers metode function [xnp,vnp,tnp] = eulercrom(xn,vn,tn,delta_t,param) vnp = vn + an(xn,vn,tn,param)*delta_t; xnp = xn + vnp*delta_t; tnp = tn + delta_t; return; 3.0.3 Matlab-kode for Eulers midtpunktmetode

3.0.3 Matlab-kode for Eulers midtpunktmetode function [xp,vp,tp] = eulermidt(xn,vn,tn,delta_t,param) vnh = vn + an(xn,vn,tn,param)*delta_t/2; xnh = xn + vn*delta_t/2; vnp = vn + an(xnh,vnh,tn+delta_t/2,param)*delta_t; xnp = xn + vnh*delta_t; tnp = tn + delta_t; return; 3.0.4 Eksempel på Matlab-kode for annen-deriverte function [dvdt] = an(xn,vn,tn,delta_t,param) dvdt = -param.kn*xcn - param.bn*vc n + param.fmaxn*sin(param.omegad*tc); n return; I hovedprogrammet er stukturen param definert slik: param.kn = k/m, param.bn = b/m, Fmaxn = Fmax/m, param.omegad = omegad.

% Input argumenter (n: "n-te punkt"): [xn,vn,tn] = nåværende verdier.. % Output argumenter (p : "n plus 1"): [xnp,vnp,tnp] = nye verdier. %**************************************************************** ffa = eval([ @ param.fn]); % Gir navn på funksjon som inneholder % navn på uttrykket for annen derivert halv_delta_t = 0.5*delta_t; t_p_halv = tn + halv_delta_t; x1 = xn; v1 = vn; a1 = ffa(x1,v1,tn,param); x2 = x1 + v1*halv_delta_t; v2 = v1 + a1*halv_delta_t; a2 = ffa(x2,v2,t_p_halv,param); x3 = x1 + v2*halv_delta_t; v3 = v1 + a2*halv_delta_t; a3 = ffa(x3,v3,t_p_halv,param); tp = tn + delta_t; x4 = x1 + v3*delta_t; v4 = v1 + a3*delta_t; a4 = ffa(x4,v4,tp,param); % Returnerer (tilnærmet) (x,v,t) i slutten av intervallet. delta_t6 = delta_t/6.0; xnp = xn + delta_t6*(v1 + 2.0*(v2+v3) + v4); vnp = vn + delta_t6*(a1 + 2.0*(a2+a3) + a4); return; 3

Etter forelesningen sendte Morten Ledum meg en illustrering av fjerde ordens Runge Kutta. Morten skriver: I Computational Phys. compendiet til Morten har han en figur (http://tinyurl.com/compfys, s.251) som hjalp meg veldig til å forstå de fire stegene i metoden. Herved er hans innspill delt med alle andre.

3.0.6 Eksempel på funksjon som inneholder differensiallik _ ligningen function dvdt = ffavariantx(xn,vn,tn,param) %********************************************************* % Funksjon for bruk i FYS2130 våren 2013. Versjon 31012013 % Returnerer venstresiden i en diffligning for dv/dt % Benyttes av Runge-Kutta 4 numerisk løsning av to koblede % diffligninger, f.eks. for svingebevegelse for ulike varianter forhold. %********************************************************* % Denne versjonen passer for dempet og påtrykt svingning av en fjærpendel dvdt = -param.kn*xcn - param.bn*vc n + param.fmaxn*sin(param.omegad*tc); n return;

% Her velges parametrene for beregningene (bortsett fra % startpos og startfart som gis gjennom kall til funksjonen). %************************************************************ AntallPerioder=80; % Antall perioder beregningene bør gå over (ca 40) n_pr_t=1000; % Velger 1000 punkt pr periode (ca) k=1.16; % "Fjærstivheten" (default 1.16) m=85.6e-3; % Loddets masse (default 0.0856) b=0.25*0.025; % Friksjons-faktor (default 0.02) Fmax=0.4e-00; % Amplituden for påtrykt kraft (default 2) omega0=sqrt(k/m) % Grunn-vinkelfrekvensen beregnes og skrives ut omegad=1.2*omega0; % Velger (relativ) frekvens for påtrykt kraft funknavn= ffavariantx ; % Navn på Matlab-funksjonen som gir annen derivert filnavn= sving11c002.txt ; % Navn på fil hvor parametre og resultater % skal lagres for senere dokumentasjon % MERK: Også ffa bør dokumenteres, f.eks. slik: fvligning1 = dvdt = -param.kn*xc - param.bn*vc + ; fvligning2 = param.fmaxn*sin(param.omegad*tc); ; %************************************************************* % Parametre nedenfor denne linjen skal ikke endres uten at programmet får % nytt versjonsnummer (eller at endringen dokumenteres på annet vis). delta = b/(2.0*m) param.kn=k/m; param.bn=b/m; param.fn=funknavn; param.fmaxn=fmax/m; param.omegad=omegad; T0=2*pi/omega0; % Parameter for å bedømme om man har kritisk dempning % eller ikke ( i så fall er delta=omega0). Skrives ut. % Normerte størrelser inn i en struktur % "param" % Svingetid for enkel harmonisk bevegelse N=n_pr_T*AntallPerioder; % Antall punkter alt i alt i beregningen

x=zeros(n,1); t=zeros(n,1); v=zeros(n,1); % Setter initialbetingelsene x(1)=double(startpos); v(1)=double(startfart); t(1)=0; % Dernest kjøres løkken for å følge videre utvikling for j=1:n-1 [x(j+1), v(j+1), t(j+1)]=rk4r(x(j),v(j),t(j),delta_t,param); end % Diverse plot, først for posisjon vs tid, sammenlikner med analytisk % x_analyt = startpos*cos(2*pi*t/t0); % Ikke generelt! plot(t,x, -r ); %axis([0.0 5.0-0.55 1.1]) % Bør kuttes ut vanligvis! %plot(t,x, -r,t,x_analyt, -b ); %legend( numerisk løsning, analytisk løsning ); title( Posisjon vs tid ); % Skift ut tallet etter hva som beregnes xlabel( Tid (sek) ); ylabel( Utsving (meter) ); figure; % Et nytt plott, for faserom-diagram plot(x,v); xlabel( Posisjon (m) ); ylabel( Hastighet (m/s) ); title( Faserom-presentasjon av svingebevegelsen );

Gir parametre, velger tidssteg, velger antall punkter Initierer arrayer, gir initialbetingelser Løkken hvor beregninger foretas Bearbeider data, plotter. Må gi korrekte enheter langs aksene! 4. ordens Runge Kutta Beregner annen deriverte Dokumentasjon av program og resultater

Krav: 1. Sjekke innvirkning av valg av tidssteg. 2. Sjekke om programmet gir samme resultat som analytisk der dette lar seg sjekke. 3. Variablenavn lett gjenkjennelige sml med annen beskrivelse. 4. Generelle moduler, for å lette gjenbruk. 5. Passe med kommentarer. Tilstrekkelig dokumentasjon av kombinasjonen program og resultater. 6. Ha øye for ressursbruk (regnetid og hukommelse).

Feilsøking: 1. Sjekk biter av programmet underveis mens du skriver det. 2. Forsøk å skjønne feilmeldingen dersom du får en slik. Det kan være mer hjelp i disse meldingene enn du straks innser. 3. Velg å skrive ut en del størrelser underveis, for å se at verdiene er slik de skal være. 4. Vær tålmodig og systematisk, ikke få panikk og søke vilt. 5. Spør om hjelp etter at du har forsøkt litt på egen hånd. Ikke kast bort tid på endeløs feilsøking alene dersom du ikke har en god nok strategi på å finne feilen.

Lykke til!