MAT-INF1100 - forelesningsrapport, høsten 2014

Her vil det komme en kort rapport om hva som ble gjennomgått på hver forelesning.

Mandag 1/12. Aller først ga jeg en rask oversikt over pensum. Deretter gjorde jeg en flervalgs eksamensoppgave med halveringsmetoden før jeg gjorde to oppgaver med induksjon, en eksamensoppgave og en fra Kalkulus, se opptak og forelesningsnotatene.

Onsdag 26/11. Størstedelen av forelesningen i dag var demonstrasjon av hvordan vi kan gjøre beregninger på lyd, se kapittel 8 i kompendiet. Vi også raskt på hvordan vi kan gjøre beregninger på bilder, se kapittel 15 i kompendiet.

Mandag 24/11. Den regulære pensumgjennomgangen er over, og i dag gjennomgikk vi to oppgaver om Taylorpolynomer og estimering av feil, oppgave 4b fra del 2 av eksamen høsten 2013, og oppgave 3 fra del 2 av eksamen høsten 2011.

Onsdag 19/11. Vi fortsatte serien om estimering av feil. Aller først oppsummerte vi feilestimatene for de ulike metodene for numerisk integrasjon og vi så hvordan vi kan bruke feilestimatene til å finne en h (bredde på delintervall) slik at feilen blir mindre enn en gitt epsilon. Deretter gikk vi over til en analyse av feilen i Eulers metode, se seksjon 13.4 i kompendiet. Vi gikk gjennom de grunnleggende ideene, men ikke alle detaljene. Vi så også på den generelle formen på feilestimatet og kategoriserte metoder etter hvilken ordens nøyaktighet de har. Til slutt så vi raskt på Runge Kutta av 2. og 4. orden.

Mandag 17/11. Vi begynte på kapittel 7, der vi etablerte terminologi for koding og kompresjon. Hovedideen var å bruke korte koder for symboler som forekommer ofte, og lengre koder for symboler som forekommer sjeldent. Vi illustrerte dette med et par eksempler, og så at en kode må ha det vi kaller for prefiksekgenskapen hvis de skal kunen brukes i praksis. Deretter så vi på hvordan Huffmankoding fungerer i praksis, spesielt hvordan Huffmantreet settes opp ut fra frekvensene til de forskjellige symbolene, og hvordan kodene for symbolene leses ut fra dette. Vi forklarte også at Huffmankoder er optimale (med tanke på hvor mange bits per symbol de bruker) blant alle koder som baserer seg på binære søketrær der symbolene er løvnoder. 

Onsdag 12/11. Dagens forelesning var analog med mandagens, men denne gang var tema numerisk integrasjon. Vi gjennomgikk feilanalysen for midtpunktmetoden i seksjon 12.2 i detalj. Før det viste jeg en oppsummering av de ulike metodene for numerisk derivasjon med feilestimater.

Mandag 10/11. Vi begynte på feilanalysene, i dag for numerisk derivasjon. Vi gennomgikk seksjonene 11.1.2-11.1.4 i detalj. Lignende feilanalyser finner du i seksjonene 11.3-11.5. Disse trenger dere ikke lese, bare vite at den samme analysen kan gjøres der. Dere bør dog kjenne til de ulike metodene for numerisk derivasjon og hva eksponenten på h er i feilestimatet, det er det som er den viktigste egenskapen til hver metode.

Onsdag 5/11. Mer differensialligninger, denne gang andreordens lineære ligninger med konstante koeffisienter. Vi gikk enkelt og greit gjennom seksjonene 10.5 og 10.6, inkludert noen eksempler.

Mandag 3/11. Vi begynte med å avslutte kapittel 13 i kompendiet ved å se hvordan høyereordens differensialligninger kan skrives som et system av førsteordensligninger. Deretter gikk vi over på seksjon 10.4 i Kalkulus om hvordan vi i noen tilfeller kan finne en formel for løsningen av separable differensialligninger. Deretter gjennomgikk vi seksjon 10.1 om hvordan førsteordens lineære ligninger kan løses ved hjelp av en formel. Vi så på eksempler på begge løsningsteknikker. 

