div,rotを総合的に理解するアプレット

 2次元面上のベクトル場を描くプログラムです。下にある数式で、ベクトル場のx成分

V_x = ax + by  +c

とy成分

V_y = dx + ey  +f

の係数a,b,c,d,e,fを-3〜3の範囲で変化させることができます。
 例えばV_x=1,V_y=0とすると、

V_x=1,V_y=0
のようなベクトル場ができます。定数ベクトルなので当然divは0です。実際この状況なら、どのような領域をとっても、流れ込んだ分だけ出て行くことはす ぐわかるでしょう。

 V_x=x,V_y=0の場合は、

V_x=x,V_y=0

のようなベクトル場となります。x成分がxに比例しているので、x>0の領域(図の右半分)ではベクトル場が右(正の方向)を向き、x<0(図の左半分) ではベクトル場が左(負の方向)を向きます。その強さはx=0から離れるほど大きくなります。この状況ではある領域を考えるとかならずその領域から流れが 湧き出していることになります。

 数式で考えても見てもV_x=xですからで微分すると1となり、div V=1です。

 次に、V_x=0,V_y=-yの場合を考えましょう。この場合は

V_x=0,V_y=-y

のようなベクトル場ができます。この場合、湧き出しでは吸い込みができていることになります。div Vも、計算すると-1です。

 以上二つを合成したベクトル場が、

V_x=x,V_y=-y

です。これは上下から流れ込んで左右に流れだすような流れができていて、div Vは(x成分から1,y成分からー1が寄与して)0です。

 V_x=x,V_y=yならば、
V_x=x,V_y=y

となり、div V=2で、まさにたくさん湧き出しているイメージとなります。

 いろいろ条件を変えてベクトル場を描かせてみましょう。

 なお、ここでは説明してませんが、rotも計算されているので、そっちも見ておいてください。

 矢印の大きさと、メッシュの大きさは右下にあるスライダで変えられます。見やすくしてみてください。


 最後に、「1/r→e_rを加える」ですが、これをチェックするとで 表現されるベクトル場を加えます。これだけを表示させた場合は、



のようになります。距離に反比例であって、距離の自乗に反比例でないのは、これが3次元でなく2次元のベクトル場だからで、これでちょうどdivが0にな ります。

ソースコードはdivrot.javaです。