18
29. Plot von Funktionen in zwei Variablen Wir kennen bisher die folgenden drei Typen dreidimensionaler Plots: 1. Lösungsmengen von Gleichungen f(x,y,z) = 0 mit implicitplot3d() 2. Parametrisierte Flächen mit plot3d() 3. Räumliche Kurven mit spacecurve() oder tubeplot() Bisher noch nicht direkt behandelt wurde das Plotten von Funktionsgraphen z = f(x,y). Auch hierzu wird der Befehl plot3d() verwendet, diesmal mit dem Aufruf plot3d(f,x=a..b,y=c..d) Die Variablen müssen natürlich nicht x,y heißen, man kann auch andere Namen verwenden. Als ein Beispiel betrachten wir die Funktion > f:=sin(x)*y^2-2*x; := f () sin xy 2 2 x im Bereich |x|, |y| <= Pi > R:=x=-Pi..Pi,y=-Pi..Pi; := R , = x .. −π π = y .. −π π Dabei kann man den Bereich natürlich auch direkt im plot3d()-Befehl angeben, hier wird er nur in eine Variable gepackt da er im folgenden mehrfach verwendet wird. Unser Funktionsgraph wird > plot3d(f,R,axes=framed);

29. Plot von Funktionen in zwei Variablen

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 29. Plot von Funktionen in zwei Variablen

29. Plot von Funktionen in zwei VariablenWir kennen bisher die folgenden drei Typen dreidimensionaler Plots:

1. Lösungsmengen von Gleichungen f(x,y,z) = 0 mit implicitplot3d() 2. Parametrisierte Flächen mit plot3d() 3. Räumliche Kurven mit spacecurve() oder tubeplot()

Bisher noch nicht direkt behandelt wurde das Plotten von Funktionsgraphenz = f(x,y). Auch hierzu wird der Befehl plot3d() verwendet, diesmal mit demAufruf

plot3d(f,x=a..b,y=c..d)

Die Variablen müssen natürlich nicht x,y heißen, man kann auch andereNamen verwenden. Als ein Beispiel betrachten wir die Funktion> f:=sin(x)*y^2-2*x;

:= f −( )sin x y2 2 xim Bereich |x|, |y| <= Pi> R:=x=-Pi..Pi,y=-Pi..Pi;

:= R ,=x .. −π π =y .. −π πDabei kann man den Bereich natürlich auch direkt im plot3d()-Befehlangeben, hier wird er nur in eine Variable gepackt da er im folgendenmehrfach verwendet wird. Unser Funktionsgraph wird> plot3d(f,R,axes=framed);

Page 2: 29. Plot von Funktionen in zwei Variablen

–3–2

–10

12

3

x

–3

–2

–1

0

1

2

3

y

–5

0

5

Die schon bei den bisher behandelten 3D-Plots verwendeten Optionenkann man auch bei plot3d() anwenden, zum Beispiel> plot3d(f,R,style=wireframe,color=black,axes=framed);

Page 3: 29. Plot von Funktionen in zwei Variablen

–3

–2

–1

0

1

2

3

x

–3

–2

–1

0

1

2

3

y

–5

0

5

Schließlich gibt es wie beim plot()-Befehl auch eine Möglichkeit dieanzuzeigenden z-Werte zu begrenzen, hierzu wird die neue Option

view=c..d

verwendet, es werden dann nur noch die Teile des Graphen mitc <= f(x,y) <= d gezeichnet, also etwa> plot3d(f,R,view=-2..2,axes=framed);

Page 4: 29. Plot von Funktionen in zwei Variablen

–3–2

–10

12

3

x

–3

–2

–1

0

1

2

3

y

–2

–1

0

1

2

30. Parametrisierte Kurven in der EbeneDies meint Kurven die in der Form

x = x(t), y = y(t)

mit einem Parameter t gegeben sind. Gezeichnet werden diesemit dem gewöhnlichen plot() Befehl, aber in einer bisher nochnicht verwendeten Aufrufsyntax, der Parameterbereich wirdzusammen mit den xy-Koordinaten in [...] gesetzt, also

