0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

磁場・電流シミュレーターで「見えない力」を可視化する — 物理が動き出す瞬間

0
Posted at

「磁場の中に粒子を放つと、なぜ勝手にくるくる回りだすの?」

この疑問、物理を学んだ人なら一度は抱いたことがあるはずです。しかも、回るだけじゃない。電荷や質量、磁場の強さを変えると円の大きさが変わり、磁場と平行な速度成分があればらせん運動になり、電場を加えると中心ごと流れていく——。

今回は、ブラウザで動く無料シミュレーター「NovaSolver」の磁場中荷電粒子シミュレーターを題材に、ローレンツ力の本質から数式、実装、現実の応用まで一気に解説します。

▶ 今回のシミュレーター: 磁場中の荷電粒子シミュレーター (ブラウザで動作・登録不要)


導入——「力が仕事をしない」という驚き

力学の基本を思い出してください。物体に力を加え続ければ、その物体は加速します。ところが磁場が荷電粒子に及ぼすローレンツ力は、常に速度に対して垂直。つまり、仕事をまったくしないんです

「え?力を加えているのにエネルギーが変わらないの?」

そうなんです。磁場は粒子の向きだけを変え、速さは変えない。これが円運動が生まれる根源的な理由。逆に言えば、粒子を加速したいなら磁場だけではダメで、電場が必要——この違いが、実は加速器やプラズマ閉じ込めの設計で極めて重要になります。


ざっくり本質——「横から押し続ける」イメージ

「磁場は粒子の横っ面を押し続ける。だからぐるぐる回る」

イメージしてみてください。あなたが自転車に乗ってまっすぐ進んでいるとします。誰かが常に進行方向と直角に、あなたの体を横から押し続けたらどうなるか?——そう、円を描いて回り始めますよね。速さは変わらず、進む方向だけが曲げられる。

ローレンツ力もまったく同じ。磁場 $B$ の中を速度 $v$ で動く電荷 $q$ には、両方に垂直な力 $F = qv \times B$ が働きます。「×」はベクトルの外積。つまり力の向きは、速度と磁場の両方に垂直。これが「横から押す」に対応します。


数式で理解する——サイクロトロン運動の核心

まず基本の式から。

ローレンツ力

\mathbf{F} = q\,\mathbf{v}\times\mathbf{B}
  • $F$: 力 [N](ニュートン)
  • $q$: 電荷 [C](クーロン)
  • $v$: 速度 [m/s]
  • $B$: 磁束密度 [T](テスラ)

この力が常に速度に垂直なので、運動エネルギー $ \frac{1}{2}mv^2 $ は変化しません。等速円運動の条件——向心力が一定で、速度に垂直——を満たすわけです。

サイクロトロン半径・周波数・周期

円運動の向心力 = ローレンツ力 と置くと:

\frac{mv^2}{r} = |q|vB

これを $r$ について解くと:

r = \frac{mv}{|q|B},\qquad f = \frac{|q|B}{2\pi m},\qquad T = \frac{2\pi m}{|q|B}

ここで超重要なポイント:周波数 $f$ は速度 $v$ に依存しません。つまり、速い粒子ほど大きな円を描くけど、一周するのにかかる時間は同じ。これがサイクロトロン加速器の原理そのものです。

E×B ドリフト

磁場に直交する電場 $E$ を加えると、円運動の中心(案内中心)が流れ出します。

v_d = \frac{E}{B}\quad(\text{向きは }\mathbf{E}\times\mathbf{B}\text{ 方向、電荷の符号によらない})

「電荷の符号によらない」——これがポイント。プラズマ中では電子もイオンも同じ方向にドリフトするので、電流が生まれない。この性質が核融合炉のプラズマ閉じ込めで使われます。


コードで実装する ★最重要★

さあ、ここからが本番。シミュレーターの中身を再現するコードを書きます。

ローレンツ力を数値積分するには、速度ベルレ法(または leapfrog法)が定番。今回はシンプルにオイラー法で実装します(精度は落ちるが、原理理解には十分)。

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# 物理パラメータ
q = 1.0e-19       # 電荷 [C](陽子相当)
m = 1.67e-27      # 質量 [kg]
B = np.array([0, 0, 1.0])  # 磁場 [T](z方向)
E = np.array([0, 0, 0])    # 電場 [V/m](今回は0)

# 初期条件
r = np.array([0.0, 0.0, 0.0])  # 初期位置 [m]
v = np.array([1.0e5, 0.0, 2.0e4])  # 初期速度 [m/s](z成分あり→らせん運動)

# シミュレーション設定
dt = 1.0e-10      # 時間刻み [s]
steps = 5000      # ステップ数

# 軌跡保存用
positions = np.zeros((steps, 3))
positions[0] = r

# メインループ:オイラー法でローレンツ力を計算
for i in range(1, steps):
    # ローレンツ力 F = q(E + v×B)
    # 外積 v×B を計算
    cross_product = np.cross(v, B)
    F = q * (E + cross_product)
    
    # 加速度 a = F/m
    a = F / m
    
    # 速度更新(オイラー法)
    v = v + a * dt
    
    # 位置更新
    r = r + v * dt
    
    # 保存
    positions[i] = r

# 3Dプロット
fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(111, projection='3d')
ax.plot(positions[:, 0], positions[:, 1], positions[:, 2], 'b-', linewidth=1)
ax.set_xlabel('x [m]')
ax.set_ylabel('y [m]')
ax.set_zlabel('z [m]')
ax.set_title('荷電粒子のらせん運動(磁場中)')
plt.show()

