目次 / 作品ネタの小話

『とある魔術の禁書目録』

最強の「反射」を、木原数多はなぜ破れたのか —— 内積と判別式で考える

一方通行の「反射」は、ベクトルを逆向きにする操作です。木原数多の拳がそれを破れた理由を、内積の符号と判別式 D = 0 で読み解きます。

「向きを変える」だけで最強になれる

『とある魔術の禁書目録』の舞台・学園都市には、超能力を持つ学生が大勢います。その頂点、レベル 5 の第一位が一方通行(アクセラレータ)です。能力の名前はベクトル操作。皮膚の表面に触れたものの「力の向き」を、自由に書き換えられます。

ふだんはこれを反射に設定しています。銃弾も拳も、皮膚に触れた瞬間に向きをひっくり返され、来た方向へ同じ勢いで戻っていきます。殴った側の拳が壊れるので、攻撃がまったく通じません。

「向きを変える」だけの能力が、なぜ最強なのか。そして、その反射をなぜ破れた人がいたのか。どちらも、高校で習うベクトルと二次関数で説明できます。

反射は「逆ベクトル」

飛んでくる銃弾の速度は、向きと大きさを持つ矢印、つまりベクトル d⃗\vec{d} で表せます。一方通行の反射は「来た方向へ、同じ勢いで返す」のでした。向きだけが正反対で大きさは同じ矢印ですから、反射のあとの速度は逆ベクトル −d⃗-\vec{d} です。

d⃗\displaystyle \vec{d}⟼ −d⃗\displaystyle {}\longmapsto\ -\vec{d}

たとえば、皮膚の面を横向きの直線とし、銃弾が d⃗\vec{d}=(−3, −4){}= (-3,\ -4) の速度で斜め上から飛んできたとします。反射されると (3, 4)(3,\ 4) になり、飛んできた道をそのまま逆にたどって戻っていきます。

比べるために、鏡やビリヤードの球のような「ふつうの反射」も式にしておきましょう。皮膚から外向きに立てた長さ 11 のベクトルを n⃗\vec{n} とします。ふつうの反射では、面に平行な成分はそのまま残り、面に垂直な成分だけが逆向きになります。垂直な成分は内積を使って (d⃗⋅n⃗) n⃗(\vec{d}\cdot\vec{n})\,\vec{n} と書けるので(内積の章で学ぶ正射影です)、これを 2 回引けば向きが逆になります。

鏡のような反射の式
r⃗\displaystyle \vec{r}=d⃗\displaystyle {}= \vec{d}−2(d⃗⋅n⃗) n⃗\displaystyle {}- 2(\vec{d}\cdot\vec{n})\,\vec{n}

先ほどの例で n⃗\vec{n}=(0, 1){}= (0,\ 1) とすると、d⃗⋅n⃗\vec{d}\cdot\vec{n}=−4{}= -4 なので r⃗\vec{r}=(−3, −4){}= (-3,\ -4)−2×(−4)×(0, 1){}- 2 \times (-4) \times (0,\ 1)=(−3, 4){}= (-3,\ 4)。横の成分 −3-3 は変わらず、縦の成分だけが −4-4 から 44 に変わりました。

一方通行の反射:来た方へ返す 皮膚の面 n d −d 比べると:鏡の反射 皮膚の面 n d r

木原数多の拳を数学で考える

この反射を、素手で破った人物がいます。原作 第13巻(アニメ『とある魔術の禁書目録II』第19〜22話)に登場する木原数多です。やり方は、殴った拳が一方通行の皮膚に触れる寸前で、拳を引き戻すこと。すると反射が「引く動き」を逆向きにしてしまい、拳が一方通行のほうへ引き込まれて当たります。

一見すると屁理屈のようですが、数学で追いかけると、これが筋の通った攻略法だと分かります。

近づくか離れるかは、内積の符号で決まる

拳の速度を v⃗\vec{v} とします。拳が一方通行に近づいているのか、離れているのかは、外向きの n⃗\vec{n} との内積の符号で分かります。