plot([x, y, t=a..b])

es werden also sowohl x und y Koordinaten als auch derLaufbereich des Parameters in eckige Klammern gesetzt,> plot([sin(2*t),sin(3*t),t=0..6*Pi],title="Lissayou Kurve");

Page 5: 29. Plot von Funktionen in zwei Variablen

Lissayou Kurve

–1

–0.5

0.5

1

–1 –0.5 0.5 1

Man kann auch mehrere Kurven zugleich plotten, diese müssendazu ihrerseits in [...] eingeschlossen werden.> plot([[sin(2*t),sin(3*t),t=0..6*Pi], [sin(2*t),sin(5*t),t=0..10*Pi]], color=[red,blue]);

Page 6: 29. Plot von Funktionen in zwei Variablen

–1

–0.5

0.5

1

–1 –0.5 0.5 1

31. Komplexe PlotsZum Zeichnen komplexer Funktionen gibt es im wesentlichenzwei verschiedene Möglichkeiten. Die erste ist es das sogenannteanalytische Gebirge zu zeichnen, dies meint den Graphen desBetrags der Funktion. Dies kann man mit plot3d() machen,zum Beispiel> plot3d(abs(sin(x+I*y)),x=-2*Pi..2*Pi,y=-2..2,axes=framed);

Page 7: 29. Plot von Funktionen in zwei Variablen

–6

–4

–2

0

2

4

6

x

–2

–1

0

1

2

y

0

1

2

3

Wie sie (vielleicht) aus der Funktionentheorie wissen sind die Tälerdes analytischen Gebirges, also die lokalen Minima von |f|, geradedie Nullstellen von f. Wir wollen uns auch noch eine rationale Funktionanschauen.> f:=1/(z^3+z+1);

:= f1

+ +z3 z 1Wo sind die Polstellen?> solve(denom(f)=0,z);

− +( )+108 12 93

( )/1 3

6

2

( )+108 12 93( )/1 3

( )+108 12 93( )/1 3

12

1

( )+108 12 93( )/1 3−,

1

2I 3

− −( )+108 12 93

( )/1 3

6

2

( )+108 12 93( )/1 3+

( )+108 12 93( )/1 3

12,

Page 8: 29. Plot von Funktionen in zwei Variablen

1

( )+108 12 93( )/1 3

1

2I 3

− −( )+108 12 93

( )/1 3

6

2

( )+108 12 93( )/1 3− −

> evalf(%);

, ,-0.6823278040 −0.3411639019 1.161541400 I +0.3411639019 1.161541400 IUnd nun zeichnen wir einen Teil des analytischen Gebirgesaußerhalb der Pole> plot3d(eval(abs(f),z=x+I*y),x=1..4,y=-2..2,axes=framed);

11.522.533.54 x

–2

0

2

y

0.05

0.1

0.15

0.2

0.25

0.3

0.35

und noch ein Ausschnitt mitten durch die Polstellen> plot3d(eval(abs(f),z=x+I*y),x=-2..2,y=-2..2,axes=framed);

Page 9: 29. Plot von Funktionen in zwei Variablen

–2

–1

0

1

2

x

–2

–1

0

1

2

y

0

5

10

15

20

25

30

die Pole sind hier gut zu sehen. Will man mehr vom Rest derFunktion sehen so kann der Sichtbereich eingeschränkt werden.> plot3d(eval(abs(f),z=x+I*y),x=-2..2,y=-2..2,view=0..3,axes=framed,numpoints=2000);

Page 10: 29. Plot von Funktionen in zwei Variablen

–2

–1

0

1

2

x

–2

–1

0

1

2

y

0

1

2

3

Im plots-Paket ist auch ein Befehl enthalten der die Erstellungsolcher Plots etwas vereinfacht

complexplot3d(f, z=a+I*b..c+I*d)

zeichnet das analytische Gebirge von f im angegebenenRechteck. Im Unterschied zu plot3d() wird die Farbe dereinzelnen Punkte dabei durch das Argument von f(z)bestimmt, man verwendet hier also Farben um ein"vierdimensionales Bild" zu erhalten, zum Beispiel> with(plots):> complexplot3d(f,z=-2-2*I..2+2*I,view=0..3,axes=framed);

