Simulering av differenslikninger



Like dokumenter
Programmering i Java med eksempler

Programmering i Java med eksempler

Simulering av differenslikninger

UNIVERSITETET I OSLO

Underveiseksamen i MAT-INF 1100, 17. oktober 2003 Tid: Oppgave- og svarark

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Rekurrens. MAT1030 Diskret matematikk. Rekurrens. Rekurrens. Eksempel. Forelesning 16: Rekurrenslikninger. Dag Normann

Numerisk løsning av differensiallikninger Eulers metode,eulers m

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

MAT1030 Forelesning 17

Tidligere eksamensoppgaver

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Øving 6 Tallfølger og differenslikninger

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Differensiallikninger definisjoner, eksempler og litt om løsning

Hangman. Steg 1: Velg et ord. Steg 2: Gjett en bokstav. Sjekkliste. Sjekkliste. Introduksjon

Løsningsforslag til prøveunderveiseksamen i MAT-INF 1100, H-03

MAT-INF1100 Oblig 1. Teodor Spæren, brukernavn teodors. September 16, 2015

Først må vi få datamaskinen til å velge et tilfeldig ord, så la oss begynne. Lagre programmet ditt og kjør det. Hvilket ord skrives ut?

Tallfølger er noe av det første vi treffer i matematikken, for eksempel når vi lærer å telle.

Emne 11 Differensiallikninger

Et lite oppdrag i bakgrunnen

MAT-INF 1100: Obligatorisk oppgave 1

Hangman. Level. Introduksjon

Forelesning Datatyper Kap 5.2 Instruksjonsformat Kap 5.3 Flyttall App B

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

MAT-INF 1100 Modellering og beregninger. Fredag 12. oktober 2018 kl Vedlegg (deles ut): formelark. Tillatte hjelpemidler: ingen

Prøveunderveiseksamen i MAT-INF 1100, H-03

MAT UiO mai Våren 2010 MAT 1012

Difflikninger med løsningsforslag.

UNIVERSITETET I OSLO

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

x n+1 rx n = 0. (2.2)

UNIVERSITETET I OSLO

Definisjoner og løsning i formel

Obligatorisk oppgave MAT-INF1100. Lars Kristian Henriksen UiO

UNIVERSITETET I OSLO

3.1 Første ordens lineære difflikninger. y + f(x)y = g(x) (3.1)

Forkurs i informatikk Python. Andreas Færøvig Olsen

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

og variasjon av parameterene Oppsummering.

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

Forside. MAT INF 1100 Modellering og beregninger. Mandag 9. oktober 2017 kl Vedlegg (deles ut): formelark. Tillatte hjelpemidler: ingen

Reelle tall på datamaskin

UNIVERSITETET I OSLO

MAT-INF 1100: Obligatorisk oppgave 1

Husk at du skal ha to vinduer åpne. Det ene er 'Python Shell' og det andre er for å skrive kode i.

FORELESNINGER I OPTIMAL KONTROLLTEORI (MAT 2310)

TEMA: Kommunikasjon med Bruker INF1000 Plenumsgruppe 1, formatert utskrift

Test, 4 Differensiallikninger

UNIVERSITETET I BERGEN

13 Oppsummering til Ch. 5.1, 5.2 og 8.5

Forside. 1 Hva skrives ut?

Løsningsforslag Øving 7 TMA4140 Diskret matematikk Høsten 2008

MAT1030 Diskret Matematikk

MAT Vår Oblig 2. Innleveringsfrist: Fredag 23.april kl. 1430

EKSAMEN I TMA4110 MATEMATIKK 3 Bokmål Mandag 6. juni 2011 løsningsforslag

12 Diagonalisering av matriser og operatorer (Ch. 5.1, 5.2 og 8.5)

Løsningsforslag Eksamen S2, våren 2016 Laget av Tommy Odland Dato: 29. januar 2017

TMA4110 Matematikk 3 Høst 2010

Løs likningssystemet ved å få totalmatrisen på redusert trappeform

INF Uke 10. Ukesoppgaver oktober 2012

TMA4123/TMA4125 Matematikk 4M/4N Vår 2013

INF oktober Dagens tema: Uavgjørbarhet. Neste uke: NP-kompletthet

Fasit til utvalgte oppgaver MAT1100, uka 15/11-19/11

MA1410: Analyse - Notat om differensiallikninger

Hvor gammel er du? Hvor gammel er du? Del 1: Skrive ut til skjerm. Gjøre selv. Skrevet av: Sindre O. Rasmussen, Kodeklubben Trondheim

a) Ved numerisk metode er det løst en differensiallikning av et objekt som faller mot jorden. Da, kan vi vi finne en tilnærming av akselerasjonen.

6 Numeriske likningsløsere TMA4125 våren 2019

LØSNINGSFORSLAG EKSAMEN, MAT 1001, HØSTEN (x + 1) 2 dx = u 2 du = u 1 = (x + 1) 1 = 1 x + 1. ln x