ふつうのパンチは、当たる瞬間に近づいています。反射はそれを逆向きにして、(−v⃗)⋅n⃗(-\vec{v})\cdot\vec{n}=−(v⃗⋅n⃗){}= -(\vec{v}\cdot\vec{n})>0{}> 0、つまり「離れる」向きに変えます。これで拳は跳ね返されます。

反射は、内積の符号をひっくり返す

では、触れた瞬間に拳が離れる向きに動いていたらどうなるでしょう。反射はここでも律儀に向きをひっくり返します。v⃗⋅n⃗\vec{v}\cdot\vec{n}>0{}> 0 だったものが (−v⃗)⋅n⃗(-\vec{v})\cdot\vec{n}<0{}< 0 になり、拳は近づく向きに変わります。

これは鏡のような反射でも同じです。先ほどの式の両辺と n⃗\vec{n} の内積をとると、n⃗⋅n⃗\vec{n}\cdot\vec{n}=∣n⃗∣2{}= |\vec{n}|^2=1{}= 1 なので

r⃗⋅n⃗\displaystyle \vec{r}\cdot\vec{n}=d⃗⋅n⃗\displaystyle {}= \vec{d}\cdot\vec{n}−2(d⃗⋅n⃗)(n⃗⋅n⃗)\displaystyle {}- 2(\vec{d}\cdot\vec{n})(\vec{n}\cdot\vec{n})=− d⃗⋅n⃗\displaystyle {}= -\,\vec{d}\cdot\vec{n}

となり、やはり符号が逆になります。反射のしかたがどちらであっても、「離れていくものが触れると、近づく向きに変えてしまう」という性質は変わりません。反射は「当たる瞬間には、相手は近づいてくるものだ」という前提で組まれた守りでした。木原はその前提の外側を突いたわけです。

反射は v⃗⋅n⃗\vec{v}\cdot\vec{n} の符号をひっくり返す。近づくものは離れ、離れるものは近づく。

タイミングは「判別式 DD=0{}= 0」

とはいえ、「当たる寸前に引く」のは簡単ではありません。ここからは、作中の説明ではなく、数学の模型を使った考察です。

話を一直線にしぼり、拳と皮膚の距離を ss(m)とします。拳は 44 m/s で近づきながら、腕を引く力を受けて、近づく速さが 1 秒あたり 2020 m/s の割合で落ちていくとします(離れる向きの加速度が 20 m/s220\ \text{m/s}^2)。物理で習う等加速度運動の式から、時刻 tt(秒)での距離は、引き始めの距離を cc として

s(t)\displaystyle s(t)=10t2\displaystyle {}= 10t^2−4t\displaystyle {}- 4t+c\displaystyle {}+ c

という二次関数になります。皮膚に触れるのは s(t)s(t)=0{}= 0 のとき。これは tt の二次方程式で、判別式は

D\displaystyle D=(−4)2\displaystyle {}= (-4)^2−4×10×c\displaystyle {}- 4 \times 10 \times c=16\displaystyle {}= 16−40c\displaystyle {}- 40c

です。DD の符号によって、何が起きるかが 3 通りに分かれます。

DD=0{}= 0 のとき、触れた瞬間の拳の速さは s′(0.2)s'(0.2)=20×0.2{}= 20 \times 0.2−4{}- 4=0{}= 0 です。止まった拳には、逆向きにする速度がありません。残っているのは、離れる向きに引く力(加速度 +20+20)だけです。ここで思い出したいのは、一方通行が書き換えるのは速度に限らず、触れたものの「力の向き」そのものだ、という設定です。反射がこの引く力を逆向きにすると、加速度は −20-20 になり、触れたあとの距離は

s(t)\displaystyle s(t)=−10(t−0.2)2\displaystyle {}= -10(t - 0.2)^2

に変わります。グラフは「下に凸」から「上に凸」に折れ曲がり、ss が負の側、つまり皮膚の内側へ向かいます。拳が当たったということです。

