先週 Mathematica は「数値視覚化ソフトウェア」であるとも言った。 今週は Mathematica のその辺の機能を見るために、 色々なプロットコマンドを試してみる。 まずは簡単なプロットから始める。
パラメトリック・プロットx = sin(ωt) y = cos(ωt)この場合には横軸(x)も縦軸(y)も変数 t の関数となっている。 このような場合には ParametricPlot を使ってやると、 簡単にプロットできる。
ParametricPlot[ { 横軸の関数, 縦軸の関数 }, 変数とその変化範囲 ] ParametricPlot[ { Sin[t], Cos[t] }, {t,0,2Pi} ]上の例で ParametricPlot を試すが、 そのままでは余り面白味がないので Do コマンドも使い、 以下のように入力し、最後にキーボードの space キーを押しながら enter キーを打つ(Mathematica の計算開始の方法を思い出すこと)。
Do[
ParametricPlot[
{ Sin[t], Cos[t+phi] },
{t,0,2Pi},
AspectRatio -> 1
],
{phi,0,2Pi,Pi/20}
]
Do[
ParametricPlot[
{ Sin[t], Cos[3t+phi] },
{t,0,2Pi},
AspectRatio -> 1
],
{phi,0,2Pi,Pi/20}
]
少し複雑なプロットができたはず。
これもやはりアニメーションとして見てみる。
ParametricPlot[ { Sin[t], Cos[1.02t] }, {t,0,20Pi}, AspectRatio -> 1 ]今回は t の変化範囲の上限が、 20πとなっているので注意。 奇麗なプロットができたはず。
ListPlot[ { {x1,y1}, {x2,y2}, ... {xn,yn} } ] ListPlot[ { {1,2}, {2,4}, {4,1} } ]
ListPlot[
{ {1,2}, {2,4}, {4,1} },
PlotStyle -> PointSize[0.04],
PlotRange -> { {0,5}, {0,5} }
]
ListPlot[
{ {1,2}, {2,4}, {4,1} },
PlotJoined -> True,
PlotRange -> { {0,5}, {0,5} }
]
f[z_] := 1 / ( 1 + I(z-1/z) );
Table[
{ Re[f[w]], Im[f[w]] },
{w, 0.1, 5.0, 0.05}
]
Table[ 作りたいもの , 変数と変数の範囲及びステップサイズ ]である。
f[z_] := 1 / ( 1 + I(z-1/z) ) ListPlot[ Table[ { Re[f[w]], Im[f[w]] }, {w,0.1,5.0,0.05} ], AspectRatio -> 1, PlotStyle -> PointSize[0.04] ]
次は2次元プロットをいくつか試してみる。
デンシティー・プロット
DensityPlot[
x^2 - y^2,
{x,-1,1},
{y,-1,1}
]
この例では x^2-y^2 という2次元の関数をプロットする。
プロットする範囲は x と y それぞれについて指定できる。
DensityPlot[ プロットする関数 , 横軸の範囲 , 縦軸の範囲 ]
DensityPlot[
x^2 - y^2,
{x,-1,1},
{y,-1,1},
PlotPoints -> 50,
Mesh -> False
]
DensityPlot[
x^2 - y^2,
{x,-1,1},
{y,-1,1},
PlotPoints -> 50,
Mesh -> False,
ColorFunction -> (Hue[#/2]&)
]
ContourPlot[
x^2 - y^2,
{x,-1,1},
{y,-1,1}
]
関数は先ほどの例と同じ。
またコマンドの書式もほぼ同じなので、オプションの意味もわかるはず。
ContourPlot[
x^2 - y^2,
{x,-1,1},
{y,-1,1},
ContourShading -> False
]
すっきりした等高線になったはず。
次は3次元プロットをみてみる。
3次元プロットの例
Plot3D[
x^2 - y^2,
{x,-1,1},
{y,-1,1}
]
Plot3D[
Sin[x+y],
{x,-2Pi,2Pi},
{y,-2Pi,2Pi}
]
Plot3D[
Sin[x+y],
{x,-2Pi,2Pi},
{y,-2Pi,2Pi},
PlotPoints -> 30,
Mesh -> False
]
Do[ Plot3D[ Sin[x+y-t], {x,-2Pi,2Pi}, {y,-2Pi,2Pi}, PlotPoints -> 30, Mesh -> False ], {t,0,2Pi,Pi/10} ]アニメーションして波が進んで行く様子を3次元的に見れただろうか。
Plot3D[ Sin[x+y], {x,-2Pi,2Pi}, {y,-2Pi,2Pi}, PlotPoints -> 30, Mesh -> False, ViewPoint -> {1,1,0} ] Plot3D[ Sin[x+y], {x,-2Pi,2Pi}, {y,-2Pi,2Pi}, PlotPoints -> 30, Mesh -> False, ViewPoint -> {1,-1,0} ] Plot3D[ Sin[x+y], {x,-2Pi,2Pi}, {y,-2Pi,2Pi}, PlotPoints -> 30, Mesh -> False, ViewPoint -> {0,0,3} ]
Do[ Plot3D[ Sin[x+y], {x,-2Pi,2Pi}, {y,-2Pi,2Pi}, PlotPoints -> 30, ViewPoint -> {2Cos[phi],2Sin[phi],1}, SphericalRegion -> True, Axes -> None ], {phi,0,Pi,Pi/20} ]