240 likes | 477 Views
Föreläsning 15. Matlab överkurs. Standardmatriser. zeros(n) ger nxn-matris med bara nollor. zeros(m,n) ger motsvarande mxn-matris. ones(n) ger nxn-matris med bara ettor. ones(m,n) ger motsvarande mxn-matris. eye(n) ger nxn-identitetsmatrisen (ettor på diagonalen och nollor annars)
E N D
Föreläsning 15 Matlab överkurs
Standardmatriser • zeros(n) ger nxn-matris med bara nollor. • zeros(m,n) ger motsvarande mxn-matris. • ones(n) ger nxn-matris med bara ettor. • ones(m,n) ger motsvarande mxn-matris. • eye(n) ger nxn-identitetsmatrisen (ettor på diagonalen och nollor annars) • eye(m,n) ger motsvarande mxn-matris
Hjälp med Matlab • Skumma igenom häftet från studentexpeditionen. • Använd Matlabs inbyggda hjälp: Klicka på menyn ”Help” och välj alternativet ”Product Help”. Där kan man söka efter nyckelord. • Googla!
Elementvisa operationer • Om vi har en mxn-matris A och en nxk-matris B så gör följande en matrismultiplikation: C=A*B • C=A.*B gör istället elementvis multiplikation. Motsvarande gäller / och ./, och ^ och . ^. • Varför finns det inte en operator .+?
Inversen av matris • En nxn-matris A har en invers om det existerar en matris B sådan att A*B=I, där I är identitetsmatrisen. • inv(A) ger inversen till A i Matlab. • Vi kan (om lösbart) lösa A*x=b i Matlab enligt: x=inv(A)*A*x=inv(A)*b • Varför är x=A\b ett bättre sätt att göra detta?
Matrisfunktioner Låt A vara en matris: • rank(A) ger rangen för matrisen A. • det(A) ger matrisens determinant om A är kvadratisk. • [D,V]=eig(A) ger matrisens egenvärden som diagonalmatris D och egenvektorer som kolumnvektorer i V. Dvs: A*V=V*D
Formattering av utdata • disp(x) skriver ut objektet x, men det finns flera olika standardformat: • short, long, short e, short g, long e, long g, bank, hex, rat, compact, loose. • Prova och se vad som händer!
switch-sats • När man har många alternativ beskrivna av ett tal: switch (uttryck) case värde, vad som skall göras case värde, vad som skall göras otherwise, vad som skall göras end
Komplexa tal • Komplexa tal förekommer relativt ofta i tekniska tillämpningar. • Matlab kan hantera komplexa tal. • Bokstäverna i och j representerar den imaginära enheten. • Tänk igenom vad ni plottar om ni använder komplexa tal! (lätt att göra fel)
Slumptal • rand ger likformigt fördelat tal i [0,1]. • rand(n) ger nxn-matris med sådana tal. • rand(m,n) ger motsvarande mxn-matris. • randn ger normalfördelat tal. • Randint(m,n,[3,5]) ger likformigt fördelad mxn-heltalsmatris.
Rita upp funktionsgraf • Skapa vektor med evalueringspunkter: x=0:0.1:2*pi • Skapa vektor med funktionsvärden: y=sin(x) • Rita linjer mellan punkterna: plot(x,y)
Andra sätt att visualisera data • bar(x,y) stapeldiagram • barh(x,y) horisontellt stapeldiagram • pie(y) tårtdiagram • stairs(x,y) trapstegsdiagram • stem(x,y) variant på stapeldiagram
Enklare sätt att rita funktionsgraf • ezplot – ”easy-plot”: Ange funktion och intervall: ezplot(’sin’,[0,2*pi]) Glöm inte enkelfnuttarna! • fplot fungerar liknande som ezplot, men väljer punkter adaptivt.
Enklare sätt att rita funktionsgraf fplot kan också användas enligt: • f=@sin fplot(f,[0,2*pi]) • fplot(’x^2’,[0,10])
Histogram • Skapa 1000 normalfördelade värden: y=randn(1000,1) • Rita histogram med 15 intervall: hist(y,15)
3D-kurva • Skapa punkter: t=0:0.1:10; x=exp(-0.2*t).*cos(2t); y=exp(-0.2*t).*sin(2t); • Rita upp kurvan: plot3(x,y,t)
Rita yta i rummet • Skapa ett nät av evalueringspunkter: [x,y]=meshgrid(-4:0.1:4, -4:0.1:4); • Evaluera funktion i varje sådan punkt: z=exp(-0.5*(x.^2+y.^2)); • Rita upp resultatet: mesh(x,y,z);
Aspekter av yta i rummet • Rita upp höjdkurvor för ytan: contour(x,y,z); • Rita upp ytan och inte bara nätet: surf(x,yz)
Lägg till information • legend(’kurva1’, ’kurva2’) ger faktaruta • xlabel(’text på x-axeln’) • ylabel(’text på y-axeln’) • zlabel(’text på z-axeln’) • title(’Min titel på grafen’) • text(3,4,’extra info’)
Flera kurvor samtidigt (Alt 1) • Alternativ 1: x=0:0.1:10; y=x.^2 z=z.^3 plot(x,y,x,z)
Flera kurvor samtidigt (Alt 2) x=0:0.1:10; y=x.^2 plot(x,y) hold on x=0:0.1:10; z=x.^2 plot(x,z) hold off
Färger och linjer x=0:0.1:10; y=x.^2 plot(x,y,’g--’) • Färger: b,g,r,c,m,y,k,w • Linjer: - : -. --
Delfönster x=0:0.1:10; y=x.^2 subplot(1,1,1) plot(x,y) x=0:0.1:10; z=x.^2 subplot(2,1,1) plot(x,z)