Examples plotting. Øyvind Ryan

Like dokumenter
Examples MAT1110. Øyvind Ryan

All examples. Øyvind Ryan

MAT1110: Obligatorisk oppgave 2, V Løsningsforslag

Løsningsforslag: MAT 1110 Obligatorisk oppgave 2, V-12

MAT 1110: Obligatorisk oppgave 1, V-07: Løsningsforslag

1. Finn egenverdiene og egenvektorene til matrisen A = 2 1 A =

Fasit MAT102 juni 2016

Obligatorisk oppgave 1

MAT 1110: Oblig 1, V-12, Løsningsforslag

Oppgaver til seksjon med fasit

Oppgaver og fasit til seksjon

Exercises population. Øyvind Ryan

5.5 Komplekse egenverdier

Løsningsforslag Eksamen M001 Våren 2002

Fasit til utvalgte oppgaver MAT1110, uka 28/4-2/5

Computational comments. Øyvind Ryan

Matematikk Øvingsoppgaver i numerikk leksjon 3. Løsningsforslag

Ikke-lineære ligningssystemer

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

Noen MATLAB-koder. 1 Plotte en vanlig funksjon. Fredrik Meyer. 23. april 2013

Exercises plotting. Øyvind Ryan

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

dg = ( g P0 u)ds = ( ) = 0

Løsningsforslag til utvalgte oppgaver i kapittel 10

TMA Kræsjkurs i Matlab. Oppgavesett 1/3

Matlab-tips til Oppgave 2

Alternativ II: Dersom vi ikke liker å stirre kan vi gå forsiktigere til verks. Først ser vi på komponentlikninga i x-retning

MAT1110. Obligatorisk oppgave 1 av 2

Løsningsforslag til eksamen i MAT 1100 H07

1. (a) Finn egenverdiene og egenvektorene til matrisen A =

Løsningsforslag. og B =

Løsningsforslag til prøveeksamen i MAT 1110, våren 2006

Alle svar skal grunngis. Alle deloppgaver har lik vekt.

Egenverdier og egenvektorer

All exercises. Øyvind Ryan

Løsning IM

Eksamensoppgave i TMA4115 Matematikk 3

Fasit eksamen i MAT102 4/6 2014

7 Egenverdier og egenvektorer TMA4110 høsten 2018

MAT Prøveeksamen 29. mai - Løsningsforslag

Fasit til eksamen i emnet MAT102 - Brukerkurs i matematikk II Mandag 21.september 2015

Prøveeksamen i MAT 1100, H-03 Løsningsforslag

TMA4110 Matematikk 3 Eksamen høsten 2018 Løsning Side 1 av 9. Løsningsforslag. Vi setter opp totalmatrisen og gausseliminerer:

Oppgave 1 (25 %) - Flervalgsoppgaver

Løsningsforslag til eksamen i MAT1110, 13/6-07

=cos. =cos 6 + i sin 5π 6 = =cos 2 + i sin 3π 2 = i.

