Login
Newsletter
Werbung

Do, 12. Februar 2015, 15:00

Octave – Teil 2: Funktionen, Graphen und komplexe Zahlen

Ebenen im Raum, Plotten von mehrdimensionalen Funktionen

Eine Ebene im Raum ist eine lineare Funktion der Form R3R3 mit f(x,y)=z. Für das Plotten mehrdimensionaler Funktionen müssen aber noch einige Dinge beachtet werden. Man betrachte die Funktion y = 2x+3y

>> x=-10:1:10;
>> y = x;
>> plot3(x,y,2*x+3*y);

liefert leider nur eine Gerade, da für jeden x-Wert der entsprechende y-Wert ausgewählt wird und dies auf der x−y-Ebene eine Gerade ergibt. Der folgende Plot, in dem alle y-Werte 0 sind, zeigt dies anschaulich:

>> plot3(x,y,0*x,'o');

Der Plot von x=y=-10:1:10; ohne meshgrid

Jens Dörpinghaus

Der Plot von x=y=-10:1:10; ohne meshgrid

Es reicht also nicht, nur die x- und y-Werte als Liste zu bekommen, man braucht ein ganzes Netz. Daher ist der Befehl meshgrid eine gute Wahl:

>> [XX, YY] = meshgrid(x,y);

Hier wird mit den beiden x- und y-Achsenabschnitten in die beiden Matrizen XX und YY ein Netz von gleichmäßigen Punkten generiert. Konkret bestehen die Variablen x und y aus Listen, und meshgrid schreibt in die neuen Variablen alle Kombinationsmöglichkeiten der Einträge dieser beiden Listen. Anschaulich wird das Ganze, wenn man es zeichnet:

>> plot3(XX,YY,0*XX,'o');

Jetzt sind die Grundlagen gelegt, damit die Ebene gezeichnet werden kann:

>> plot3(XX,YY,2*XX+3*YY,'-');

Der Plot von x=y=-10:1:10; und dem dazugehörigen, mit meshgrid erzeugten Gitter

Jens Dörpinghaus

Der Plot von x=y=-10:1:10; und dem dazugehörigen, mit meshgrid erzeugten Gitter

Das Problem ist nun, dass dies immer noch nicht einer richtigen Fläche entspricht, da alle Werte nur wie eine normale Funktion miteinander verbunden sind. Die Möglichkeit, die Flächen zu triangulieren, gibt es mit plot3 nicht, wohl aber mit dem Befehl mesh:

>> mesh(XX,YY,2*XX+3*YY);

liefert das gewünschte Ergebnis. Die Farben entsprechen dabei den Werten der z-Achse. Hier wird allerdings nur ein Gitter gezeichnet. Wenn man die Flächen füllen möchte, nutzt man den Befehl surf:

>> surf(XX,YY,2*XX+3*YY);

Es sei noch erwähnt, das man neben den von plot und plot3 schon bekannten Befehlen wie xlabel auch den Befehl colorbar verwendet kann, um eine Legende für die Farben im Graph anzuzeigen.

Das Resultat von mesh

Jens Dörpinghaus

Das Resultat von mesh

Das Resultat von surf mit colorbar

Jens Dörpinghaus

Das Resultat von surf mit colorbar

Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung