Mer om funktioner och grafik i Matlab

Relevanta dokument
Mer om funktioner och grafik i Matlab

Mer om funktioner och grafik i Matlab

Grafik och Egna funktioner i Matlab

Funktioner och grafritning i Matlab

Funktioner och grafritning i Matlab

Matriser och Inbyggda funktioner i Matlab

Mer om funktioner och grafik i Python

Matriser och Inbyggda funktioner i Matlab

Grafritning kurvor och ytor

Kurvor, fält och ytor

Grafritning kurvor och ytor

Matriser och linjära ekvationssystem

Introduktion till Matlab

Parametriserade kurvor

Index. Vektorer och Elementvisa operationer. Summor och Medelvärden. Grafik i två eller tre dimensioner. Ytor. 20 januari 2016 Sida 1 / 26

Matriser och vektorer i Matlab

Linjära ekvationssystem i Matlab

TANA17 Matematiska beräkningar med Matlab

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 2 november 2015 Sida 1 / 23

Introduktion till Matlab

TAIU07 Matematiska beräkningar med Matlab

Matlab övningsuppgifter

At=A' % ' transponerar en matris, dvs. kastar om rader och kolonner U' % Radvektorn U ger en kolonnvektor

Laborationstillfälle 1 Lite mer om Matlab och matematik

Matriser och vektorer i Matlab

Funktionsytor och nivåkurvor

Funktionsytor och nivåkurvor

Variabler. TANA81: Beräkningar med Matlab. Matriser. I Matlab skapas en variabel genom att man anger dess namn och ger den ett värde:

Matlabövning 1 Funktioner och grafer i Matlab

CTH/GU LABORATION 1 MVE /2013 Matematiska vetenskaper. Mer om grafritning

Introduktion till Matlab

ATT RITA GRAFER MED KOMMANDOT "PLOT"

Introduktion till Matlab

Linjära ekvationssystem

Grafritning och Matriser

Matlabövning 1 Funktioner och grafer i Matlab

Introduktion till MATLAB

Beräkningsverktyg HT07

Programmering i Matlab

Geometriska transformationer

Introduktion till Matlab

TSBB14 Laboration: Intro till Matlab 1D

M0043M Integralkalkyl och Linjär Algebra, H14, Matlab, Föreläsning 1

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 9 november 2015 Sida 1 / 28

Introduktion till Matlab

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Tid: 21:a April klockan

TEKNISKA HÖGSKOLAN Matematik Fredrik Abrahamsson. Introduktion till MATLAB

Kort om programmering i Python

Introduktion till Matlab

Uppgift 1 - programmet, Uppg6.m, visade jag på föreläsning 1. Luftmotståndet på ett objekt som färdas genom luft ges av formeln

4.4. Mera om grafiken i MATLAB

Introduktion till Matlab

Kort om programmering i Matlab

Datorövning 1 Fördelningar

Introduktion till Matlab

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Tid: 14:e januari klockan

15 februari 2016 Sida 1 / 32

Flervariabelanalys och Matlab Kapitel 4

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Hjälpmedel: MATLAB

Datorövning 1: Fördelningar

Flervariabelanlys och Matlab Kapitel 1

% Föreläsning 4 22/2. clear hold off. % Vi repeterar en liten del av förra föreläsningen:

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Tid: 13:e januari klockan

Några geometriska konstruktioner i R 3

(a) Skriv en matlabsekvens som genererar en liknande figur som den ovan.

Laboration: Grunderna i MATLAB

MATLAB övningar, del1 Inledande Matematik

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI

Introduktion till Matlab

Lab 1, Funktioner, funktionsfiler och grafer.

Syftet med den här laborationen är att du skall bli mer förtrogen med följande viktiga områden inom matematisk statistik

Symboliska beräkningar i Matlab

Kort om programmering i Matlab

TAIU07 Matematiska beräkningar med MATLAB för MI. Fredrik Berntsson, Linköpings Universitet. 15 januari 2016 Sida 1 / 26

Institutionen för Matematik. SF1625 Envariabelanalys. Lars Filipsson. Modul 1

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 9p av totalt 20p Hjälpmedel: MATLAB

Newtons metod. 1 Inledning. 2 Newtons metod. CTH/GU LABORATION 6 MVE /2013 Matematiska vetenskaper

Mer om linjära ekvationssystem

Optimeringsproblem. 1 Inledning. 2 Optimering utan bivillkor. CTH/GU STUDIO 6 TMV036c /2015 Matematiska vetenskaper

Laboration: Grunderna i Matlab

Grunderna i MATLAB. Beräkningsvetenskap och Matlab

KPP053, HT2016 MATLAB, Föreläsning 3. Plotter och diagram Läsa och skriva data till fil

TMV156 Inledande matematik E, 2010 DATORÖVNING 2 ANONYMA FUNKTIONER, FUNKTIONSGRAFER OCH LITE OPTIMERING

Matriser. Vektorer. Forts. Grunderna i MATLAB. Informationsteknologi. Informationsteknologi.

En introduktion till MatLab

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 27 oktober 2015 Sida 1 / 31

Transformationer i R 2 och R 3

TANA17 Matematiska beräkningar med Matlab

Inledning. CTH/GU LABORATION 4 MVE /2017 Matematiska vetenskaper

Homogena koordinater och datorgrafik

Laboration 2: 1 Syfte. 2 Väntevärde och varians hos en s.v. X med fördelningen F X (x) MATEMATISK STATISTIK, AK FÖR BYGG, FMS 601, HT-08

7 Extremvärden med bivillkor, obegränsade områden

Introduktion till Python Teoridel

Linjärisering och Newtons metod

Lab 2, Funktioner, funktionsfiler och grafer.

Flervariabelanlys och Matlab Kapitel 4

MATLAB. Vad är MATLAB? En kalkylator för linlär algebra. Ett programspråk liknande t.ex Java. Ett grafiskt verktyg.

SF1626 Flervariabelanalys Lösningsförslag till tentamen DEL A

TAIU07 Matematiska beräkningar med Matlab

Linjär algebra. 1 Inledning. 2 Matriser. Analys och Linjär Algebra, del B, K1/Kf1/Bt1. CTH/GU STUDIO 1 TMV036b /2013 Matematiska vetenskaper

Transkript:

CTH/GU TIF7/MVE3-7/8 Matematiska vetenskaper Mer om funktioner och grafik i Matlab Inledning Först skall vi se lite på funktioner som redan finns i Matlab, (elementära) matematiska funktioner som sinus och cosinus samt funktioner för att bilda och operera på vektorer och matriser. Sedan ser vi lite på grafritning och annan grafik för att avslutningvis se hur man definerar egna funktioner. Inbyggda funktioner. Elementära funktioner Vi letar upp hjäptexterna för elementära eller matematiska funktioner i Help genom att successivt öppna MATLAB, Mathematics och sedan Elementary Math. Vi ser att funktionerna är grupperade, t.ex. en grupp med trigonometriska funktioner och en grupp med exponent- och logaritmfunktioner.

Funktioner som exempelvis sinus och cosinus, kan operera både på enskilda tal och på matriser. Man får som resultat en matris av samma storlek, vars element är funktionsvärdet av respektive element i argumentet. Som exempel tar vi som vi skriver in i Matlab enligt >> A=[ 4 7 ; 8 ; 3 6 9 ] >> c=[ 4 6 8] 4 7 A = 8, c = [ 4 6 8 ] 3 6 9 Nu beräknar vi sinus av vektorn c och matrisen A med >> v=sin(c) v =.993 -.768 -.794.9894 >> V=sin(A) V =.84 -.768.67 -.44.993 -.989.9894 -..4 -.794.4 -.366 Vi söker på tan, dvs. tangensfunktionen, och ser på hjälptexten. Uppgift. Leta upp hjälptexten du ser i figuren och rita upp tangensfunktionen enligt exemplet. Gör en skriptfil och använd cell-läge så att ni kan bygga på med kommande övningsuppgifter.

. Matris- och vektorfunktioner Vi har redan sett de inbyggda funktionerna length och size. Som exempel använder vi vektorn c och matrisen A från förra avsnittet. Antal element i vektorn c ges av >> l=length(c) l = och antalet rader och kolonner A fås med >> [m,n]=size(a) m = 3 n = 4 Största och minsta elementet i en vektor fås med funktionerna max och min. För en matris blir det de största elementen i varje kolonn. >> v=max(c) v = 8 >> v=max(a) v = 3 6 9 Vi ser på hjälptexten för max Viserattvimed[v,index]=max(c) ävenkanfåredapåvardetmaximalavärdetfinnsnågonstans. 3

