MATLAB I FAG TKT4140 NUMERISK BEREGNING

Størrelse: px
Begynne med side:

Download "MATLAB I FAG TKT4140 NUMERISK BEREGNING"

Transkript

1 MATLAB I FAG TKT4140 NUMERISK BEREGNING INNHOLD FORORD... 1 INNLEDNING... 1 HJELPESYSTEM... 2 VARIABLE... 2 Spesielle symboler... 2 Predefinerte variable... 2 FILNAVN... 3 FILKOMMANDOER... 3 Liste over kommandoer... 4 RASKT BLIKK PÅ MATLAB... 4 Strenger... 6 Komplekse tall... 7 Matematiske funksjoner... 9 Bruk av editor Litt om feilfinning MATRISER OG VEKTORER Automatisk generering av matriser Standardmatriser Elementvise operasjoner Sortering Noen matrisefunksjoner Løsning av ligningsystem ANDRE DATASTRUKTURER Cellematriser Strukturer PROGRAMMERINGSDEL PROGRAMOPPSETT LOGISKE UTTRYKK Sammenligningsoperatorer Logiske operatorer FORGREININGER ITERASJONSLØKKER BRUKER-DEFINERTE FUNKSJONER Tradisjonelle subfunksjoner Nøstede funksjoner BRUK AV FUNKSJONER Sekantmetoden FUNKSJON FUNKSJON Nullpunktsløsere... 43

2 Integral Overføring av data ORDINÆRE DIFF. LIGNINGER. ODE FORMATTERT UTSKRIFT PLOTTING BANDMATRISER Tridiagonale matriser Vektorisering Glisne matriser INNLESNING AV DATA MER OM ODE LØSERE Ikke-stivt tilfelle Stivt tilfelle Lokalisering av helser APPENDIKS. SYMBOLER... 84

3 1 FORORD Denne lefsa er ikke ment som en lærebok, men gir en kortfattet innføring i de mest brukte kommandoer og konstruksjoner i Matlabdelen av faget TKT4140, basert på eksempler. Lefsa er oppdatert til versjon 7.7 av Matlab, men de fleste eksemplene kan kjøres med eldre versjoner. Storparten av programmene i denne lefsa ligger i mappa "Mlefse" under mappa "Disketten" som finnes på fagets hjemmeside. Konstruksjonsteknikk, NTNU, januar 2009, Jan B. Aarseth INNLEDNING MATLAB (MATrix LABoratory) er et interaktiv program som er laget spesielt for tekniske og vitenskapelige beregninger. Den første utgava ble skrevet av Cleve Moler i 1977, hovedsakelig for undervisningsformål. I 1984 dannet Cleve Moler og Jack Little selskapet MathWorks som ble starten på Matlab som et kommersielt program. Programmet har siden utviklet seg sterkt med blant annet et eget programmeringspråk, sterk grafikk og objektprogrammering. I tillegg fåes spesialskrevne moduler innen en rekke fagområder (Toolboxes) Det finnes mye litteratur om Matlab og her skal vi bare nevne noen få. [1] Bård T. Fallan & Steinar Line : Introduksjon til Matlab. Tilleggshefte til Innføring i Informasjonsteknologi Tapir, 2. utgave 2003 [2] L.F Shampine et al. : Solving ODEs with MATLAB Cambridge Univ. Press 2003 [3] D. Hanselman et al. : Mastering Matlab 7 Pearson/Prentice Hall 2005 [4] Higham & Higham : Matlab Guide SIAM, 2. utgave 2005 [5] S. J. Chapman : MATLAB Programming for Engineers Thomson, 4. utgave 2008 [6] Cleve Moler : Numerical computing with MATLAB Kan lastes ned fra Referansene [2], [4], [5] og [6] inneholder Matlabprogrammer som kan lastes ned. For liste over bøker som bruker/omhandler Matlab :

4 2 HJELPESYSTEM Det er etter hvert blitt et omfatte hjelpesystem i Matlab. Skriv doc i kommandovinduet for å starte hjelpesystemet. (Eventuelt trykk på? eller help i menylinja). Legg merke til at det finnes en rekke manualer som også kan skrives ut om nødvig. Legg spesielt merke til Getting started with Matlab som er en ren lærebok. Dersom du vet direkte hva du ønsker, kan du skrive doc etterfulgt av ønsket, f.eks. doc sin dersom du ønsker detaljer om sinusfunksjonen. VARIABLE Navn på en variabel må begynne med en bokstav, fulgt av en vilkårlig rekke av bokstaver, tall og understrekningsymbolet (_). Mellomrom er ikke tillatt. Bare de 63 første tegnene er signifikante. (Burde være tilstrekkelig). Merk at Matlab skiller mellom store og små bokstaver slik at f. eks. Pi og pi er to forskjellige variabler. Spesielle symboler [ ] Ved definisjon av matriser ( ) Indekser ' ' (To apostrofer). Markerer en streng, (Komma): Skiller indekser eller matriseelementer ; (Semikolon): 1. Hindrer utskrift i kommandovinduet 2. Skiller linjer i matriser 3. Skiller programsetninger på en linje % Markerer begynnelsen på en kommentar-setning eller format-streng : Kolonoperator. Liste og matrise-generator + Addisjon Subtraksjon * Multiplikasjon.* Elementvis multiplikasjon / (Høyre) divisjon./ Elementvis (høyre) divisjon \ Venstre divisjon ^ Eksponentsiering.^ Elementvis eksponentsiering ' (Enkel apostrof) : Transponering... Tre prikker etter hverandre angir fortsettelse på neste linje. Noen predefinerte variable pi i Imaginær enhet, 1 j Imaginær enhet, 1 eps 52 Relativ nøyaktighet, realmin 1022 Minste flyttall, realmax Største flyttall. (2 eps)

5 3 Inf Uelig, eks 1/0 NaN Ikke-et-tall, eks 0/0 Disse variable er ikke beskyttet og kan redefineres. Får tilbake sine opprinnelige verdier ved å bruke clear. Eksempel :» pi ans = » pi = 3.0 pi = 3» clear pi» pi ans = Det er normalt ikke noen god ide å redefinere pi, mens i og j derimot brukes ofte som indekser slik at det kan bli nødvig å omdefinere disse. Generelt bør en forsøke å unngå redefinering. Beskytta variable (Keywords) Disse finnes ved å bruke kommandoen iskeyword. >> iskeyword 'classdef' 'parfor' 'continue' 'persistent' 'else' 'return' 'elseif' 'spmd' '' 'switch' 'for' 'try' 'function' 'while' 'global' 'if' 'otherwise' >> FILNAVN (PROGRAMNAVN) Dersom du f.eks. lagrer en fil med navnet MinFil under Windows, blir navnet internt lagret som MINFIL selv om det ikke vises. Og dette gjelder uansett skrivemåten: minfil -> MINFIL. Matlab brukte tidligere samme konvensjon, men fra og med versjon 7.0 er filnavn og programnavn som lagres via Matlab avhengig av skrivemåten : Skiller mellom store og små bokstaver. Konvensjonen for filnavn(programnavn) følger nå reglene for variable : Filnavn må begynne med en bokstav, fulgt av en vilkårlig rekke av bokstaver, tall og understrekningsymbolet (_). Mellomrom er ikke tillatt. Bare de 63 første tegnene er signifikante. (Windows tillater 256).

6 4 Det enkleste er da at bokstavene i filnavnet velges små. I noen tilfeller kan det være lurt å starte filnavnet med en stor bokstav for å hindre forveksling med en av Matlabs egne filer (kommandoer) da disse alltid skrives med små bokstaver. Unngå de norske bokstavene æ, ø og å selv om de er tillatte i de nyeste versjonene av Matlab. FILKOMMANDOER Når vi er i kommando-vinduet, finnes det en rekke kommandoer vi kan bruke til å gi liste over filer, hoppe fra en mappe til en annen osv. Alle disse operasjonene kan selvfølgelig gjøres i Windows, men i enkelte tilfeller er det raskere å utføre dem som kommandoer istedenfor å bruke musa. Mange av disse kommandoene har ekvivalente kommandoer hentet fra det underligge operativsystemet. Ved å starte kommandolinja med et utropstegn, antar Matlab at det som følger er en operativsystemkommando. Brukergrensesnittet i de siste versjonene av Matlab er blitt forbedret slik av mange av kommandoene ikke er nødvige lenger. Tar likevel med noen få. (Skriv doc general for liste over alle fil-kommandoer) Liste over noen fil-kommandoer : what Gir en liste over M-filer i den mappa du er i. which lookfor Finner en mappe som inneholder en M-fil som ligger på søkestien. Finner alle funksjoner i alle mapper på søkestien som kan ha forbindelse med et søkeord. dir Gir liste over filer og mapper i den mappa du er i. cd Brukes til å hoppe fra en mappe til en annen. copyfile movefile delete mkdir Kopierer innholdet av en fil til en annen. Dersom den andre fila ikke eksistere, blir den opprettet. Flytter også filer fra en mappe til en annen. Flytter eller døper om en fil. Sletter filer. Lag en ny mappe. Merk : En prikk er en forkortelse for navnet til den mappa du er i, mens to prikker er en forkortelse for den overligge mappa (parent directory). Dersom du skriver cd.. hopper du derfor opp til den overligge mappa. Vi nevnte ovenfor at dersom du setter et utropstegn foran en kommando, oppfattes dette som kall av en systemkommando. Se forskjellen på dir og!dir. Den første er en Matlab-kommando mens den siste er en Windowskommando. Du kan døpe om en fil med navn minfil.m til dinfil.m ved kommandoen movefile minfil.m dinfil.m. Dette kan du også gjøre ved å bruke Windows-kommandoen ren:!ren minfil.m dinfil.m. Også :!copy fila.m filb.m istedenfor copyfile fila.m filb.m Dersom du er interessert i andre Windows-kommandoer : Trykk F1 på skrivebordet og skriv command-line-reference i søkeboksen.

7 5 RASKT BLIKK PÅ MATLAB Dette avsnittet gir en rask gjennomgang av Matlab hovedsakelig brukt som kalkulator. Når du starter Matlab, kommer du inn i kommandovinduet. Normalt vil en rekke andre vinduer også være åpne. Tegnet >> er en kommandoprompt og du kan begynne å gi kommandoer. Med å utføre en kommando, menes å skrive noe etter >> og trykke på enterknappen. Utfør Skjermen viser da følge : >> ans = » Vi har fått svaret med 4 desimaler. Svaret er lagret i en variabel ans som er forhåndsdefinert i Matlab. Når du bruker Matlab, blir det avsatt et område i RAM som kalles arbeidsområdet (workspace). For å finne ut hva som finnes i arbeidsområdet, kan du utføre kommandoen whos som gir dette resultatet : Name Size Bytes Class ans 1x1 8 double array Grand total is 1 elements using 8 bytes (Dersom du har vinduet Workspace åpent, vil du se dette direkte) Vi ser at det er avsatt plass til en variabel med navn ans med plassbehov 8 bytes. Merk at variable i Matlab oppfattes som matriser slik at en skalar er en 1 1-matrise. Innholdet i arbeidsområdet fjernes med kommandoen clear. En enkelt variabel x fjernes ved clear x. Eks : Utfør a = 1. Utfør deretter kommandoene whos, clear a og whos tilslutt for å kontrollere innholdet i arbeidsområdet. Anta at vi ønsker flere desimaler. Utfør doc format. La oss skrive ut pi med forskjellige format. >> format short >> pi ans = >> format long >> pi ans = >> format short e >> pi ans = e+000