Løsningsforslag. Oppgave 1 Gitt matrisene ] [ og C = A = 4 1 B = 2 1 3

NTNU. MA1103 Flerdimensjonal Analyse våren Maple-øving 2. Viktig informasjon. Institutt for matematiske fag. maple02 28.

Matematikk Øvingsoppgaver i numerikk leksjon 5 Løsningsforslag

NTNU. MA1103 Flerdimensjonal analyse våren Maple/Matlab-øving 2. Viktig informasjon. Institutt for matematiske fag

Matematikk Øvingsoppgaver i numerikk leksjon 11 Eulers metode. Løsningsforslag

GeoGebra for Sinus 2T

0.1 Kort introduksjon til komplekse tall

Matematikk Øvingsoppgaver i numerikk leksjon 6. Løsningsforslag

Navn/kursparallell skrives her (ved gruppearbeid er det viktig at alle fyller ut):

Diagonalisering. Kapittel 10

Alle svar skal grunngis. Alle deloppgaver har lik vekt.

UNIVERSITETET I OSLO. Løsningsforslag

TMA4122/TMA4130 Matematikk 4M/4N Høsten 2010

(1 + x 2 + y 2 ) 2 = 1 x2 + y 2. (1 + x 2 + y 2 ) 2, x 2y

LØSNINGSSKISSE TIL EKSAMEN I FAG SIF august 2001

SINUS R1, kapittel 5-8

MATLAB for MAT (revidert versjon våren 2008) Klara Hveberg og Tom Lindstrøm

UNIVERSITETET I OSLO

Sandvold Øgrim Bakken Pettersen Skrindo Thorstensen Thorstensen. Digitalt verktøy for Sigma R2. Geogebra

EKSAMEN I NUMERISK LINEÆR ALGEBRA (TMA4205)

MA1201 Lineær algebra og geometri Løsningsforslag for eksamen gitt 3. desember 2007

4_Komplekse_tall.odt tg. Kap.4 Komplekse tall

Løsningsforslag til eksamen i MA0002, Brukerkurs i matematikk B

TMA4105 Matematikk 2 Vår 2008

Matematikk Øvingsoppgaver i numerikk leksjon 6 Løsningsforslag

Løsningsforslag. og B =

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

MA0002 Brukerkurs i matematikk B Vår 2016

5.8 Iterative estimater på egenverdier

Øvingsforelesning i Matlab TDT4105

MA1102 Grunnkurs i analyse II Vår 2019

Anbefalte oppgaver - Løsningsforslag

Eksamen R2, Våren 2009

EKSAMEN I MATEMATIKK 3 (TMA4110)

Løsningsforslag til Eksamen i MAT111

Vær OBS på at svarene på mange av oppgavene kan skrives på flere ulike måter!

Løsningsforslag øving 6

Eksamen R2, Høst 2012

Notater nr 9: oppsummering for uke 45-46

Løsningsforslag. e n. n=0. 3 n 2 2n 1. n=1

Løsningsforslag. Innlevering i BYFE 1000 Oppgavesett 1 Innleveringsfrist: 10. oktober klokka 14:00 Antall oppgaver: 6. Oppgave 1

Verdens korteste grunnkurs i Excel (2007-versjonen)

Øvingsforelesning i Matlab TDT4105

NTNU. TMA4105 Matematik 2 våren Maple-øving 1. Viktig informasjon. Institutt for matematiske fag. maple01 1.

Fasit til utvalgte oppgaver MAT1110, uka 15-19/2

5.6 Diskrete dynamiske systemer

Løsningsforslag til prøveeksamen i MAT1050, vår 2019

Løsningsforslag AA6524 Matematikk 3MX Elever 7. juni eksamensoppgaver.org

Plotting av data. Kapittel Plott med plot-funksjonen

Løsningsforslag MAT102 - v Jon Eivind Vatne

Eksamensoppgave i MA0002 Brukerkurs i matematikk B - LØSNING

Transkript:

Examples plotting Øyvind Ryan 19. februar 2013

Example 0.1. Vi skal tegne grafen til f (x, y) = x 3 4y 2 over rektangelet x [ 3,3], y [ 5,5]. Vi lager først en oppdeling av de to intervallene vi er interessert i, ved å skrive r=-3:0.1:3; s=-5:0.1:5; (husk semikolon etter kommandoene, ellers vil du få lange tallremser som output!) Her har vi valgt å dele opp begge intervallene i skritt med lengde 0.1, men du kan godt velge en finere eller grovere oppdeling. Det kan være lurt å prøve en skikkelig grov oppdeling (f.eks. skrittlengde 0.5) en gang slik at du virkelig ser hvordan MATLAB tegner grafer. Neste skritt er å lage et rutenett av oppdelingene våre. Dette gjør vi med kommandoen >> [x,y]=meshgrid(r,s);} Vi kan nå definere funksjonen: >> z=x.^3-4*y.^2; (husk å bruke.-versjonene av de algebraiske operasjonene!) Dermed er vi klare til selve plottingen som utføres av kommandoen >> mesh(x,y,z) Grafen kommer opp i et eget figurvindu akkurat som for todimensjonale figurer, og ser ut som et fiskegarn med knuter i plottepunktene. Ved å gå inn på menyen i grafvinduet, kan du dreie flaten i rommet (aktiver musa ved å klikke på et ikon som symboliserer dreiing). Dette er ofte nødvendig for å få et godt inntrykk av hvordan grafen ser ut! Bruker du kommandoen surf(x,y,z) istedenfor mesh(x,y,z), vil MATLAB tegne grafen med fargelegging av hvert ruteelement. Det er ofte klargjørende når grafen varierer mye. Vil du se nivåkurvene istedenfor grafen, bytter du ut med kommandoen >> contour(x,y,z) Når du bruker contour på denne måten, velger MATLAB selv hvilke nivåkurver den skal tegne. MATLAB er ikke alltid flink til å finne de mest interessante nivåkurvene, og det kan også tenkes at vi er interessert i helt konkrete nivåer, som programmet umulig kan gjette på. Derfor hender det at du må hjelpe til ved å angi konkrete nivåer: Dersom vektoren v = (v 1, v 2,..., v n ) er lagt inn, vil kommandoen 2

