2D & 3D grafer
2D grafer
Gnuplot på Mac
Octave använder gnuplot för att rita grafer. Om du använder Mac, måste du se till att gnuplot fungerar. Du kan behöva installera om gnuplot med x11 support genom att använda homebrew:
brew uninstall gnuplot;brew install gnuplot --with-x
Starta sedan Octave och skriv:
setenv("GNUTERM","X11")
För troubleshooting kolla in detta.
Plotta grafer i Octave
Då man ritar grafer i Octave plottar man punkter vars x-värden är lagrade i en vektor och vars y-värden ligger i en annan vektor. De två vektorerna måste ha samma storlek.
Man använder en x-vektor för att lagra x-värdena; sedan använder man elementvisa operationer på x-vektorn för att lägga in funktionsvärdena i y-vektorn. Med dessa två vektorer kan man sedan använda kommandot
plot(x_vector, y_vector)
>>> x=-2:2 x = -2 -1 0 1 2 >>> y=x.^2 y = 4 1 0 1 4 >>> plot(x,y)
Octave ritar linjer mellan punkterna. Om man vill ha en jämnare graf får man göra en längre x-vektor.
>>> x=-2:0.5:2; >>> y=x.^2; >>> plot(x,y)
Om man vet hur många punkter man vill plotta i ett intervall kan man låta Octave fördela punkterna linjärt genom att använda kommandot
linspace(första x-värdet, sista x-värdet, antal jämnt fördelade punkter)
>>> x=linspace(-2, 2, 500); >>> y=x.^2; >>> plot(x,y)
3D - rutnätet
Om man har en funktion av två variabler \(z=f(x,y)\), behövs det tre axlar för att visa grafen.
Då man ritar en graf i 2D används jämnt fördelade x-värden och funktionsvärden av dessa som lagras i en y-vektor.
Då man ritar en graf i 3D behövs det jämnt fördelade x-
och y-värden, placerade på ett rutnät där varje
funktionsvärde z tas av en punkt (x, y)
i rutnätet. För att åstadkomma detta används kommandot meshgrid
.
>>> x=linspace(-2,2,5) x = -2 -1 0 1 2 >>> y=linspace(-2,2,5) y = -2 -1 0 1 2 >>> [xx,yy]=meshgrid(x,y) xx = -2 -1 0 1 2 -2 -1 0 1 2 -2 -1 0 1 2 -2 -1 0 1 2 -2 -1 0 1 2 yy = -2 -2 -2 -2 -2 -1 -1 -1 -1 -1 0 0 0 0 0 1 1 1 1 1 2 2 2 2 2
Varje punkt i rutnätet tar sin x-koordinat från ett element i xx
-matrisen
och sin y-koordinat från motsvarande element i yy
-matrisen.
Allt som allt finns det 25 punkter i rutnätet.
Plotta en 3D-graf
Efter att ha gjort ett rutnät kan man plotta en 3D graf med hjälp
av kommandot mesh(xx,yy,z)
,
där xx
och yy
är matriserna skapade med
meshgrid
och där z är en funktion av x
och y. Man får funktionsvärdena av z genom
att använda elementvisa operationer på matriserna xx
och yy
.
>>> x=linspace(-2,2,5); >>> y=linspace(-2,2,5); >>> [xx,yy]=meshgrid(x,y); >>> mesh(xx,yy,4-(xx.^2+yy.^2))
Om man vill ha en jämnare graf får man göra x-vektorn och y-vektorn längre.
>>> x=linspace(-2,2,50); >>> y=linspace(-2,2,50); >>> [xx,yy]=meshgrid(x,y); >>> mesh(xx,yy,4-(xx.^2+yy.^2))
Man kan göra en konturplot med hjälp av kommandot meshc
.
>>> x=linspace(-2,2,50); >>> y=linspace(-2,2,50); >>> [xx,yy]=meshgrid(x,y); >>> meshc(xx,yy,4-(xx.^2+yy.^2))
by Malin Christersson under a Creative Commons Attribution-Noncommercial-Share Alike 2.5 Sweden License