8 6 Dersom du ikke ber om noe annet, regner Matlab med siffers nøyaktighet uavhengig av hvilket format du velger. Prøv selv de andre formatene. Merk at disse formatene gjelder for utskrift i kommando-vinduet. Vi har mer fleksible muligheter som vi skal bruke senere (Se avsnittet Formattert uskrift). Vi går tilbake til 4 desimaler ved å utføre format som er en forkortelse for format short. Når du opererer i kommandovinduet, har du adgang til en primitiv editor. (doc cedit gir en liste over alle mulighetene). Merk at tegnet ^ står for Ctrltasten). De fleste kommandoene er knyttet til taster på tastaturet og er derfor innlyse. Dersom du vil ha tilbake en kommando som du har brukt tidligere, kan du trykke på - tasten. (Trykk flere ganger dersom du ikke finner den du ønsker med en gang. Dersom dette ikke virker, må du først utføre kommandoen cedit on). Dessuten kan du bruke de vanlige Windows-kommandoene Ctrl-C (kopier), Ctrl-V (lim inn) og Ctrl-X (slett). Du kan blanke skjermen ved å utføre kommandoen clc. Vi kan selvfølgelig knytte navn til de enkelte uttrykkene. >> a = sin(1) a = >> b = cos(1) b = >> c = a + b c = Vi kan også skrive dette på en linje ved : a = sin(1) ; b = cos(1); c ; Legg merke til at nå får vi ingen utskrift. Semikolon brukes til å hindre utskrift. Dette er viktig for å hindre utskrift av mellomregning vi ikke er interessert i. Dessuten brukes semikolon til å skille uttrykk på samme linje. Strenger Strenger er en samling med tegn mellom to apostrofer. Eks. : Utfør str = 'Dette er en streng' Strengvariable brukes helst ved programmering og ofte ved innlesning, utskrift og plotting. Vi kan sette sammen strenger ved kommandoen strcat. Eksempel : str1 = 'Dette er' og str2 = ' en streng'. Kommandoen strcat(str1,str2) gir Dette er en streng.

9 7 Du kan transformere strengen til et tall ved x = double(str) >> double('abc') ans = >> Hvert tegn får nå den verdien den har i den såkalte ASCII-tabellen. Går tilbake til en streng ved str = char(x). Utfør a = ' '. Dette er en streng, ikke en tilnærmelse til pi. a kan konverteres til et tall >> eval(a) ans = >> Kontroller dette ved å utføre whos.det finnes mange flere strengfunksjoner enn dem vi har brukt ovenfor. Skriv doc og og du får opp Help Navigator. Skriv string i Index-boksen. Komplekse tall Matlab opererer direkte på komplekse tall uten at det er nødvig å erklære dem som komplekse slik som du f. eks. må gjøre i Fortran. Komplekse tall kan dannes på en rekke måter. i og j brukes som den komplekse enheten 1. Eksempler : >> z1 = 2 + i*3; z2 = 3 -i*4; >> z1 z1 = i >> z2 z2 = i >> Kan også skrive : >> z1 = 2 + 3i ; z2 = 3-4j; >> z1 z1 = i >> z2 z2 = i Når du utelater multiplikasjonstegnet *, må i eller j settes etter tallet: i4 vil f. eks. ellers tolkes som en variabel. Kan også bruke kommandoen complex : >> z1 = complex(2,3) z1 = i

10 8 Noen beregninger : >> z1 + z2 ans = i >> z1*z2 ans = i >> z1/z2 ans = i >> sqrt(z1) ans = i >> >> abs(z1) ans = >> Noen spesielle komplekse funksjoner : (Skriv doc elfun) abs absolutt verdi angle fasevinkel complex danner komplekse tall conj kompleks konjungert imag imaginærdel real realdel Vi har de vanlige sammenhengene mellom den kartesiske skrivemåten og den polare : z = x + i y = r e iθ 2 r = x + y 2, θ = arctan( y/ x) x = r cos θ, y = r sinθ Eksempel : >> z = 3-4i z = i >> r = abs(z) r = 5 >> theta = atan(imag(z)/real(z)) theta = >> x = r*cos(theta) x = >> y = r*sin(theta) y =

11 9 Bruk av innebygde matematiske funksjoner. Du finner en liste over de vanlige matematiske funksjonene ved kommandoen doc elfun. Prøv el av funksjonene, også de mer ukjente. Bruk doc for å finne den nøyaktige syntaksen. >> exp(1) ans = Du kan også bruke utskriftskommandoen disp : >> disp(sin(pi/2)) 1 >> tan(pi/2) ans = e+016 >> atan(1) ans = Det er lurt å bruke atan2 istedenfor atan når du har gitt et uttrykk på formen arctan(y/x) fordi atan2 finner den rette kvadranten. >> y = 1; x = -1; >> atan(y/x) ans = >> atan2(y,x) ans = Som nevnt tidligere, operer Matlab direkte på komplekse tall. Noen funksjoner som realpow, reallog, realsqrt og nthroot er begrenset til reelle tall. >> sqrt(-1) ans = i >> realsqrt(-1)??? Error using ==> realsqrt Realsqrt produced complex result. Gjør også oppmerksom på funksjonene exp(x)-1 og log1p = log(1+x) for verdier av x nær 0 >> format long >> log( e-10) ans = e-010 >> log1p(1.0e-10) ans = e-011 I mange tilfeller har vi bruk for raskt å plotte funksjoner. Dette gjøres greit med kommandoene ezplot og fplot. (Mer detaljer med doc fplot og doc ezplot).

12 10 ezplot direkte plotter funksjonen i intervallet 2π x 2π. Utfør f.eks. >> ezplot(@sin) (eller ezplot('sin(x)') ) >> grid >> Det blir nå åpnet et eget figur-vindu. Null-punkter er lettere å plukke ut ved å legge på et nett med kommandoen grid. Eksempel på mer avansert plotting med plot finnes i avsnittet Plotting. La oss se på mer "eksotiske" funksjoner. Disse finnes med doc specfun. Vi ønsker å plotte funksjonen J ( x) 0 for 0 x 10 der J ( x) 0 er en Besselfunksjon av 1. orden og nullte slag. Fra lista finner vi besselj som ifølge beskrivelsen er en Besselfunksjon av første slag. (Dersom du på forhånd visste at dette var en Besselfunksjon, kan du skrive doc bessel ). For å få flere detaljer, skriver vi doc besselj. Ifølge beskrivelsen får vi en Besselfunksjon av 1. slag og orden ν med argument x ved å bruke besselj(nu,x). Vi utfører derfor følge: >> fplot('besselj(0,x)', [0 10]) >> grid on >> Fra figuren finner vi nullpunkter rundt x = 2.4, 5.5 og Vi vil nå bestemme disse nullpunktene nøyaktig ved å bruke Matlabfunksjonen fzero. (doc fzero). Det første nullpunktet finner vi ved å utføre: >> fzero('besselj(0,x)',2.4) ans = >> (Dersom vi bruker format long får vi ) Finn også de to andre nullpunktene. (Mer bruk av fzero er gitt side 44). Når vi først er i gang, kan vi også beregne noen bestemte integral. La oss integrere sin(x) fra 0 til 90º der svaret er 1.

13 11 Skriv doc og og du får opp Help Navigator. Skriv integration i Index-boksen. Fra lista velger vi quad. Utfra beskrivelsen, utfører vi : >> quad(@sin,0,pi/2) ans = >> Kan også skrive quad('sin',0,pi/2 Bruk av editor ved programmering. Velg file i menyen, deretter new og velg M-file. Du er nå klar til å skrive et program med den innebygde editoren. Skriv inn programmet som er gitt nedenfor : %=== Program poly2 === % Finner de reelle røttene av ligningen Ax^2+Bx + C a = input('les koeffisient A: '); b = input('les koeffisient B: '); c = input('les koeffisient C: '); d = b^2-4*a*c; if d > 0 % To reelle røtter x1 = (-b + sqrt(d))/(2*a); x2 = (-b - sqrt(d))/(2*a); fprintf('x1 = %f\n',x1) fprintf('x2 = %f\n',x2) elseif d == 0 % En reell rot x1 = -b/(2*a); fprintf('x1 = x2 = %f\n',x1) else % Imaginære røtter fprintf(' === Ingen reelle røtter ===\n') Når programmet er skrevet, må det lagres. Velg Save As på fil-menyen og lagr det under navnet poly2. Matlab legger automatisk til elsen m. Etter at programmet er lagret, kan det eksekveres i kommandovinduet ved å utføre poly2. Du kan teste det på følge eksempler : x x x x + 6 = 0 + 4x + 4 = 0 + 2x + 5= 0 Litt om feilfinning i program

14 12 Svært ofte vil det være feil i et program første gangen det brukes. Feilskrift er typisk. Dette fører til syntaksfeil som blir oppdaget at Matlab. Feil bruk av språket generelt fører også til syntaksfeil. I begynnelsen kan det ofte være vanskelig å finne ut hva Matlab mener når den påpeker feil, men det kommer med litt øvelse. Når syntaksen er i orden, kommer de logiske feilene : Programmet gjør ikke det du ønsker. I praksis betyr dette at du må be programmet skrive ut mellomregning som du normalt ikke er interessert i. I programmet ovenfor kan du f.eks. skrive ut størrelsen d ved å fjerne semikolonet etter den linja der d er definert. Husk at du kan finne slutt-verdiene av de størrelsene som er beregnet i programmet ved å utføre de aktuelle variable i kommandovinduet. I noen tilfeller ønsker du å teste ut en del av programmet fordi du vet at resten ikke funker. En vanlig teknikk er å sette kommentartegn (%) foran de linjene du ikke vil ha utført. (Velg "Text" fra menyen) Vanligvis er programmene små, slik at du greier deg med prosedyrene ovenfor. Ved mer kompliserte program, kan du bruke Matlabs "Debugger" som du finner informasjon om ved å utføre doc og skriv debug i Index-boksen i Help Navigator. Merk også Debug i Matlabs menylinje. Det er også mulig å få tips til å forbedre programmet når du er inne i editoren. Velg Tools i menylinja og velg deretter M-Lint og Show M-lint Report.

15 13 MATRISER OG VEKTORER Skriver inn en 3 3 matrise. Semikolon angir slutt på hver matriselinje.» A = [1 2 3; 4 5 6; 7 8 9] A = Linjevektor :» a = [ ] a = Kolonnevektor :» b = [13; 14 ;15] b = Får en kolonnevektor ved å transponere en linjevektor :» a' ans = Får en linjevektor ved å transponere en kolonnevektor :» b' ans = Ved å transponere A bytter vi om linjer og kolonner» A = A' A =

16 14 Velger ut den første kolonna i A :» a = A(:,1) a = Velger ut den første linja i A» b = A(1,:) b = Velger det siste elementet i den første kolonna i A:» A(,1) ans = 3 Velger det siste elementet i den tredje kolonna i A:» A(,3) ans = 9» b = b' b = Lager en ny B-matrise ved å sette sammen to kolonnevektorer :» B = [a b] B = Lager en ny C matrise ved å sette sammen de to matrisene A og B» C = [A B] C = Finner antall elementer i vektoren b:» length(b) ans = 3

17 15 Finner dimensjonene av matrisa C:» size(c) ans = 3 5 Lager en linjevektor av elementene 2,3,4 i første linje av C:» d = C(1,2:4) d = Lager en kolonne-vektor av elementene 1,2 i første kolonne av C:» d = C(1:2,1) d = 1 2 Setter d lik siste kolonne i C:» d = C(:,3) d = Adderer et element til begynnelsen og slutten av d. Merk at Matlab øker dimensjonene dynamisk:» d = [0;d;0] d = Merk at vi kan addere en skalar direkte til en vektor selv om dette strengt tatt ikke er en tillatt vektor-operasjon» b = d +1 b =

18 16 Vi har også tomme matriser. Disse markeres med [] (to hakeparenteser). Kan f.eks brukes til å fjerne en kolonne eller linje fra en matrise.»a A = » A(:,3) = [] A = AUTOMATISK GENERERING AV VEKTORER OG MATRISER. Kan bruke kolonnotasjon i:j:k der i = startverdi, j = inkrement og k = sluttverdi. Dersom inkrementet utelates, antas inkrement = 1 Nå brukes vanlige parenteser eller kan helt utelate parenteser for linjevektorer.» a = (1:5) a = » a = (1 :0.5 : 3) a = » a = 1:0.1:1.5 a = » b = 7:-1:1 b = Får kolonnevektorer ved å transponere. Kan også bruke linspace:» d = linspace(1,2,4) d = Syntaks : linspace (venstre epunkt, høyre epunkt, antall punkt) Dette betyr at linspace genererer n ekvidistante punkt der d(1) = a og d(n) = b. Dersom antall punkt utelates, velges 100. (Se også logspace).

19 17 Her er et eksempel på bruk av indeksvektor. (Merk at a blir en kolonnevektor fordi vi har brukt a = zeros(5,1) ovenfor). Om indeksvektoren er kolonne- eller linjevektor betyr ikke noe i dette tilfellet.» j = 1:5 j = » a(j) = j*0.1 a = Indeksvektorer brukes også til såkalt indirekte addressering.»a = a';» v(1) = 1; v(2) = 5; v(3) = 2;» v v = 1 5 2» b = a(v) b = Standardmatriser og vektorer De følge kommandoene brukes ofte til å initialisere vektorer og matriser» a = zeros(5,1) a = » b = ones(1,5) b = » D = eye(3) D =

20 18 Funksjonen rand lager matriser(vektorer) av vilkårlige tall uniformt fordelt mellom 0 og 1. >> rand(3) ans = >> rand(1,5) ans = >> a=1:3 a = >> diag(a) ans = >> Elementvise operasjoner Vi ønsker ofte å beregne utrykk som x y = [ xy 1 1 xy 2 2 xy n n] og x/ y = [ x / y x / y x / y ] o.l.. direkte n n Dette gjøres ved å bruke elementvise operatorer.*,. / og.^ >> x = 1:5 x = >> y = x.*x y = >> y./x ans = >> z = y.^2 z = >> x.^3./y ans = Et typisk eksempel: Skal plotte funksjonen y= e x sin(12 x) x = linspace(0,2*pi); y = exp(sqrt(x).*sin(12*x)); plot(x,y); (Se figur side 62 sammen med bruk av fplot)

21 19 Her er flere måter å beregne skalarproduktet på : >> sum(x.*x) ans = 55 >> x*x' ans = 55 >> dot(x,x) ans = 55 >> Sortering >> c=[ ] c = >> cs = sort(c) cs = Funksjonen sort sorterer i stige størrelse. Ved bruk av parameteren desc går sorteringen i motsatt retning. >> cs = sort(c,'desc') cs = Skriv doc sort får flere opplysninger. Matrisefunksjonene find, max og min >> a = -3:3 a = La oss finne de verdiene av a som har absoluttverdi > 1. Vi gjør det først i to steg : >> b = find(abs(a) > 1) b = >> c = a(b) c = b inneholder indeksene av a med elementer der absoluttverdien > 1. Deretter bruker vi b som argument i a. Nedenfor har vi gjort dette i ett steg. >> a(find(abs(a) > 1)) ans =

22 20 Skriv doc find for flere opplysninger. I mange tilfeller har vi bruk for de største og minste verdiene av en matrise. Til dette bruker vi funksjonene max og min. Genererer en vektor med 5 vilkårlige tall (uniform fordeling) og finner den største: >> v = rand(1,5) v = >> max(v) ans = >> [mv,k] = max(v) mv = k = 4 Vi ser at funksjonen max kan kalles på to måter : Det første kallet gir bare den største verdien, mens det andre også gir plasseringen. Tilsvare for min. La oss også se på en matrise. >> A = rand(3) A = >> max(a) ans = Vi ser at max nå finner maksverdien av hver kolonne. Dersom vi ønsker å finne maksverdien for hele matrisa A, kan vi skrive : >> max(max(a)) ans = >> Et alternativ : >> max(a(:)) ans = Ved å skrive A(:), betraktes matrisa A som en vektor.

23 21 Løsning av ligningsystem -1 Vi skal løse systemet A x = b. Symbolsk kan løsningen skrives x= A b. I Matlab kan dette gjøres ved å utføre x = inv(a)*b der b er en kolonnevektor, men dette er ineffektivt. Løsning av ligningsystemet i Matlab skrives x = A\b. Operatoren \ kalles venstre divisjon (heller mot matrisa som skal «divideres» på -1 ); symbolsk kan A oppfattes som divisjon. Merk at b/a ikke er definert. Derimot kan vi beregne b'/a der b'/a = b'*inv(a). (Husk at nå er b' en linjevektor) Eksempel 1» A = [-3 3/2 0; 3/4-9/4 5/4; 0 5/6-19/9] A = » b = [1/2 1 3/2]' b = » x = A\b x = » format rat» x x = -94/105-51/35-9/7 Da matriseelementene her er rasjonale tall, kan vi få løsningen på pen brøkform. Dette gjøres ved å forandre utskriftsformatet for kommando-vinduet fra format til format rat. Går deretter tilbake til format short (Se doc format)» format

