MAT-INF1100 - forelesningsrapport, høsten 2011

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

Tirsdag 29/11. I dag var det tid for repetisjon. I første time skrev jeg opp en innholdsfortegnelse for kurset og kommenterte de ulike delene. I andre time gjennomgikk jeg feilanalyse for den enkleste derivasjonsmetoden (uten avrundingsfeil) og midtpunktmetoden for numerisk integrasjon.

Mandag 28/11. Vi avsluttet de ordinære forelesningene ved en rask gjennomgang av digital lyd og digitale bilder, kapitlene 8 og 16 i kompendiet. Vi så først hva lyd faktisk er, og så at sin og cos kan brukes til å lage såkalte 'rene' toner. Vi lekte litt med dette, før vi så på teorem 8.8 som sier at en vilkårlig funksjon kan bygges opp ved hjelp av sin og cos. Ut fra dette så vi rent intuitivt på det såkalte samplingsteorem, og hvordan omskriving av lyd til et format med sin og cos kan utnyttes til kompresjon. 

Vi definerte så hva et digitalt bilde er, så hvordan vi kan konveretere en fargebilder til gråtoner og hvordan en god del andre, naturlige operasjoner kan gjøres på bilder.

Tirsdag 22/11. Vi fortsatte med aritmetisk koding, i dag med detaljert algoritme. Vi så først hvordan vi ved hjelp av en enkel lineær funksjon kan krympe intervallet [0,1] til et vilkårlig delintervall av [0,1]. Ved hjelp av dette er det relativt lett å sette opp en algoritme for aritmetisk koding og utlede optimalitetsegenskapene, se seksjon 7.4.2 og 7.4.3 i kompendiet. Dekoding ble ikke forelest, men er ganske enkelt når man har skjønt hovedalgoritmen.

Mandag 21/11. I dag dreide deg seg om informasjonsentropi og aritmetisk koding. Vi innførste første informasjonsentropi som et mål på hvor mye vi kan komprimere en gitt tekst (seksjon 7.3 i kompendiet). Deretter gjennomgikk vi ideen bak aritmetisk koding, seskjon 7.4.1 i kompendiet.

Tirsdag 15/11. Vi begynte med noen kommentarer om forskjellen på det å lagre en tall ved hjelp av sin binære representasjon og ved å lagre dem som tekst (de desimale sifrene). Deretter gikk vi over til å se på hvor mye plass en bok, en lydfil og en film tar opp når det lagres på datamaskin. Ut fra dette så vi behovet for kompresjon (se seksjon 7.1 i kompendiet). Deretter gjennomgikk vi seksjon 7.2 om Huffman-koding.

Mandag 14/11. Vi gjennomgikk i dag stoffet om representasjon av tekst og annen informasjon på datamaskin, seksjonene 4.3 og 4.4 i kompendiet. Vi så på prinsippene bak ASCII, Iso Latin og Unicode i detalj og pratet også om problemer ved konvertering mellom de ulike kodingene.

Tirsdag 8/11. Tema i dag var løsning av andreordens lineære differensialligninger med konstante koeffisienter — løsning ved formel, ikke numerisk. Vi gjennomgikk først løsningsprosedyren for homogen ligninger, seksjon 10.5 i Kalkulus, og deretter prosedyren for inhomogene ligninger. Merk at det hele er veldig likt løsningsprosedyren for andreorden lineære differensligninger med konstante koeffisienter, så pass på så du ikke blander sammen!

Mandag 7/11. I dag avsluttet vi stoffet om numerisk løsning av differensiallignigner. Aller først repetert jeg ideen bak Eulers metode og hvordan den kan utvides til Taylor metoder av høyere orden (ved å derivere differensialligningen) og Eulers midtpunktmetode (Runge-Kutta metodene). Deretter gikk vi over til å se hvordan systemer av ligninger kan skrives kompakt på vektorform, og hvordan de numeriske metodene lett kan tilpasses slike systemer, se seksjon 14.8 i kompendiet. Endelig så vi hvordan høyere ordens ligninger kan omskrives til et system av førsteordens ligninger. Til slutt gjennomgikk vi feilanalysen for Eulers metode i seksjon 14.4.

Tirsdag 1/11. Vi fortsatte i kapittel 14 med seksjon 14.5, der vi forklarte hvordan vi kunne finne de høyere deriverte til en løsning av en differensiallikning ved å derivere selve likningen. Dette ga opphav til bedre tilnærminger til løsninger av likningen , ved at man tok med flere høyere ledd i Taylorrekken. Vi så spesielt på kvadratisk Taylor, der man tar med et ekstra ledd i tilnærmingen sammenlignet med Eulers metode. Vi så på algoritmer og kodeeksempler for Euler og kvadratisk Taylor, og forklarte hva den globale feilen blir for Euler, kvadratisk Taylor, og høyere ordens Taylormetoder. Vi avsluttet med å forklare litt om Runge-Kutta metoder, som kan gi tilnærmingsmetoder med enda mindre global feil.

