鏡像法

一つの点電荷Qが(a,0)の位置にあり、x<0の領域は半無限の金属板とする。このときの電界は鏡像法によって解くことができ、仮想的に(-a,0)の位置に-Qの点電荷があるようにして求めることができる。そのときの電位は
\(TraditionalForm\`\(\(\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \)\(ϕ = Q\/\(4 \( πϵ\_0\) \@\(\((x - a)\)\^2 + y\^2 + z\^2\)\) - 
          Q\/\(4 \( πϵ\_0\) \@\(\((x + a)\)\^2 + y\^2 + z\^2\)\)\)\)\)           (1)	
で与えられる。
これについて電位と電界を可視化してみよう。

定義

電位phiを定義しておく。

Clear[phi];
phi[x_, y_, z_] := 
      Q/(4 Pi ep0 Sqrt[(x - a)^2 + y^2 + z^2])  - 
        Q/(4  Pi ep0  Sqrt[(x + a)^2 + y^2 + 
                  z^2])
ep0 = 1; Q = 1; a = 1;

計算がちゃんとできるか確かめておこう。

N[phi[1, 1, 0]]

電位の表示

ほとんどのMathematicaの関数は直交座標系を想定しているので、この問題のように直交座標系になっているものは簡単に表示できる。PlotPointsを省いて表示させるとPlotPointsの役割がわかるだろう。

graph1 = 
      ContourPlot[phi[x, y, 0], {x, 0, 3}, {y, -1.5, 1.5}, 
        ContourShading -> False, PlotPoints -> 30]

Plot3D[phi[x, y, 0], {x, 0, 3}, {y, -1.5, 1.5}]

電位は電荷がある(a,0)のところで高くなっており金属表面では一定値になっていることが分かる。

電界の計算

E=-grad ϕなので、ExとEyを計算する。このときには遅延割り当て(:=)ではなくて即時割り当て(=)を用いる。

Clear[Ex, Ey, L];
Ex[x_, y_, z_] = -D[phi[x, y, z], x]
Ey[x_, y_, z_] = -D[phi[x, y, z], y]
L[x_, y_, z_] := Sqrt[Ex[x, y, z]^2 + Ey[x, y, z]^2];

電界の表示

ベクトルの表示にはパッケージを読み込む必要がある。詳しくはヘルプブラウザーを使って調べること。

Needs["Graphics`PlotField`"]

注意：Needsを使ってパッケージを読み込む前にPlotVectorFieldを実行すると何も実行されない。慌ててNeedsでパッケージを読み込むとPlotVectorFieldが定義されているというエラーがでる。このようなときにはRemove[PlotVectorField]を実行して定義を初期化する必要がある。(教科書p.35参照)

ベクトルの長さLを使って長さを規格化する。Lを使わないとどうなるか試してみるとよい。

graph2 = 
      PlotVectorField[{Ex[x, y, 0]/L[x, y, 0], Ey[x, y, 0]/L[x, y, 0]}, {x, 
          0, 3}, {y, -1.5, 1.5}]

電位の等高線図と重ねて表示する.

Show[graph1, graph2]

次のようにScaleFunctionを利用すれば、長さを規格化しなくても、一定値の0.5をとらせることができる。

PlotVectorField[{Ex[x, y, 0], Ey[x, y, 0]}, {x, 0, 3}, {y, -1.5, 
        1.5}, ScaleFunction -> (0.5 &)]