>> contour(x,y,z,v) tvinge MATLAB til å tegne nivåkurvene med verdier v 1, v 2,..., v n. Vil du bare regulere antall nivåkurver, men ikke spesifisere verdiene, kan du bruke denne kommandoen >> contour(x,y,z,n) som får MATLAB til å tegne opp n nivåkurver. Med kommandoen clabel får du MATLAB til å skrive nivået til nivåkurvene på grafen. Prøv >> clabel(contour(x,y,z,12)) MATLAB vil normalt tegne nivåkurvene i forskjellige farger. Dette er nyttig på skjermen, men kan være mindre praktisk dersom du ønsker å lime figuren inn i et svart-hvitt dokument. Skriver du >> contour(x,y,z,8, k ) får du 8 nivåkurver tegnet i svart ( k er symbolet for svart farge). Ønsker du at MATLAB skal tegne nivåkurvene og grafen i samme plot, bruker du kommandoen >> meshc(x,y,z) Det finnes mange andre kommandoer du også kan bruke (og mange flere måter å modifisere kommandoene ovenfor på!). Skriv >> help graph3d for å få en oversikt. Example 0.2. Vi skal lage en fremstilling av vektorfeltet F(x, y) = x y i + x sin(x y) j over mengden 5 x 5, 3 y 3. Vi starter med å lage rutenettet. Vi bør ikke lage oppdelingen for fin, for da blir det vanskelig å se vektorene. Vi velger en rutelengde på 0.5: x=-5:0.5:5; y=-3:0.5:3; Vi lager så et rutenett av x og y. >> [x,y]=meshgrid(x,y); 3

Nå kan vi legge inn vektorfeltet: u=x.*y; v=x.*sin(x.*y); Dermed er vi klare til å lage figuren >> quiver(x,y,u,v) MATLAB svarer med figur 3 (se ovenfor). Example 0.3. La oss bruke MATLAB til å finne en strømningslinje for vektorfeltet i eksempel 1. Vi må først legge inn x, y, u og v på samme måte som ovenfor. I dette tilfellet kan det imidlertid være lurt å bruke et rutenett som er mindre grovt, så vi starter med sekvensen x=-5:0.05:5; y=-3:0.05:3; [x,y]=meshgrid(x,y); u=x.*y; v=x.*sin(x.*y); For å lage strømningslinjen som starter i punktet (1, 1) skriver vi nå >> streamline(x,y,u,v,1,-1) Hvis du taster inn den siste kommandoen på nytt med et annet startpunkt, f.eks. >> streamline(x,y,u,v,0.5,1) tegner MATLAB en ny strømningslinje i det samme figurvinduet. Det er også instruktivt å tegne inn vektorfeltet og strømningslinjene i samme figur (prøv!). Example 0.4. Vi skal bruke MATLAB til å tegne den parametriserte flaten Vi taster da: u=-5:.1:5; v=-5:.1:5; [U,V]=meshgrid(u,v); x=u+v; y=u-v; z=u.*v; surf(x,y,z) r(u, v) = (u + v)i + (u v)j + uv k, der 5 u, v 5 4