24 22 Eksempel 2 A = b = >> x = A\b x = KORT OM ANDRE DATASTRUKTURER Cellematriser (Cell Arrays) Cellematriser er spesielle Matlab-matriser der elementene er celler. Hver celle i en cellematrise kan inneholde hvilken som helst datatype som f.eks. numeriske matriser, strenger osv. Cellematriser kan lages ved tilordningsetninger eller ved preallokering med bruk av funksjonen cell. Det er to måter å tilordne data til de enkelte cellene : Innholdsindeksering og celleindeksering. La oss lage en 2 2 cellematrise på disse to måtene. 1. Innholdsindeksering >> a{1,1}=[1 2;3 4]; >> a{1,2} = 'Dette er en streng'; >> a{2,1} = [1 + i; 5 + 3*i]; >> a{2,2} = []; Legg merke til krøllparentesene! Dersom du skriver ut a på vanlig måte, ser det sånn ut : >> a a = [2x2 double] 'Dette er en streng' [2x1 double] [] Ønsker du detaljert oversikt over innholdet, bruker du funksjonen celldisp. >> celldisp(a); a{1,1} =

25 a{2,1} = i i a{1,2} = Dette er en streng a{2,2} = [] 1. Celleindeksering Nå plasserer vi krøllparenteser rundt dataene som skal lagres i cella. >> a(1,1)={[1 2;3 4]}; >> a(1,2) = {'Dette er en streng'}; >> a(2,1) = {[1 + i; 5 + 3*i]}; >> a{2,2} = {[]}; Resultatet blir som ovenfor. Innholdet i de enkelte cellene kan aksesseres ved : >> a{1,1} ans = >> a{2,1} ans = i i >> Dersom vi ønsker å få tak i element(2,1) i matrisa som er lagret i celle (1,1): >> a{1,1}(1,2) ans = 2 >> Vi kommer ikke til å bruke cellematriser i noen utstrekning i dette kurset, men Matlab bruker dem en del i sine program. To funksjoner som genererer en cellematrise(vektor) er varargin og varargout. varargin kan brukes i argumentlista i funksjoner for å generere et vilkårlig antall inn-argumenter. Tilsvare brukes varargout til å generere et vilkårlig antall ut-argumenter. Se programmet rkn i mappa "Kap1" under mappa "Disketten" for et eksempel på bruk av varargin.

26 24 Strukturer (Structure Arrays) En vanlig matrise har et navn for hele matrisa, mens de individuelle elementene kan finnes ved å angi indekser. Alle elementene må være av samme type. Det samme gjelder for en cellematrise, men her kan de individuelle elementene være av forskjellige typer. En struktur derimot, er en datatype der hvert individuelle element har et navn. De individuelle elementene kalles felt (fields) og hvert felt kan være av forskjellig type. En struktur kan lages ved tilordning eller ved bruk av funksjonen struct. Eksempel : >> person.navn = 'Hans Hansen'; >> person.adresse = 'Hans Blomsgate 200'; >> person.by = 'Byen'; >> person.land = 'Norge'; >> person person = navn: 'Hans Hansen' adress: 'Hans Blomsgate 200' by: 'Byen' land: 'Norge' >> Vi har her laget en struktur med navn person. Dersom vi ønsker å legge til flere navn under person, kan vi gjøre dette som følger : >> person(2).navn = 'Ole Olsen'; >> person(2).adresse = 'Markegata 200'; Innholdet av person(2) finnes direkte : >> person(2) ans = navn: 'Ole Olsen' adresse: 'Markegata 200' by: [] land: [] Den første personen vi opprettet, er nå blitt person(1) : >> person(1) ans = navn: 'Hans Hansen' adresse: 'Hans Blomsgate 200' by: 'Byen' land: 'Norge' >>

27 25 Vi kan aksessere de enkelte feltene i strukturen. Eksempel : >> person(1).adresse ans = Hans Blomsgate 200 >> person(2).land ans = [] Et annet eksempel : >> firekant.bredde = 4; >> firekant.hoyde = 10; >> firekant.senter = [0 0]; >> firekant.rotert = pi/4; >> firekant firekant = rotert: bredde: 4 hoyde: 10 senter: [0 0] Det finnes en rekke kommandoer for å trekke ut opplysninger samt for manipulering av strukturer. F.eks : >> fieldnames(firekant) ans = 'rotert' 'bredde' 'hoyde' 'senter' >> Vi kommer ikke til å bruke strukturer noen utstrekning i dette kurset, men Matlab bruker dem en del i sine program. For oss er dette mest aktuelt i forbindelse med løsning av ordinære diff. ligninger(ode). En måte å bruke en ODE-løser for startverdiproblem på er : sol = solver(odefun,[t0 tf], y0..). solver er f. eks. ode45. (Skriv doc ode45) sol er her en struktur. Også randverdiløserene bvp4c og bvp5c bruker strukturer. F. eks. kalles bvp4c på følge måte : sol = bvp4c(odefun,bcfun,solinit) (Skriv doc bvp4c) sol og solinit er begge strukturer. Et annet eksempel er ved bruk av kubisk «spline» : pp = spline(x,y) pp er her en struktur (doc spline)

28 26 PROGRAMMERINGSDEL Til nå har vi sett på bruk av Matlab som kalkulator. De konstruksjonene og kommandoene som følger her, blir vanligvis brukt i program selvom de også kan skrives direkte i kommandovinduet. Programmene skrives med en tekst-editor Den innebygde editoren er vanligvis god nok, da Matlabprogrammene normalt er små. Er det behov for en mer sofistikert editor, finnes TextPad ved NTNU. Programmene blir lagt i filer med else m. Kalles derfor M filer. Eks. : Prog.m Har to typer M-filer: Skript M filer, også kalt kommando-filer, samt funksjons M filer som starter med ordet function. Mange av eksemplene her er så korte at de kan skrives direkte i kommandovinduet. PROGRAMOPPSETT La oss se på de programoppsettene som vi bruker i dette kurset, før vi går mer detaljert tilverks. Oppsett 1 % prog1.. kommandoer. Det enkleste oppsettet er å skrive kommandoene ved bruk av editoren og deretter lagre dem i en fil, her kalt prog1. Fila får da navnet prog1.m. Programmet utføres ved å skrive prog1 i kommandovinduet. Merk at verdiene av alle variable du har brukt, blir lagret i arbeidsområdet. Dette forenkler eventuell feilfinning. Oppsett 2 % prog2.. kommandoer. y = func1(2.0).

29 27 function y = func1(x).. y = x^2 I oppsett 2 bruker prog2 en funksjon med navn func1. Funksjonen func1 legges i en fil med navn func1.m. Bruk samme navn på fila som funksjonen. Dette oppsettet minner om standardoppsettet for andre programmeringspråk som f. eks. Fortran. I Fortran ville vi si at prog2 er hovedprogrammet, mens func1 er et subprogram. Merk at igjen vil de variable som brukes i prog2 bevares i arbeidsområdet. Når vi bruker funksjoner, lages det et eget arbeidsområde for hver funksjon. Når funksjonen er utført, slettes innholdet i dette området,unntatt variable som er definert som global eller persistent. Merk at vi ikke kan legge en funksjon inn i en kommando-fil, slik som vi f. eks. kan i Fortran. Kommunikasjonen mellom prog2 og func1 skjer ved parameteroverføring eller ved bruk av globale variable (Se avsnittet Bruker-definerte funksjoner) Oppsett 3 function prog3.. kommandoer. y = func1(2.0). function y = func1(x) y = x^2; Her har vi rett og slett puttet funksjonen func1 inn i prog2 og forandret prog2 til en funksjon med navnet prog3 som legges i en fil med navnet prog3.m. Husk at vi ikke kan legge funksjoner inn i kommandofiler. Oppsettet utføres ved å skrive prog3 i kommandovinduet. Fordelen med dette oppsettet er at vi slipper med en fil. Bakdelen er at verdiene av alle variable, unntatt variable som er definert som global eller persistent, slettes så snart funksjonen er utført. (Vanskeliggjør feilfinning) Kommunikasjonen mellom variable i prog3 og func1 skjer fremdeles ved

