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