og MATLAB tegner flaten. Example 0.5. La oss også bruke MATLAB til å tegne en kuleflate med radius 3 og sentrum i origo. For å slippe for lange variabelnavn, bruker vi u for den variabelen som i kulekoordinater vanligvis heter φ og v for den som vanligvis heter θ. Kommandoen linspace(a,b,n) gir oss en vektor med n komponenter som begynner med a og ender med b. u=linspace(0,pi,100); v=linspace(0,2*pi,); [U,V]=meshgrid(u,v); x=3*sin(u).*cos(v); y=3*sin(u).*sin(v); z=3*cos(u); surf(x,y,z) axis( equal ) Husk kommandoen >> axis( equal ) som gir samme målestokk langs alle akser uten den ser kulen ut som en ellipsoide. Example 0.6. Et dyreslag har en levealder på fire år. Det første året er dyrene unger, det andre året er de ungdommer, det tredje året er de voksne og det fjerde året er de eldre. Av ungene overlever 50% til året etter, av ungdommene overlever 80% til året etter og av de voksne overlever 20% til året etter. En ungdom gir i gjennomsnitt opphav til 0.5 unger som blir født året etter, en voksen gir i gjennomsnitt opphav til 2 unger som blir født året etter, og et eldre dyr gir i gjennomsnitt opphav til 0.1 unge som blir født året etter. Vi antar at vi starter med dyr i hver aldersklasse, og ønsker å finne ut hvordan stammen utvikler seg. La x n, y n, z n og u n være henholdsvis antall unger, ungdommer, voksne og eldre i år n. Da er x n+1 = 0.5y n + 2z n + 0.1u n y n+1 = 0.5x n z n+1 = 0.8y n u n+1 = 0.2z n I tillegg vet vi at x 1 = y 1 = z 1 = u 1 =. Det er flere måter å angripe dette problemet på. La oss først se hva som skjer når vi bruker MATLAB til å regne ut utviklingen de 50 første årene. Vi lager m- filen function [x,y,z,u]=dyrestamme(a,b,c,d,n) 5

x(:,1)=[a;b;c;d] for n=1:n x(:,n+1)=[0 0.5 2 0.1; 0.5 0 0 0; 0 0.8 0 0; 0 0 0.2 0]*x(:,n); end Den neste kommandosekvensen får MATLAB til å plotte ut følgene i samme figur: [x,y,z,u]=dyrestamme(,,,,49); plot(x) hold on plot(y) plot(z) plot(u) Resultatet er figuren nedenfor der den øverste kurven gir antall unger, den nest øverste antall ungdommer, den tredje øverste antall voksne og den nederste antall eldre. Disse kurvene er ikke så lette å tolke. Det ser ut som de etter noen innledende svingninger går over i jevn vekst, og at fordelingen mellom de forskjellige aldersgruppene nærmer seg en likevekt. Men hvor kommer svingningene fra, hvor rask er veksten, og hvordan finner vi likevektsfordelingen mellom aldersgruppene?. La oss kjøre programmet en gang til med startverdier x 1 = 400, y 1 = 300, z 1 = 100, u 1 = 0. Resultatet ser du på figuren nedenfor, og i hovedtrekk ligner 6

det forbløffende på det vi fikk i stad; etter noen innledende svingninger går kurvene over i jevn vekst, og forholdet mellom aldersgruppene ligner på det vi fikk ovenfor. Vi skal nå se hvordan vi kan bruke egenverdier og egenvektorer til å forklare disse resultatene. Det første vi observerer, er at dersom vi innfører vektorene x n y n r n = z n u n så kan ligningssystemet ovenfor skrives der A er matrisen A = r n+1 = Ar n 0.5 2.1.5 0 0 0 0.8 0 0 0 0.2 0 Bruker vi denne formelen gjentatte ganger, får vi r n = A n 1 r 1 Legg merke til at siden vi kaller begynnelsesbestanden r 1 og ikke r 0, må A oppphøyes i n 1 og ikke n. Matematisk sett hadde det vært greiere å begynne med r 0 7

