Programmering i Java med eksempler



Like dokumenter
Programmering i Java med eksempler

Simulering av differenslikninger

Simulering av differenslikninger

Numerisk løsning av differensiallikninger Eulers metode,eulers m

Differensiallikninger definisjoner, eksempler og litt om løsning

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

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

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

Tidligere eksamensoppgaver

Øving 6 Tallfølger og differenslikninger

UNIVERSITETET I OSLO

Test, 4 Differensiallikninger

UNIVERSITETET I OSLO

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

MAT-INF 1100: Obligatorisk oppgave 1

Kanter, kanter, mange mangekanter

UNIVERSITETET I OSLO

MAT1030 Diskret Matematikk

UNIVERSITETET I OSLO

MA1410: Analyse - Notat om differensiallikninger

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

MAT UiO mai Våren 2010 MAT 1012

Emne 11 Differensiallikninger

UNIVERSITETET I BERGEN

UNIVERSITETET I OSLO

Definisjoner og løsning i formel

INF1000 oppgaver til uke 38 (17 sep 23 sep)

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

Emne 9. Egenverdier og egenvektorer

UNIVERSITETET I OSLO

13 Oppsummering til Ch. 5.1, 5.2 og 8.5

Oblig4 - forklaringer. Arne og Ole Christian

Tiden går og alt forandres, selv om vi stopper klokka. Stoffet i dette kapittelet vil være en utømmelig kilde med tanke på eksamensoppgaver.

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

Kan micro:biten vår brukes som en terning? Ja, det er faktisk ganske enkelt!

Hangman. Level. Introduksjon

Tre på rad mot datamaskinen. Steg 1: Vi fortsetter fra forrige gang. Sjekkliste. Introduksjon

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?

og variasjon av parameterene Oppsummering.

INF Uke 10. Ukesoppgaver oktober 2012

Definisjoner og løsning i formel

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF Høst 2011)

Løsningsforslag: Eksamen i MAT111 - Grunnkurs i Matematikk I

Programmering i C++ Løsningsforslag Eksamen høsten 2005

Kanter, kanter, mange mangekanter. Introduksjon: Steg 1: Enkle firkanter. Sjekkliste. Skrevet av: Sigmund Hansen

Innhold uke 7. Objektorientert programmering i Python: Introduksjon. Lite tilbakeblikk: Programflyt og skop. Lite tilbakeblikk: Funksjoner er uttrykk

løsningsforslag-uke5.txt

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

Forelesning 29: Kompleksitetsteori

MAT1030 Diskret Matematikk

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

Emnebeskrivelse og emneinnhold

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

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

UNIVERSITETET I OSLO

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

Læreplan i Programmering og modellering - programfag i studiespesialiserende utdanningsprogram

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

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

Ikke lineære likninger

Tre på rad mot datamaskinen. Steg 1: Vi fortsetter fra forrige gang

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

Kan micro:biten vår brukes som et termometer? Ja, den har faktisk en temperatursensor!

VELKOMMEN TIL MAT-INF1100(L) Knut Mørken Rom 1033, Niels Henrik Abels hus

Eksamen 2P MAT1015 Høsten 2012 Løsning

PXT: Flasketuten peker på

Gangemesteren Nybegynner Scratch PDF

5.5 Komplekse egenverdier

Differensiallikninger definisjoner, eksempler og litt om løsning

2 Om statiske variable/konstanter og statiske metoder.

MAT-INF 1100: Obligatorisk oppgave 1

Nyttige Linux-kommandoer. Hvordan du kan jobbe mer effektivt Dag Langmyhr

TEMA: Kommunikasjon med Bruker INF1000 Plenumsgruppe 1, formatert utskrift

IN1000 Obligatorisk innlevering 7

K Andre Ordens Differensialligninger

VELKOMMEN TIL MAT-INF 1100

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre, anders}@idi.ntnu.

i=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4

Forelesning inf Java 4

Soloball. Introduksjon. Steg 1: En roterende katt. Sjekkliste. Skrevet av: Geir Arne Hjelle

TDT4102 Prosedyre og Objektorientert programmering Vår 2015

Kompleksitetsanalyse Helge Hafting Opphavsrett: Forfatter og Stiftelsen TISIP Lærestoffet er utviklet for faget LO117D Algoritmiske metoder