30 28 parameteroverføring eller ved bruk av globale variable (Se avsnittet Brukerdefinerte funksjoner) Oppsett 4 function prog4.. kommandoer. y = func1(2.0). function y = func1(x) y = x^2; Dette oppsettet er likt oppsett 3 bortsett fra at vi her har avsluttet begge funksjonene med kommandoen. Vi sier at vi bruker "nøstede funksjoner". Alle variable som er gitt i funksjonen prog4, er tilgjengelige i func1, slik at vi får en mer direkte kommunikasjon mellom funksjonene. (Se avsnittet Brukerdefinerte funksjoner for flere detaljer) LOGISKE UTTRYKK OG VARIABLE Opprinnelig kunne en ikke angi at en variabel var logisk i Matlab, men genererte dem ved bruk av sammenligningsoperatorer. Eksempel : >> a = 3>2 a = 1 >> b = 2>3 b = 0 >> a og b er her logiske variable med verdiene 1 eller 0 der sant = 1 og usant = 0. >> whos Name Size Bytes Class Attributes a 1x1 1 logical b 1x1 1 logical Legg merke til at en logisk variabel bruker bare en byte, så selv om den har verdien 0 eller 1, er disse verdiene forskjellig fra en vanlig 0 eller 1.

31 29 Det kan utføres aritmetiske operasjoner med logiske variable, men de blir da konvertert til vanlige 8-bytes tall. >> c = a + b c = 1 >> d = 2*a d = 2 >> whos Name Size Bytes Class Attributes c 1x1 8 double d 1x1 8 double >> Fra og med versjon 6.5 kan vi direkte angi logiske variable ved å bruke true og false som vist nedenfor : >> a = true a = 1 >> b = false b = 0 >> Sammenligningsoperatorer (Skriv doc ops) < mindre enn <= mindre eller lik == lik >= større eller lik > større enn ~= ikke lik (ulik, forskjellig) Når a og b er tall, blir a == b, a > b, a ~= b eksempler på logiske uttrykk. Logiske operatorer (Skriv doc ops) & både og (and) (Også &&) enten eller (or) (Også ) xor eksklusiv eller(exclusive or) ~ negasjon (not) I tillegg har vi any og all Operatorene && og kan brukes når operandene er skalarer. Dette sparerer noe tid, men er sjelden bryet verdt.

32 30 La a og b være to logiske uttrykk og sett sant = 1 og usant = 0 Sannhetstabellen nedenfor viser verdiene ved bruk av operatorene. Eksempler and or xor not a b a&b a b xor(a,b) ~a a = 1, b = 2, c = 3, d = 4» y = (a<=1) (c>a) y =1» y = ( a > 1)& (d >b) y = 0» y = ( a == 1)& (d ~=b) y = 1» y = xor(( a == 1), (d ~=b)) y = 0 Ovenfor har vi brukt operatorene på skalarer, men de virker like godt på matriser. >> c = 1:5 c = >> d = [ ] d = >> f = c > d f = >> Resultatet viser at første og siste element i c er større enn i d. f kalles en logisk vektor.

33 31 Et annet eksempel. Genererer 100 vilkårlige tall fra en uniform fordeling mellom 0 og 1: >> d = rand(1,100); Vi kan finne hvor mange som er større enn 0.5 på denne måten : >> n = sum(d > 0.5) n = 46 >> Betingelsen d > 0.5 genererer en logisk vektor der 1 angir verdiene >0.5. Ved å summere disse ett-tallene finner vi antallet. De logiske uttrykkene brukes naturlig ved forgreininger og løkker. Forgreininger Kommandoer: if, else, elseif og switch Variant 1 if logisk uttrykk setninger Setninger utføres bare dersom det logiske uttrykket = sant. Variant 2 if else logisk utrykk setninger1 setninger2 setninger1 utføres dersom det logiske uttrykket = sant ellers utføres setninger2. Variant 3 if logisk utrykk1 setninger1 elseif logisk uttrykk2 setninger2 else setninger3 setninger1 utføres bare dersom logisk uttrykk1 = sant. setninger1 og 2 blir da ikke utført. Dersom logisk uttrykk1 = usant utføres bare setninger2 dersom logisk uttrykk2 =

34 32 sant. Dersom både logisk uttrykk1 og 2 = usant utføres setninger3 (og bare da). Ved bruk av sammenligningsoperatorer kan de variable være vektorer og matriser. La x og y være vektorer med n komponenter. Da vil if x < y bare være sant dersom x i < y i, i = 1,2,.. n. Tilsvare for matriser. Et eksempel der vi kan bruke konstruksjonen fra variant 3. Anta at vi skal regne om tallkarakterer til bokstavkarakterer og følge relasjoner er gitt : [100 90] A, (89 80] B, (79 60] C (59 50] D, (49 40] E, < 40 F (stryk) Som Matlab-kode : if (tallk >= 90) disp ('Karakter er A'); elseif (tallk >= 80) disp ('Karakter er B'); elseif (tallk >= 60) disp ('Karakter er C'); elseif (tallk >= 50) disp ('Karakter er D'); elseif (tallk >= 40) disp ('Karakter er E'); else disp ('Karakter er F (stryk)'); Merk at parentesen rundt f.eks (tallk >= 90) ikke behøves. Det forutsettes at vi på forhånd har verifisert at alle verdiene er gyldige. Et enkelt eksempel på bruken av kommandoen switch. ukedag = input('les nummer av ukedag : '); switch ukedag case {1} disp('mandag'); case {2} disp('tirsdag'); case {3} disp('onsdag'); case {4} disp('torsdag'); case {5} disp('fredag'); case {6} disp('lørdag'); case {7} disp('søndag'); otherwise error('ikke noen ukedag!') Iterasjonsløkker

35 33 Matlab har to kommandoer, for og while, for gjentatt utførelse av setninger. Den generelle syntaksen for en for- løkke er : for variabel setninger = uttrykk variabel er navnet på løkke-variabelen. Eksempel >> for k = [ ] x= k^2 x = 1 x = x = 9 x = >> Her er uttrykk en vektor slik at løkkevariabelen k forløpe går gjennom verdiene i vektoren. Det vanligste er at uttrykk tilordner en startverdi, en inkrement-verdi og en sluttverdi til løkke-variabelen. Inkrementet kan være både positivt og negativt eller kan utelates. I det siste tilfellet antas 1 som inkrement-verdi. Vanligvis brukes kolonnotasjonen til å definere løkke-variabelen. Vi kan ha flere løkker inne i hverandre : for variabel1 = uttrykk1 setninger1 for variabel2 = uttrykk2 setninger2 Eksempel» A = zeros(4);» for k = 1:3 A(k,k) = 4; A(k,k+1) = 1; A(k+1,k) = 1;» A(4,4) = 4;» A A =

36 34 Kommandoen while utfører setninger så lenge et logisk uttrykk er sant. Den generelle syntaksen for en while-løkke er : while logisk uttrykk setninger setninger blir ikke utført dersom det logiske uttrykket er usant. Også her kan vi ha flere løkker inne i hverandre. Merk at både for og while tester på den første linja i løkka. Dersom vi ønsker å hoppe ut av løkkene andre steder, kan det gjøres ved å bruke kommandoen break. Merk at break bare gir uthopp fra den innerste løkka dersom det er flere løkker. Dersom break brukes utenfor for og while-løkker, stoppes eksekveringen av resten av programmet. Dette kan være nyttig ved feilfinning. Nedenfor er noen typiske varianter på bruken av for og while i iterasjonsløkker. Som eksempel ser vi på en iterasjonsprosess der vi skal finne kvadratrota x av et tall c der x = c. Matematisk er dette ekvivalent med å finne nullpunktet av funksjonen f( x ) = 0 2 der f( x) = x c. Ved bruk av Newton-Raphsons metode får vi følge iterasjonsprosess : 1 c xm+ 1 = xm +Δxm, m = 0,1,..., Δ xm = 2 xm xm For å starte iterasjonsprosessen, må vi tippe en startverdi. Dessuten må vi ha et stoppkriterium. For å være spesifikk, velger vi x = 20. Velger startverdi x =. 0 5 Variant 1 % program variant1 itmax = 10; epsi = 1.0e-5; x = 5.0; c = 20.0; it = 0; while true it = it + 1; if it > itmax disp('*** Max. no. of iterations ***'); break dx = (c/x - x)*0.5 x = x + dx if abs(dx) < epsi break dx = x = x 0 c = 20 ; vi skal finne

37 35 dx = x = dx = e-005 x = dx = e-010 x = Dette er en evighetsløkke da betingelsen while true alltid er oppfylt. Uthopp fra løkka skjer enten når maks. antall iterasjoner er overskredet eller når konvergens er oppnådd. Selv om vi skriver ut verdien av it og dx, er det lurt å gjøre oppmerksom på at maksimalt antall iterasjoner er overskredet. Variant 2 % program variant2 itmax = 10; epsi = 1.0e-5; x = 5.0; c = 20.0; for it = 1 : itmax dx = (c/x - x)*0.5; x = x + dx; if abs(dx) < epsi break if it >= itmax disp('*** Max. no. of iterations ***'); (Resultat som for variant1 ) Denne løkka som utføres maksimalt itmax ganger, er mer kompakt. Uthopp fra løkka før maks. antall iterasjoner er oppnådd, skjer dersom vi har konvergens. Utskrift om maks. antall iterasjoner ligger nå etter løkka. Variant 3 % Program variant3 itmax = 10; epsi = 1.0e-5; dx = 1.0; x = 5.0; c = 20.0; it = 0; while (it <= itmax) & (abs(dx) > epsi) it = it + 1; dx = (c/x - x)*0.5; x = x + dx; if it > itmax disp('*** Maks. antall iterasjoner ***') (Resultat som for variant1)

38 36 Denne løkka utføres bare dersom it <= itmax og samtidig dx > epsi. For at løkka skal utføres minst en gang, må dx ved inngang settes til en verdi større enn epsi. Det skjer ingen uthopp fra løkka. Antall iterasjoner må nå telles dersom vi vil følge iterasjonsprosessen. Utskrift om maks. antall iterasjoner ligger nå som i variant2, etter løkka. Vi har sett at vi kan bruke break til å hoppe ut av en løkke. Dessuten har vi kommandoen continue som brukes til å hoppe til slutten av en løkke. La oss se på et eksempel som bruker både break og continue. På side 2 har vi nevnt størrelsen eps tallet slik at 1 + eps >1. Denne størrelsen fås direkte ved : >> eps ans = e = der eps er det minste eps kan f. eks. beregnes på følge måte : epsr = 1; for number = 1 : 200 epsr = epsr/2; if (1 + epsr) > 1 continue epsr = epsr*2; break disp(epsr) som gir e-016 Vi skal se på noen eksempler på bruk av while som i variant2 og 3 etter vi har sett litt nærmere på funksjoner. BRUKER-DEFINERTE FUNKSJONER Funksjoner programmeres i funksjons M-filer og tilsvarer det som generelt kalles subprogram. Men i Matlab kan funksjoner også brukes som selvstige program. En funksjon opprettes ved : function [ ut1,ut2,...utn] = fnavn(inn1,inn2,...innk) Linja over definerer en funksjon med navn fnavn. Vi har k inn-parametre og n utparametre. Dersom vi bare har en ut-parameter, kan vi utelate hakeparentesene. Vi kan utelate alle inn-parametrene eller alle ut-parametrene eller begge deler. I det siste tilfellet skal = utelates : function fnavn og vi kaller programmet ved å skrive fnavn. Denne siste varianten er brukt i de fleste demoprogrammene som følger med Matlab.

