(2012/2013 HT2-VT1)
FMN140 - Programbibliotek
Här finns exempelprogram. Programmen illustrerar viktiga begrepp och
konstruktioner i MATLAB. De kommer att gås igenom på
föreläsningarna. Bekanta dig tidigt med programmen. Gärna före
kursstart. Klicka här för
ytterligare hjälp att komma igång.
Exempelprogrammen finns som textfiler (.txt) och som MATLAB-filer
(.m). Gör så här: Titta på ett program. Ladda ned det. Kör det i
MATLAB och se vad som händer. Läs programkoden. Försök förstå vad
varje rad betyder. Använd gärna MATLABs inbyggda hjälpfunktioner "doc"
och "help". Om, till exempel, kommandot "linspace" verkar konstigt så
kan du skriva "doc linspace" eller "help linspace" i kommandofönstret
och få en förklaring direkt på skärmen.
Program för Inlämningsuppgift 1
- enkelplot1.txt , enkelplot1.m . Här har vi enklast möjliga
MATLABprogram. Det visualiserar ett samband mellan tid och en uppmätt
temperatur. Det är bara att köra och begrunda vad som händer.
- simpvec.txt ,
simpvec.m . Detta är ett oerhört viktigt program som visar vad man
kan göra med vektorer i MATLAB. Vektorer är MATLABs mest
grundläggande programmeringselement. Även om programmet kan verka lite
"torrt" så är det ett måste för er att förstå detta program till
fullo. Vi kommer ständigt att återvända till detta program.
- enkelplot2.txt , enkelplot2.m . En lite mer avancerad version
av enkelplot1.m.
- enkelplot3.txt , enkelplot3.m . Detta korta program ritar en
sinuskurva. Programmet frågar om hur många punkter som skall läggas i
intervallet [0,2*pi].
- loopex1.txt ,
loopex1.m . En enkel for-loop skriver ut alla heltal mellan ett
och tio på skärmen.
- loopex2.txt ,
loopex2.m . En dubbel for-loop skriver ut produkterna av alla
heltal mellan ett och tre och ett och sex.
- loopex3.txt ,
loopex3.m . Ett tal läses in och konverteras till ett positivt
heltal "n". En viss vektor av längd "n" skapas på tre olika sätt:
genom en for-loop (vektorn a), med hjälp av kommandot linspace
(vektorn b), och med hjälp av ett kolon (vektorn c). Programmet
kontrollerar att a, b, och c är lika.
- loopex4.txt ,
loopex4.m . Detta program skall anropas med en inparameter
"n". Först kontrollerar programmet att "n" är ett positivt
heltal. Sedan beräknas summan av alla heltal mellan ett och "n" på tre
olika sätt: med en for-loop, med funktionen sum, och med en enkel
formel. Summorna jämförs.
- gubbe1.txt ,
gubbe1.m . Detta program ritar en streckgubbe/gumma. Med
parametern "smile ratio" bestäms hur glad gubben/gumman skall vara.
- gubbe2.txt ,
gubbe2.m . Detta program illustrerar flera mycket viktiga
programmeringsprinciper. Studera programmet noga. Ett mönster skapas
bestånde av 25 gubbar/gummor på varierande humör. Dubbel for-loop och
anrop av egendefierad funktion ingår. Programmet är baserat på
gubbe1.m, ovan. En skalfaktor "alpha" krymper
gubben/gumman. Punkten (xc,yc) talar om var varje enskild gubbe/gumma
skall placeras ut.
- plotex.txt ,
plotex.m . Här plottas fyra olika kombinationer av två funktioner,
f(x) och g(x), på olika sätt i fyra mindre delfigurer. Ett bra
referensprogram.
- plotex4.txt ,
plotex4.m . Samma som plotex.m, fast det blir fyra stora
figurer.
- simpar.txt ,
simpar.m . Enkelt program som illustrerar effekten av att datorn
inte räknar helt exakt, utan approximerar de flesta tal med
sextonsiffriga decimaltal.
Program för Inlämningsuppgift 2
- bisection.txt , bisection.m . Hittar ett nollställe till en
funktion f(x) med intervallhalveringsmetoden och gör en
konvergensstudie.
- blackbox.txt ,
blackbox.m . Hittar nollställen till en funktion f(x) med MATLABs
inbyggda lösare. Några olika anropsvarianter visas. Fler finns. Gör
"doc fzero" eller "help fzero".
- newton.txt ,
newton.m . Löser en ekvation f(x)=0 med Newtons metod och gör en
konvergensstudie.
- myown.txt , myown.m
. Detta program visar hur man kan använda egendefinierade
underfunktioner på olika sätt.
- tabex.txt , tabex.m
. Här konstrueras tabeller över värden på funktionen sin(x). Den
första tabellen är inte så snygg, men lätt att göra. Den tredje
tabellen, som är snyggast, är överkurs.
- simpmat.txt ,
simpmat.m . Ett jätteviktigt exempelprogram av samma "torra" typ
som simpvec.m ovan, men för matriser. Här demonstreras
en mängd saker man kan göra med matriser. Detta måste ni förstå!!!
- mypolyplot.txt , mypolyplot.m . Plot av ett polynom på
intervallet [0,1]. Enkelt, men intressant.
- myvecsave.txt , myvecsave.m . Ett enkelt program som visar hur
man gör beräkningar inuti en for-loop, och sedan sparar resultaten i
en vektor. Olika varianter diskuteras. Konstruktionerna har redan
visats i simpvec.m och loopex3.m, men diskuteras här
utförligare.
- minegensumma.txt , minegensumma.m . Ett enkelt program som
visar hur man beräknar en summa. Olika varianter
diskuteras. Konstruktionerna har redan visats i loopex4.m, men
diskuteras här utförligare.
Program för Inlämningsuppgift 3, 4, och 5
- mylog.txt , mylog.m
. En potensfunktion y(x)=a*x^p plottas på tre olika sätt. Den
första plotten, den linjära, säger inte mycket. Den andra plotten, den
logaritmiska, är mer intressant. Funktionen blir en rät linje vars
lutning direkt ger potensen p. Den tredje plotten är också logaritmisk
och funktionen är samma räta linje som i den andra plotten. Skillnaden
är bara att axlarna nu visar x- och y-värden i stället för log10(x)-
och log10(y)-värden. Detta, sista, sätt att plotta potensfunktioner
används ofta.
- linekv.txt ,
linekv.m . Samma systemmatris. Olika högerled. Test av olika
metoder.
- myleast.txt ,
myleast.m . En genomgång av metoder att lösa överbestämda linjära
ekvationssystem med minstakvadratmetoden. Basfunktionerna är monomen
1, x, x^2.
- intex.txt , intex.m
. Här beräknas integralen av x^3 från noll till ett på två olika
sätt.
- ytplot.txt ,
ytplot.m . Plottar en funktion av två variabler f(x,y). Två sätt
visas. Först som en yta i tre dimensioner med z=f(x,y). Sedan som en
kartbild med nivåkurvor.
Övriga program: överkurs och sådant som kan användas i projektet
- plotex6.txt ,
plotex6.m . Olika storlekar på text, symboler, linjer, och nät.
- mycolor.txt ,
mycolor.m . Den som inte är nöjd med de färdiga färblandingarna
som "plot" tillhandhåller kan göra egna. Här plottas med brun färg.
Dessutom har x-axeln egentillverkade markeringar.
- plotex5.txt ,
plotex5.m . Plottar fem kurvor i olika färger och med olika
symboler på ett effektivt sätt.
- myadap.txt , myadap.m
. Exempel på adaptiv integration med Gausskvadratur.
- mydiamat.txt ,
mydiamat.m . En kvadratisk diagonalmatris skall multipliceras med
en kvadratisk full matris. Hur gör man detta på snabbaste sätt?
- myfun.txt , myfun.m
. Här visas olika sätt att konstruera och använda egendefinierade
funktioner.
- myparam.txt ,
myparam.m . Här testas anrop av funktioner med förkortade
parameterlistor.
- extremep.txt ,
extremep.m . Två sätt att hitta extremvärden för en diskret
funktion.
- iftext.txt ,
iftext.m . Villkorssatser (if-satser) med textvariabler.
- numdiff.txt ,
numdiff.m . Exempel på numerisk derivering.
- advance.txt ,
advance.m . Några listiga konstruktioner som kan behövas för
snabbare och/eller kortare program.
- myor.txt , myor.m
. Här testas den logiska eller-operatorn.
- myinterpol.txt , myinterpol.m . Linjära system vars
systemmatriser har någon speciell struktur kan ofta lösas på ett mer
effektivt sätt än med vanlig Gausselimination. Här ett exempel med en
Vandermondematris som kan användas vid polynominterpolation.
- mytri.txt , mytri.m
. Lösning av tridiagonala ekvationssystem på effektiva sätt.
- plothelp.txt . Help för plotfunktionen.
Diverse kul grejer
- gubbmove.txt ,
gubbmove.m . Ett festligt program med en gubbe som sprattlar och
grimaserar.
- mypoints.txt ,
mypoints.m . Ett avskräckande exempel: Den som kör detta program
får se hur illa det kan gå för den som försöker lägga ut punkter i ett
intervall med hjälp av kolon-notation i stället för med
linspace. Linspace är en solklar vinnare. Kolon-notation bör endast
användas för att skapa heltalsvektorer.
- En länk till en sida med
roliga problem.