slik vi gjorde i forrige eksempel, men MATLAB begynner alltid nummereringer på 1, og vi har derfor valgt å holde oss til det siden vi MATLAB bruker såpass mye i dette eksemplet. La oss benytte MATLAB til å finne egenverdiene og egenvektorene til A: >> A=[0.5 2.1.5 0 0 0 0.8 0 0 0 0.2 0]; >> [u,v]=eig(a) u = Columns 1 through 3-0.8472 0.7917 0.7917-0.4151-0.2560-0.3675i -0.2560 + 0.3675i -0.3254-0.1405 + 0.3802i -0.1405-0.3802i -0.0638 0.0887-0.0231i 0.0887 + 0.0231i Column 4-0.0000 0.0006-0.0501 0.9987 v = Columns 1 through 3 1.0206 0 0 0-0.5053 + 0.7253i 0 0 0-0.5053-0.7253i 0 0 0 Column 4 0 0 8

0-0.0100 Vi har altså egenverdiene = 1.0206, λ 2 = 0.5053 + 0.7253i, λ 3 = 0.5053 0.7253i, λ 4 = 0.01 med tilhørende egenvektorer (vi bytter fortegn på den første av dem for å slippe minuser): v 1 = v 3 = 0.8472 0.4151 0.3254 0.0638, v 2 = 0.7917 0.2560 + 0.3675i 0.1405 0.3802i 0.0887 + 0.0231i 0.7917 0.2560 0.3675i 0.1405 + 0.3802i 0.0887 0.0231i, v 4 = 0 0.0006 0.0501 0.9987 Vi ser at de komplekse egenverdiene og egenvektorene er konjugerte av hverandre slik setning 4.10.4 sier. Vi ser også at egenverdiene er ordnet i avtagende rekkefølge: > λ 2 = λ 3 > λ 4. Siden egenverdiene er forskjellige, vet vi at v 1, v 2, v 3, v 4 danner en basis. Vi kan derfor skrive starttilstanden r 1 = som en lineærkombinasjon r 1 = = c 1v 1 + c 2 v 2 + c 3 v 3 + c 4 v 4 Vi skal bruke MATLAB til å finne koeffisientene c 1,c 2,c 3,c 4, men la oss først se hva som skjer når vi bruker A n 1 på ligningen ovenfor. Vi får r n = A n 1 r 1 = c 1 A n 1 v 1 + c 2 A n 1 v 2 + c 3 A n 1 v 3 + c 4 A n 1 v 4 = c 1 λ n 1 1 v 1 + c 2 λ n 1 2 v 2 + c 3 λ n 1 3 v 3 + c 4 λ n 1 4 v 4 Vi setter den største egenverdien λ1 n 1 utenfor en parentes ( ( ) n 1 ( ) n 1 ( ) n 1 ) r n = λ1 n 1 λ2 λ3 λ4 c 1 v 1 + c 2 v 2 + c 3 v 3 + c 4 v 4 9

( Siden har størst tallverdi av egenverdiene, vil alle faktorene λ2 ( λ4 ) n 1 gå mot null når n går mot uendelig. Det betyr at Definerer vi kan vi derfor skrive ( ( ) n 1 ( λ2 λ3 lim c 2 v 2 + c 3 n ) n 1 v 3 + c 4 ( λ4 ) n 1 v 4 ) = 0 ( ) n 1 ( ) n 1 ( ) n 1 λ2 λ3 λ4 σ(n) = c 2 v 2 + c 3 v 3 + c 4 v 4, r n = λ n 1 ( 1 c1 v 1 + σ(n) ) ) n 1, ( λ3 ) n 1, der σ(n) 0 når n. Skriver vi ut komponentene og setter in = 1.0206, får vi x n 0.8472 y n z n = 1.0206n 1( 0.4151 ) c 1 0.3254 + σ(n) u n 0.0638 Dette betyr at når n blir stor, er veksten bestemt av den største egenverdien = 1.0206, og fordelingen mellom komponentene er bestemt av den tilhørende egenvektoren v 1. Som du ser, minner disse resultatene om det vi fikk i Eksempel 1, men vi har fått med en vekstfaktor i tillegg. La oss nå finne konstantene c 1, c 2, c 3 og c 4. Dersom vi velger den opprinnelige begynnelsestilstanden r 1 = får vi ligningen = c 1 +c 3 0.8472 0.4151 0.3254 0.0638 + c 2 0.7917 0.2560 + 0.3675i 0.1405 0.3802i 0.0887 + 0.0231i 10 0.7917 0.2560 0.3675i 0.1405 + 0.3802i 0.0887 0.0231i + c 4 0 0.0006 0.0501 0.9987 +