39 37 Når vi kaller programmet, skriver vi : [ ut1,ut2,...utn] = fnavn(inn1,inn2,...innk) Foreløpig bruker vi funksjonen direkte fra kommandovinduet eller sammen med et M-skript. Matlab definerer flere typer funksjoner. Ta en titt på anonyme funksjoner (anonymous functions) i tillegg til dem vi ser på nedenfor. Vi ser på et enkelt eksempel der vi har laget en funksjon som beregner 2 parabelen y = x. Funksjonen kan lagres som func.m function y = func(x) y = x^2;» y = func(2) y = 4 x og y kan være vektorer eller matriser, men da må funksjonen skrives slik at den opererer rett på denne typen variable. function y = func(x) y = x.^2;» z = [0 : 0.1 : 0.5];» v = func(z) v = Legg merke til at det ikke er noen sammenheng mellom navnene på de variable i definisjonen av funksjonen og navnene som benyttes når den brukes. (Når vi bruker en funksjon, sier vi at vi kaller funksjonen). Men vi må passe på at de er av samme type. Legg også merke til at da x er en linjevektor blir også y en linjevektor. I mange tilfeller er det lurt å initialisere ut-parametrene dersom de er vektorer og matriser. I tilfellet over kan vi f. eks. skrive : function y = func(x) y = zeros(size(x)); y = x.^2; Ved å bruke kommandoen size sørger vi for at funksjonen virker for både linjeog kolonne-vektorer. Dersom du redefinerer dine inngangsvariable inne i funksjonen, vil disse bli mellomlagret til funksjonen er utført. (Det blir ikke laget kopi av inngangsdata som ikke redefineres). Matlab bruker her en overførings-metode for parametre som kalles pass by value. Dermed blir ikke de opprinnelige verdiene ødelagt.

40 38 Dette betyr også at du ikke sparer plass ved å redefinere inngangsdata. Merk også at alle lokale variable som defineres i en funksjon, forsvinner når funksjonen er utført. function y = func(x) y = zeros(size(x)); a = 1; y = x.^2; x = 2*x;» v = func(z) v = » z z = » a??? Undefined function or variable 'a'. Vi ser her at z har fremdeles sin opprinnelige verdi. Den lokale variable a som vi definerte, blir slettet når funksjonen er utført. Vi kan også overføre data ved bruk av kommandoen global. function y = func(x) y = zeros(size(x)); global P Q; y = x.^2 + P + Q ;» global Q P;» Q = 1; P = 2;» v = func(z) v = Med Q = 1 og P = 2 har vi addert 3 til vektoren v. Merk at rekkefølgen av de globale variable kan være forskjellig i det kalle programmet og det kalte programmet. ( Godt nytt for dem som er vant til Fortran). Flere globale variable skal skilles med mellomrom; ikke komma. global kan brukes til å overføre data mellom M-skript og funksjoner og mellom de enkelte funksjonene. Globale variable gir en effektiv overføring av data. Bakdelen er at vi ved en feiltagelse kan redefinere noen av dem i et program. Denne sideeffekten har aldri vært særlig poulær i data-kretser. Jeg har sett forslag om at globale variable bør skrives med minst 20 store bokstaver og helst avsluttes med dyrets tegn 666. Det gjelder spesielle regler for sletting av globale variable ved bruke av clear. (doc clear). Dersom vi skal overføre to globale variable a og b mellom et M-skript og en funksjon, kan vi skrive i M-skriptet : clear ; clear global a b; global a b; Ved å bruke clear global a b fjerner vi først de gamle verdiene av a og b. Dersom vi bare skriver clear global, fjerner vi bare tilgangen til de globale

41 39 variable i M-skriptet, ikke i funksjonene. Eventuelt kan vi rett og slett skrive clear all. I dette tilfellet fjerner vi alle funksjonene også. I Matlab versjon 7.7 er det innført en ny kommando clearvars. Dersom du skriver clearvars -global, slettes alle globale variable. Vi kommer tilbake til bruken av globale variable senere i avsnittet Overføring av data mellom program. (Oppsummering) I mange tilfeller har vi bruk for å avslutte beregningen og returnere til det kalle programmet før vi ha nådd slutten av funksjonen. Dette gjøres ved å bruke kommandoen return. (Se f.eks. funksjonen CDkule side 9 i kompiet). Om nødvig, kan vi avbryte beregningen med kommandoen error. (Flere opplysninger med doc return og doc error) Tradisjonelle subfunksjoner. (Se Oppsett 3, side 27) Det er mulig å bruke funksjoner inne i funksjoner. Slike funksjoner, kalt subfunksjoner, må ligge helt tilslutt i hovedfunksjonen. function y = func(x) y = zeros(size(x)); a = f(x); y = a*x.^2; % function fac = f(t) fac = sum(t); z = [0 : 0.1 : 0.5];» v = func(z) v = Her er func hovedfunksjonen og f subfunksjonen. Merk at variable i begge funksjonene er uavhengie av hverandre selv om de skulle ha samme navn. Skriv doc function for flere eksempler. Nøstede funksjoner (nested functions). (Se Oppsett 4, side 28) Disse ble innført fra og med versjon 7.0. La oss først se på et eksempel med tradisjonelle funksjoner. function func1 a = 1; z = func2(2.0) function val = func2(x) val = 2*x*a; Når vi eksekverer denne funksjonen får vi :??? Undefined function or variable 'a'. Error in ==> func1>func2 at 5 val = 2*x*a; Dette resultatet er ikke overraske da variable a ikke er definert i func2. Vi lager nå en ny versjon og eksekverer denne : function func1

42 40 a = 1; z = func2(2.0) function val = func2(x) val = 2*x*a; >> func1 z = 4 Vi har bare avsluttet begge funksjonene med og dermed har a blitt tilgjengelig i func2 med verdien 1. Dette er et eksempel på nøstede funksjoner. func1 benevnes primærfunksjonen og func2 er nå innlagt i func1 slik at verdiene av alle variable som er definert i func1 også er blitt tilgjengelige i func2. Dette reiser et spørsmål. Dersom vi nå forandrer verdien av a i func2, vil da verdien av a i func1 forandres?. La oss prøve: function func1 a = 1; z = func2(2.0) a function val = func2(x) val = 2*x*a; a = 2; >> func1 z = 4 a = 2 Svaret er ja. Med andre ord : Det er den samme a i begge programmene slik at effekten blir som å bruke globalmed tradisjonelle subfunksjoner. La oss verifisere dette : function func1 global a; a = 1; z = func2(2.0) a function val = func2(x) global a; val = 2*x*a; a = 2; >> func1 z = 4 a = 2

43 41 EKSEMPEL PÅ BRUK AV FUNKSJONER Nullpunktsbestemmelse ved bruk av sekantmetoden. Sekantmetoden er beskrevet i avsnitt 2.2 i kompiet. For oversiktens skyld gjentar vi beskrivelsen her. y f( x1 ) x 0 0 x2 x3 x * f( x2) f( x ) x 1 x Vi skal finne nullpunktet x * (kan være flere) av funksjonen y = f( x). Utfører en iterasjonsprosess etter følge skjema : x = x +Δ x, m = 1,2,... m+ 1 m x x m m 1 Δ x = f( x ) m f( x ) f( x ) m m 1 Figuren viser prosessen for m = 2. Vi har valgt å sette iterasjonsindekset m nede da det ikke er noen fare for kollisjon med andre indekser. For å komme i gang, må vi tippe to verdier x og x. Prosessen gjentas til et 0 1 konvergenskriterium er oppfylt, f.eks. Δ x < ε1 eller Δ x < x ε2. Kombineres gjerne med f( xm+ 1) < ε3. La oss bruke sekantmetoden til å finne den reelle rota av tredjegradpolynomet 3 2 f( x) = x + 4x 10. (Et tredjegradspolynom med reelle koeffisienter har alltid minst en reell rot). Figuren nedenfor viser polynomet tegnet for x [0, 2]. 15 Funksjonen x 3 + 4x y x

44 42 Vi ser at vi har et nullpunkt i intervallet [1.2, 1.4], og på en lommekalkulator med nullpunktsløser finner vi nullpunktet x * = med 10 korrekte siffer. La oss gjenta beregningen med bruk av sekantmetoden og bruker startverdier x0 = 0 og x1 = 2. I den første versjonen utfører vi iterasjonsprosessen et visst antall ganger uten å spesifisere noe iterasjonkriterium. Dette er ofte lurt når vi begynner på et problem der vi er usikker på iterasjonsforløpet. Programmet sekant1 gir følge resultat : m dx f(x) x e e e e e e e e e e e e e e e e Vi ser at vi har fått 10 korrekte siffer etter 7 iterasjoner. Legg merke til at prosessen går langsomt i begynnelsen; prosessen skyter fart først etter 6 iterasjoner. Det gjelder generelt både for Newton-Raphsons metode og sekantmetoden at vi må være nær rota for å få rask konvergens. Listingen av programmet er vist nedenfor. % Program sekant1 clear x0 = 0.0 ; x1 = 2.0; % Initial values f0 = func(x0); mmax = 8; s1 = '%2.0f % 7.2e % 7.2e %13.10f \n'; disp(' m dx f(x) x ' ) disp(' ') for m = 1 : mmax f1 = func(x1); dx = - f1*(x1 - x0)/(f1 - f0); x = x1 + dx; fprintf(s1,m,dx,f1,x); x0 = x1; x1 = x; f0 = f1; function y = func(x) y = x^3 + 4*x^2-10; Når vi nå vet at iterasjonsprosessen forløper greit, kan vi legge inn et konvergenskriterium. Dette er gjort i versjonen sekant2 nedenfor. (Se avsnittet Formatert utskrift angåe bruk av fprintf og disp)

START MED MATLAB. Når du starter Matlab, kommer du inn i kommandovinduet. Dersom du har versjon 6.1, ser du dette :

START MED MATLAB. Når du starter Matlab, kommer du inn i kommandovinduet. Dersom du har versjon 6.1, ser du dette : 1 START MED MATLAB Disse sidene er hovedsakelig ment for dem som ikke har brukt Matlab eller som trenger en oppfriskning. Start fra toppen og gå systematisk nedover. I tillegg brukes Matlablefsa. Noe av

Detaljer

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

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre, anders}@idi.ntnu. 1 TDT4105 Informasjonsteknologi, grunnkurs Introduksjon til programmering i Matlab Rune Sætre / Anders Christensen {satre, anders}@idi.ntnu.no 2 Frist for øving 1: Fredag 11. Sept. Noen oppstartsproblemer

Detaljer

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre,

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre, 1 TDT4105 Informasjonsteknologi, grunnkurs Introduksjon til programmering i Matlab Rune Sætre / Anders Christensen {satre, anders}@idi.ntnu.no 2 Frist for øving 1: Fredag 16. Sept. Noen oppstartsproblemer

Detaljer

Kapittel 1 En oversikt over C-språket

Kapittel 1 En oversikt over C-språket Kapittel 1 En oversikt over C-språket RR 2015 1 Skal se på hvordan man En innføring i C Skriver data til skjermen Lese data fra tastaturet Benytter de grunnleggende datatypene Foretar enkle matematiske

Detaljer

Matematikk Øvingsoppgaver i numerikk leksjon 2 Løsningsforslag

Matematikk Øvingsoppgaver i numerikk leksjon 2 Løsningsforslag Matematikk 1000 Øvingsoppgaver i numerikk leksjon Løsningsforslag Oppgave 1 Vektorer a) Variablene i MATLAB kan være tall, vektorer eller matriser. Vi kan for eksempel gi vektoren x = [1, 0, 3] på denne

Detaljer

Matematikk Øvingsoppgaver i numerikk leksjon 2 Løsningsforslag