t(秒) s(m) 0 0.1 0.2 0.3 0.4 0.5 0.1 0.2 0.3 皮膚(s = 0) 皮膚の内側(当たった) D < 0 D > 0:弾かれる D = 0:接する 反射のあと:上に凸

引き始めの距離がちょうど 0.40.4 m のときだけ、DD=0{}= 0 になります。11 cm ずれて 0.410.41 m なら DD<0{}< 0 で届かず、0.390.39 m なら DD>0{}> 0 で弾かれます。本当は反射がかかる膜には厚みがあるので、ここまで厳しくはないでしょう。それでも、木原の技が「DD をぴったり 00 に合わせる技」だということは見えてきます。作中でも、一方通行の演算のくせまで知り尽くした木原だからできた、とされています。

強く引くほど、強く当たる

もう 1 つ、反射は大きさを変えません。逆ベクトルなら ∣−v⃗∣|-\vec{v}|=∣v⃗∣{}= |\vec{v}| で当然です。鏡のような反射でも、内積で計算すると

∣r⃗∣2\displaystyle |\vec{r}|^2=(d⃗−2(d⃗⋅n⃗) n⃗)⋅(d⃗−2(d⃗⋅n⃗) n⃗)\displaystyle {}= \bigl(\vec{d} - 2(\vec{d}\cdot\vec{n})\,\vec{n}\bigr)\cdot\bigl(\vec{d} - 2(\vec{d}\cdot\vec{n})\,\vec{n}\bigr)=∣d⃗∣2\displaystyle {}= |\vec{d}|^2−4(d⃗⋅n⃗)2\displaystyle {}- 4(\vec{d}\cdot\vec{n})^2+4(d⃗⋅n⃗)2∣n⃗∣2\displaystyle {}+ 4(\vec{d}\cdot\vec{n})^2|\vec{n}|^2=∣d⃗∣2\displaystyle {}= |\vec{d}|^2

となり、大きさは変わりません。上の模型でも、加速度は +20+20 から −20-20 に、大きさを保ったまま向きだけが変わりました。木原の拳の威力は、引く力の強さそのものです。引けば引くほど、強く殴ったことになります。

行列で書くと

一方通行の反射 (x, y)(x,\ y)⟼(−x, −y){}\longmapsto (-x,\ -y) と、皮膚が横向きのときの鏡の反射 (x, y)(x,\ y)⟼(x, −y){}\longmapsto (x,\ -y) は、どちらも行列 1 つで書けます。

(−100−1)\displaystyle \begin{pmatrix} -1 & 0 \\ 0 & -1 \end{pmatrix}(100−1)\displaystyle \begin{pmatrix} 1 & 0 \\ 0 & -1 \end{pmatrix}

左は原点に関する対称移動(180∘180^\circ の回転と同じ)、右は xx 軸に関する対称移動です。一方通行の反射は、平面の上では「180∘180^\circ 回す」操作だったわけです。行列と一次変換の第7章では、こうした移動を行列で表す方法を学びます。

その先:ベクトル場

作中の一方通行は、反射のほかに、風の流れや血の流れの向きまで操ります。空気の流れを考えるには、空間のすべての点に 1 本ずつ矢印(その場所での風の速度)がある、と見るのが便利です。これをベクトル場といいます。天気予報の風の地図が、まさにその絵です。

ベクトル場で「湧き出し」や「渦」を計算する道具は、大学のベクトル解析で学びます。一方通行が風を操るのは、ベクトル場を書き換えているようなものです。そう思って読み返すと、能力の描写が少し違って見えてきます。

出典:『とある魔術の禁書目録』(鎌池和馬 著・はいむらきよたか イラスト、電撃文庫(KADOKAWA)。木原数多との戦いは原作 第13巻、アニメ『とある魔術の禁書目録II』第19〜22話)
このページは非公式のファンによる解説であり、作品の権利は各権利者に帰属します。