7 3D-Graphik Kurven im R 3

Ähnliche Dokumente
Einführung in Matlab, 2. Teil

MATLAB Flächendarstellungen

Einführung in die Programmierung (MA8003)

Einführung in die Programmierung (MA8003)

MATLAB: Kapitel 2 Grafiken

LABORÜBUNG MATLAB/OCTAVE

MATLAB Kurs SS Boris von Loesch. Technische Universität München Center for Mathematical Sciences, Chair of Mathematical Optimization

Matlab Praktikum - Tag 4

MATLAB Kurs SS Boris von Loesch. Technische Universität München Center for Mathematical Sciences, Chair of Mathematical Optimization

Einführung in das rechnergestützte Arbeiten

Mathematik am Computer 7. Vorlesung: Matlab, Teil II

Numerik-Programm, mittlerweile mit vielen Erweiterungen (Toolboxen) Matlab = Matrix Laboratory Sehr gute Doku (doc, help, lookfor)

Grafische Darstellung von Funktionen

6. Grafik in MATLAB (2)

2 Matrizen und Vektoren

Einführung in. Pierre Bayerl

Grafik ab Version R2014b. Beispiele und Matlab-Version. Versionsabhängiger Code. 6. Grafik in MATLAB (2) 6.0 Graphik in Version 2014b

Prof. Dr. Stefan Funken, Dipl.-Ing. Christoph Erath 6. Juni WiMa-Praktikum (Matlab 4/8) Einführung in LATEXund Matlab

MATLAB-Toolskurs HS17

Wima 1 - Praktikum (Woche 5)

WiMa-Praktikum 1. Woche 5

Visualisierung. Visualisierung von Funktionen f : R 2 R. meshgrid. mesh, surf. fill. contour. colorbar, colormap

Anleitung zu Blatt 1 Analysis III für Studierende der Ingenieurwissenschaften

Visualisierung. Eine Demofunktion. Tensorgitter. Visualisierung von Funktionen f : R 2 R. meshgrid. mesh, surf. fill. contour. colorbar, colormap

Matlab: eine kurze Einführung

Matlab Selbstlernkurs

Einführung in MATLAB DLR Göttingen

Anwendungssoftware III (MATLAB)

Einführung in Matlab

Octave/Matlab-Übungen

MATLAB. 18. Mai 2010 MATLAB. Eine Einführung. Marina Schneider. Inhalt. Allgemeines zu MATLAB und erste Schritte. Vektoren und Matrizen.

Grundlagen der Optimierung. Übung 1

Computerorientiertes Problemlösen

7 Grafik in der Ebene (2D-Graphik)

= r ). Beispiele. 1) Kreis. Skizze mit Tangentialvektoren ( x. 2) Zykloide. Skizze für a = r = 1:

Einführung in die Grundlagen von Matlab. Ralph Neubecker

Programmierpraktikum im WS 2010/2011

Octave/Matlab-Übungen

Matlab: eine kurze Einführung

High Performance Computing Blatt 7

Praktikum zur Vorlesung: Numerische Mathematik für Lehramt SS Matlab: Fortsetzung. Jan Mayer. 4. Mai 2006

4.2 Selbstdefinierte Matlab-Funktionen 1. Teil

Aufgabenkomplex 4: Differenzialgleichungen, Eigenwertprobleme

Schülerworkshop Computertomographie Mathematik als Schlüsseltechnologie

3 Kurzeinführung in Matlab

1 Kurven und Kurvenintegrale

Kurzeinführung Matlab

Serie 4. Analysis D-BAUG Dr. Cornelia Busch FS 2015

Prüfung - Applikationssoftware und Programmierung

Numerisches Programmieren, Übungen

Einführung in MATLAB

Prof. Dr. J. Schumacher Merkblatt zur Strömungsmechanik 1 Institut für Thermo- und Fluiddynamik Technische Universität Ilmenau

Lineare Transformationen und Determinanten. 10-E Ma 1 Lubov Vassilevskaya

1 Starten und Installation von gnuplot

Einführung Matlab Aufgabenkatalog

Interpolation und Approximation von Funktionen

4 Lineare Abbildungen

MATHEMATIK 2 FÜR DIE STUDIENGÄNGE CHEMIE UND LEBENSMITTELCHEMIE

Verallgemeinerung von Sin, Cos, Tan mit GeoGebra

Lineare Algebra für D-ITET, D-MATL, RW. Beispiellösung für Serie 2. Aufgabe 2.1. Dr. V. Gradinaru D. Devaud A. Hiltebrand.