Matematikk Øvingsoppgaver i numerikk leksjon 2 Løsningsforslag Matematikk 1000 Øvingsoppgaver i numerikk leksjon 2 Løsningsforslag Oppgave 1 Vektorer a) Variablene i MATLAB kan være tall, vektorer eller matriser. Vi kan for eksempel gi vektoren x = [1, 0, 3] på denne

Detaljer

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

TDT4105 Informasjonsteknologi, grunnkurs (ITGK) 1 TDT4105 Informasjonsteknologi, grunnkurs (ITGK) Introduksjon til programmering i Matlab Rune Sætre satre@idi.ntnu.no 2 Læringsmål og pensum Mål Lære om programmering og hva et program er Lære å designe

Detaljer

MATLABs brukergrensesnitt

MATLABs brukergrensesnitt Kapittel 3 MATLABs brukergrensesnitt 3.1 Brukergrensesnittets vinduer Ved oppstart av MATLAB åpnes MATLAB-vinduet, se figur 1.1. MATLAB-vinduet inneholder forskjellige (under-)vinduer. De ulike vinduene

Detaljer

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

TDT4105 Informasjonsteknologi, grunnkurs (ITGK) 1 TDT4105 Informasjonsteknologi, grunnkurs (ITGK) Introduksjon til programmering i Matlab Rune Sætre satre@idi.ntnu.no 3 Læringsmål og pensum Mål Lære om programmering og hva et program er Lære om hvordan

Detaljer

Kapittel august Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 2.

Kapittel august Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 2. Institutt for geofag Universitetet i Oslo 28. august 2012 Kommandovinduet Det er gjennom kommandovinduet du først og fremst interagerer med MatLab ved å gi datamaskinen kommandoer når >> (kalles prompten

Detaljer

MATLAB I FAG TKT4140 NUMERISK BEREGNING INNHOLD

MATLAB I FAG TKT4140 NUMERISK BEREGNING INNHOLD MATLAB I FAG TKT4140 NUMERISK BEREGNING INNHOLD FORORD... 1 INNLEDNING... 1 HJELPESYSTEM... VARIABLE... Spesielle symboler... Predefinerte variable... FILKOMMANDOER... 3 Liste over kommandoer... 3 MATRISER

Detaljer

Matematikk Øvingeoppgaver i numerikk leksjon 1 Å komme i gang

Matematikk Øvingeoppgaver i numerikk leksjon 1 Å komme i gang Matematikk 1000 Øvingeoppgaver i numerikk leksjon 1 Å komme i gang I denne øvinga skal vi bli litt kjent med MATLAB. Vi skal ikkje gjøre noen avanserte ting i dette oppgavesettet bare få et visst innblikk

Detaljer

Matematikk 1000. Øvingeoppgaver i numerikk leksjon 1 Å komme i gang

Matematikk 1000. Øvingeoppgaver i numerikk leksjon 1 Å komme i gang Matematikk 1000 Øvingeoppgaver i numerikk leksjon 1 Å komme i gang I denne øvinga skal vi bli litt kjent med MATLAB. Vi skal ikkje gjøre noen avanserte ting i dette oppgavesettet bare få et visst innblikk

Detaljer

TMA Kræsjkurs i Matlab. Oppgavesett 1/3

TMA Kræsjkurs i Matlab. Oppgavesett 1/3 TMA4123 - Kræsjkurs i Matlab. Oppgavesett 1/3 22.02.2013 Dette oppgavesettet omhandler grunnleggende Matlab-funksjonalitet, slik som variabler, matriser, matematiske funksjoner og plotting. Den aller viktigste

Detaljer

Matematikk Øvingsoppgaver i numerikk leksjon 1. Løsningsforslag

Matematikk Øvingsoppgaver i numerikk leksjon 1. Løsningsforslag Matematikk 1000 Øvingsoppgaver i numerikk leksjon 1 Løsningsforslag Oppgave 2 Litt aritmetikk a) Her har vi skrevet ut det som kommer opp i kommandovinduet når vi utfører operasjonene. >> 2+2 4 >> 3-2

Detaljer

Del 1 En oversikt over C-programmering

Del 1 En oversikt over C-programmering Del 1 En oversikt over C-programmering 1 RR 2016 Starten C ble utviklet mellom 1969 og 1973 for å re-implementere Unix operativsystemet. Er et strukturert programmeringsspråk, hvor program bygges opp av

Detaljer

ITGK - H2010, Matlab. Repetisjon

ITGK - H2010, Matlab. Repetisjon 1 ITGK - H2010, Matlab Repetisjon 2 Variabler og tabeller Variabler brukes til å ta vare på/lagre resultater Datamaskinen setter av plass i minne for hver variabel En flyttallsvariabel tar 8 bytes i minne

Detaljer

Tall, vektorer og matriser

Tall, vektorer og matriser Tall, vektorer og matriser Kompendium: MATLAB intro Tallformat Komplekse tall Matriser, vektorer og skalarer BoP(oS) modul 1 del 2-1 Oversikt Tallformat Matriser og vektorer Begreper Bruksområder Typer

Detaljer

Læringsmål og pensum. Oversikt

Læringsmål og pensum. Oversikt 1 2 Læringsmål og pensum TDT4105 Informasjonsteknologi grunnkurs: Uke 39 Betingede løkker og vektorisering Læringsmål Skal kunne forstå og programmere betingede løkker med while Skal kunne utnytte plassallokering

Detaljer

Matematikk Øvingsoppgaver i numerikk leksjon 1. Løsningsforslag

Matematikk Øvingsoppgaver i numerikk leksjon 1. Løsningsforslag Matematikk 1000 Øvingsoppgaver i numerikk leksjon 1 Løsningsforslag Oppgave 2 Litt aritmetikk a) Her har vi skrevet ut det som kommer opp i kommandovinduet når vi utfører operasjonene. > 2+2 4 > 3-2 1

Detaljer

Øvingsforelesning i Matlab TDT4105

Øvingsforelesning i Matlab TDT4105 Øvingsforelesning i Matlab TDT4105 Øving 6. Tema: funksjoner med vektorer, plotting, preallokering, funksjonsvariabler, persistente variabler Benjamin A. Bjørnseth 13. oktober 2015 2 Oversikt Funksjoner

Detaljer

Notat 2, ST Sammensatte uttrykk. 27. januar 2006

Notat 2, ST Sammensatte uttrykk. 27. januar 2006 Notat 2, ST1301 27. januar 2006 1 Sammensatte uttrykk Vi har sett at funksjoner ikke trenger å bestå av annet enn ett enkeltuttrykk som angir hva funksjonen skal returnere uttrykkt ved de variable funksjonen

Detaljer

En innføring i MATLAB for STK1100

En innføring i MATLAB for STK1100 En innføring i MATLAB for STK1100 Matematisk institutt Universitetet i Oslo Februar 2017 1 Innledning Formålet med dette notatet er å gi en introduksjon til bruk av MATLAB. Notatet er først og fremst beregnet

Detaljer

Noen innebygde funksjoner - Vektorisering

Noen innebygde funksjoner - Vektorisering 1 Kunnskap for en bedre verden TDT4110 Informasjonsteknologi grunnkurs: Uke 41: «Matlab programs» (kapittel 6) Amanuensis Terje Rydland Kontor: ITV-021 i IT-bygget vest (Gløshaugen) Epost: terjery@idi.ntnu.no

Detaljer

Noen innebygde funksjoner - Vektorisering

Noen innebygde funksjoner - Vektorisering 1 Kunnskap for en bedre verden TDT4110 Informasjonsteknologi grunnkurs: Uke 41: «Matlab programs» (kapittel 6) Amanuensis Terje Rydland Kontor: ITV-021 i IT-bygget vest (Gløshaugen) Epost: terjery@idi.ntnu.no

Detaljer

Matematikk 1000. Øvingsoppgaver i numerikk leksjon 5 Løsningsforslag

Matematikk 1000. Øvingsoppgaver i numerikk leksjon 5 Løsningsforslag Matematikk 1000 Øvingsoppgaver i numerikk leksjon 5 Løsningsforslag Oppgave 1 Hva gjør disse skriptene? a) Skriptet lager plottet vi ser i gur 1. Figur 1: Plott fra oppgave 1 a). b) Om vi endrer skriptet

Detaljer

Hydrostatikk/Stabilitet enkle fall

Hydrostatikk/Stabilitet enkle fall Avdeling for Ingeniørutdanning Institutt for Maskin- og Marinfag Øving 1 Hydrostatikk/Stabilitet enkle fall Oppgave 1 Et kasseformet legeme med følgende hoveddimensjoner: L = 24 m B = 5 m D = 5 m flyter

Detaljer

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Forelesningsinfo. Tider Mandag Tirsdag Onsdag Torsdag Fredag

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Forelesningsinfo. Tider Mandag Tirsdag Onsdag Torsdag Fredag 1 Kunnskap for en bedre verden TDT4105 Informasjonsteknologi, grunnkurs Introduksjon til programmering i Matlab Amanuensis Terje Rydland Kontor: ITV-021 i IT-bygget vest (Gløshaugen) Epost: terjery@idi.ntnu.no

Detaljer

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre Python: Løkker TDT4110 IT Grunnkurs Professor Guttorm Sindre Denne uka Vi trenger å Støttes av Hente data fra bruker Vise data til bruker Lagre data i minnet for bruk videre i programmet Fra tastatur:

Detaljer

Matematikk Øvingsoppgaver i numerikk leksjon 7 Løsningsforslag

Matematikk Øvingsoppgaver i numerikk leksjon 7 Løsningsforslag Matematikk 1000 Øvingsoppgaver i numerikk leksjon 7 Løsningsforslag Oppgave 1 Halveringsmetoden igjen a) I skriptet vårt fra leksjon 6 skal altså linje 16 erstattes med while abs(b-a)>1e-3. Når vi gjør

Detaljer

Matematikk 1000. Øvingsoppgaver i numerikk leksjon 5 Skript

Matematikk 1000. Øvingsoppgaver i numerikk leksjon 5 Skript Matematikk 1000 Øvingsoppgaver i numerikk leksjon 5 Skript I denne øvinga skal vi lære oss mer om skript. Et skript kan vi se på som et lite program altså en sekvens av kommandoer. Til sist skal vi se

Detaljer

Notat 2, ST januar 2005

Notat 2, ST januar 2005 Notat 2, ST1301 25. januar 2005 1 Sammensatte uttrykk Vi har sett at funksjoner ikke trenger å bestå av annet enn ett enkeltuttrykk som angir hva funksjonen skal returnere uttrykkt ved de variable funksjonen

Detaljer

TDT4105 IT Grunnkurs Høst 2016

TDT4105 IT Grunnkurs Høst 2016 TDT4105 IT Grunnkurs Høst 2016 Norges teknisk naturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap Auditorieøving 1 Vennligst fyll ut følge informasjon i blokkbokstaver Navn:

Detaljer

Kort om meg. INF1000 Uke 2. Oversikt. Repetisjon - Introduksjon

Kort om meg. INF1000 Uke 2. Oversikt. Repetisjon - Introduksjon Kort om meg INF1000 Uke 2 Variable, enkle datatyper og tilordning Fredrik Sørensen Kontor: Rom 4311-NR, Informatikkbygget Brukernavn/e-post: fredrso@ifi.uio.no Utdanning: Dataingeniør, 2000 Cand.Scient,

Detaljer

Del 4 Noen spesielle C-elementer

Del 4 Noen spesielle C-elementer Del 4 Noen spesielle C-elementer 1 RR 2016 Header-filer inneholder Prototypene til funksjonene i standard biblioteket Verdier og definisjoner som disse funksjonene bruker #include #include

Detaljer

BYFE/EMFE 1000, 2012/2013. Numerikkoppgaver uke 33

BYFE/EMFE 1000, 2012/2013. Numerikkoppgaver uke 33 BYFE/EMFE 1000, 2012/2013 Numerikkoppgaver uke 33 Oppgave 2 Litt aritmetikk a) Her har vi skrevet ut det som kommer opp i Octave-vinduet når vi utfører operasjonene. octave-3.2.4.exe:9> 2+2 4 octave-3.2.4.exe:10>