Onsdag 29/10. Tema var også i dag numerisk løsning av differensialligninger. Vi repeterte først  tolkningen av en differensialligning som en samling av tangenter og utledet deretter raskt Eulers metode en gang til. Deretter gjennomgikk vi Eulers midtpunktmetode (seksjon 13.7.1 i Kompendiet). Til slutt så vi hvordan Eulers metode kan utvides til systemer av differensialligninger, seksjon 13.8.1 og 13.8.2 i Kompendiet.

Mandag 27/10. Aller først repeterte vi kort derivasjon og numerisk derivasjon. Deretter begynte vi på nytt tema: numerisk løsning av differensialligninger, kapittel 13 i kompendiet. Vi startet med å se hvordan en differensialligning kan oppstå gjennom Newtons andre lov, se eksempel 13.1.1. Deretter så vi mer i detalj hva en differensialligning er, se seksjon 13.2.1-13.2.2, særlig figur 13.1. Deretter tok vi for oss ideen bak Eulers metode i seksjon 13.3.

Onsdag 22/10. Vi fortsatte vår gjennomgang av numeriske teknikker. For stoffet i kapitlene 11-13 hopper vi foreløbig over alle feilanalyser og fokuserer på selve metodene og ideene som ligger bak. Først så vi på numerisk derivasjon, kapittel 11 i kompendiet. Vi gjennomgikk den enkleste metoden i seksjon 11.1 i detalj og vektla at metoden kan betraktes som om vi interpolerer en funksjon f i a og a+h med en rett linje (sekanten), og bruker den deriverte av sekanten i a som en tilnærming til f'(a). Vi testet numerisk og så at det fungerte. Denne strategien kan generaliseres ved å interpolere i flere punkter, se seksjon 11.2. Vi nevnte kort noen av de andre metodene som framkommer på denne måten.

Etter pause så vi på numerisk integrasjon på samme måte. Integralet til f mellom a og b er gitt ved arealet under grafen til f. Vi kan finne en god tilnærming til dette ved å dele [a,b] i delintervaller, tilnærme f med et polynom på hvert delintervall, integrere dette polynomet i steden for f og så summere over alle delintervallene. Det enkleste er å tilnærme f med en konstanten gitt ved funksjonsverdien i midtpunktet - dette gir opphav til midtpunktmetoden. Det nest enkleste er å tilnærme med sekanten som går gjennom verdien til f i endepunktene (trapesmetoden). Det neste er kombinasjonen der vi interpolerer med en parabel i endepunktene og midtpunktet (Simpsons formel).

Mandag 20/10. Tema for denne forelesningen var stadig numerisk beregning av nullpunkter, nå sekantmetoden og Newtons metode. Vi gjennomgikk ideen bak begge metoder og demonstrerte programmer som viste hvordan begge metoder oppfører seg i praksis. Endelig så vi på situasjoner der metodene ikke fungerer.

Onsdag 15/10. Aller først oppsummerte vi interpolasjon, seksjon 9.2 i kompendiet. Deretter gikk vi over på det å løse ligninger numerisk. Vi gjennomgikk halveringsmetoden i detalj, så på algoritmen og hvordan den kan programmeres, og feilanalyse. På grunn av tekniske problemer ble det ikke noe av opptaket. Forelesningen gjentas derfor mandag 20/10 kl. 08.15.

Mandag 13/10. Vi repeterte først Taylor-polynomer ved å gjennomgå eksempel 9.10 fra kompendiet. Deretter gjennomgikk vi seksjon 9.2 i kompendiet om interpolasjon. Dette gjorde vi ved å løse et kvadratisk interpolasjonsproblem, først ved å skrive polynomet på standardform og deretter ved å bruke Newton-formen.

Onsdag 1/10. Tema i dag var Taylors formel med restledd, seksjon 11.2 i Kalkulus. Vi begynte med å utlede feilleddet ved hjelp av delvis integrasjon, og så deretter på eksempel 11.2.4 i detalj.