EKSAMEN. 1 Om eksamen. EMNE: MA2610 FAGLÆRER: Svein Olav Nyberg, Trond Stølen Gustavsen. Klasser: (div) Dato: 24. mai 2004 Eksamenstid:

1. Bevis følgende logiske ekvivalens: ((p q) p) (p q) 2. Bestem de sannhetsverdier for p, q og r som gjør følgende utsagn galt: (p (q r)) (q r p)

EKSAMENSOPPGAVE / EKSAMENSOPPGÅVE

Definisjoner og løsning i formel

INF1000 oppgaver til uke 38 (17 sep 23 sep)

Hvordan løse problemer med programmering?

UNIVERSITETET I OSLO

6.8 Anvendelser av indreprodukter

MAT 1001, Høsten 2009 Oblig 2, Løsningsforslag

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java

Løsningsforslag. Oppgave 1 Gitt matrisene ] [ og C = A = 4 1 B = 2 1 3

Løsningsforslag. Prøve i Matematikk 1000 BYFE DAFE 1000 Dato: 29. mai 2017 Hjelpemiddel: Kalkulator og formelark. Oppgave 1 Gitt matrisene.

Emne 9. Egenverdier og egenvektorer

Løse reelle problemer

Funksjoner (kapittel 1)

Løsningsforslag, Ma-2610, 18. februar 2004

Informasjon Eksamen i IN1000 og IN1001 høsten a) 1 poeng. 1b) 1 poeng. Tid. Oppgavene. Tillatte hjelpemidler. 30. november kl. 14.

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

INF Obligatorisk innlevering 7