Übungsblatt 3 Musterlösung

Übungsblatt 2 Musterlösung

Eine Einführung zum numerischen Programmieren mit Matlab

Aufgabenkomplex 3: Integralrechnung, Kurven im Raum

Übungen zur Ingenieur-Mathematik III WS 2012/13 Blatt

Analysis III für Studierende der Ingenieurwissenschaften

Mathematik I für MB und ME

Mathematik für Anwender II

Analysis II für Studierende der Ingenieurwissenschaften

Woche 18/01 26/01 6. Iterative Lösungsverfahren, Speicherformate für Matrizen 1 / 8

Serie 9: Der Satz von Green und Parametrisierungen von Flächen im Raum

2x + y = 19 4x + 4y = 13 4x y = 17

27. Parametrisierungen In der letzten Serie haben wir den durch die Gleichung > Teq:=(3+z^2)^2+(x^2+y^2)^2+2*(x^2+y^2)*(z^2-5)=0;

Totale Ableitung und Jacobi-Matrix

Effizientes Programmieren

NUMERISCHE MATHEMATIK I

Matlab. Kap. I Basics of Matlab. Variablentypen und Nutzung Visualisierung in 2D und 3D. Jetzt geht s erst richtig los:

3. Grafik in MATLAB (1)

7. Strukturmechanische Schwingungen mit der Finiten Elemente Methode

Die Programmieraufgaben

Wima 1 - Praktikum (Woche 6)

Technische Universität München. Aufgaben Mittwoch SS 2012

Lösungsvorschlag zum zweiten Übungsblatt

Übungsaufgabe Numerische Lösung DGL

1 Definition und Konstruktion vektorwertiger Funktionen und Funktionen mehrerer Variabler

Prof. Dr. Barbara Wohlmuth Lehrstuhl für Numerische Mathematik. MATLAB-Kurs. MATLABKURS (Title01) 1

Einführung in GNUPLOT

6. Polynom-Interpolation

Tutorium Mathematik II, M Lösungen

Anleitung zu Blatt 6, Analysis II

m-files sind Folgen von MATLAB-Anweisungen oder Daten-Files.

Tutorial: Numerisch Differenzieren

Analysis II - 2. Klausur

Grafik. Computermathematik. Addendum. Literatur. Der Befehl plot

Einführung in MATLAB / GNU Octave

Strukturmechanische Schwingungen mit der Finiten Elemente Methode

4.1. Vektorräume und lineare Abbildungen

Richtungsableitungen.

Transkript:

7 3D-Graphik

7 3D-Graphik 64 7. Kurven im R 3 plot3 Dieser Befehl funktioniert analog wie plot, nur das hier noch ein Vektor mit den z-koordinaten hinzukommt. Wir plotten die Kurve [, 6π] R 3 : t (cos t, sin t, t). t = linspace(,6*pi,); x = cos(t); y = sin(t); z = t; plot3(x,y,z) xlabel( x ) ylabel( y ) zlabel( z ) % beschriftet die z-achse grid on

7 3D-Graphik 65 Alternativ dazu würde auch der line-befehl funktionieren: line(x,y,z).

7 3D-Graphik 66 7. Funktionen mit zwei Unbekannten, Flächen im R 3 Um Funktionen mit einer Unbekannten zu plotten wurde ein x-vektor erzeugt, d.h. ein Intervall in einzelne Punkte zerlegt, und für die Werte die Funktionswerte y = f(x) berechnet. Für Funktionen mit zwei Unbekannten benötigen wir zuerst ein Gitter. Die Funktionwerte werden dann an den Gitterpunkten berechnet. Wir erzeugen ein Gitter definiert durch den x-vektor (,.5,,.5, ) und durch den y-vektor (,, 3, 4) (Kartesisches Produkt).

7 3D-Graphik 67 4 (,4) (.5,4) (,4) (.5,4) (,4) 3 (,3) (.5,3) (,3) (.5,3) (,3) y (,) (.5,) (,) (.5,) (,) (,) (.5,) (,) (.5,) (,).5.5 x Die x-koordinaten und y-koordinaten der Gitterpunkte werden in einer 4 5 Matrix X und in einer 4 5 Matrix Y abgespeichert. Die z-koordinaten Z = f(x, Y ) werden durch elementweise Operationen berechnet.

7 3D-Graphik 68 Die Matrizen X und Y erhalten wir mit dem Befehl meshgrid: x = :.5:; y = :4; [X,Y] = meshgrid(x,y) X =.5..5..5..5..5..5..5..5. Y = 3 3 3 3 3 4 4 4 4 4