Innfører vi matrisen 0.8472 0.7917 0.7917 0 0.4151 0.2560 0.3675i 0.2560 + 0.3675i 0.0006 D = 0.3254 0.1405 + 0.3802i 0.1405 0.3802i 0.0501 0.0638 0.0887 0.0231i 0.0887 + 0.0231i 0.9987 kan vi bruke MATLAB til å finne vektoren c 1 c 2 c = c 3 c 4 ved å taste >> c=d\r1 Vi får c 1 = 436.59, c 2 = 107.29 49.34i, c 3 = 107.29 + 49.34i, c 4 = 193.72. Legg merke til at koeffisientene c 2 og c 3 til de komplekse egenverdiene er konjugerte. Vi har ennå ikke forklart hvor svingningene i figuren kommer fra. Det viser seg at de kommer fra de komplekse egenverdiene. Skriver vi den komplekse egenverdien λ 2 på polarform λ 2 = re iθ, ser vi at λ n 1 2 = r n 1 e i (n 1)θ = r n 1( ) cos((n 1)θ) + i sin((n 1)θ) Cosinus- og sinus-leddene får uttrykket til å svinge, men i dette tilfellet vil svingningene dø ut etter hvert fordi r < 1 og r n 1 0 når n. Example 0.7. To dyreslag, et byttedyr og et rovdyr, lever i det samme området. Dersom det ett år er x n byttedyr og y n rovdyr i området, tenker man seg at antall dyr året etter er gitt ved x n+1 = ax n bx n y n y n+1 = c y n+1 + dx n y n der a,b,c,d er positive tall. Legg merke til logikken; kryssleddene x n y n representerer møter mellom byttedyr og rovdyr, og slike møter reduserer veksten av byttedyr, men bidrar til vekst i rovdyrbestanden. Hvis vi innfører funksjonen F : R 2 R 2 ved ( xn og lar x n = y n ( x F y ) ( ax bx y = c y + dx y ), ser vi at systemet ovenfor kan skrives som x n+1 = F(x n ). 11 )

Det er ikke lett å gjette hvordan et system av denne typen vil utvikle seg i tiden, så la oss bruke MATLAB som hjelpemiddel til å se på et spesielt tilfelle. Vi velger a = 1.01,b = 3 10 5,c = 0.98,d = 10 5. Følgende m-fil regner ut utviklingen når vi starter med m byttedyr og k rovdyr og gjennomfører N iterasjoner. Vær oppmerksom på at det er en liten forskyvning i nummereringen av leddene i følgen; i teoretisk arbeid får vi ofte penest uttrykk om vi begynner iterasjonen med punkt nummer 0 (altså x 0 som ovenfor), men i programmet nedenfor har vi tatt hensyn til MATLABs forkjærlighet for å la startpunktet være nummer 1 (og ikke nummer 0). function [x,y]=byttedyr(m,k,n) x=[m]; %med disse linjene forteller vi y=[k]; %MATLAB at iterasjonen starter i punktet (m,k) for n=1:n % starter løkken som utfører iterasjonene x(n+1)=1.01*x(n)-3*10^(-5)*x(n)*y(n); y(n+1)=0.98*y(n)+10^(-5)*x(n)*y(n); end %avslutter for-løkken Dersom vi ønsker å se grafisk på utviklingen når vi starter med 1000 byttedyr og hundre rovdyr, kan vi gi kommandoene [x,y]=byttedyr(1000,100,1000); plot(x) hold on plot(y, r ) Vi får dette resultatet: Figur 1: Utviklingen av byttedyr (øverst) og rovdyr (nederst). 12

