「磁力線って、N極から出てS極に入るんでしょ?」
そう思っているあなた。正解です。でも、それだけじゃないんです。
実際に磁力線を「自分で配置して描いてみる」と、見えてくるものがあります。磁力線の「絶対に交差しない」という性質。N極だけを2つ置いたときに現れる反発のパターン。そして、あの「8の字」がどうやって生まれるのか──。
今回は、ブラウザ上で動く磁力線シミュレーターを題材に、「点磁極モデル」の数式から実装までを一気に解説します。
「磁力線は、磁場の“地図”である。地図上で道が交差しないのと同じだ。」
なぜ磁力線は「交差しない」のか?
まず、直感的な話をしましょう。
あなたが今、スマホの画面にN極とS極を1つずつ置いたとします。すると、N極から出てS極に入る、滑らかな曲線が現れます。これが磁力線です。
ここで、もう1つN極を追加してみてください。先ほど描かれた磁力線の上に、新しい磁力線が重なるように置いてみるんです。
……どうなりました?
そう、交差しないんです。くっついたり、避け合ったりはしますが、きれいに十字に交わることは絶対にありません。
なぜか?
もし磁力線が交差したら、その交点で「磁場の向き」が2つ存在することになります。北を指す矢印と、東を指す矢印が同じ場所にあるようなもの。そんな場所では、小さな磁石を置いたとき「どっちを向けばいいの?」と迷ってしまい、物理的に矛盾するんです。
この「磁力線は交差しない」という性質は、ガウスの磁気法則という大原則から来ています。数式で言うとこうです。
\oint_S \mathbf{B}\cdot d\mathbf{A}= 0 \quad \Leftrightarrow \quad \text{磁気単極子は存在しない}
「磁気単極子(Nだけ、Sだけの粒子)は存在しない」──つまり、磁力線は必ずループを描いて閉じている。途中で始まったり終わったりしないから、交差する必要がないんですね。
数式で理解する:点磁極が作る磁場
さて、ここからが本番です。シミュレーターは、**「点磁極」**という理想化されたモデルを使っています。
現実の棒磁石はN極とS極がペアで存在し、磁極は面に広がっています。しかし、遠くから見れば1点から磁力線が出ているように見える。これが点磁極モデルの発想です。
点磁極が作る磁束密度 $\mathbf{B}$ は、次の式で表されます。
\mathbf{B}(\mathbf{r}) = \frac{\mu_0}{4\pi}\frac{m}{|\mathbf{r}-\mathbf{r}_0|^2}\hat{r}
各項の意味はこうです。
- $\mu_0$:真空の透磁率($4\pi \times 10^{-7} , \text{N/A}^2$)。磁場の通りやすさを決める定数。
- $m$:磁極の強さ(単位は $\text{Wb}$ または $\text{A}\cdot\text{m}$)。N極なら正、S極なら負。
- $\mathbf{r} - \mathbf{r}_0$:磁極の位置から観測点までのベクトル。
- $|\mathbf{r}-\mathbf{r}_0|^2$:距離の2乗。逆2乗則で減衰する。
- $\hat{r}$:磁極から観測点への方向ベクトル(単位ベクトル)。
つまり、「磁極から距離が2倍になれば、磁場の強さは1/4になる」という、クーロンの法則と同じ形をしているんです。
この式、実はとてもシンプルです。分母は距離の2乗、分子は磁極の強さ、掛ける方向ベクトル。これだけ。
複数の磁極がある場合は、それぞれの磁極が作る磁場をベクトル的に足し合わせるだけです。
コードで実装する:JavaScriptで30行
それでは、この計算を実際にコードで書いてみましょう。シミュレーターのコアロジックを、JavaScriptで20〜30行に凝縮します。
// 点磁極が作る磁束密度 B を計算する
function calcB(point, poles) {
const mu0 = 4 * Math.PI * 1e-7; // 真空の透磁率 [N/A^2]
let Bx = 0, By = 0;
for (let p of poles) {
// 磁極から観測点へのベクトル
const dx = point.x - p.x;
const dy = point.y - p.y;
const r2 = dx*dx + dy*dy; // 距離の2乗
if (r2 < 1e-10) continue; // 磁極上は計算しない(特異点回避)
const r = Math.sqrt(r2); // 距離
const factor = (mu0 / (4 * Math.PI)) * p.m / r2;
// 方向ベクトル(単位ベクトル)を掛ける
Bx += factor * (dx / r);
By += factor * (dy / r);
}
return { x: Bx, y: By };
}
// 磁力線を1本トレースする(ルンゲ=クッタ法で積分)
function traceFieldLine(start, poles, steps=200, stepSize=0.01) {
let points = [];
let pos = { x: start.x, y: start.y };
for (let i = 0; i < steps; i++) {
points.push({ x: pos.x, y: pos.y });
// 現在位置の磁場を計算
const B = calcB(pos, poles);
const Bmag = Math.sqrt(B.x*B.x + B.y*B.y);
if (Bmag < 1e-12) break; // 磁場が弱すぎたら停止
// 正規化して一歩進む
pos.x += stepSize * (B.x / Bmag);
pos.y += stepSize * (B.y / Bmag);
}
return points;
}
このコードのポイントは3つです。
- calcB関数:数式そのまま。各磁極からの寄与をベクトル加算。
- traceFieldLine関数:磁場の方向に「一歩ずつ」進んで線を描く。オイラー法の改良版(ルンゲ=クッタの簡易版)で安定化。
- 特異点回避:磁極の真上(距離0)では計算しない。現実でも、磁石の表面には「磁極」が面として広がっているからです。
実際のシミュレーターでは、このトレースをN極の周囲に放射状に複数本行い、さらにS極に到達したら止める、という処理を加えています。
数値例で確かめる:N極とS極を1cm離したら?
実際に値を入れて計算してみましょう。
条件:
- N極($m = +1.0 \times 10^{-6} , \text{Wb}$)を原点 $(0, 0)$ に配置
- S極($m = -1.0 \times 10^{-6} , \text{Wb}$)を $(0.01 , \text{m}, 0)$ に配置(1cm離す)
- 観測点をN極とS極の中間点 $(0.005 , \text{m}, 0)$ とする
計算:
N極からの寄与:
\mathbf{B}_N = \frac{4\pi \times 10^{-7}}{4\pi} \cdot \frac{1.0 \times 10^{-6}}{(0.005)^2} \cdot (+1 \, \text{方向})
= 10^{-7} \cdot \frac{1.0 \times 10^{-6}}{2.5 \times 10^{-5}} \cdot \hat{x}
= 4.0 \times 10^{-9} \, \text{T} \quad (\text{向き:+x})
S極からの寄与(S極は負の磁極なので、方向が逆になる):
\mathbf{B}_S = 10^{-7} \cdot \frac{-1.0 \times 10^{-6}}{(0.005)^2} \cdot (-1 \, \text{方向})
= 10^{-7} \cdot \frac{-1.0 \times 10^{-6}}{2.5 \times 10^{-5}} \cdot (-\hat{x})
= 4.0 \times 10^{-9} \, \text{T} \quad (\text{向き:+x})
合計:
\mathbf{B}_{\text{total}} = 8.0 \times 10^{-9} \, \text{T} \quad (\text{向き:+x方向、N→S})
この値をコードで確認してみましょう。
const poles = [
{ x: 0, y: 0, m: 1.0e-6 },
{ x: 0.01, y: 0, m: -1.0e-6 }
];
const mid = { x: 0.005, y: 0 };
const B = calcB(mid, poles);
console.log(`Bx = ${B.x.toExponential(3)} T`); // → "Bx = 8.000e-9 T"
一致しましたね。磁場の強さは $8 , \text{nT}$(ナノテスラ)。地球の磁場(約 $50 , \mu\text{T}$)の6000分の1程度。とても弱いですが、原理を確認するには十分です。
シミュレーターで遊ぶ:3つの実験
それでは、実際に磁力線シミュレーターを開いて、手を動かしてみましょう。
実験1:N極だけを2つ置く(単極子の反発)
- N極を2つ、5cm程度離して配置。
- 「磁力線本数/極」を最大に。
何が起きる?
N極から出た磁力線は、もう一方のN極には入れません。なぜなら、N極は磁力線の「出口」だから。結果、磁力線は両方のN極から外側に向かって広がり、互いに避け合うようなパターンになります。
現実との対応:
これは「2つのN極を近づけると反発する」という現象の可視化です。ただし、現実には「N極だけ」の磁石は存在しないので、あくまでモデルの話。
実験2:N極とS極を近づけて「棒磁石」に
- N極とS極を1cm以内に接近させて配置。
- 「磁極の強さ」を最大に。
何が起きる?
N極から出た磁力線が、すぐ隣のS極に一直線に入っていきます。まるで磁石の内部を通っているかのような、密な磁力線が観察できます。
現実との対応:
これがまさに棒磁石の磁力線パターン。磁石内部では磁力線はS→Nに流れている(数式上はそう計算される)ので、外部ではN→Sのループができます。
実験3:四重極子(N-S-N-S)を作る
- 4つの磁極を正方形の頂点に配置:左上N、右上S、左下S、右下N。
- 磁力線本数を増やして観察。
何が起きる?
磁力線が複雑に絡み合い、8の字やクローバーのようなパターンが現れます。双極子(N-Sのペア)では単純だった磁力線が、四重極子ではより複雑な閉ループ構造に。
現実との対応:
これはMRI装置や加速器の磁石で使われる「多極磁場」の基礎です。四重極磁場は、荷電粒子を集束させる性質があり、ビームラインの設計に欠かせません。
現場でハマるポイント:適用限界と落とし穴
このシミュレーターは**「真空中の点磁極」**という理想モデルです。実務で使う際の注意点を3つ挙げます。
1. 強磁性体の影響を無視している
現実の設計(モーターやトランス)では、鉄心などの強磁性体が磁力線を集中させます。このシミュレーターでは「空気中」の磁場しか計算しないので、鉄心があると磁力線のパターンが大きく変わります。
対策: まずは真空中の磁場を体感し、その上で「材料が入るとどう変わるか」をFEMソフトで確認する。
2. 「磁力線本数」は磁場の強さではない
スライダーで「磁力線本数/極」を増やすと、線が密になります。しかし、これは表示上の分解能が上がっただけで、磁場そのものが強くなったわけではありません。
正しい見方: 磁場の強さは「磁極の強さ」スライダーと、線の間隔(密なら強い)で判断する。
3. 点磁極は「理想」であり「近似」
N極だけを2つ極端に近づけると、現実ではありえないほど強い反発が計算上は発生します。現実の磁石では、磁極は面に分布し、内部で磁力線がループしているからです。
覚えておくこと: このシミュレーターは原理の理解に特化している。精密設計には、磁極分布や材料特性を考慮したFEM解析が必要。
まとめ
今回の記事で押さえてほしいポイントは3つです。
- 磁力線は交差しない ── ガウスの磁気法則から導かれる、磁場の基本的な性質。
- 点磁極モデルは「逆2乗則」 ── クーロンの法則と同じ形。コードは30行で書ける。
- シミュレーターは「原理の体感」に最適 ── 実設計にはFEMが必要だが、まずはここで感覚を掴め。
そして、何より大事なのは 「自分で磁極を配置して、磁力線がどう動くか試してみる」 ことです。
▶ 磁力線シミュレーター — ブラウザで即動作、登録不要
NovaSolverでは、今回紹介した磁力線シミュレーターをはじめ、700以上の工学シミュレーターを無料公開しています。
「電磁気学、難しそう……」と思っていたあなたも、まずは1回クリックしてみてください。磁力線が描かれる瞬間、きっと「あ、そういうことか」と腑に落ちるはずです。