Page 11: 29. Plot von Funktionen in zwei Variablen

–2

–1

0

1

2

Re(z)

–2

–1

0

1

2

Im(z)

0

0.5

1

1.5

2

2.5

3

|z|

Die zweite Möglichkeit zur Darstellung komplexer Funktionenist das sogenannte konforme Bild der Funktion. Bei diesem werdendie Bildkurven zu konstanten Real- und zu konstantenImaginärteil gezeichnet, zum Beispiel> conformal(sin(z),z=-2*Pi-2*Pi*I..2*Pi+2*I*Pi,color=[red,blue]);

Page 12: 29. Plot von Funktionen in zwei Variablen

–200

–100

100

200

–200 –100 100 200

Man kann durch zusätzliche Optionen steuern wieviele horizontalebeziehungsweise vertikale Linien gezeichnet werden, und wievielePunkte auf diesen jeweils ausgewertet werden, etwa> conformal(sin(z),z=-2*Pi-2*Pi*I..2*Pi+2*I*Pi,grid=[8,24],numxy=[200,200],color=[red,blue]);

Page 13: 29. Plot von Funktionen in zwei Variablen

–200

–100

100

200

–200 –100 100 200

schauen wir uns das auch einmal für eine Funktionmit Polstellen an> R:=-2-2*I..2+2*I;G:=grid=[12,12],numxy=[500,500],color=[black,blue];

:= R .. −-2 2 I +2 2 I

:= G , ,=grid [ ],12 12 =numxy [ ],500 500 =color [ ],black blue> conformal(f,z=R,G);

Page 14: 29. Plot von Funktionen in zwei Variablen

–2

–1

1

2

–1 1 2 3

Bei Vorhandensein von Polstellen ist es oft günstiger das Bildin der der sogenannten Riemannschen Zahlenkugel zu zeichnenin der oo ein normaler Punkt ist. Hierzu enthält das ’plots’ Paketden Befehl conformal3d()> conformal3d(f,z=R,G,spherecolor=magenta);

Page 15: 29. Plot von Funktionen in zwei Variablen

32. AbleitungenDer Befehl diff(f,x) leitet f aufgefasst als Funktion in xnach der Variablen x ab.> diff(sin(x),x);

( )cos x> f:=x^2*sin(y+z^2);

:= f x2 ( )sin +y z2

> diff(f,x);

2 x ( )sin +y z2

Die zweite Ableitung von f nach x ist diff(f,x,x)> diff(f,z,z);

− +4 x2 ( )sin +y z2 z2 2 x2 ( )cos +y z2

Auch gemischte partielle Ableitungen können sogebildet werden.

Page 16: 29. Plot von Funktionen in zwei Variablen

> diff(f,x,z);

4 x ( )cos +y z2 zWie bei einigen anderen Befehlen gibt es auch wiedereine großgeschriebene Version Diff() des diff() Befehls.Diese ist die nicht-ausgewertete Ableitung und mitvalue() kann eine Auswertung durchgeführt werden.Also zum Beispiel> Diff(f,x,z):%=value(%);

=∂ ∂

∂2

z x( )x2 ( )sin +y z2 4 x ( )cos +y z2 z

Für höhere Ableitungen kann der Wiederholungsoperator $verwendet werden. X$n ist die n-fache Wiederholung von X,zum Beispiel> x$20;

, , , , , , , , , , , , , , , , , , ,x x x x x x x x x x x x x x x x x x x xDie 20-te Ableitung von f nach z ist> diff(f,z$20);

1048576 x2 ( )sin +y z2 z20 99614720 x2 ( )cos +y z2 z18 3810263040 x2 ( )sin +y z2 z16− −

76205260800 x2 ( )cos +y z2 z14 866834841600 x2 ( )sin +y z2 z12+ +

5721109954560 x2 ( )cos +y z2 z10 21454162329600 x2 ( )sin +y z2 z8− −

42908324659200 x2 ( )cos +y z2 z6 40226554368000 x2 ( )sin +y z2 z4+ +