# 理論値と比較
v_perp = np.sqrt(v[0]**2 + v[1]**2)  # 磁場に垂直な速度成分
r_theory = m * v_perp / (abs(q) * np.linalg.norm(B))
f_theory = abs(q) * np.linalg.norm(B) / (2 * np.pi * m)
T_theory = 2 * np.pi * m / (abs(q) * np.linalg.norm(B))

print(f"理論サイクロトロン半径: {r_theory:.3e} [m]")
print(f"理論サイクロトロン周波数: {f_theory:.3e} [Hz]")
print(f"理論周期: {T_theory:.3e} [s]")

このコードのポイント:

  • np.cross(v, B) で外積計算。これがローレンツ力の核心
  • 初期速度にz成分(磁場と平行)を入れると、らせん運動になる
  • 理論値と比較できるように、最後にサイクロトロン半径・周波数を計算

実際に動かすと、z方向に進みながらxy平面でくるくる回る軌跡が描かれます。


数値例で確かめる

実際の値を入れて、理論値とシミュレーション結果を比較してみましょう。

条件

  • 粒子:陽子($q = 1.602 \times 10^{-19}$ C, $m = 1.673 \times 10^{-27}$ kg)
  • 磁場:$B = 1.0$ T(z方向)
  • 初期速度:$v = (1.0 \times 10^5, 0, 2.0 \times 10^4)$ m/s

理論計算

まず磁場に垂直な速度成分:

v_{\perp} = \sqrt{(1.0\times10^5)^2 + 0^2} = 1.0\times10^5 \text{ m/s}

サイクロトロン半径:

r = \frac{mv_{\perp}}{|q|B} = \frac{1.673\times10^{-27} \times 1.0\times10^5}{1.602\times10^{-19} \times 1.0} = 1.044\times10^{-3} \text{ m} \approx 1.04 \text{ mm}

サイクロトロン周波数:

f = \frac{|q|B}{2\pi m} = \frac{1.602\times10^{-19} \times 1.0}{2\pi \times 1.673\times10^{-27}} = 1.524\times10^7 \text{ Hz} \approx 15.2 \text{ MHz}

周期:

T = \frac{1}{f} = 6.56\times10^{-8} \text{ s} \approx 65.6 \text{ ns}

コードを実行すると、プロットから読み取れる半径は約1.04 mm、周期は約65 nsで、理論値と一致します。数値積分が正しくローレンツ力を再現していることが確認できました。


シミュレーターで遊ぶ——3つの実験

実験1:電荷の符号を反転させる

NovaSolverのシミュレーターで、電荷 $q$ の値を正から負に変えてみましょう。すると回転の向きが逆になります

なぜ?ローレンツ力 $F = qv \times B$ に $q$ が掛かっているから。$q$ が負なら力の向きが反転し、結果として円の回転方向が逆になるんです。

実験2:磁場を強くするとどうなる?

スライダーで $B$ を 0.5 T → 2.0 T に増やしてみてください。ライブ数値の $r$ が1/4に減少するはず。

理論通り:$r = mv/|q|B$ なので、$B$ が2倍になれば半径は1/2、4倍になれば1/4。逆に周波数 $f = |q|B/2\pi m$ は4倍に増加します。

実験3:「E×B ドリフト」プリセットを試す

プリセットを切り替えて、電場を加えた状態を観察。円運動の中心が一定方向に流れていく様子が見えます。

ドリフト速度は $v_d = E/B$。例えば $E = 1000$ V/m, $B = 1$ T なら、$v_d = 1000$ m/s。この値は電荷の符号によらないので、プラズマ中では電子とイオンが同じ方向に流れ、電流が発生しません。


現場でハマるポイント

1. 磁場は「仕事をしない」——加速には電場が必要

「磁場で粒子を加速できる」と誤解する人がいますが、できません。ローレンツ力は常に速度に垂直なので、エネルギーを増やせない。粒子を加速したいなら、電場(または電磁誘導)が必要。この違いを理解していないと、サイクロトロン加速器の設計で迷子になります。

2. 一様磁場の仮定は現実では稀

NovaSolverのシミュレーターは一様磁場を仮定しています。しかし現実の磁場(磁石の周り、トカマク型核融合炉など)は空間的に変化します。その場合、粒子の軌道はより複雑になり、断熱不変量(磁気モーメントなど)を使って解析する必要が出てきます。

3. 数値積分の誤差に注意

上のコードで使ったオイラー法は単純ですが、エネルギーが保存しないという欠点があります。実際のシミュレーションでは、エネルギー保存が保証されるシンプレクティック積分(速度ベルレ法など)を使うべき。特に長期間の軌道計算では誤差が累積し、粒子が勝手に加速されたり減速されたりします。


まとめ——3つの要点

  1. ローレンツ力 $F = qv \times B$ は速度に垂直 → 等速円運動が生まれる

    • 半径 $r = mv/|q|B$、周波数 $f = |q|B/2\pi m$(速度に依存しない!)
  2. 磁場と平行な速度成分があればらせん運動、電場を加えればE×Bドリフト

    • ドリフト速度 $v_d = E/B$、電荷の符号によらない
  3. 磁場単独では粒子を加速できない——加速には電場が必要

    • この原理が加速器やプラズマ閉じ込めの設計基盤

実際に手を動かして理解したい方は、ぜひNovaSolverのシミュレーターで遊んでみてください。スライダーを動かすたびに、数式が目の前で動き出します。

磁場中の荷電粒子シミュレーター — ブラウザで即動作、登録不要

NovaSolverでは700以上の工学シミュレーターを無料公開中 👉 一覧はこちら

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?