Summan och produkten av elementen i vektorn fås med sum och prod. För en matris blir det summan eller produkten av varje kolonn. >> s=sum(c) s = >> s=sum(a) s = 6 4 33 Kumulativ summa (som blir en vektor) fås med cumsum och differens (som också blir en vektor) bildas med diff. >> cs=cumsum(c) cs = 6 >> ds=diff(c) ds = För en matris sker kumulationen ned längs kolonnerna och differenserna tas kolonnvis. Resultatet blir matriser i båda fallen. Användbart om vi skall approximera integral eller derivata av mätresultat. Vill vi sortera en vektor i stigande ordning gör vi det med sort. För en matris blir det varje kolonn som sorteras om i stigande ordning. 3 Matrisoperationer Vektorn c = (,,4,6,8) från förra avsnittet kan bildas på två sätt >> c=[ 4 6 8] >> c=::8 det senare lite enklare sättet kallas kolon-notation. Vi låter s få tredje värdet c 3 med s=c(3) och bildar vektorn v av andra och femte värdet, dvs. v = (c,c ), med >> v=c([,]) v = 8 Vi kan ändra ett element i v, t.ex. låta v =, med >> v()= v = 4

Vi låter s få värdet av elementet på rad, kolonn 3 i matrisen A från inledningen med s=a(,3) och vi bildar en radvektor v av rad 3, alla kolonner med >> v=a(3,:) v = 3 6 9 samt en kolonnvektor u av rad -3, kolonn med >> u=a(:3,) u = 6 Vi bildar en matris V av blocket rad -, kolonn -3 >> V=A(:,:3) V = 4 7 8 Om vi har två vektorer u = (,3,) och v = (,,3) av samma typ och vill bilda summan a = u + v och skillnaden b = u v, så gör vi det med a=u+v respektive b=u-v. Operationerna sker elementvis a = u+v = (,3,)+(,,3) = (+,3+,+3) = (3,,8) b = u v = (,3,) (,,3) = (,3, 3) = (,,) eller med andra ord a i = u i +v i och b i = u i v i. T.ex. vid grafritning behövs de elementvisa motsvarigheterna till multiplikation och division u.* v = (,3,).* (,,3) = (,3, 3) = (,6,) u./ v = (,3,)./ (,,3) = (/,3/,/3)= (,.,.666...) Här har vi lånat beteckningar från Matlab där vi skriver u.*v respektive u./v för att utföra beräkningarna. Vi behöver även elementvis upphöjt till, t.ex. kvadrering u. = (,3,). = (,3, ) = (4,9,) Även här har vi lånat beteckningen från Matlab. Det finns en funktion linspace som är bra för att bygga upp vektorer och funktionerna zeros och ones för att bygga upp matriser fylla med nollor respektive ettor samt funktionen eye för att göra enhetsmatriser. Uppgift. Använd linspace, läs hjälptexten, för att bilda vektorn d = (,,8,,4).

4 Grafik 4. Grafritning Vi har redan ritat några grafer av funktioner f(x) över ett intervall a x b. Nu ser vi på ett exempel där vi behöver den elementvisa multiplikationen från förra avsnittet. Exempel. Rita grafen till f(x) = xsin(x) över intervallet x 8. Vi bildar en vektor x = (x,x,,x n ) med värden jämnt fördelande över intervallet x 8. Sedan bildar vi vektorn y = (f(x ),f(x ),,f(x n )) = (x sin(x ),x sin(x ),,x n sin(x n )) = x.* sin(x) och ritar upp grafen. >> x=linspace(,8); >> y=x.*sin(x); >> plot(x,y) >> title( f(x) = x sin(x) ) Uppgift 3. Rita grafen till f(x) = x xcos(7x) över intervallet x 8. 4. Dela figuren Ibland vill man ha flera koordinatsystem i samma figur-fönster (Figure). Då använder man kommandot subplot. Vi ser på ett exempel. Exempel. Vi skall i samma figur göra tre olika koordinatsystem. I dessa skall vi rita grafen av sin(x), cos(x) respektive tan(x) över intervallet π x π. 6