Algebra. Likningsløsning. tasten) for å komme ned til S, og bla videre nedover til du finner solve(.

MAT Oblig 1. Halvard Sutterud. 22. september 2016

Transkript:

Forelesning uke 37, 2007

Løsning av differenslikninger i formel Mulig for lineære likninger med konst. koeff. og enkelte inhomogeniteter. Eksempel: (b, c er konstante) x n+2 + bx n+1 + cx n = cos(n), x 0 = b 0, x 1 = b 1. 1 Løs karakteristisk likning r 2 + br + c = 0 2 Bestem hvilket tilfelle vi har (2 reelle røtter, sammenfalne røtter, komplekse røtter) og sett opp generell x (h) n. 3 Finn en partikulærløsning x (p) n, dersom mulig 4 Bestem de valgbare konstantene i x n (h) slik at x n (h) oppfyller initialbetingelsene x 0 = b 0, x 1 = b 1 + x (p) n

Hva kan løses i formel; eksempler Likning x n+2 + 2x n = n 2 x n+2 + 2sin(n)x n = 0 x n+2 + 2x n = 1 + n x n+2 + 3x n+1 + (x n ) 2 = 0 x n+3 + 3x n+1 + x n = e n x n+1 + (n + 1)x n = 0 løsning ja nei nei nei ja ja, spesialtilfelle

Tallsvar fra differenslikninger Vi har tre naturlige måter å beregne løsninger av differenslikninger 1 Kode formelløsningen. Grei jobb på kalkulator eller datamaskin 2 Kode stegene i prosedyren beskrevet på tidligere lysark. En litt krevende oppgave på vårt nivå langt program 3 Direkte simulering. Enkelt og generelt De to første kan bare brukes når en formelløsning kan finnes. Vi skal se mer på det siste alternativet.

Differenslikning av orden 2 x n+2 + bx n+1 + cx n = 0, x 0 = b 0, x 1 = b 1, (1) Klassifiering: Lineær, av annen orden, konstante koeffisienter, homogen formel for generell løsning I stedet: direkte simulering av (1) Program burde Spørre etter og lese parametere b, c, b 0, b 1 og maks. n (nmax) fra skjerm Skrive resultat til fil eller plotte For ikke å foregripe INF1100: parametere settes i program og vi skriver til skjerm

Metode og testing Metode Likning skrives eksplisitt: x n+2 = bx n+1 cx n, n = 0,1,2... eller x i = bx i 1 cx i 2, i = 2,3,... Beregner x i fortløpende Testeksempel: Fibonaccifølgen b = c = 1, b 0 = b 1 = 1 x i = x i 1 + x i 2 = 0, x 0 = 1, x 1 = 1 Svar: 1, 1, 2, 3, 5, 8, 13,... Merk: Vi koder ikke Fibonaccilikningen med de spesifikke koeffisientene b = c = 1, men tilpasser generelt program

Metode med array; program andarr.py b=-1.0; c=-1.0; b0=1.0; b1=1.0; nmax=6 #Fibonacci x=[b0,b1] #initialiserer array for i in [0,1]: print i,x[i] i=2 while (i <=nmax): x.append(-b*x[i-1]-c*x[i-2]) print i,x[i] i=i+1

Simulering Kjøring ( > er promptet fra et shell) >python andarr.py 0 1.0 1 1.0 2 2.0 3 3.0 4 5.0 5 8.0 6 13.0 Fibonaccifølgen er gjenskapt Program bør alltid sjekkes mot kjente resultater

Modifisert program x n+2 = bx n+1 cx n Vi regner ut en ny x fra bare de to siste foregående x er unøvendig å ta vare på hele arrayen unødvendig bruk av minne Viktig? Ikke her, men kan være det andre ganger Alternativ løsning Tar bare vare på to siste x: xi, xim Ved inngang til sykel i inneholder xi, xim hhv. x i 1, x i 2 Ved utgang inneholder xi, xim hhv. x i, x i 1

Forsøk uten array; program andfeil.py b=-1.0; c=-1.0; b0=1.0; b1=1.0; nmax=6 #Fibonacci xim=b0; xi=b1 #initialisering print 0,xim; print 1,xi i=2 while (i <=nmax): xi=-b*xi-c*xim xim=xi # maa oppdatere forrige x print i,xi i=i+1

Resultat >python andfeil.py 0 1.0 1 1.0 2 2.0 3 4.0 4 8.0 5 16.0 6 32.0 HELT FEIL Vi har overskrevet xi før vi setter xim=xi Hvorfor får vi x i = 2 i 1? Bøtemiddel: melomlagring

Bruk av mellomlagring; program andmellom.py b=-1.0; c=-1.0; b0=1.0; b1=1.0; nmax=6 #Fibonacci xim=b0; xi=b1 #initialiserer print 0,xim; print 1,xi i=2 while (i <=nmax): tmp=xi # tar vare paa gammel xi xi=-b*xi-c*xim xim=tmp # maa oppdatere forrige x print i,xi i=i+1

Kjøring >python andmellom.py 0 1.0 1 1.0 2 2.0 3 3.0 4 5.0 5 8.0 6 13.0 -Tenk igjennom hvordan formelene i Kalkulus, kap 4.1 2 kan kodes. Program blir da mye lengre enn andmellom.py. -Det er mulig å trikse seg unna mellomlagring (oppgave i Kompendium(gml.))

Nytt eksempel Likner på et i Kompendium(gml.), 4.2. b = 31/3, c = 10/3, b 0 = 1, b 1 = 1/3 x n+2 31 3 x n+1 + 10 3 x n = 0, x 0 = 1, x 1 = 1 3 Karakteristisk polynom=0: r 2 31 3 r + 10 3 = 0 r 1 = 1 3,r 2 = 10 Løsning som oppfyller initialbetingelser ( 1 x n = 3 ) n

Utvidelser av program; program nyeks.py Motivasjon Vi trenger raskt å kunne variere på nmax Bør ikke stadig editere fil stress og feil nmax kunne vært lest fra skjerm, men hentes fra kommandolinje Kommandolinjeargument Kommando : >python nyeks.py 4 Argument kan hentes fra liste sys.argv ved import sys... nmax=int(sys.argv[1]) #nmax fra kommandolinje... Se Elements of computer programming, kap. 3.2. Merk sys.argv[0] inneholder programnavn

Program nyeks.py import sys b=-31.0/3.0; c=10.0/3.0; b0=1.0; b1=1.0/3.0 nmax=int(sys.argv[1]) #nmax fra kommandolinje xim=b0; xi=b1 #initialiserer print 0,xim; print 1,xi i=2 while (i <=nmax): tmp=xi # tar vare paa gammel xi xi=-b*xi-c*xim xim=tmp # maa oppdatere forrige x print i,xi i=i+1

Kjøring >python nyeks.py 4 0 1.0 1 0.333333333333 2 0.111111111111 3 0.037037037037 4 0.0123456790124 Løsning nær x n = ( 1 3 )n (sjekk selv med kalkulator). Skal ha x n 0 når n. Vi bruker grafisk framstilling av løsning for større n

Graf for større n x n n Det ser bra ut fram til ca. n = 15. Da går det galt!

Enda større n x n Til himmels!. Hvorfor? n

Hva går galt? Feilkilder i simulering 1 Initialbetingelser representeres ikke eksakt 2 Koeffisienter er heller ikke eksakte 3 Avrundingsfeil påvirker utregning av hver ny x n pkt. 1 gir litt gale initialbetingelser; løsning modifiseres ala x n = (1 + δ)(1/3) n + ǫ(10) n, (2) Nå vil x n ± når n. Python bruker 64 bits flyttall 15-17 desimale siffer (Kompendium(nytt), Fact 4.4 ) feil av orden 10 17 (minst) δ og ǫ er av størrelse 10 17 Før ca. n = 17 blir det andre leddet i (2) av orden 1. Uansett hvor mange bit vi bruker i flyttallene vil dette fenomenet dukke opp for tilstrekkelig stor n pga. avrunding i pkt. 1 3