Vi ser at bestandene følger et bølgemønster med klare topper og bunner. Logikken er ikke så vanskelig å forstå; til å begynne med er det relativt få rovdyr, og byttedyrbestanden vokser. Dette fører til gode betingelser for rovdyrbestanden som også begynner å vokse kraftig. Til slutt gjør rovdyrene så kraftig innhogg at byttedyrbestanden begynner å avta. Etter hvert fører dette til dårligere forhold for rovdyrene, og rovdyrbestanden begynner også å avta. Dette gir etter hvert bedre forhold for byttedyrene som begynner å ta seg opp igjen osv. Example 0.8. Vi skal tegne grafen til f (x, y) = x 3 4y 2 over rektangelet x [ 3,3], y [ 5,5]. Vi lager først en oppdeling av de to intervallene vi er interessert i, ved å skrive r=-3:0.1:3; s=-5:0.1:5; (husk semikolon etter kommandoene, ellers vil du få lange tallremser som output!) Her har vi valgt å dele opp begge intervallene i skritt med lengde 0.1, men du kan godt velge en finere eller grovere oppdeling. Det kan være lurt å prøve en skikkelig grov oppdeling (f.eks. skrittlengde 0.5) en gang slik at du virkelig ser hvordan MATLAB tegner grafer. Neste skritt er å lage et rutenett av oppdelingene våre. Dette gjør vi med kommandoen >> [x,y]=meshgrid(r,s);} Vi kan nå definere funksjonen: >> z=x.^3-4*y.^2; (husk å bruke.-versjonene av de algebraiske operasjonene!) Dermed er vi klare til selve plottingen som utføres av kommandoen >> mesh(x,y,z) Grafen kommer opp i et eget figurvindu akkurat som for todimensjonale figurer, og ser ut som et fiskegarn med knuter i plottepunktene. Ved å gå inn på menyen i grafvinduet, kan du dreie flaten i rommet (aktiver musa ved å klikke på et ikon som symboliserer dreiing). Dette er ofte nødvendig for å få et godt inntrykk av hvordan grafen ser ut! Bruker du kommandoen surf(x,y,z) istedenfor mesh(x,y,z), vil MATLAB tegne grafen med fargelegging av hvert ruteelement. Det er ofte klargjørende når grafen varierer mye. Vil du se nivåkurvene istedenfor grafen, bytter du ut med kommandoen >> contour(x,y,z) 13

Når du bruker contour på denne måten, velger MATLAB selv hvilke nivåkurver den skal tegne. MATLAB er ikke alltid flink til å finne de mest interessante nivåkurvene, og det kan også tenkes at vi er interessert i helt konkrete nivåer, som programmet umulig kan gjette på. Derfor hender det at du må hjelpe til ved å angi konkrete nivåer: Dersom vektoren v = (v 1, v 2,..., v n ) er lagt inn, vil kommandoen >> contour(x,y,z,v) tvinge MATLAB til å tegne nivåkurvene med verdier v 1, v 2,..., v n. Vil du bare regulere antall nivåkurver, men ikke spesifisere verdiene, kan du bruke denne kommandoen >> contour(x,y,z,n) som får MATLAB til å tegne opp n nivåkurver. Med kommandoen clabel får du MATLAB til å skrive nivået til nivåkurvene på grafen. Prøv >> clabel(contour(x,y,z,12)) MATLAB vil normalt tegne nivåkurvene i forskjellige farger. Dette er nyttig på skjermen, men kan være mindre praktisk dersom du ønsker å lime figuren inn i et svart-hvitt dokument. Skriver du >> contour(x,y,z,8, k ) får du 8 nivåkurver tegnet i svart ( k er symbolet for svart farge). Ønsker du at MATLAB skal tegne nivåkurvene og grafen i samme plot, bruker du kommandoen >> meshc(x,y,z) Det finnes mange andre kommandoer du også kan bruke (og mange flere måter å modifisere kommandoene ovenfor på!). Skriv >> help graph3d for å få en oversikt. 14