Så här kommer det se ut >> s=.; x=linspace(-pi/+s,pi/-s); >> subplot(,,) % delar in Figure i x delar och gör :a aktiv >> plot(x,sin(x)) >> axis([-pi/ pi/ -..]), grid on, title( sinus ) >> subplot(,,3) % delar in Figure i x delar och gör 3:e aktiv >> plot(x,cos(x)) >> axis([-pi/ pi/ -..]), grid on, title( cosinus ) >> subplot(,,[,4]) % samma indelning men gör :a och 4:e aktiva >> plot(x,tan(x)) >> axis([-pi/ pi/ - ]), grid on, title( tangens ) 4.3 Kurvritning Nu skall vi rita s.k. parameterframställda kurvor. Som exempel tar vi enhetscirkeln t (x(t),y(t)) = (cos(t),sin(t)), t π När man ritar sådana kurvor ritar man inte ut parametern t utan enbart x- och y-värdena. >> t=linspace(,*pi); >> x=cos(t); y=sin(t); >> subplot(,,) >> plot(x,y) >> title( Utan axis equal ) 7

>> subplot(,,) >> plot(x,y) >> axis equal % annars blir cirkeln tillplattad >> title( Med axis equal ) Uppgift 4. Rita kurvorna t (x(t),y(t)) = (cos(t) + cos(3t),sin(t)) och t (x(t),y(t)) = (cos(t)+cos(4t),sin(t)), för t π. Använd subplot. 4.4 Polygontåg Ett polygontåg somges av (x,y ),(x,y ),,(x n,y n ), ritasupp i Matlab genomatt man bildar vektorerna x = (x,x,,x n ) och y = (y,y,,y n ) och sedan gör plot(x,y). Grafritning är ett polygontåg vi ritar upp. Tag t.ex. grafen till f(x) = sin(x) för x π. Vi har då x = (x,x,,x n ) med = x < x < < x n = π och y = (y,y,,y n ) med y i = sin(x i ). Sedan ritar vi upp med plot(x,y). Om polygontåget är slutet, dvs. x n = x och y n = y, och om det inte korsar sig självt så omsluter det ett område i planet, ett s.k. polygonområde. Vi kan använda fill för att färglägga ett sådant område. Vi ritar upp polygontåg som ges av (.,.),(.8,.),(.9,.7),(.,.), dvs. en triangel. >> x=[..8.9.]; >> y=[...7.]; >> subplot(,,) >> plot(x,y, -o ) >> axis([.8]) Med -o anger vi att punkterna både skall förbindas med räta linjer och markeras med små ringar. Vi fyller området med grön färg och vi använder axis för att få lite luft runt triangeln. >> subplot(,,) >> fill(x,y, g ) >> axis([.8]) 8

Uppgift. Rita cirkel som fylls med grön färg och rita en inskriven kvadrat i en cirkel, som fylls med gul färg (använd hold on). Egna funktioner Exempel 3. Vi skall rita grafen av f(x) = sin(ax) x över intervallet x, för a =,, och 3. Vi måste tänka på att f(x) inte definierad i x =. Finns gränsvärdet och vad blir det i så fall? 9

>> s=.; % s för att separera nollan >> xn=linspace(-,-s); % xn negativa x-värden >> xp=linspace(s,); % xp positiva x-värden Nu behöver vi elementvis division och vi inför ett funktionshandtag (function handle). Vi ser först på fallet a = >> f=@(x)sin(x)./x; >> plot(xn,f(xn), r,xp,f(xp), r ) Nu skall vi ta fallen a = och 3 också. Enklast är om vi gör om vårt funktionshandtag så att även a blir ett argument. >> f=@(x,a)sin(a*x)./x; >> plot(xn,f(xn,), r,xp,f(xp,), r ) % a= >> hold on >> plot(xn,f(xn,), b,xp,f(xp,), b ) % a= >> plot(xn,f(xn,3), g,xp,f(xp,3), g ) % a=3 >> hold off Exempel 4. Kastbana utan luftmotstånd beskrivs av y(x) = y g v cos (θ) ( x v sin(θ) g där v är utkastfarten, y är utkasthöjden och θ är utkastvinkeln. ) + v sin (θ) Tag v = m/s, y =.8 m och rita kastbanorna för några olika utkastvinklar. Vi gör en function med namnet kastbana som beskriver kastbanan för olika utkastvinklar. g

Vi gör ett script för att rita graferna. Med kommandot text placerar vi ut lite förklarande text vid graferna. Uppgift 6. Skriv den function och det script för kastbanan som vi pratar om i exemplet. Rita graferna. Varför delar vi upp funktionsuttrycket för y(x) i flera delar? 6 Lite om kurvor och ytor i R 3 Som exempel på en kurva i R 3 tar vi spiralkurvan t (x(t),y(t),z(t)) = (cos(t),sin(t),t) för t π. z 4 3 3 z 3 3... y. x.. y. x.