Detaljer

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python Professor Guttorm Sindre Institutt for datateknikk og informasjonsvitenskap Læringsmål og pensum Mål Vite hva et

Detaljer

Plan: Parameter-overføring Alias Typer (Ghezzi&Jazayeri kap.3 frem til 3.3.1) IN 211 Programmeringsspråk

Plan: Parameter-overføring Alias Typer (Ghezzi&Jazayeri kap.3 frem til 3.3.1) IN 211 Programmeringsspråk Plan: Parameter-overføring Alias Typer (Ghezzi&Jazayeri kap.3 frem til 3.3.1) Funksjonelle språk (Ghezzi&Jazayeri kap.7 frem til 7.4) Neste uke: ML Ark 1 av 16 Forelesning 16.10.2000 Parameteroverføring

Detaljer

TDT4110 Informasjonsteknologi grunnkurs: Uke 43: Datastrukturer (kap. 8)

TDT4110 Informasjonsteknologi grunnkurs: Uke 43: Datastrukturer (kap. 8) 1 TDT4110 Informasjonsteknologi grunnkurs: Uke 43: Datastrukturer (kap. 8) Anders Christensen anders@idi.ntnu.no Rune Sætre satre@idi.ntnu.no 2 Læringsmål og pensum Læringsmål Datastrukturer: Cell Arrays

Detaljer

Øvingsforelesning TDT4105 Matlab

Øvingsforelesning TDT4105 Matlab Øvingsforelesning TDT4105 Matlab Øving 2. Pensum: Funksjoner, matriser, sannhetsuttrykk, if-setninger. Benjamin A. Bjørnseth 8. september 2015 2 Innhold Funksjoner Matriser Matriseoperasjoner Sannhetsuttrykk

Detaljer

Matematikk Øvingsoppgaver i numerikk leksjon 4 Løsningsforslag