Hvordan løse problemer med programmering?

UNIVERSITETET I OSLO

Forelesning 14. Rekursjon og induksjon. Dag Normann februar Oppsummering. Oppsummering. Beregnbare funksjoner

Transkript:

Simulering av differenslikninger Programmering i Java med eksempler Forelesning uke 39, 2006 MAT-INF1100 Differenslikn. p. 1

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 (h) n slik at x (h) n oppfyller initialbetingelsene x 0 = b 0, x 1 = b 1 + x (p) n Differenslikn. p. 2

Hva kan løses i formel; eksempler Likning x n+2 + 2x n = n 2 x n+2 + 2 sin(n)x n = 0 x n+2 + 2x n = 1 + n x n+2 + (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 (ikke i pensum) ja, spesialtilfelle Differenslikn. p. 3

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å forrige 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. Differenslikn. p. 4

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 Vi kjenner formler for generelle løsninger I stedet: direkte simulering av (1) Program skal Spørre etter og lese b, c, b 0, b 1 og maks. n (nmax) fra skjerm Løse differenslikning Skrive resultat til fil Skal noe gjøres med svaret, feks. plotting, kan vi ikke bare la tallene rulle over skjermen Differenslikn. p. 5

Lesing av parametere Vi bruker easyio, beskrevet i Rett på Java, kap. 3 Spørsmål Deklarasjon av objekt og utskrift Out skjerm=new Out();... skjerm.outln( gi koeff. b og c ); Innlesning Deklarasjon av objekt og innlesning In les=new In();... b=les.indouble();c=les.indouble();les.inline(); Differenslikn. p. 6

Skriving til fil lett! Omhandlet i Rett på Java, kap. 9 Dersom vi vil åpne og skrive på en fil solv.dat, brukes filnavn som argument i deklarasjon av ny Out Out utf=new Out( solv.dat );... utf.out(x);...... utf.close(); Filen må lukkes etter at den er ferdig skrevet. Vi bruker enkel uformattert utskrift ikke pent, men det virker. Differenslikn. p. 7

Digresjon; omdirigering av output I Linux (og alle andre UNIX varianter) finnes det et enkelt alternativ til å åpne en fil i programmet og skrive på denne. Dersom vi bruker Out skjerm=new Out(); vil kommandoen linux>java Ordto der Ordto er klassenavnet, føre til at resultatene skrives i terminalvinduet. Vi kan redirigere resultatstrømmen ved linux>java Ordto > res.dat Nå opprettes en fil, res.dat, og resultatene skrives der. Linux tilbyr mange liknende varianter for fleksibel behandlig av input/output. Vi legger ikke vekt på dette i MAT-INF1100. Differenslikn. p. 8

Etterbehandling av fil Vi vil se på den på skjermen under Linux. Skriv less solv.dat Vi vil bytte navn til res.dat mv solv.dat res.dat Eller fjerne fila rm solv.dat Et vanlig ønske er å framstille datane grafisk. I dag viser jeg bare resultatet, men sier ikke hvordan! Differenslikn. p. 9

Selve beregningen Den numeriske kjernen i løsningen er en løkke. Naturlig ide: bruk av array... double[] x;... x=new double[nmax+1]; /* gir indekser 0...nmax */... for(i=2;i<=nmax;i++) { x[i]= b*x[i 1] c*x[i 2];...}; Array er unødvendig bruk av plass. Viktig å unngå det? Neppe her, men i andre, liknende, sammenhenger kan det være viktig. Differenslikn. p. 10

Uten bruk av arrayer La oss bruke x og xprev for x n og x n 1. Verdier skal være riktige ved hver slutten av hver løkke Bom 1 for(i=2;...) { x= b*x c*xprev; xprev=x;}; Galt! Hvorfor? Bom 2 for(i=2;...) { xprev=x; x= b*x c*xprev;}; Galt igjen! Hvorfor? Differenslikn. p. 11

Bruk av mellomlagring Dette virker Vi bruker en ekstra variabel tmp for(i=2;...) { tmp=x; x= b*x c*xprev; xprev=tmp;}; Nå kan vi sette sammen programmet. Filer andreor.java og andarray.java Observasjoner -Tenk nå igjennom hvordan formelene i Kalkulus kan kodes slik antydet tidligere. Det blir et mye lengre program enn andreor.java. -Det er mulig å trikse seg unna mellomlagring (oppgave i Kompendium) Differenslikn. p. 12

Test-eksempel; Fibonacci følgen b = c = 1, b 0 = b 1 = 1 x n+2 x n+1 x n = 0, x 0 = 1, x 1 = 1 Svar: 1, 1, 2, 3, 5, 8,... Kommando og dialog med programmet linux>java Ordto gi koeff. b og c 1 1 gi initialbet. b0 og b1 1 1 gi antall ledd (max n) 8 Differenslikn. p. 13

Fibonacci-test; resultat linux>cat solv.dat 0 1.0 1 1.0 2 2.0 3 3.0 4 5.0 5 8.0 6 13.0 7 21.0 8 34.0 God regel: program testes på eksempel med kjent svar Differenslikn. p. 14

Nytt eksempel Likner på det i kompendiumet, 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 x n = ( ) n 1 3 Differenslikn. p. 15

Simulering med b = 31/3, c = 10/3 Dialog med programmet gi koeff. b og c 10.33333333 3.33333333 gi initialbet. b0 og b1 1.0 0.33333333 gi antall ledd (max n) 12 Løsning bør være nær x n = ( 1 3 )n. Spesielt x n 0 når n Differenslikn. p. 16

Graf Det ser bra ut fram til n = 8. Da går det helt galt! Hva er feil? Differenslikn. p. 17

Hva går galt Feilkilder i simulering 1. Initialbetingelser gis inn unøyaktig, feil er omlag 10 9 2. Koeffissienter gis også inn feil 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, der ɛ og δ er av orden 10 9. Nå vil x n ± når n. Ved omtrent n = 9 blir det andre ledd av orden 1. Uansett hva vi gjør vil dette fenomenet dukke opp for tilstrekkelig stor n pga. avrunding i pkt. 1 3 Differenslikn. p. 18

Enkel populasjonsdynamikk Vanlig enkel lov for populasjonsvekst y n+1 = µy n der n teller generasjoner el. Klassifisering:Lineær, første orden, konstant koeff., homogen. Løsning (der y 0 er gitt) y n = µ n y 0 µ > 1 y n vokser over alle grenser µ < 1 populasjonen dør ut For enkel modell som igorerer bla.a. begrensninger i tilgang på ressurser. Differenslikn. p. 19

Ikkelineær modell Negativ konsekvens av konkurranse antas proporsjonal med kvadratet poulasjonen (sjansen for at to individer treffes tilfeldig og slåss om mat etc. er proposjonal med kvadratet) y n+1 = µy n By 2 n Bytte av variabel y n = µx n /B: x n+1 = µx n (1 x n ) Klassifisering: Ikkelineær, første orden, homogen(?!). Kan ikke løses i formel (hvorfor?), men enkel å simulere Interessante tilfeller µ > 1. Program ulin.java Differenslikn. p. 20

µ = 1.5, x e = 1/3 Kurver merket med x 0. Konvergens (ser det ut som). Differenslikn. p. 21

Likevektsløsning Det synes som x n har en grense, x e, når n. Det finnes løsning x n = x e =konstant: x e = µx e (1 x e ) som gir x e er en likevektsløsning x e = µ 1 µ Differenslikn. p. 22

µ = 2.5, x e = 0.6 Stadig konvergens når n. Differenslikn. p. 23

µ = 3.2, x e = 0.69.. x n nærmer seg 2-periodisk når n. Differenslikn. p. 24

µ = 3.2, x 0 = x e + 0.01 Likevekt er instabil, omstiller seg til periodisk løsning. (Kan vise at dette gjelder for µ > 3) Differenslikn. p. 25

µ = 3.5, x e = 0.71.. Større perioder når n. Differenslikn. p. 26

µ = 3.5, x e = 0.71.. x 0 = 0.3. Differenslikn. p. 27

Bemerkninger Simuleringer antyder Likevekt instiller seg for små µ Likevekt instabil for større µ periodisk løsning instiller seg Mer komplekst bilde med økende µ Kunne gjort teori for Stabilitet av likvekt Forklaring (matematisk) av de periodiske løsningen... Enkelt eksempel på utvikling mot kaos (se slutten av kap. 4 i Kalkulus) Virkelige populasjonsvariasjoner har ofte et periodisk preg. Differenslikn. p. 28