第4回 電場の視覚化
(1/2)
1.電気双極子がつくる電場 今回はまず、前回取り上げた電気双極子を例に電場の視覚化を行います。 後半は電気双極子が絡む静電場の問題を実際に解いてみます。 今回の提出課題 ではその類似問題を各自にやってもらいます。グラフィックでは、 ベクトル場を描くというのが今回の目標です。
|
a) ベクトル場を視覚化する (1) -- PlotGradientField |
前回と同じユーザー定義関数(動径 r と電位 V)を使います。
ベクトル場を描かせるにはパッケージ Graphics`PlotField` を読み込みます。
電気双極子として、座標(-1, 0, 0)に電荷-1、座標(1, 0, 0) に電荷+1を置いたものを仮定すれば、そのときの電場 (定義域を xy 平面に限定したもの)は次のようにして視覚化可能です。
PlotGradientField[f, ...] は grad f をプロットします。 電場と電位には E = - grad φ の関係があるため、f として -φ を選べば E を描くことができるわけです。 ベクトル場そのものを描く関数は PlotVectorField[...] です。これを使って電場を描くには、まず電場の表式を求める必要があります。 |
b) ベクトル解析 |
Mathematica 上でベクトル解析を行うには、パッケージ Calculus`VectorAnalysis` を読み込みます。
(参考までに、極座標を使いたいときには Cartesian を Spherical に変えます。このパッケージでは内積 (DotProduct[ ])、外積 (CrossProduct[ ] )、grad (Grad[ ] )、 div (Div[ ] )、rot (Curl[ ])、 Δ (Laplacian[ ] ) などの計算を行うことができます。詳しくは Mathematica ヘルプブラウザを立ち上げ、「アドオンとリンク」から、 「標準パッケージ」⇒「Calculus」⇒「Vector Analysis」 とたどって下さい。) 電場を計算するには次のようにします。
ベクトルはリストを使って表されることがわかります。 しかしアウトプットをよく見ると、 2 次元ベクトル場ではなく 3 次元ベクトル場になっているので、 これを2次元ベクトル場に変えてからプロットする必要があります。 Take[ ] はリストからある部分を抽出してくれるので、これを使います。 (これはパッケージ Calculus`VectorAnalysis` に含まれる 関数ではなく、デフォルトで使用できる関数です。)
似たような関数 Drop[ ] を用いて、Drop[Exy, -1] としても同じ結果が得られます。意味は「最後の要素を1個破棄」です。 この種の関数で最も一般的なのは Part[ ] です。 これを用いて Part[Exy, {1,2}] としても同じ結果になります。Part はよく使われるため省略形が用意されており、 Exy[[{1,2}]] と書くこともできます。 |
c) ベクトル場を視覚化する (2) -- PlotVectorField |
いずれを使用しても同じですので、ここでは例えば以下のように描画します。
オプションでは描かれるベクトルの長さを指定しています。 デフォルトでは自動調整 (ScaleFactor -> Automatic)されるので、自分でコントロール したい場合に用います。実際の大きさは ScaleFunction -> (#&) で指定できますが、見やすくするため 0.005 倍にスケールしています。 このように自分でコントロールしたほうが、実際の電場の大きさを 実感できるはずです。 他にもオプションを工夫すれば例えば以下のような絵が描ける筈です。
あるいは、上のようにベクトル解析を使って電場を求めなくても、 電場の形はよく知られていますから、以下のように直接それを入力し てももちろん構いません。
|
d) ベクトル場を視覚化する (3) -- PlotVectorField3DとPlotGradientField3D |
ベクトル場を3次元表示するにはパッケージ Graphics`PlotField3D` をロードします。
プロットには PlotVectorField3D[ ] や PlotGradientField3D[ ] を用います。
オプション VectorHeads -> True が必要になっています。 電場を計算してからそれをプロットするなら次のようになります。
他にもオプションを組み合わせて、各自で個性ある視覚化を行ってみてください。
|