Matematikk Øvingsoppgaver i numerikk leksjon 4 Løsningsforslag Matematikk 1000 Øvingsoppgaver i numerikk leksjon 4 Løsningsforslag Oppgave 1 Funksjonsler b) Kommandoen ` help FunksjonenMin' gjør at dette blir skrevet til skjerm: Funksjonen f(x)=sin(x) - x^. Funksjonen

Detaljer

Matematikk Øvingsoppgaver i numerikk leksjon 1 Løsningsforslag

Matematikk Øvingsoppgaver i numerikk leksjon 1 Løsningsforslag Matematikk 1000 Øvingsoppgaver i numerikk leksjon 1 Løsningsforslag Oppgave 2 Litt aritmetikk a) Her har vi skrevet ut det som kommer opp i kommandovinduet når vi utfører operasjonene. >> 2+2 4 >> -2 1

Detaljer

Matematikk Øvingsoppgaver i numerikk leksjon 2 Funksjoner og plotting

Matematikk Øvingsoppgaver i numerikk leksjon 2 Funksjoner og plotting Matematikk 1000 Øvingsoppgaver i numerikk leksjon 2 Funksjoner og plotting I denne øvinga skal vi først og fremst lære oss å lage plott i MATLAB. I tillegg skal vi lære oss hvordan vi manøvrerer oss omkring

Detaljer

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre Python: Løkker TDT4110 IT Grunnkurs Professor Guttorm Sindre Læringsmål og pensum Mål Forstå hvorfor vi trenger løkker i programmering Ha kjennskap to ulike typer løkker (while-løkke, for-løkke) Og vite

Detaljer

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays Oversikt C programmering 1 C programmering Introduksjon Kildekode Kompilering Hello world Hello world med argumenter 2 Funksjoner 3 Datatyper 4 Pekere og arrays 5 Kontrollstrukturer Lars Vidar Magnusson

Detaljer

11. september Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 5 (del 2) Ada Gjermundsen

11. september Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 5 (del 2) Ada Gjermundsen , Institutt for geofag Universitetet i Oslo 11. september 2012 Litt repetisjon: Array, En array er en variabel som inneholder flere objekter (verdier) En endimensjonal array er en vektor En array med to

Detaljer

TDT4105 Informasjonsteknologi grunnkurs: Uke 43: Datastrukturer (kap. 8)

TDT4105 Informasjonsteknologi grunnkurs: Uke 43: Datastrukturer (kap. 8) 1 TDT4105 Informasjonsteknologi grunnkurs: Uke 43: Datastrukturer (kap. 8) Anders Christensen anders@ntnu.no Rune Sætre satre@ntnu.no 2 Læringsmål og pensum Læringsmål Datastrukturer: Cell Arrays Structures

Detaljer

Oversikt. INF1000 Uke 2. Repetisjon - Program. Repetisjon - Introduksjon

Oversikt. INF1000 Uke 2. Repetisjon - Program. Repetisjon - Introduksjon Oversikt INF1000 Uke 2 Variable, enkle datatyper og tilordning Litt repetisjon Datamaskinen Programmeringsspråk Kompilering og kjøring av programmer Variabler, deklarasjoner og typer Tilordning Uttrykk

Detaljer

Matlab-tips til Oppgave 2

Matlab-tips til Oppgave 2 Matlab-tips til Oppgave 2 Numerisk integrasjon (a) Velg ut maks 10 passende punkter fra øvre og nedre del av hysteresekurven. Bruk punktene som input til Matlab og lag et plot. Vi definerer tre vektorer

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i: MAT-INF 1100L Programmering, modellering, og beregninger. Prøveeksamen 1 Eksamensdag: Onsdag 14. November 2014. Tid for eksamen:

Detaljer

Løsningsforslag. Innlevering i BYFE/EMFE 1000 Oppgavesett 1 Innleveringsfrist: 14. september klokka 14:00 Antall oppgaver: 3.

Løsningsforslag. Innlevering i BYFE/EMFE 1000 Oppgavesett 1 Innleveringsfrist: 14. september klokka 14:00 Antall oppgaver: 3. Innlevering i BYFE/EMFE 1000 Oppgavesett 1 Innleveringsfrist: 14. september klokka 14:00 Antall oppgaver: 3 Løsningsforslag Oppgave 1 a) ln a ln 3 a+ln 4 a = ln a 1/2 ln a 1/3 +ln a 1/4 = 1 2 ln a 1 3

Detaljer

Øvingsforelesning i Matlab (TDT4105)

Øvingsforelesning i Matlab (TDT4105) Øvingsforelesning i Matlab (TDT4105) Øving 1. Frist: 11.09. Tema: matematiske uttrykk, variabler, vektorer, funksjoner. Benjamin A. Bjørnseth 1. september 2015 2 Oversikt Praktisk informasjon Om øvingsforelesninger

Detaljer

Kapittel Oktober Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 14.

Kapittel Oktober Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 14. og Institutt for geofag Universitetet i Oslo 17. Oktober 2012 i MatLab En funksjon vil bruke et gitt antall argumenter og produsere et gitt antall resultater og : Hvorfor Først og fremst bruker vi når

Detaljer

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

Kanter, kanter, mange mangekanter. Introduksjon: Steg 1: Enkle firkanter. Sjekkliste. Skrevet av: Sigmund Hansen Kanter, kanter, mange mangekanter Skrevet av: Sigmund Hansen Kurs: Processing Tema: Tekstbasert, Animasjon Fag: Matematikk, Programmering, Kunst og håndverk Klassetrinn: 8.-10. klasse, Videregående skole

Detaljer

Programmeringsspråket C

Programmeringsspråket C Programmeringsspråket C Bakgrunn Implementasjon av Unix ved AT&Ts laboratorium i Palo Alto 1960 75. Navnet kommer fra BCPL B C. Opphavsmannnen heter Dennis Ritchie. ANSI standard i 1988; omtrent alle følger

Detaljer

Øvingsforelesning TDT4105 Matlab

Øvingsforelesning TDT4105 Matlab Øvingsforelesning TDT4105 Matlab Øving 2. Pensum: Funksjoner, matriser, sannhetsuttrykk, if-setninger. Benjamin A. Bjørnseth 8. september 2015 2 Innhold Disclaimer Funksjoner Matriser Matriseoperasjoner

Detaljer

Programmering i R. 6. mars 2004

Programmering i R. 6. mars 2004 Programmering i R 6. mars 2004 1 Funksjoner 1.1 Hensikt Vi har allerede sette på hvordan vi i et uttrykk kan inkludere kall til funksjoner som er innebygd i R slik som funksjonene sum, plot o.s.v. Generelt

Detaljer

Det finnes mye litteratur om Matlab og her skal vi bare nevne noen få.

Det finnes mye litteratur om Matlab og her skal vi bare nevne noen få. FORORD Denne lefsa er ikke ment som en lærebok, men gir en kortfattet innføring i de mest brukte kommandoer og konstruksjoner i Matlab basert på eksempler. Den siste versjonen av Matlab er 6. som er innstallert

Detaljer

Matematikk Øvingsoppgaver i numerikk leksjon 4 m-ler

Matematikk Øvingsoppgaver i numerikk leksjon 4 m-ler Matematikk 1000 Øvingsoppgaver i numerikk leksjon 4 m-ler I denne øvinga skal vi lære oss å lage m-ler små tekstler som vi bruker i MATLAB-sammenheng. Der nst to typer m-ler: Funksjonsler og skript. Funksjonsler

Detaljer

TDT4105 Informasjonsteknologi grunnkurs Øvingsforelesning 2. Iver Dihle Skjervum Vit.ass. ITGK

TDT4105 Informasjonsteknologi grunnkurs Øvingsforelesning 2. Iver Dihle Skjervum Vit.ass. ITGK 1 TDT4105 Informasjonsteknologi grunnkurs Øvingsforelesning 2 Iver Dihle Skjervum Vit.ass. ITGK 2 Program Praktisk informasjon Kollokvie If / else og logiske utrykk Funksjoner Formatert utskrift Lage et

Detaljer

Dagens tema. C-programmering. Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes.

Dagens tema. C-programmering. Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes. Dagens tema Dagens tema C-programmering Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes. Adresser og pekere Parametre Vektorer (array-er) Tekster (string-er) Hvordan ser minnet

Detaljer

Programmering Høst 2017

Programmering Høst 2017 Programmering Høst 2017 Tommy Abelsen Ingeniørfag - Data Innledning Dette er et dokument med litt informasjon og eksempler om kontrollstrukturer, samt oppgaver til forskjellige kontrollstrukturer. Spør

Detaljer

16 Programmere TI -86 F1 F2 F3 F4 F5 M1 M2 M3 M4 M5

16 Programmere TI -86 F1 F2 F3 F4 F5 M1 M2 M3 M4 M5 16 Programmere Skrive et program på TI-86... 248 Kjøre et program... 256 Arbeide med programmer... 258 Laste ned og kjøre et assemblerspråkprogram... 261 Skrive inn og lagre en streng... 263 TI -86 M1

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i: MAT-INF 1100L Programmering, modellering, og beregninger. Prøveeksamen 2 Eksamensdag: Onsdag 14. November 2014. Tid for eksamen:

Detaljer

Alternativ dag for teoriforelesning. Intro. Torsdag 12:15-14:00 R1

Alternativ dag for teoriforelesning. Intro. Torsdag 12:15-14:00 R1 1 2 Alternativ dag for teoriforelesning Torsdag 12:15-14:00 R1 TDT4105 Informasjonsteknologi grunnkurs: Uke 35b Introduksjon til Matlab 09:15 10:00 R7 Jørn Amundsen Asbjørn Thomassen Roger Midtstraum 3

Detaljer

Øvingsforelesning i Matlab TDT4105

Øvingsforelesning i Matlab TDT4105 Øvingsforelesning i Matlab TDT4105 Øving 5. Pensum: for-løkker, fprintf, while-løkker. Benjamin A. Bjørnseth 5. oktober 2015 2 Oversikt Gjennomgang auditorieøving Repetisjon: for-løkke, fprintf While-løkker

Detaljer

Øvingsforelesning i Matlab TDT4105

Øvingsforelesning i Matlab TDT4105 Øvingsforelesning i Matlab TDT4105 Øving 6. Tema: funksjoner med vektorer, plotting, while Benjamin A. Bjørnseth 12. oktober 2015 2 Oversikt Funksjoner av vektorer Gjennomgang av øving 5 Plotting Preallokering

Detaljer

MAT1120 Plenumsregningen torsdag 26/8

MAT1120 Plenumsregningen torsdag 26/8 MAT1120 Plenumsregningen torsdag 26/8 Øyvind Ryan (oyvindry@i.uio.no) August 2010 Innføring i Matlab for dere som ikke har brukt det før Vi skal lære følgende ting i Matlab: Elementære operasjoner Denere

Detaljer

TDT4110 IT Grunnkurs Høst 2015

TDT4110 IT Grunnkurs Høst 2015 TDT4110 IT Grunnkurs Høst 2015 Norges teknisk naturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap Løsningsforlag Auditorieøving 1 1 Teori Løsning er skrevet med uthevet tekst

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i MAT-INF 00 Modellering og beregninger. Eksamensdag: Torsdag 6. desember 202. Tid for eksamen: 9:00 3:00. Oppgavesettet er på 8

Detaljer

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab 1 Kunnskap for en bedre verden TDT4105 Informasjonsteknologi, grunnkurs Introduksjon til programmering i Matlab Amanuensis Terje Rydland Kontor: ITV-021 i IT-bygget vest (Gløshaugen) Epost: terjery@idi.ntnu.no

Detaljer

Ikke lineære likninger

Ikke lineære likninger Ikke lineære likninger Opp til nå har vi studert lineære likninger og lineære likningsystemer. 1/19 Ax = b Ax b = 0. I en dimensjon, lineære likninger kan alltid løses ved hjelp av formler: ax + b = 0

Detaljer

Læringsmål og pensum. Oversikt. Læringsmål Forstå og bruke cell array og strukturer. Pensum Matlab, Chapter 8

Læringsmål og pensum. Oversikt. Læringsmål Forstå og bruke cell array og strukturer. Pensum Matlab, Chapter 8 1 2 Læringsmål og pensum Læringsmål Forstå og bruke cell array og strukturer TDT4105 Informasjonsteknologi grunnkurs: Uke 42 Cell arrayer og strukturer Pensum Matlab, Chapter 8 Asbjørn Thomassen, IDI 3

Detaljer

INF1000 undervisningen INF 1000 høsten 2011 Uke september

INF1000 undervisningen INF 1000 høsten 2011 Uke september INF1000 undervisningen INF 1000 høsten 2011 Uke 2 30. september Grunnkurs i Objektorientert Programmering Institutt for Informatikk Universitetet i Oslo Siri Moe Jensen og Arne Maus Forelesningene: Første

Detaljer

INF 1000 høsten 2011 Uke september

INF 1000 høsten 2011 Uke september INF 1000 høsten 2011 Uke 2 30. september Grunnkurs i Objektorientert Programmering Institutt for Informatikk Universitetet i Oslo Siri Moe Jensen og Arne Maus 1 INF1000 undervisningen Forelesningene: Første

Detaljer

Matematikk Øvingsoppgaver i numerikk leksjon 5 for-løkker

Matematikk Øvingsoppgaver i numerikk leksjon 5 for-løkker Matematikk 1000 Øvingsoppgaver i numerikk leksjon 5 for-løkker I dette settet skal vi introdusere for-løkker. Først vil vi bruke for-løkker til å regne ut summer. Vi skal også se på hvordan vi kan implementere

Detaljer

Ta kontakt i pausen. Viktig at vi kommer i gang med dette arbeidet!

Ta kontakt i pausen. Viktig at vi kommer i gang med dette arbeidet! 1 Kunnskap for en bedre verden TDT4105 Informasjonsteknologi, grunnkurs Mer om funksjoner. Logiske betingelser og betinget programutførelse (valg). Amanuensis Terje Rydland Kontor: ITV-021 i IT-bygget

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i Eksamensdag: 14 juni 2004 Tid for eksamen: 9.00 12.00 Oppgavesettet er på 5 sider. Vedlegg: Tillatte hjelpemidler: INF-MAT2350

Detaljer

Kanter, kanter, mange mangekanter

Kanter, kanter, mange mangekanter Kanter, kanter, mange mangekanter Nybegynner Processing PDF Introduksjon: Her skal vi se på litt mer avansert opptegning og bevegelse. Vi skal ta utgangspunkt i oppgaven om den sprettende ballen, men bytte

Detaljer

Matematikk Øvingsoppgaver i numerikk leksjon 6 Løsningsforslag

Matematikk Øvingsoppgaver i numerikk leksjon 6 Løsningsforslag Matematikk 1000 Øvingsoppgaver i numerikk leksjon 6 Løsningsforslag Oppgave 1 Tredjegradslikninga a) Vi viser her hvordan det kan gjøres både som funksjonsl og som skript. Vi starter med funksjonla: 1

Detaljer

Øvingsforelesning i Matlab (TDT4105)

Øvingsforelesning i Matlab (TDT4105) Øvingsforelesning i Matlab (TDT4105) Øving 1. Frist: 15.09. Tema: matematiske uttrykk, variabler, vektorer, funksjoner. Sondre Wangenstein Baugstø 4. september 2017 2 Oversikt Praktisk informasjon Om øvingsforelesninger

Detaljer

Norsk informatikkolympiade runde

Norsk informatikkolympiade runde Norsk informatikkolympiade 2017 2018 1. runde Sponset av Uke 46, 2017 Tid: 90 minutter Tillatte hjelpemidler: Kun skrivesaker. Det er ikke tillatt med kalkulator eller trykte eller håndskrevne hjelpemidler.

Detaljer

TDT4110 Informasjonsteknologi grunnkurs: Uke 41: «Matlab programs» (kapittel 6)

TDT4110 Informasjonsteknologi grunnkurs: Uke 41: «Matlab programs» (kapittel 6) 1 TDT4110 Informasjonsteknologi grunnkurs: Uke 41: «Matlab programs» (kapittel 6) Anders Christensen anders@idi.ntnu.no Rune Sætre satre@idi.ntnu.no 2 Læringsmål og pensum Læringsmål: Synlighet av variabler

Detaljer

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 7 Filer og unntak ( exceptions ) Professor Alf Inge Wang Stipendiat Lars Bungum

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 7 Filer og unntak ( exceptions ) Professor Alf Inge Wang Stipendiat Lars Bungum 1 TDT4110 Informasjonsteknologi grunnkurs: Kapittel 7 Filer og unntak ( exceptions ) Professor Alf Inge Wang Stipendiat Lars Bungum 2 Læringsmål Mål Introduksjon til filer (som inndata og utdata) Å bruke

Detaljer

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2017

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2017 Norsk informatikkolympiade 2017 2018 1. runde Sponset av Uke 46, 2017 Tid: 90 minutter Tillatte hjelpemidler: Kun skrivesaker. Det er ikke tillatt med kalkulator eller trykte eller håndskrevne hjelpemidler.

Detaljer

Lynkurs i shellprogrammering under Linux

Lynkurs i shellprogrammering under Linux Lynkurs i shellprogrammering under Linux Interaktiv bruk av shell Shell/skall er en applikasjon som lar bruker taste inn tekstlige kommandoer til Linux en og en linje om gangen (leser linjer fra stdin).

Detaljer

TDT4105 Informasjonsteknologi, grunnkurs MatLab: Filbehandling - load, save, type - fopen, fgetl, feof, fprintf, fclose

TDT4105 Informasjonsteknologi, grunnkurs MatLab: Filbehandling - load, save, type - fopen, fgetl, feof, fprintf, fclose 1 TDT4105 Informasjonsteknologi, grunnkurs MatLab: Filbehandling - load, save, type - fopen, fgetl, feof, fprintf, fclose Anders Christensen (anders@ntnu.no) Rune Sætre (satre@ntnu.no) TDT4105 IT Grunnkurs

Detaljer

Matematikk Øvingsoppgaver i numerikk leksjon 5 Løsningsforslag

Matematikk Øvingsoppgaver i numerikk leksjon 5 Løsningsforslag Matematikk 1000 Øvingsoppgaver i numerikk leksjon 5 Løsningsforslag Oppgave 1 Summer og for-løkker a) 10 i=1 i = 1 + + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 1 + 4 + 9 + 16 + 5 + 36 + 49 + 64 + 81 + 100 = 385.

Detaljer

Øvingsforelesning 1 Python (TDT4110)

Øvingsforelesning 1 Python (TDT4110) Øvingsforelesning 1 Python (TDT4110) Introduksjon, Kalkulasjoner Ole-Magnus Pedersen Oversikt Praktisk Info Repetisjon fra sist Oppgaver for øving 2 2 Praktisk Info Last opp øvinger på Blackboard før godkjenning

Detaljer

Oppsummering fra sist

Oppsummering fra sist 1 av 34 Kunnskap for en bedre verden TDT4110 Informasjonsteknologi grunnkurs: Tema: Løkker/Sløyfer Utgave 3: Kap. 4 Terje Rydland - IDI/NTNU 2 av 34 Oppsummering fra sist Betingelser i Python: ,

Detaljer

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

Om plotting. Knut Mørken. 31. oktober 2003 Om plotting Knut Mørken 31. oktober 2003 1 Innledning Dette lille notatet tar for seg primitiv plotting av funksjoner og visualisering av Newtons metode ved hjelp av Java-klassen PlotDisplayer. Merk at

Detaljer

2 Om statiske variable/konstanter og statiske metoder.

2 Om statiske variable/konstanter og statiske metoder. Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo 1 Innledning Dette notatet beskriver noe av det som foregår i primærlageret når et Javaprogram utføres.

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i MAT-INF 11 Modellering og beregninger. Eksamensdag: Torsdag 12. oktober 26. Tid for eksamen: 9: 11:. Oppgavesettet er på 8 sider.

Detaljer

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap. 3

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap. 3 1 Kunnskap for en bedre verden TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap. 3 Terje Rydland - IDI/NTNU 2 if (be): else (not_to_be): 3 Læringsmål og pensum

Detaljer

CATALOG, variabler og tegn

CATALOG, variabler og tegn 2 CATALOG, variabler og tegn CATALOG... 42 CUSTOM-menyen... 43 Lagre data til variabler... 44 Klassifisere variabler som datatyper... 48 CHAR-menyen (Tegn)... 51 TI -86 M1 M2 M3 M4 M5 F1 F2 F3 F4 F5 42

Detaljer

Matriser TI -86 F1 F2 F3 F4 F5 M1 M2 M3 M4 M5

Matriser TI -86 F1 F2 F3 F4 F5 M1 M2 M3 M4 M5 13 Matriser Lage matriser... 204 Vise matriseelementer, rader og delmatriser... 207 Redigere matrisedimensjon og -elementer... 208 Slette en matrise... 209 Bruke en matrise i et uttrykk... 210 TI -86 M1

Detaljer

if (be): else (not_to_be): TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap.

if (be): else (not_to_be): TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap. 1 Kunnskap for en bedre verden TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap. 3 Terje Rydland - IDI/NTNU 2 if (be): else (not_to_be): 3 Læringsmål og pensum

Detaljer

Oversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program

Oversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program Oversikt INF1000 Uke 1 time 2 Variable, enkle datatyper og tilordning Litt repetisjon Datamaskinen Programmeringsspråk Kompilering og kjøring av programmer Variabler, deklarasjoner og typer Tilordning

Detaljer

Beskrivelse av programmeringsspråket Compila15 INF Kompilatorteknikk Våren 2015

Beskrivelse av programmeringsspråket Compila15 INF Kompilatorteknikk Våren 2015 Beskrivelse av programmeringsspråket Compila15 INF5110 - Kompilatorteknikk Våren 2015 Her beskrives syntaksen og den statiske semantikken (hva som skal sjekkes av kompilatoren) til språket Compila15. Den

Detaljer

Kapittel september Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 7.

Kapittel september Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 7. Institutt for geofag Universitetet i Oslo 18. september 2012 MatLabs store styrke er tallberegninger og grafisk fremstilling av resultater Noen ganger er det allikevel ønskelig å manipulere tekst (f.eks.

Detaljer