8.1.2 2変数関数のグラフ Plot3D[]

2変数関数のグラフを描くのに Plot3D[ ] という関数が使える。
  Plot3D[x^2-y^2,{x,-1,1}, {y, -1, 1}]

図 13: $ f(x,y)=x^2-y^2$ ( $ -1\le x\le 1$, $ -1\le y\le 1$) のグラフ
Image sampleplot3d
グラフをマウスでドラッグして動かすことができる。ぜひ試してみること。

複数の関数のグラフを同時に描くことも出来ます (関数のリストを渡す)。
  Plot3D[{x^3+y^3-3x y,0},{x,-2,2},{y,-2,2}]
(平面 $ z=0$ を同時に描画することで、 関数 $ z=x^3+y^3-3xy$ のグラフが分かりやすくなる。)


$ z=\sqrt{1-x^2-y^2}$ ( $ x^2+y^2\le 1$) に基づき球面を描く。 負数の $ \sqrt{\mathstrut\quad}$ が出て来ないように注意が必要である。 以下の2つの例は少し工夫している (これは以前の Mathematica 用で、 Version 7 は工夫をする必要がない?)。
  Plot3D[Sqrt[Max[0, 1 - x^2 - y^2]], {x, -1, 1}, {y, -1, 1}]
(Max[a,b]ab の大きい方)
  Plot3D[Sqrt[Boole[x^2+y^2<1]*(1-x^2-y^2)], {x, -1, 1}, {y, -1, 1}]
(Boole[] は真ならば $ 1$, 偽ならば 0 を返す関数です。)
  Plot3D[Sqrt[1-x^2-y^2], {x, -1, 1}, {y, -1, 1},
    RegionFunction->Function[{x,y,z},x^2+y^2<=1]]

極座標で表された関数のグラフ $ z=f(r,\theta)$ を描く場合、 $ r=\sqrt{x^2+y^2}$, $ \theta=\arg(x+i y)$ という関係を用いると良い。 例えば $ f(r,\theta)=r^2\cos2\theta$ (実は $ x^2-y^2$) のグラフを描くには、 以下のようにすれば良い。
  Plot3D[(x^2+y^2)Cos[2Arg[x+I y]],{x,-1,1},{y,-1,1}]
(こちらがいいのか?)
  Plot3D[(x^2+y^2)Cos[2ArcTan[x,y]],{x,-1,1},{y,-1,1}]
(実は $ \cos n\theta$, $ \sin n\theta$ が欲しいことが多いように思う。
c[x_, y_, n_] := Re[ComplexExpand[Re[(x + I  y)^n]]]/Sqrt[x^2 + y^2]^n
s[x_, y_, n_] := Re[ComplexExpand[Im[(x + I  y)^n]]]/Sqrt[x^2 + y^2]^n
とするのだろうか。 )

2次元グラフィックスの AspectRatio に相当するオプションとして、 BoxRatios がある。 BoxRatios -> {1,2,3} のように3つの数からなるリストを指定すると、 3D グラフィックスの境界である直方体の辺の長さの比を与えることになる。

(Plot3D[ ], ListPlot3D[ ], ListPointPlot3D[ ] ではデフォールトで、 {1,1,0.4} を使う。だからあんなに寸詰まりなんだ。 ContourPlot3D[ ], ListContourPlot3D[ ] ではデフォールトで、 {1,1,1} を使う。)

BoxRatios -> Automatic とすると、 実際の座標の値に対応する直方体の長さの比を与える。 例えば球を球として表示したいときなどに使う。



桂田 祐史