7 3D-Graphik 69 Die Matrix Y steht auf dem Kopf, da die Zeilenindizes von Y natürlich von oben nach unten wachsen. Somit ist auch (X(, ), Y (, )) der Gitterpunkt links unten, also (,). Unsere Funktion sei z = f(x, y) = x. Z = X.^ Z =.5..5 4..5..5 4..5..5 4..5..5 4.

7 3D-Graphik 7 Diese Funktion kann nun mit dem Befehl mesh gezeichnet werden: Syntax: mesh(x,y,z) oder mesh(x,y,z,c) C ist eine Matrix und dient zur Einfärbung der Fläche (siehe später). mesh(x,y,z) 4 4 Die Netzlinien sind entsprechend der Höhe (z-wert) eingefärbt.

7 3D-Graphik 7 Verschiedene Gitter Die Punkte in x und y müssen nicht äquidistant sein. x = [,,.5,.75,]; y = [,3, 3.5 4]; [X,Y] = meshgrid(x,y); 4 3.5 3 y.5.75 x

7 3D-Graphik 7 Das Gitter muss auch nicht rechteckig sein. Beispiel: Ein Gitter auf einem Viertelkreisring. Ein rechteckiges Gitter wird in ein Gitter auf einem Viertelkreisring transformiert. Mit Hilfe der Abbildung (Polarkoordinaten) x(r, ϕ) = r cos ϕ, y(r, ϕ) = r sin ϕ mit r [, ] und ϕ [, pi/]. r = linspace(,,5); phi = linspace(,pi/,); [R,PHI] = meshgrid(r,phi); X = R.*cos(PHI); Y = R.*sin(PHI);

7 3D-Graphik 73.5 phi.5 y.5 r x Es können nur Gitter erzeugt werden, die man durch Transformation aus einem rechteckigen Gitter (Matrix) erhält. Es können aber Teile des Gitters weggelassen werden indem Elemente der Matrizen X, Y oder Z mit NaN (Not a Number) belegt werden.

7 3D-Graphik 74 Wir zeichnen nun auf dem Viertelkreisring die in kartesischen Koordinaten gegebene Funktion z = f(x, y) = x : Z = X.^; mesh(x,y,z) 4

7 3D-Graphik 75 Jetzt zeichnen wir die in Polarkoordinaten gegebene Funktion z = g(r, ϕ) = r = x + y. Die Funktion wird auf dem (r, ϕ)-gitter berechnet. Bei der Transformation auf den Viertelkreisring werden die Funktionswerte einfach mitgenommen. Z = R.^; mesh(x,y,z) 4 3

7 3D-Graphik 76 Eine Fläche kann auch durch eine Parametrisierung mit zwei Parametern erzeugt werden. Beispiel: x = cos s, y = t, z = sin t mit s [, π] und t [, 5]. s = linspace(,pi,9); t = linspace(,5,9); [S,T] = meshgrid(s,t); X = *cos(s); Y = T; Z = *sin(s); mesh(x,y,z) axis equal

7 3D-Graphik 77 z 5 4 y 3 x

7 3D-Graphik 78 Der Befehl surf Der Aufruf wie bei mesh. Unterschied: Die Fläche ist schattiert. Mit den Matrizen aus dem vorigen Beispiel erhalten wir mit surf(x,y,z): z 5 4 y 3 x Default-Einstellung: Facetten werden eingefärbt, zusätzlich werden Gitterlinien gezeichnet.

7 3D-Graphik 79 Mit dem Befehl shading können diese Einstellungen geändert werden. shading flat Gitterlinien werden nicht gezeichnet shading interp Farbverlauf durch Interpolation shading facetted default z 5 shading flat z 5 shading interp y x y x

7 3D-Graphik 8 Der Befehl colormap Eine Farbkarte wird mit dem Befehl colormap festgelegt. Syntax: colormap(map) map ist eine n 3- Matrix. In jeder Zeile steht die Definition einer RGB-Farbe. Dies ist jeweils ein 3 Vektor mit Werten zwischen und für rot, grün, und blau. Syntax: map = colormap Auslesen der aktuellen Farbkarte in die Matrix map. Mit den Befehlen hsv, jet,... werden 64 x 3 Matrizen definiert. Mit hsv(n), jet(n),... n 3-Matrizen

7 3D-Graphik 8 hsv jet gray cool hot spring summer autumn winter copper bone white pink colorcube lines flag prism

