「Maxima でベクトル場(電場・磁場)を描く」では,ごちゃごちゃと設定してベクトル場を描いていたが,こと2次元ベクトルの方向場(大きさが一定で向きだけを表すベクトル場)に限れば,drawdf
パッケージを使ってもっと簡単に描けることがわかったのでメモ。
In [1]:
/* 最初に1回だけロードする */
load(drawdf)$
点電荷がつくる電場の向き
In [2]:
Ex(x, y):= x/sqrt(x**2 + y**2)**3$
Ey(x, y):= y/sqrt(x**2 + y**2)**3$
/* これだけで方向場を描いてくれる。簡単。*/
/* ベクトルの大きさも勝手に規格化してくれるし。*/
/* (0, 1) においた正電荷 */
drawdf([Ex(x, y-1), Ey(x, y-1)], [x, -3, 3], [y, -3, 3])$
In [3]:
/* (0, 1) においた正電荷と (0, -1) においた負電荷 */
/* オプションの設定例 */
drawdf([Ex(x, y-1) - Ex(x, y+1), Ey(x, y-1) - Ey(x, y+1)],
[x, -3, 3], [y, -3, 3],
/* 方向ベクトル場の色 */
field_color = blue,
/* ベクトル始点の格子数 */
field_grid=[20, 20],
/* 縦横比 */
proportional_axes = xy,
/* 目盛非表示 */
xtics=false, ytics=false,
/* title のフォントサイズの変更例。*/
title = "{/=16 正電荷と負電荷がつくる電場の向き}",
/* 正電荷の周りを白で塗りつぶす */
color = white,
point_size = 3,
point_type = 7,
points([[0, 1]]),
/* 正電荷 */
color = black,
point_size = 1.5,
point_type = 6,
points([[0, 1]]),
label(["+", 0, 1]),
/* 負電荷の周りを白で塗りつぶす */
color = white,
point_size = 3,
point_type = 7,
points([[0, -1]]),
/* 負電荷 */
color = red,
point_size = 1.5,
point_type = 6,
points([[0, -1]]),
label(["ー", 0, -1]),
/* Web ページ用に画像ファイルとして保存 */
file_name = drawdf02,
terminal = 'svg
)$
電気双極子がつくる電場の向き
In [4]:
/* 電場 E */
Ex(x, y):= 3* x*y/sqrt(x**2 + y**2)**5$
Ey(x, y):= 3* y*y/sqrt(x**2 + y**2)**5 - 1/sqrt(x**2 + y**2)**3$
drawdf(
[Ex(x, y), Ey(x, y)], [x, -3, 3], [y, -3, 3],
/* 方向ベクトル場の色 */
field_color = blue,
/* ベクトル始点の格子数 */
field_grid=[20, 20],
/* 縦横比 */
proportional_axes = xy,
/* 目盛非表示 */
xtics=false, ytics=false,
/* title */
title = "{/=16 電気双極子がつくる電場の向き}",
/* 電気双極子 */
color = red,
line_width = 5,
head_length = 0.05,
head_angle = 30,
vector([0,-0.1],[0,0.2]),
/* Web ページ用に画像ファイルとして保存 */
file_name = drawdf03,
terminal = 'svg
)$
直線電流がつくる磁場
In [5]:
/* 磁場 B */
Bx(x, y):= -y/(x**2 + y**2)$
By(x, y):= x/(x**2 + y**2)$
drawdf(
[Bx(x, y), By(x, y)], [x, -3, 3], [y, -3, 3],
/* 方向ベクトル場の色 */
field_color = dark-green,
/* ベクトル始点の格子数 */
field_grid=[20, 20],
/* 縦横比 */
proportional_axes = xy,
/* 目盛非表示 */
xtics=false, ytics=false,
/* title */
title = "{/=16 直線電流がつくる磁場の向き}",
/* 電線の位置 */
color = red,
point_size = 1.5,
point_type = 6,
points([[0, 0]]),
label(["・", 0, 0]),
/* Web ページ用に画像ファイルとして保存 */
file_name = drawdf04,
terminal = 'svg
)$