Till vänster ritade vi en cirkel för jämförelse. Vi genomlöper den fem gånger samtidigt som vi rör oss uppåt för att få spiralkurvan. Vi har ritat kurvor i R med kommandot plot, t.ex. en cirkel t (x(t),y(t)) = (cos(t),sin(t)), t π. Om vi vill rita en kurva i R 3 kan vi använda kommandot plot3. Så här ritar vi spiralen >> t=linspace(,*pi,); >> plot3(cos(t),sin(t),t) >> grid on >> xlabel( x ), ylabel( y ), zlabel( z ) I kursen matematisk analys i flera variabler, studerar man funktioner som inte beror bara av en variabel, utan av flera. Man vill då bl.a. rita funktionsytor, motsvarigheten till en graf. Även om vi inte har lärt oss matematiken än, skall vi ändå rita några bilder. Exempel. Vi ser på funktionsytan, eller grafen, till funktionen över området x och y. f(x,y) = xcos(x)sin(y) Den yta vi skall rita upp består av alla punkter (x,y,f(x,y)) i R 3 där x och y. Resultatet får vi med kommandot surf, vilket är motsvarigheten till plot då vi skall rita ytor. >> x=linspace(,,3); y=linspace(,,3); >> [X,Y]=meshgrid(x,y); >> Z=X.*cos(*X).*sin(Y); >> surf(x,y,z) >> grid on >> xlabel( x ), ylabel( y ), zlabel( z = x cos(x) sin(y) ) z = x cos(x) sin(y) 4 3 y x 3 4

Ibland vill man göra en yta lite genomskinlig. >> surf(x,y,z, facealpha,.7) Vi kan också lägga på belysning och göra ytan glasaktig. >> surf(x,y,z, facecolor, interp ) >> lighting phong, camlight right 3

Uppgift 7. Rita funktionsytan till över området x, y. f(x,y) = xyexp( (x +y )) Vi ser på tre parametriserade ytor som till utseendet är välbekanta. Exempel 6. En cirkulär cylinder med radien r och höjden h som kan beskrivas av x +y = r, z h Vi kan också göra en s.k. parametrisering x(s,t) = rcos(t) y(s,t) = rsin(t) z(s,t) = s där s h och t π. Parametriseringen gör att vi lätt kan rita upp ytan i Matlab. Vi ritar en bild av en cylinder med radien r =. och höjden h = 6 enligt r=.; h=6; n=4; m=; s=linspace(,h,m); t=linspace(,*pi,n); [S,T]=meshgrid(s,t); X=r*cos(T); Y=r*sin(T); Z=S; surf(x,y,z) axis equal, axis([- - 6]) colormap(cool) 6 4 3 4

En sfär med radien r och centrum i origo ges av och kan parametriseras med där s π och t π. Vi ritar upp en sfär med radien r =. x +y +z = r x(s,t) = rsin(s)cos(t) y(s,t) = rsin(s)sin(t) z(s,t) = rcos(s)........ r=; n=; m=; s=linspace(,pi,n); t=linspace(,*pi,m); [S,T]=meshgrid(s,t); % Genererar n x m matriser X, Y, Z, så att surf(x,y,z) ger sfären X=r*sin(S).*cos(T); Y=r*sin(S).*sin(T); Z=r*cos(S); surf(x,y,z) axis equal colormap(autumn) En torus med lateralradien r och centralradien a samt centrum i origo ges av (x +y +z +a r ) = 4a (x +y ) och kan parametriseras med x(s,t) = (a+rcos(s))cos(t) y(s,t) = (a+rcos(s))sin(t) z(s,t) = rsin(s) där π s π och t π. Vi ritar en torus lateralradien r =.8 och centralradien a =.

r=.8; a=; n=; m=4; s=linspace(-pi,pi,n); t=linspace(,*pi,m); [S,T]=meshgrid(s,t); % Genererar n x m matriser X, Y, Z, så att surf(x,y,z) ger torusen X=(a+r*cos(S)).*cos(T); Y=(a+r*cos(S)).*sin(T); Z=r*sin(S); surf(x,y,z) axis equal colormap(winter).. 6