7 3D-Graphik 8 Selbstdefinierte Farben: t = linspace(,,6) ; map = [t,ones(length(t),)/]; map =.5.5..5.5.4.5.5.6.5.5.8.5.5..5.5 surf(x,y,z) colormap(map) shading interp

7 3D-Graphik 83 5

7 3D-Graphik 84 Mit 8 Farben: 5 Je mehr Zeilen die Matrix map enthält (mehr Farben), desto feiner ist der Farbverlauf. Die Farben wurden entsprechend dem Wert der z-koordinate der Gitterpunkte gewählt. In unserem Beispiel wird das Intervall [,] (kleinster und größter z-wert) auf das Intervall [, Anzahl Farben] abgebildet und auf ganze Zahlen

7 3D-Graphik 85 gerundet. Der Befehl caxis([cmin, cmax]) bestimmt welches Intervall [cmin, cmax] auf die Farbkarte abgebildet wird. mesh(x,y,z,c), surf(x,y,z,c) Fall shading facetted oder shading flat: C muss eine (m ) (n )-Matrix sein ([m,n]=size(z)). C(i,j) wird auf die Farbkarte abgebildet und bestimmt Farbe der Facette. Fall shading interp: C muss eine m n-matrix sein ([m,n]=size(z)). C(i,j) wird auf die Farbkarte abgebildet und bestimmt die Farbe der Gitterpunkte für die Interpolation.

7 3D-Graphik 86 Beispiel: Die Temperatur des Zylindermantels sei durch folgende Funktion definiert: T (s, t) = ( t). sin(s) (auf dem (s, t)-gitter des Zylindermantels) Der Befehl colorbar zeichnet eine Farbskala. temp = *(-T).*sin(S); surf(x,y,z,temp) colormap(jet(8)) shading interp colorbar

7 3D-Graphik 87 8 6 4 5

7 3D-Graphik 88 Falls es stört, dass auch positive Temperaturen blau dargestellt werden: caxis([-,]) colorbar 5 5 5

7 3D-Graphik 89 Die Blickrichtung einstellen, view view([az,el]) view([x,y,z]) [az,el] = view view() view(3) Azimuth und Elevation setzen. [x,y,z] Vektor, der die Blickrichtung bestimmt. Azimuth und Elevation auslesen. -dimensional. 3-dimensional.

7 3D-Graphik 9 Die Blickrichtung kann auch mit der Maus eingestellt werden. Taste ganz rechts in der Toolbar des Graphikfensters drücken.

7 3D-Graphik 9 Weitere Befehle für Flächen meshc, surfc: Wie mesh bzw. surf. Es werden zusätzlich Höhenlinien gezeichnet. meshz: Wie mesh. Ein Vorhang hängt an den Seiten herunter. surfl: Wie surf. Die Fläche wird aber beleuchtet

7 3D-Graphik 9 7.3 Höhenlinien contour(x,y,z) Zeichnet die z-werte als Höhenlinien, X, Y und Z sind Matrizen wie für mesh und surf. contour(x,y,z,n) Zeichnet n Höhenlinien (äquidistant). contour(x,y,z,v) Der Vektor v enthält die Niveaus, für die Höhenlinien gezeichnet werden. Falls nur eine Höhenlinie gezeichnet werden soll, muss v das Niveau zweimal enthalten (z.b.: v = [,]). Die Beschriftung der Höhenlinien erfolgt mit clabel. [c,h] = contour(argumente wie oben); clabel(c,h) contourf Wie contour, die Bereiche zwischen den Höhenlinien sind, je nach Niveau, eingefärbt. Auch die Befehle shading und colormap können hier verwendet werden.

7 3D-Graphik 93 7.4 Vektorfelder quiver(x,y,vx,vy) zeichnet Vektoren (VX(i,j),VY(i,j)) in den Punkten (X(i,j),Y(i,j)). Mit [VX,VY]=gradient(Z,x,y) kann das Gradientenfeld einer Fläche z = f(x, y) auf einem rechteckigen Gitter numerisch berechnet werden. Die Vektoren x und y sind jene Vektoren, die die Matrizen X und Y mit meshgrid erzeugen. Damit man die Vektoren erkennen kann, sollte ein grobes Gitter verwendet werden. Die Vektoren sind mit einem gemeinsamen Faktor skaliert, haben also im Allg. nicht die wirkliche Länge.