Tirsdag 25/10. Vi startet med å avslutte kapittel 12 i kompendiet om numerisk integrasjon: Først gjorde vi global feilanalyse for midtpunktsmetoden, deretter motiverte og definerte vi trapesmetoden og Simpsons metode, med tilhørende feilanalyse. Vi fortsatte med Kapittel 10 i Kalkulus, der vi så på førsteordens lineære differensiallikninger (eksistens og entydighet, løsningsformel, eksempler, og anvendelser), og separable differensiallikninger (t.o.m 10.4). 

Mandag 17/10. Tema i dag var numerisk derivasjon, kapittel 11 i kompendiet. Vi utledet den enkleste metoden rett fra definisjonen av den deriverte, utledet trunkeringsfeilen, og studerte så avrundingsfeil for denne metoden. Essensen i det hele er utledning av formelen 11.14. Det som kommer etterpå i seksjon 11.1.3 er egentlig bare pynting av denne formelen. Vi rakk bare fram fram til og med observasjon 11.11, resten av seksjon 11.1 tar vi i morgen. For de andre seksjonene vil vi bare nevne metodene og ikke utlede feilestimatene.

Tirsdag 4/10. Vi  startet med å gå gjennom resten av stoffet om halveringsmetoden. Vi forbedret algoritmen for denne slik at den avsluttet etter et gitt antall iterasjoner, og avsluttet når den relative feilen ble liten nok. Vi testet den nye algoritmen for å finne roten av 2, som jo kan skrives som nullpunktet til en annengradsfunksjon. Deretter forklarte vi ideen bak sekantmetoden, formulerte en algoritme for denne, og forklarte hvorfor denne konvergerte raskere enn halveringsmetoden. Til slutt gikk vi gjennom de samme trinnene for Newtons metode. Samme programmeringseksempel ble brukt for de tre metodene, for å demonstrere at newtons metode konvergerer enda litt raskere enn sekantmetoden, som igjen konvergerer enda raskere enn halveringsmetoden. Koden for disse eksemplene er lagt ut sammen med forelesningsnotatet.

Mandag 3/10. I første time repeterte vi kjapt polynominterpolasjon, og så deretter hvordan interpolasjonspolynomet kan beregnes ved hjelp av dividerte differenser, se seksjon 9.3 i kompendiet. I andre time begynte vi på kapittel 10 i kompendiet og presiserte først forskjellen på det å løse en ligning med formel og ved hjelp av det å beregne en numerisk tilnærming til løsningen. Med dette på plass utledet vi halveringsmetoden, se seksjon 10.2 i kompendiet.

Tirsdag 27/9. Vi tok først slutten av eksempel 11.2.5 og deretter eksempel 11.2.6 før vi gikk over på polynominterpolasjon, seksjon 9.2 i Kompendiet. Vi definerte interpolasjonsproblemet, innførte Newton-formen og så at interpolasjonspolynomet er entydig. Vi så deretter på noen eksempler og innførte dividerte differenser, men rakk ikke å gjennomgå algoritmen for å beregne interpolasjonspolynomet.

Mandag 26/9. Vi startet med å repetere konstruksjonen av Taylor-polynomer, og så deretter hvordan vi kan utlede en formel for restleddet (eller feilen) vi gjør når vi erstatter en funksjon med sitt Taylor-polynom, seksjon 11.2 i Kalkulus. Til slutt så vi på de to eksemplene 11.2.4 og 11.2.5 i Kalkulus.

Tirsdag 20/9. I dag var tredje dag med differensligninger som tema. Vi så nok en gang at differensligninger kan 'løses' på to måter: Ved formel eller ved eksplisitt utregning av leddene, såkalt simulering av differensligningen. Vi formulerte en algoritme for simulering av andreordens ligninger og programmerte den i Python. Programmet ble testet på Fibonacci-ligningen og differensligningen i eksempel 6.27 i kompendiet. For den siste ligningen observerte vi at den simulerte løsningen etterhvert ble helt feil, og vi gjennomgikk forklaringen på dette i seksjon 6.5.1, særlig sidene 135-136. Den siste halvtimen brukte vi på Taylor-polynomer, seksjon 11.1 i Kalkulus. Vi endte opp med å se at Eulers formel gir en forklaring på sammenhengen mellom Taylor-polynomene for e^(ix), sin x og cos x.