Mandag 29/9. Aller først gikk vi raskt gjennom eksempel 6.27 i kompendiet med forklaring. Deretter begynte vi på Taylor-polynomer, seksjon 11.1 i Kalkulus og første tema for MAT-INF1100L studentene fra MAT-INF1100 (bortsett fra induksjon). Vi utledet formelen for Taylor-polynomer, regnet ut Taylor-polynomene til e^x, sin x og cos x, og så fra det at Eulers formel, som gir sammenhengen mellom disse tre funksjonene, er naturlig.

Onsdag 24/9. I første time gjennomgikk vi et eksempel på løsning av en inhomogen differensligning der vi det å velge en partikulær løsning på samme form som høyresiden ikke fungerte, vi måtte øke graden for å få det til. I andre time så vi hvordan vi kunne løse differensligninger gjennom numerisk simulering på datamaskin. Vi avsluttet med et eksempel som oppførte seg merkelig, forklaringen kommer senere (merk at deler av denne forelesningen ble gjentatt med opptak, se siden med materiell fra forelesningene).

Mandag 22/9. Stadig mer om differenseligninger. Vi startet med to eksempler på løsning av homogen, andreordensligninger og gikk deretter over på seksjon 4.2 i Kalkulus om løsning av inhomogene differensligninger. Vi så på et par eksempler, men tar et til på onsdag der vi må øke graden på partikulærløsningen.

Onsdag 17/9. Vi fortsatte med differensligninger og i dag utledet vi prosedyren for å løse homogen, andreordens, lineære differensligninger med konstante koeffisienter, seksjon 4.1 i Kalkulus. Vi gjennomgikk ikke alle bevisene, fokus var på å komme fram til løsningsprosedyren.

Mandag 15/9. I matematikk gjør vi stadig tilnærminger og dermed trenger vi en måte å måle feil på. I dag så vi på absolutt feil og relativ feil, se seksjon 5.3 i kompendiet. Deretter gikk vi over på kapittel 4 i Kalkulus som tar for seg differensligninger. Vi så hvordan vi ganske enkelt kunne løse lineære, førsteordens differensligninger med konstante koeffisienter, og gikk deretter over til lineære andreordens ligninger med konstante koeffisienter. Vi så hvordan vi kunne finne en løsning av slike ligninger ved å gjette på en løsning på samme form som for førsteordens ligninger, noe som endte opp med at vi måtte løse en andregradsligning. Vi fortsetter med dette stoffet på onsdag.

Onsdag 10/9. Vi fortsatte der vi slapp sist onsdag, representasjon av reelle tall på datamaskin. Vi repeterte først normalformen for reelle tall, både desimalform og binærform og hvordan man ved hjelp av denne representerer reelle tall enten ved hjelp av 4 bytes eller 8 bytes, seksjon 4.2 i kompendiet. Dette gir naturlige begrensninger på størrelsen og nøyaktigheten i tallene. Vi gikk deretter over til seksjon 5.2 om aritmetikk for flyttall. Vi brukte en lekedatamaskin som eksempel for å holde ting enkelt og så spesielt på hvordan addisjon med flyttall gjøres. Det kritiske er at om vi subtraherer to nesten like tall mister vi mange siffer, i ekstreme tilfeller risikerer vi at alle sifrene i resultatet blir feil. Vi så så vidt også at det fins spesialtall som 'Infinity' og 'NaN' som angir ulike feilsituasjoner. Til slutt gjennomgikk vi seksjon 5.4 som viser hvordan enkelte uttrykk som gir stor avrundingsfeil i spesielle situasjoner kan omskrives til en ekvivalent form som ikke skaper problemer. Det siste er nyttig for oppgave 3 i oblig1!!