13408851456000 x2 ( )cos +y z2 z2 670442572800 x2 ( )sin +y z2− −Auch dies kann man mit Ableitungen nach anderen Variablenmischen.> diff(f,x,y,z$10);

2048 x ( )cos +y z2 z10 46080 x ( )sin +y z2 z8 322560 x ( )cos +y z2 z6− − +

806400 x ( )sin +y z2 z4 604800 x ( )cos +y z2 z2 60480 x ( )sin +y z2+ − −Wenn man will kann man auch nach Variablen ableiten die inder der Formel gar nicht vorkommen, man sollte dann nur keinbesonders aufregendes Ergebnis erwarten,> diff(f,u);

0Als ein Beispiel schauen wir uns einmal die ersten fünf Ableitungender Funktion exp(-x^2) an> for k from 1 to 5 do Diff(exp(-x^2),x$k);print(%=value(%));end:

=d

d

x( )e

( )−x2

−2 x e( )−x2

=d

d2

x2 ( )e( )−x2

− +2 e( )−x2

4 x2 e( )−x2

=d

d3

x3 ( )e( )−x2

−12 x e( )−x2

8 x3 e( )−x2

=d

d4

x4 ( )e( )−x2

− +12 e( )−x2

48 x2 e( )−x2

16 x4 e( )−x2

Page 17: 29. Plot von Funktionen in zwei Variablen

=d

d5

x5 ( )e( )−x2

− + −120 x e( )−x2

160 x3 e( )−x2

32 x5 e( )−x2

33. Taylor EntwicklungDie Taylorentwicklung einer Funktion f in x mit demEntwicklungspunkt x=0 erhält man durch den Befehl

taylor(f,x)

Wie bei asympt() enthält die Ausgabe ein LandausymbolO(x^k) als Fehlerterm.> taylor(sin(x),x);

− + +x1

6x3 1

120x5 ( )O x6

Normalerweise wird das fünfte Taylorpolynom also mit demFehlerterm O(x^6) gerechnet. Wie bei asympt() kann manauch Näherungen höherer Ordnung erhalten, etwas das11-te Taylorpolynom mit> taylor(sin(x),x,12);

− + − + − +x1

6x3 1

120x5 1

5040x7 1

362880x9 1

39916800x11 ( )O x12

Das Taylorpolynom mit dem Entwicklungspunkt x=a wirdin Maple über den Befehl

taylor(f,x=a,Ordnung)

berechnet.> taylor(sin(x),x=Pi/2);

− + +11

2

−x

π

2

21

24

−x

π

2

4

O

−x

π

2

6

Ebenfalls wie bei asympt() kann man den Fehlerterm O(..)mit dem Befehl convert(..., polynom) entfernen.> convert(%,polynom);

− +1

−x

π

2

2

2

−x

π

2

4

24Zur Illustration plotten wir einmal den Sinus und sei erstesund drittes Taylorpolynom in einem Plot. Bei der Gelegenheitführen wir auch einige bisher noch nicht verwendete Optionendes plot() Befehls ein.> t1:=convert(taylor(sin(x),x,2),polynom);

:= t1 x> t2:=convert(taylor(sin(x),x,4),polynom);

:= t2 −x1

6x3

Kommen wir zum Plotten. Mit der Option

Page 18: 29. Plot von Funktionen in zwei Variablen

title="Ein Titel"

kann der Plot mit einer Überschrift versehen. Weiter können wirbei mehreren Funktionen jeder einzelnen eine Bezeichnung gebenindem die Option

legend=["Die erste Funktion", "und die zweite", "und noch eine"]

Damit kommen wir zu> plot([sin(x),t1,t2],x=-Pi..Pi,color=[blue,red,magenta], title="Taylorapproximation von sin(x)", legend=["sin(x)", "Taylorpolynom von Grad 1", "Taylorpolynom von Grad 3"]);

sin(x)Taylorpolynom von Grad 1Taylorpolynom von Grad 3

Taylorapproximation von sin(x)

–3

–2

–1

1

2

3

–3 –2 –1 1 2 3x