Mandag 19/9. Vi fortsatte med differensligninger. Aller først repeterte vi løsningsprosedyren for andreordens homogene ligninger med konstante koeffisienter. Deretter gikk vi over på inhomogene ligninger og hvordan disse kan løses, seksjon 4.2 i Kalkulus. Til slutt så vi så vidt på det å løse differensligninger numerisk, begynnelse av kapittel 6 i kompendiet.

Tirsdag 13/9. Differensligninger var tema i dag, kapittel 4 i Kalkulus. Vi gjennomgikk hvordan andreordens, homogene differensligninger kan løses ved formel, og skilte mellom de tre tilfellene der det karakteristiske polynomet har to relle røtter, en reell rot eller to kompleks konjugerte røtter, alt hentet fra seksjon 4.1 i Kalkulus.

Mandag 12/9. Vi begynte med noe kommentarer om representasjon av heltall på datamaskin før vi gikk over til å se på hvordan reelle tall kan representeres som såkalte flyttall, seksjon 4.2 i kompendiet. Deretter gikk vi over til å se hvordan aritmetikk (særlig addisjon) med flyttall kan gi feil, se seksjon 5.2 i kompendiet, og da særlig seksjon 5.2.3. Til slutt så vi hvordan uttrykk kan omskrives for å unngå store avrundingsfeil (seksjon 5.4) og hvordan feil måles (seksjon 5.3).

Tirsdag 6/9. Vi begynte med et eksempel på hvordan heltall representeres i to-tallsystemet. Deretter gikk vi over til å se hvordan reelle tall mellom 0 og 1 kan representeres i ulike siffersystemer, seksjon 3.3 i kompendiet. Vi gjennomgikk beviset for teorem 3.15 og oppsummerte beviset i algoritme 3.16. Vi så også at lemma 3.21 fulgte fra beviset for teorem 3.15. Deretter gjennomgikk vi lemma 3.22, uten bevis. De siste ti minuttene gjennomgikk vi hvordan heltall representeres på datamaskin, seksjon 4.1 i kompendiet.

Mandag 5/9. I dag begynte vi med å se på kapittel 2 i kompendiet om hvorfor 0 og 1 er de grunnleggende symbolene på en datamaskin. Deretter gikk vi over til å se på hvordan heltall kan representeres i ulike siffersystemer, seksjon 3.2 i kompendiet.

Tirsdag 30/8. Vi fortsatte vår gjennomgang av tall, og i dag var turen kommet til kompletthetsprinsippet, seksjon 2.3 i Kalkulus. Fokuset var på intuisjon omkring tetthet, selv om mange nok synes dette er tørt og vanskelig! Jeg snakket også litt om tellbare mengder og viste at de rasjonale tallene er tellbare, og at de reelle tallene i [0,1] ikke er tellbare. Til slutt skulle vi ta for oss aksiomene for reelle tall, men det gikk ikke så bra siden jeg ikke fikk bilde fra maskinen min opp på veggen!

Mandag 29/8. Pascal's trekant og binomialformelen var tema for første time. Vi så på problemet med å ekspandere ut utrykket (a+b)^n og hvordan Pascals trekant naturlig dukker opp, seksjon 1.4 i Kalkulus. Vi innførte binomialkoeffisienter og så at det er nettopp disse som dukker opp i Pascals trekant. Til slutt så vi på et eksempel på bruk av binomialformelen. Etter pause gikk vi over på reelle tall. Vi definerte intervallene og tallverdien av et tall, og utledet trekantulikheten (seksjon 2.1). Vi gjennomgikk så setning 2.2.1 og Korollar 2.2.2, og endte med å vise kvadratroten av 2 er et irrasjonalt tall (seksjon 2.2).

Tirsdag 23/8. Tema i dag var induksjon. Vi begynte med en svært detaljert gjennomgang av induksjonsbeviset for formelen for summen av de n første heltallene. Forhåpentligvis får det fram prinsippene for induksjon slik at du kan tilpasse induskjonsbevis til andre oppgaver. I andre timer så vi litt på det generelle induksjonsprinsippet, og gjennomgikk et induksjonsbevis for hvorfor n(n^2+5) alltid er delelig med 6.

Mandag 22/8. I første time ga jeg en presentasjon av undervisningen og opplegget for MAT-INF1100. Etter pausen begynte vi på pensum og gjennomgikk seksjon 1.1 i Kalkulus, inkludert summetegn og bytte av summasjonsindeks.

 

Av Knut Mørken
Publisert 2. aug. 2010 08:27 - Sist endret 29. nov. 2011 12:23