Mandag 8/9. Vi snakket om hvordan tekst blir representert på en datamaskin. Man må først ha definert et tegnsett, hvor vi nevnte ASCII, ISO Latin (med sine varianter), og Unicode som eksempler. Unicode var her det mest generelle, med ca. 100000 tegn, og ASCII var et subsett av de to andre. Sammen med tegnsettet defineres også en tabell, som assosierer en kode (code point i kompendiet) til hvert tegn i tegnsettet. Til slutt trenger vi en regel (en enkoding), som forteller hvordan vi skal representere kodene i bytes på en datamaskin (vi brukte alltid et helt antall bytes til å representere et tegn). UTF-8 enkodingen representerer tegn med 1, 2, 3, eller 4 bytes, avhengig av hvor stor koden er. UTF-16 representerer tegnene på en tilsvarende måte med 2 eller 4 bytes. En og samme samme tekst kan bli vidt forskjellige når vi bruker forskjellige enkodinger. Spesielt så vi at de særnorske bokstavene æ,ø,å ikke kan kodes i ASCII siden de ikke er med i dette tegnsettet, mens de med ISO-Latin1 kodes med 1 byte, mens de med UTF-8 og UTF-16 begge kodes med to bytes, men på to forskjellige måter. 

Onsdag 3/9. Det dreier seg stadig om representasjon av tall i andre siffersystemer enn det desimale. Vi repeterte først eksempelet vi avsluttet med på mandag som viste hvordan vi kan konvertere et reelt tall til beta-tallsystemet. Vi observerte at om tallet vi begynner med må sifrene gjenta seg. Deretter karakteriserte vi alle tall i (0,1) som har en endelig sifferutvikling i beta-tallsystemet, før vi demonstrerte et Python-program som utfører konverteringen. Alt dette finner du i seksjon 3.3 i kompendiet. Deretter gikk vi over på kapittel 4 og så raskt hvordan heltall representeres på datamaskin. Vi definerte dessuten normalformen til reelle tall, men rakk ikke beskrive fullt ut hvordan representasjonen av slike tall er på datamaskin.

Mandag 1/9. I dag systematiserte vi metoden for å konvertere heltall til siffersystemet med grunntall beta og testet den i et python-program. Deretter så vi hvordan et tall i intervallet (0,1) kan skrives på en entydig måte med grunntall beta, seksjon 3.3.2 i kompendiet.

Onsdag 27/8. Vi så først på aksiomene for reelle tall, seksjon 2.4 i Kalkulus. Deretter gikk vi over på stoff fra kompendiet. Aller først snakket vi om at det mest robuste er å kode informasjon ved hjelp av to tegn, seksjon 2.1 i kompendiet. Programmet framover er å se hvordan heltall, og så flyttall kan representeres ved hjelp av 0 og 1. I dag gjennomgikk vi seksjon 3.1 og mesteparten av seksjon 3.2 i kompendiet om hvordan heltall kan representeres med et vilkårlig grunntall, ikke bare 10. 

Mandag 25/8. Vi fortsatte forelesningene om tall, denne gangen om reelle tall. Vi startet i seksjon 2.1 og definerte notasjon for intervaller, definerte tallverdisymbolet og skrev opp trekantulikheten. Deretter gikk vi over til seksjon 2.2 om rasjonale og irrasjonale tall. Hovedresultatet som vi gjennomgikk med fullt bevis er at kvadratroten av 2 er irrasjonal.

Fredag 22/8. Vi så i dag på Pascals trekant og binomialteoremet, seksjon 1.4 i Kalkulus. Vi begynte med å regne ut (a+b)^3 og (a+b)^4 og forsøke å gjenkjenne strukturen i uttrykkene. Denne gjenkjente vi som relasjonen mellom tallene i Pascals trekant, og til slutt viste vi at binomialkoeffisientene også har samme egenskap som tallene i Pascals trekant. Dermed konkluderte vi med at binomialkoeffisientene er koeffisientene som inngår når (a+b)^n ekspanderes ut.

Onsdag 20/8. I dag var tema induksjon, seksjon 1.2 i Kalkulus. Vi gjennomgikk et enkelt induksjonsbevis (for formelen for summen av de n første heltallene) i detalj for å avmystifisere noe som mange synes er litt mystisk. I andre time gjennomgikk vi et eksempel som var helt annerledes, se notatene.

Mandag 18/8. Første time brukte vi til litt forskjellig administrativ administrasjon, se kopi av lysarkene som er lagt ut. I andre time introduserte vi litt notasjon og grunnleggende egenskaper ved summetegn, se seksjon 1.1 i Kalkulus.

Av Knut Mørken
Publisert 5. aug. 2014 05:31 - Sist endret 1. des. 2014 22:03