7 3D-Graphik 94 7.5 Beispiele zu contour, quiver und gradient, surfl, surfc, meshz x = linspace(-,,); y = linspace(-,,); [X,Y] = meshgrid(x,y); Z = X.*exp(-(X-Y).^); % contour figure() contour(x,y,z) title( contour(x,y,z) ) figure() [c,h] = contour(x,y,z,-:.:); clabel(c,h); title( contour(x,y,z,-:.:) )

7 3D-Graphik 95 figure(3) contourf(x,y,z,-:.:); colorbar title( contourf(x,y,z,-:.:) ) % quiver figure(4) x_grob = -:.:; y_grob = -:.:; [X_grob,Y_grob] = meshgrid(x_grob,y_grob); Z_grob = X_grob.*exp(-(X_grob-Y_grob).^); [GRAD_Z_X,GRAD_Z_Y] = gradient(z_grob,y_grob,y_grob); quiver(x_grob,y_grob,grad_z_x,grad_z_y) hold on contour(x,y,z,-:.:); axis([-,,-,]) hold off title( quiver und contour )

7 3D-Graphik 96 % surfl figure(5) surfl(x,y,z) colormap(gray) shading interp title( surfl(x,y,z) ) % surfc figure(6) surfc(x,y,z) colormap(copper) shading interp title( surfc(x,y,z) ) % meshz figure(7) meshz(x_grob,y_grob,z_grob) shading interp title( meshz(x_grob,y_grob,z_grob )

7 3D-Graphik 97 contour(x,y,z) contour(x,y,z,-:.:) -...4..3.5.7.6 -.5 -.6 -.4 -.3 -. contourf(x,y,z,-:.:).5 quiver und contour.5

7 3D-Graphik 98 surfl(x,y,z) surfc(x,y,z) meshz(xgrob,ygrob,zgrob)

7 3D-Graphik 99 7.6 Flächen durch beliebig angeordnete Datenpunkte Matlab bietet auch die Möglichkeit Flächen durch Datenpunkte zu zeichnen, deren Anordnung nicht auf ein rechteckiges Gitter basiert. Mit delaunay und trimesh bzw. trisurf Es seien die x- und y-koordinaten der Punkte in den Vektoren x und y sowie z = f(x, y) im Vektor z abgespeichert. tri = delaunay(x,y) erzeugt eine Triangulierung durch die Punkte (x(i),y(i)). tri ist eine n 3-Matrix, in der in jeder Zeile ein Dreieck durch drei Knotennummern (= Index für die Koordinaten in x und y) definiert ist. Um eine Fläche über dieser Triangulierung zu zeichnen, werden die Befehle trimesh(tri,x,y,z) und trisurf(tri,x,y,z) verwendet.

7 3D-Graphik Mit griddata, Umrechnen auf ein rechteckiges Gitter Wir erzeugen mit meshgrid Matrizen X Gitter und Y Gitter, d.h. ein rechteckiges Gitter. Mit Z Gitter = griddata(x,y,z,x Gitter,Y Gitter) werden durch lineare Interpolation die z-werte über dem Gitter berechnet. Dazu wird von griddata zuerst mit delaunay eine Triangulierung berechnet. Die Gitterpunkte (X Gitter(i,j),Y Gitter(i,j),Z Gitter(i,j)) liegen auf den Dreiecken (Ebenen) im R 3. Diese Verfahrensweise hat den Vorteil, dass wieder alle obigen Befehle wie surf, contour,... verwendet werden können. Statt linearer Interpolation kann auch kubische Interpolation verwendet werden. Dazu ist als sechstes Argument cubic zu übergeben.

7 3D-Graphik x = rand(5,)*-; y = rand(5,)*-; z = x.*exp(-(x-y).^); % delaunay tri = delaunay(x,y); % Gitter figure() trisurf(tri,x,y,zeros(size(x))) hold on plot(x,y, o ) view() hold off title( Triangulierung ) % trisurf figure() trisurf(tri,x,y,z) title( trisurf(tri,x,y,z) ) printit( ugrid )

7 3D-Graphik % trisurf shading interp figure(3) trisurf(tri,x,y,z) shading interp title( trisurf(tri,x,y,z), shading interp ) % mit griddata cubic figure(4) xi = linspace(-,,5); yi = linspace(-,,5); [XI,YI] = meshgrid(xi,yi); ZI = griddata(x,y,z,xi,yi, cubic ); surf(xi,yi,zi) title( mit griddata )

7 3D-Graphik 3 Triangulierung trisurf(tri,x,y,z) trisurf(tri,x,y,z), shading interp mit griddata