魔界円生 〜柳生十兵衛がサインコサインを7人の魔人で理解する
序:円環の呼び声(DJ SOU-iKEN Remix)
島原の乱とは、何だったのか。
圧政への抵抗か? 信仰の殉教か?
否。それは、「三角関数なんて人生で役に立たないw」というインフルエンサーの投稿に対する、三万七千の命を費やしたアンサーソングであった。
ズン......ズン......ズン......。
腐臭と硝煙が層を成して淀む爆心地で、地鳴りのようなキックドラムが鳴り響いている。
その中心、瓦礫で作られたDJブースで、怪老・森宗意軒が天を仰いでいた。
眼窩には眼球がなく、代わりにBPMに合わせて激しく明滅する、ストロボのような燐光が埋め込まれている。
「Put your hands up、直線の理のみで生きる人間どもよ」
宗意軒の声は、しわがれた喉から出たものではなく、大地の底に埋設された巨大ウーファーから響くようであった。
「お前たちの世界には『終わり』がある。直進すればいつか壁に当たり、数値は発散し、痛みは積み重なるばかり。線形で近似された幸福など、所詮は誤差の累積によって崩れ去る運命よ」
宗意軒の枯れ木のような指が、虚空に浮かぶ巨大な円盤に触れる。
キュルキュルキュル......!
指先が空間を擦ると、始まりもなく終わりもない、完全な閉曲線がネオンのように浮かび上がる。
無限のループ再生装置――「単位円」であった。
「聞け、直線の奴隷たちよ。我らが島原にて回せしは、単なる圧政への反逆にあらず。
それは、『万の言の葉が飛び交う蜘蛛の巣』にて、したり顔で『サインコサインなど学校で教える必要なし』と嘯く、浅はかなる者どもへの憤怒なり!」
老人は狂ったように嗤い、フェーダーを一気に押し上げた。
ドォォォォン!!
重低音が空気を震わせると、地底から無数のどよめきが沸き上がった。
「待っていた! この周期を!」
死者たちの腐った心臓が、激しく脈打ち始める。それは渇望だ。
円盤が回る。世界が回る。
「回せ! 回せ! 俺たちを無限に!」
魂たちは自ら墓石を蹴破り、満面の笑みでモッシュピットへと飛び込んでいく。
「名もなき衆愚を従え、直線の理だけで世を解った気になり、円の深淵を『無用』と断ずる傲慢なるアルファどもよ......許さぬ。断じて許さぬ! 貴様らが『要らぬ』と捨てたその叡智こそが、この宇宙を駆動させているのだということを、その鼓膜と三半規管に刻んで教えてやろうぞ!」
宗意軒がターンテーブルを回すたび、空間の係数が書き換わる音がした。
「第一に、『制御(ノーマライズ)』なり。 斜めに走るだけの力でさえ、縦と横の『比率(サイン・コサイン)』を知らねば、暴走し自壊する。己の出力(ゲイン)配分すら知らぬ直線の輩に、未来へ進む資格なし」
「第二に、『変換(トランスフォーム)』なり。 回る力を電気に変え、電気を動きに変える。その効率を決めるのは角度の正弦(サイン)。これなくして、文明の灯火は点らぬ。エネルギーの翻訳機を持たぬ者は、ただ消費し、燃え尽きるのみ」
「第三に、『予見(プレディクション)』なり。 歴史は繰り返す。季節は巡る。その周期を余弦(コサイン)として記述せぬ限り、貴様らは永遠に想定外の未来に怯えることになる。過去のサンプリングこそが、円環の上で未来となるのだ」
「第四に、『復元(レストレーション)』なり。 行き過ぎれば戻る。万物はバネのごとく振動する。その調和の律動こそが、生命の脈動そのもの。微分方程式の解として現れる波形こそが、この世の安定の形なり」
「第五に、『転変(ローテーション)』なり。 世界を回せ。座標を歪めよ。回転行列の鍵を持たぬ者は、目の前の景色さえ変えられぬ。視点を固定されたまま、直交座標の檻の中で死ぬがいい」
「第六に、『断絶(オルトゴナリティ)』なり。 直交する心は交わらぬ。内積ゼロの孤独を知れ。関係性を数値(コサイン)として測れぬ者は、他者を理解することはおろか、触れることすら叶わぬ」
「そして第七に、『分解(スペクトル)』なり! カオスに見えるこの世の森羅万象も、周波数の眼で見れば、ただの波の足し合わせに過ぎぬ! 複雑怪奇な現実を、単純な成分へと還元する......これぞ神の業! これぞ魔界の代数!」
Are you ready!?
ドォォォォォォォン!!
ベースドロップと共に、泥土がボコボコと沸き立つ。
宗意軒のプレイに呼応するように、七つの異形がステップを踏みながら這い出してくる。女体を繭として、かつて天下無双と謳われた七人の剣鬼たちが、現世の物理法則を書き換えながら再接続を果たそうとしていた。
「我らが魔界の理は『円』なり。無限の苦しみを有限の周期に閉じ込め、永遠に回し続ける機関なり。死という特異点すらも、ここでは単なる位相のズレに過ぎぬ」
彼らの眼に、生前の人間らしい光はない。
あるのは、世界を「回転」と「周期」で記述しようとする、冷徹な数理の光のみ。
「さあ、蘇れ。直線の軛を外れし剣客たちよ! この世を美しき円環の理で満たすのだ!」
隻眼の剣豪、柳生直角十兵衛三厳がその地に降り立ったのは、まさに魔界の扉が開かれようとする刻であった。
彼が挑むのは、もはや剣術ではない。
幾何学の悪夢と化した、七つの「サインコサイン」であった。
サインコサインの再発見:三角形を捨てて「感覚」で掴む7つの入口
「サインコサイン」と聞いただけで、$${\sin}$$ や $${\cos}$$ といった記号に拒絶反応が出てしまう。あるいは、頭の中に無理やり「直角三角形」を描こうとして、マイナスの角度や360度以上の回転で訳が分からなくなってしまう。 そうやって苦しんでいる人は非常に多いです。
しかし、現実世界やエンジニアリングの現場で、その三角形がそのままの形で現れることは稀ですし、記号も単なる「機能の名前」に過ぎません。
人間の脳の形はひとつではありません。
このお話では、教科書的な「図形(幾何学)」の定義だけにこだわらず、物理・データ・音・変換といった全く異なる分野の視点から7つのアプローチを用意しました。
「図形は苦手だけど、この話なら分かる」という入口が必ずあるはずです。
名前と中身の「ねじれ」:誰も得しない歴史的事故
本題に入る前に、ひとつ重要な事実をお伝えします。
あなたが「サイン(Sin)」という言葉を聞いて意味が分からないのは当然です。なぜなら、この名前自体が歴史的な「伝言ゲームの失敗」で付けられた、機能を表していない不適切なラベルだからです。
本来、インドの数学では円の中にある弦を「弓の弦」に見立てて呼んでいました。機能を表す、まともな名前でした。
しかし、それがアラビア語を経てラテン語に翻訳される長い歴史の中で、学者が言葉の意味を取り違え、「弓の弦」ではなく「胸のポケット」や「湾(入り江)」を意味する言葉(Sinus)に誤訳してしまったと言われています。
プログラミングで言えば、本来 height(高さ)と名付けるべき変数名を、手違いで pocket(ポケット)と名付けてしまい、それが修正されないまま1000年間、世界中の教科書で使われているようなものです。
この名前を見て、直感的に「波のことだ」とか「回転のことだ」と推測するのは、ほぼ不可能です。
サインコサインが分かりにくいのは、あなたの理解力のせいではありません。名前と機能が完全に食い違っているのです。
名前が機能を表していないため、使うたびに「えーっと、サインは縦だっけ?横だっけ?」と迷う無駄な思考コストが発生します。
ですから、名前の由来から理解しようとするのは諦めて、この後の「機能」とセットで「縦率・横率」というラベルを脳内で貼り替える対抗策をとってください。
そうそう、DJ 森宗意軒から、最後に一つだけ、重要な呪いがあるそうです。
「心せよ。人間界の通貨たる『度数法(360度)』は、魔界の演算器には通用せぬ。我らが受け付けるのは、円周上の距離たる『ラジアン(弧度法)』のみ。 90度などという半端な数を投げれば、首が14周半して千切れ飛ぶであろう。円を一周するならば $${2\pi}$$ と唱えよ!」

第一公理『対角暴走』
対象:宝蔵院胤舜
罪状:ベクトル正規化の怠慢による、物理法則への冒涜。
魔界の呪文:cos = 基準軸への影(横・残る成分) sin = 基準軸からこぼれた分(縦・乖離する成分)
グチャリ、グチャリ。
湿った音が近づいてくる。
現れたのは、宝蔵院胤舜。かつて槍の聖人と謳われた男は、いまや狂った物理演算のような異形と化していた。
眼球が眼窩から飛び出し、視神経だけでぶら下がっている。
口元からは涎と共に、意味不明な16進数の羅列が漏れ出ている。
「十兵衛......推して......参る......0xDEADBEEF......」
胤舜が十字槍を構えた刹那、空間のテクスチャが裂けた。
前後左右ではない。「斜め」である。
彼が右斜め前方に足を踏み出した瞬間、その速度は物理的な限界を突破した。
ドギャアアアアアン!!
大気が破裂し、胤舜の肉体が引き伸ばされる。
それは武術の歩法ではない。縦の力と横の力を、何の制御もなく同時に最大出力で叩きつける、狂気の特攻であった。
縦100、横100。合成された速度は141.42...($${\sqrt{2}}$$倍)。
ミチミチミチッ!
肉体が悲鳴を上げる。血管が耐えきれずに破裂し、皮膚がポリゴンのように剥離していく。自らの速さに「存在」が追いついていないのだ。
「フハハ! 痛い! 速い! 痛い! 見えまい! 直交座標の檻に囚われた貴様には、この『狂気』の加速は!」
十兵衛の隻眼は、汚物を見るように冷ややかだった。
冥府の眼帯が、胤舜の身体を「処理落ちしたエラー」として赤く染め上げていた。
[FATAL ERROR] Velocity Vector Overflow.
[CAUSE] Normalization (Normalize) skipped.
[CALC] Len = sqrt(x^2 + y^2) >> 1.0
[ACTION] Force Garbage Collection.「哀れな......」
十兵衛は、抜き打ちに踏み込んだ。
慈悲ではない。バグの消去である。
相手が速ければ速いほど、その軌道は計算機的に予測可能になり、脆くなる。
円の理とは、力を一点に集中させることではない。あまねく全方位に、等しく「壱(1.0)」を保つことにある。
「胤舜、お主の槍は長すぎる。それではメモリに入らん」
十兵衛の剣が、斜めに走る胤舜の軸足を、カクリと払った。
横率 0.707 ($${\cos}$$)、縦率 0.707 ($${\sin}$$)
その値は、ベクトルの長さを強制的に1.0にする「割り算(正規化)」によって導かれる。
$${v /= |v|}$$
宇宙の定数に従った冷徹な配分は、暴走するエネルギーを軽やかに受け流す。
グシャアッ!
制御を失った胤舜の体が、自らの慣性によって地面に叩きつけられた。
あまりの衝撃に、内臓が口から飛び出し、槍の柄が腹部を貫通して背中から突き出る。
それはまるで、串刺しにされた昆虫の標本。
「が、ぼ......バカ、な......速度が......あ、が......」
「斜めとは、縦と横の『混ぜ物』に過ぎぬ。配分を誤れば、宇宙がお前を拒絶する」
胤舜の体が、泥のように崩れ落ちる。
死にゆく脳裏に浮かんだのは、神仏の姿ではなく、解けなかった計算ドリルであった。
十兵衛は血振るいをし、静かに納刀した。
魔界の衆、一人。削除完了。
「斜め」はコンピュータにとって扱いづらい
ゲームのコントローラー(アナログスティック)を想像してください。あなたはマリオやリンクを動かすとき、無意識にスティックを「右斜め上」や「左下」に倒しています。
人間にとって「斜め」は直感的な1つの動作です。しかし、コンピュータにとって、この「斜め」という情報は実はとても扱いづらいものです。
なぜなら、コンピュータの画面は「縦と横の格子状の点(ピクセル)」でできているからです。
コンピュータには「斜めに進め」という命令を直接実行する機能はありません。内部では必ず、以下の2つの命令に翻訳して実行しています。
「右(X軸)にこれだけ進め」
「上(Y軸)にこれだけ進め」
つまり、あなたが入力した「斜めの角度」というアナログな情報を、デジタルな画面で表現できる「縦と横の成分」に分解(翻訳)してあげる必要があるのです。この翻訳機こそが、サインコサインです。
「パワーの配分」として理解する
スティックを倒す角度によって、縦と横にどれくらいの「パワー(進む力)」が配分されるかを見てみましょう。スティックを限界まで倒したときのパワーを 100%(1.0) とします。
ケース1:真横(0度)
スティックを真右(➡)に倒しました。
横のパワー: 全振りしているので 100% (1.0) です。
縦のパワー: 上下には全く動かないので 0% (0.0) です。
ケース2:真上(90度)
スティックを真上(⬆)に倒しました。
横のパワー: 左右には全く動かないので 0% (0.0) です。
縦のパワー: 全振りしているので 100% (1.0) です。
ケース3:斜め45度(↗)
ここが重要です。スティックを右斜め上45度に倒しました。
感覚的に、「縦も横も、真上や真横に倒したときよりは遅くなる(弱くなる)」ことが分かりますか?
もしここで「横も100%、縦も100%」出してしまったら、キャラクターはとんでもないスピード($${\sqrt{2}}$$倍、約141%の速さ)で爆走してしまいます。
一定の歩行速度を保つためには、パワーを分散させなければなりません。 計算すると、45度のときは以下のようになります。
横のパワー: 約 70.7% (0.707)
縦のパワー: 約 70.7% (0.707)
この「70.7%」という数字、どこから出てきたのでしょうか? これを出力してくれるのが、コサインとサインです。
アダプタとしての機能定義
ここで、サインコサインを「図形」ではなく、入力を変換する「アダプタ(装置)」として定義し直します。
入力: 角度 $${\theta}$$ (スティックの傾き)
装置:
$${\cos(\theta)}$$ アダプタ: 「横方向のパワー配分率」をはじき出す。
$${\sin(\theta)}$$ アダプタ: 「縦方向のパワー配分率」をはじき出す。
出力: -1.0 〜 1.0 の数値
マイナスの世界も怖くない
直角三角形で考えると「マイナスの角度」や「鈍角(90度以上)」で悩みますが、スティックなら簡単です。
左に倒した: 横のパワーがマイナスになる($${\cos}$$ がマイナス)。
下に倒した: 縦のパワーがマイナスになる($${\sin}$$ がマイナス)。
例えば、左斜め下(225度)に倒せば、横も縦もマイナスの値(バックする力)が出力されます。それだけの話です。
あなたは毎日サインコサインを使っている
あなたがゲームでスティックを斜めに倒すたび、ゲーム機の中では毎秒60回以上、この変換が行われています。
player.x += speed * cos(angle)
player.y += speed * sin(angle)
プログラミングコードで見ると、サインコサインは「斜めの入力を、縦横の移動量に変換する係数」以外の何物でもありません。
「三角形の辺の比」という定義は忘れて構いません。これからは「ジョイスティックの分解アダプタ」と呼んでください。
第二公理『磁界発電』
対象:風魔小太郎
罪状:エネルギー保存則への違反未遂、および熱力学的自壊。
魔界の呪文:cos = 基準軸への影(有効成分・磁束の貫通量) sin = 基準軸からこぼれた分(直交成分・切り裂く量)
鼻を突く、タンパク質の焦げる臭い。
二番目の敵、風魔小太郎は、もはや人の形を留めていなかった。
全身の皮膚が炭化して剥がれ落ち、露出した赤い筋肉繊維が紫電を迸らせている。
独楽のように高速回転するその姿は、忍びというよりは、暴走したモーターのようであった。
「ギギ......回る......俺は回るぞ、十兵衛ェ! 脳が! 脳が痺れるゥゥ!」
小太郎が旋回するたび、大気がイオン化し、青白いプラズマが発生する。
彼にとって、十兵衛という有機体は、単なる「磁束」に過ぎない。自らの回転で切り裂き、快楽物質を搾り取るための餌である。
「貴様という磁場を直角に切り裂き、俺は最強の雷となる!」
発電の理屈は単純にして絶対だ。磁力線を切る角度が深ければ深いほど、電圧は上がる。
すなわち、もっとも効率が良いのは「直角(90度)」で刃を入れること。
ここで言う90度とは、磁場とコイル面の「法線(垂直な線)」との角度である。法線が磁場と直角になるとき、コイルの導線そのものは磁場を最も深く切り裂く。
効率100%($${\sin 90^\circ=1}$$)。
小太郎は、十兵衛に対し、常に直角の軌道を取りながら、死の舞踏を踊り続けていた。
十兵衛の肌が、誘導電流でチリチリと焼け焦げる。
眼帯が、危険水位を超えた電圧を警告している。
[WARNING] High Voltage Detected.
[CAUSE] Cutting Angle: 90 deg (Max Efficiency)
[STATUS] System Overheat.「効率、効率と......小賢しいッ!」
受ければ感電死。避ければ追撃。
ならば、答えは一つ。
物理法則のハシゴを外してやればよい。
「見切ったり」
十兵衛は、小太郎の超高速回転に合わせ、自らの身体を滑り込ませた。
刃に対して直角ではない。限りなく「平行(0度)」になるように。
磁力線と導線が平行であれば、どれだけ高速で動いても、電気は生まれない。それが宇宙のルールだ。
角度、0度。
サインの値は、ゼロ。
フツリ、と雷光が消えた。
世界から音が消えたような、不気味な静寂。
「あ......?」
行き場を失った莫大な回転エネルギーは、電気に変換される出口を塞がれた。
だが、エネルギー保存則は絶対だ。逃げ場のないエネルギーは、すべて最も原始的な形態――「熱」へと変わる。
ジュッ。
小太郎の体内から、血液が瞬時に沸騰する音がした。
それは、熱した鉄板に生肉を押し付けたような、食欲を減退させる音だった。
「あ、あつ......!? なぜだ、なぜ俺が燃えるゥゥゥ!」
「貴様の効率は、私が決めた」
ボォォォォォッ!!
内側から赤熱し、人体発火を起こす小太郎。
眼球内の硝子体が沸騰し、ポン、ポンと音を立てて破裂する。
脳漿が蒸発し、頭蓋骨の隙間からシューシューと白煙を吹く。
黒い骸骨となって崩れ落ちた小太郎を、十兵衛はただ冷ややかに見下ろしていた。
そこには勝利の感慨などない。あるのは、法則に従って処理された廃棄物への無関心のみ。
コンセントの向こう側で回るもの
家の壁にあるコンセント。そこから流れてくる電気は「交流(AC)」と呼ばれ、電圧がプラスとマイナスを行ったり来たりしています。
オシロスコープで見ると、きれいなサインカーブ(正弦波)を描いています。
なぜ、電気は波の形をしているのでしょうか?
誰かがわざわざ「波になれ」と加工したわけではありません。
これは、発電所で巨大なタービンが「回転」していることの、物理的な証拠そのものなのです。
「効率」としてのサイン
理科の授業を思い出しましょう。電気を作る(発電する)仕組みは磁石の間でコイルを回転させるだけです(電磁誘導)。
このとき、コイルがどれくらい効率よく磁力を受け止めているかが、発電される電圧の強さを決めます。
風車をイメージしてください。
風を正面から受けるとき(90度): 風のエネルギーを100%受け止めます。発電量は最大です。
風を真横から受けるとき(0度): 風は羽の表面を素通りしてしまいます。エネルギーは0%、発電量もゼロです。
風を斜めから受けるとき: その角度に応じて、受け止められるエネルギーの割合が変わります。
この「エネルギーを受け止める効率(%)」こそが、サイン($${\sin}$$)の正体です。
磁力線に対して垂直(90度) $${\rightarrow}$$ 効率 $${\sin(90^\circ) = 1.0}$$ (MAX)
磁力線に対して平行(0度) $${\rightarrow}$$ 効率 $${\sin(0^\circ) = 0.0}$$ (ZERO)
裏返って反対向き(270度) $${\rightarrow}$$ 効率 $${\sin(270^\circ) = -1.0}$$ (逆向きMAX)
タービンが一定速度で回転し続ける限り、この「効率」は $${0 \to 1 \to 0 \to -1 \to 0}$$ と滑らかに変化し続けます。
その結果、生み出される電気も、そのままサインカーブの形になるのです。
サインコサインは「回転エネルギーの翻訳結果」
ハードウェアエンジニアや電気工事士にとって、サインコサインは数学の図形ではありません。
それは、「回転運動エネルギー」を「電気エネルギー」に変換した際の、出力履歴です。
逆に言えば、モーター(電気で回る機械)は、このプロセスを逆回しにしているだけです。
「波の形をした電気(サインカーブ)」を流し込むことで、磁石との反発力をコントロールし、滑らかな「回転」を生み出しています。
発電: 回転 $${\xrightarrow{\sin}}$$ 電気(波)
モーター: 電気(波) $${\xrightarrow{\sin}}$$ 回転
この変換プロセスを記述するプロトコルこそが、サインコサインです。
第三公理『季節性予測』
対象:由比正雪
罪状:過去データへの過剰適合(オーバーフィッティング)による未来の固定化。
魔界の呪文:cos = 基準軸への影(周期の開始点・過去との相関) sin = 基準軸からこぼれた分(周期のずれ・位相の進行)
軍学者・由比正雪は、刀を抜こうともしなかった。
ただ、白濁した眼で虚空を見つめ、指先で何かを数えている。
その背後には、夥しい数の死者の幻影――過去のデータがヘドロのように渦巻いていた。
「呼吸、周期0.8秒......瞬き、周期2.4秒......左足の加重、振幅増大......ふむ」
正雪の魔眼は、十兵衛を「周期的な信号を発する袋」、すなわち、命の営みをすべて上昇と下降を繰り返す余弦波として見ているのだ。
「十兵衛、お前の動きは『既出』だ。人間ごときが、歴史の周期から逃れられると思うな」
正雪が一歩、左に動く。
十兵衛が斬り込んだ瞬間、そこには既に誰もいなかった。
空を切った刃の横から、正雪の短刀が、まるで最初からそこにあったかのように、十兵衛の肩を抉る。
「ぐっ......!」
「私はお前が斬ろうとする未来を、既に『過去』として知っている」
過去のデータから周期を特定し、数式に代入すれば、未来は確定する。正雪にとって、戦いとは既に終わった暦を確認する事務作業に過ぎない。
十兵衛の眼帯に、冷酷な予測が表示される。
[PREDICTION] Enemy model overfitted to past cycles.
[COUNTER] Execute: Trend Break.「私は......季節ではない......!」
十兵衛は、自らの呼吸を止めた。
心臓の鼓動、瞬き、筋肉の収縮。すべてを意識的に乱し、循環する円の動きを捨てた。
二度と戻らない、一直線の突き。
それは、過去のどのデータにもない、突発的な「外れ値」。
「計算、外......だと......!?」
正雪が予測した未来の位置に、十兵衛の姿はなかった。
あるはずのない痛み。見れば、十兵衛の刃は、既に正雪の喉元にあった。
「兵法に絶対なし。予測に溺れたな、正雪」
ドスリ。
十兵衛の手首が返る。
ゴボッ、と嫌な音がして、正雪の喉が裂けた。
気管と食道が断裂し、断面からひゅーひゅーと空気が漏れる。
正雪は喉から血の泡を吹きながら、それでもまだ指を動かしていた。
薄れゆく意識の中で、彼はまだカレンダーをめくっていた。
夏の次は秋、秋の次は冬......。
だが、彼に次の季節が訪れることは、二度となかった。
死体となった正雪の顔は、驚愕に歪んだまま硬直していた。
十兵衛は刀についた脂を拭い、唾を吐き捨てた。
過去に食い殺されるのは、御免だ。
「歴史は繰り返す」を数式にする
ビジネスの現場では、売上データやユーザー数などの「時系列データ」を扱います。 データを見ていると、あるパターンに気づくことがあります。
「毎年8月になるとアイスクリームが売れる」
「毎月25日(給料日)になると高額商品が売れる」
「毎日12時(ランチタイム)になるとアクセスが増える」
時間は一直線に進んでいきます(2024年、2025年、2026年...)が、その中には必ず「繰り返されるパターン(周期性)」が含まれています。
この「ループする現象」をExcelでモデル化し、来月の売上を予測したいとき、どうすればいいでしょうか?
直線的に増えるグラフ(一次関数 $${y=ax+b}$$)では、この「毎年夏に上がって冬に下がる」という動きを表現できません。
ここで、サインコサインの出番です。
螺旋階段としての時間
時間を「ただの直線」と見るのではなく、「螺旋階段」のようにイメージしてください。
横から見れば上に登っています(成長しています)が、上から見れば同じところをぐるぐる回っています(季節巡回)。
この「ぐるぐる回る」部分を担当するのがサインコサインです。
ビジネス分析において、コサインカーブは「カレンダーのサイクル」を表すための道具になります。
$$
y = A \cos(2\pi f t)
$$
数式は難しく見えますが、やっていることは単純です。
周期($${f}$$): 「1年周期」なのか「1週間周期」なのかを決める。
振幅($${A}$$): その波(需要の変動)がどれくらい激しいかを決める。
コサイン: 時間 $${t}$$ が進むにつれて、自動的に上がったり下がったりを繰り返してくれる「自動カウンタ」。
これを使えば、「基本の成長トレンド(直線)」+「季節の変動(コサイン)」という組み合わせで、リアルな売上予測モデルを作ることができます。
今回正雪が使ったのはコサインでしたが、仮にサインを使っても結果は変わりません。サインとコサインは、本質的に同じ波であり、単に「開始位置(位相)」がズレているだけに過ぎません。
ちなみに:なぜサインじゃなくてコサイン?
数学的には位相(スタート位置)をずらせばどちらも同じ波を表せますが、実務や物理では $${\cos}$$ が好まれる傾向があります。 最大の理由は、$${t=0}$$(基準点)で最大値 $${1}$$ をとるからです。
「今」や「ピーク」を基準に時間を測る場合、$${\sin(0)=0}$$ よりも $${\cos(0)=1}$$ の方が、直感的に「始まり」や「相関の強さ」を表しやすいのです。
また、物理学では単振動や波動を $${e^{i\omega t}}$$ (複素数)で扱う際、現実世界に現れる「実部(Real Part)」が $${\cos}$$ に対応するため、正雪のような「現世への干渉」を目論む者にとっては、コサインが扱いやすかったのでしょう。
「季節性(Seasonality)」の除去
逆に、マーケティング分析では「季節の影響を取り除きたい」という場合もあります。
「先月よりアイスの売上が落ちた。これは人気がなくなったのか? それとも単に冬になったからか?」
これを判断するには、生のデータから、コサインでモデル化した「季節要因」を引き算すればいいのです。
そうすれば、季節ごとの変動に惑わされない、商品の「真の実力」だけを抽出することができます。
第四公理『調和振動』
対象:荒木又右衛門
罪状:復元力の無限増幅による、空間の圧壊。
魔界の呪文:cos = 基準軸への影(位置エネルギー・バネの縮み) sin = 基準軸からこぼれた分(運動エネルギー・速度)
ギチ、ギチ、ギチ、ギチ......。
不快な音が響いている。
生木を引き裂くような、あるいは湿ったロープを限界までねじり上げるような音。
四番目の敵、「鍵屋の辻」の決闘者、荒木又右衛門。
その四肢は、見るも無惨に改造されていた。
関節が外れ、筋肉が異常に引き伸ばされ、全身が巨大な「バネ」となって脈動している。皮膚の下で、筋肉繊維がミミズのようにのたうち回っている。
「逃げろ......十兵衛......逃げれば逃げるほど、俺は強く、速く、貴様を追うぞォ!」
又右衛門が笑う。その口は耳まで裂け、歯茎が剥き出しになっている。
彼の中心には、見えざる「釣り合いの位置(均衡点)」がある。
そこから離れる変位 $${x}$$ が大きくなるほど、引き戻そうとする力 $${F}$$ は増大する($${F=-kx}$$)。
十兵衛がバックステップで距離を取ると、又右衛門はそれを上回る猛烈な加速度で引き寄せられ、砲弾のような斬撃を繰り出してきた。
防御不可能の単振動。
受けるたび、十兵衛の腕の骨がきしむ。衝撃が内臓まで響く。
[ANALYSIS] Physical Law: Hooke's Law detected.
[STATE] Acceleration is proportional to -Displacement.
[PHASE SPACE] Trajectory forming a perfect circle.「面倒な......物理法則そのものと戦えと言うか」
距離を取れば、相手の威力は上がる。
ならば、答えは「距離ゼロ」のみ。
十兵衛は、襲いかかる刃を紙一重でかわし、最も危険な場所――又右衛門の懐、すなわち「中心」へと飛び込んだ。
そこは、バネの力がゼロになる特異点。台風の目。
「貴様の剣が最速になるのは、中心を通り過ぎる瞬間。だが、中心そのものに『力』はない!」
変位、ゼロ。
復元力、ゼロ。
又右衛門の動きが、一瞬だけ慣性のみの浮遊状態になる。
位置 $${x}$$ と速度 $${v}$$ を並べた「位相空間」において、彼は円の頂点を通過しているが、実空間での駆動力は失われている。
その刹那の静止。
十兵衛の刃が閃く。
狙うは首ではない。又右衛門の全身を支える「バネ定数($${k}$$)」にあたる、太いアキレス腱と背筋だ。
バチンッ!!
巨大な輪ゴムが切れたような破裂音が、戦場に響き渡った。
制御を失った又右衛門の肉体が、自らの強大すぎる復元力によって、内側に向かって収縮を始める。
「あ、ガ、ギ......!?」
バキバキと骨が砕け、手足がありえない方向に折れ曲がる。
メキョッ!
頭部が、肋骨の中にめり込む。
自らの振動エネルギーに押し潰され、又右衛門は小さく、硬い、赤黒い肉塊へと圧縮された。
地面に転がったそれは、もはや人と呼べる形をしていなかった。
十兵衛はそれを見下ろし、小さく十字を切った。いや、X軸とY軸を切った。
物理法則のゆりかごの中で、剣鬼は静かに停止した。
幾何学から物理法則へ
数学教育において、サインコサインは単位円上の座標として導入されることが一般的です。しかし、物理学や工学の視点に立つと、円運動とは無関係に見える現象の中に、サインコサイン(正弦波)が現れる事例が数多く存在します。
その典型が「バネの振動(単振動)」です。
天井から吊るしたバネにオモリをつけ、変位を与えて放すと、オモリは周期的な往復運動を繰り返します。このオモリの時間的な位置変化をグラフにプロットすると、幾何学で習う正弦波と全く同じ形状を描きます。
復元力と運動方程式
バネの振動を支配しているのは、フックの法則です。
$$
F = -kx
$$
ここで $${F}$$ はバネが及ぼす力、$${x}$$ は釣り合いの位置からの変位、$${k}$$ はバネ定数(バネの硬さ)を表します。この式が示しているのは、以下の物理的性質です。
力の向き: 変位 $${x}$$ とは逆向き(マイナス)に力が働く。
力の大きさ: 変位 $${x}$$ に比例して大きくなる。
つまり、物体が中心(釣り合いの位置)から離れれば離れるほど、中心へ引き戻そうとする「復元力」が強く働きます。
この力が働く環境下での物体の挙動を、ニュートンの運動方程式 $${F = ma}$$ (力=質量×加速度)に代入すると、以下の関係式が得られます。
$$
|ma = -kx
$$
微分方程式の「解」としての正弦波
物理学では、この式を「微分方程式」として読み解きます。
加速度 $${a}$$ は、位置 $${x}$$ を時間 $${t}$$ で2回微分したもの($${\frac{d^2x}{dt^2}}$$)です。つまり、式はこう書き換えられます。
$$
\frac{d^2x}{dt^2} = -\frac{k}{m}x
$$
この数式が問いかけているのは、次のようななぞなぞです。
「2回微分する(加速度をとる)と、元の形に戻り、かつ符号がマイナスになる関数 $${x(t)}$$ は何か?」
多項式($${t^2}$$ など)や指数関数($${2^t}$$ など)では、この条件を満たせません。微分すると形が変わったり、符号が変わらなかったりするからです。
数学の世界で、この性質を持つ関数は $${\sin(t)}$$ と $${\cos(t)}$$ しかありません。
$${\sin(t)}$$ を1回微分 $${\rightarrow}$$ $${\cos(t)}$$ (速度)
$${\cos(t)}$$ をもう1回微分 $${\rightarrow}$$ $${-\sin(t)}$$ (加速度)
元の形に戻り、かつマイナスがつきました。
したがって、バネの振動という物理現象を記述する正解(解)は、必然的に以下の形で表されることになります。
$$
x(t) = A \cos(\omega t + \phi)
$$
物理シミュレーションでサインコサインを使うのは、単に「波っぽい形だから」選んでいるのではありません。ニュートンの運動方程式を真面目に解くと、数学的必然としてその形しかあり得ないからです。
なぜ世界は「波」でできているのか?
バネだけでなく、振り子、原子の振動、電気回路の振動、光の波など、世界中あらゆる場所にサインコサインが現れます。
なぜ自然界はこんなにも「バネ(復元力)」が好きなのでしょうか?
その秘密は、「テイラー展開(近似)」にあります。
自然界のあらゆる安定した状態(エネルギーの谷底)において、その底付近の曲面は、拡大すると「放物線($${y=x^2}$$ の形)」に見えます。
エネルギーが $${x^2}$$ の形をしているとき、そこから生じる力(傾き)は微分して $${x}$$ に比例します(つまり $${F = -kx}$$)。
振り子の動きも、振れ幅が小さければバネと同じとみなせる。
原子同士の結合も、わずかな振動ならバネと同じとみなせる。
これを「調和振動子近似」と呼びます。
「世界はバネでできている」。だからこそ、その挙動を表すサインコサインは、物理学における「世界の基本言語」として機能するのです。
エネルギー保存則とピタゴラスの定理
物理の視点で見ると、数学の公式 $${\sin^2 \theta + \cos^2 \theta = 1}$$ にも、鮮やかな意味が与えられます。
単振動している物体は、2つのエネルギーを持っています。
位置エネルギー(バネが縮んでいるエネルギー):変位 $${x}$$ の2乗に比例 $${\propto \cos^2}$$
運動エネルギー(動いている勢い):速度 $${v}$$ の2乗に比例 $${\propto \sin^2}$$
物体が端にいるとき、速度はゼロですがバネは一番縮んでいます(位置エネルギー最大)。
物体が真ん中を通るとき、バネは自然長ですが速度は最大です(運動エネルギー最大)。
エネルギー保存の法則により、この2つの合計は常に一定でなければなりません。
$$
\text{位置エネルギー} (\cos^2) + \text{運動エネルギー} (\sin^2) = \text{一定} (1)
$$
なんと、あの有名な「ピタゴラスの定理(三平方の定理)」は、物理の世界では「エネルギーが形を変えても総量は変わらない」という保存則の現れだったのです。
等速円運動の射影との等価性
最後に、幾何学との接点を確認します。
単振動は物理法則から導かれる現象ですが、等速円運動をしている物体を、回転面に対して真横(一次元)から投影した影の動きとも完全に一致します。
これを物理学では「位相空間(フェーズスペース)」という概念で統一します。
横軸に「位置」、縦軸に「速度」をとってグラフを描くと、単振動している物体は、グラフ上でぐるぐると綺麗な「円」を描き続けます。
現実空間: 行ったり来たりの往復運動(1次元)
位相空間: エネルギー一定のまま回り続ける円運動(2次元)
「バネ」という物理現象から入ったとしても、エネルギーの保存を記述しようとすると、結局は「回転(円)」の概念にたどり着く。
これが、物理・シミュレーション派の入口から見たサインコサインの絶景です。
第五公理『転変行列』
対象:柳生但馬守宗矩
罪状:座標系の私物化による、空間認識の改竄。
魔界の呪文:cos = 基準軸への影(横維持率・縦維持率) sin = 基準軸からこぼれた分(縦混入率・横混入率)
嘔吐感。
強烈なめまいで、十兵衛は泥の中に膝をついた。
世界が回っているのではない。脳が回されているのだ。
胃の中身が逆流し、酸っぱい液体が喉を焼く。
五番目の敵は、実父にして最強の剣術家、柳生但馬守宗矩。
彼が刀印を結ぶと、世界が軋みを上げて回転する。
地面が壁になり、空が床になる。重力の方向さえ分からなくなる。三半規管の中のリンパ液が、ありえない方向に波打ち、平衡感覚を破壊する。
「十兵衛、お前の剣は『座標』に依存しておる。X軸とY軸を混ぜ合わされれば、一歩も動けまい」
但馬守は一歩も動いていない。ただ、世界を回している。
いや、正確には「十兵衛の認識している世界」の定義を書き換えている。
十兵衛の視界の中で、父の姿が30度、60度、90度とズレていく。
斬り込んでも、そこには既に誰もいない。空間ごとねじ切られる感覚。
自分の腕がどこにあるのか、足がどこを踏んでいるのか。感覚情報が錯綜し、脳がオーバーフローを起こしている。
グニャリ。
視神経が焼き切れるような錯覚。
真っ直ぐ突き出したはずの刀が、視界の中では「横」に曲がって見える。
前に進もうと踏み出した足が、勝手に「右」へ滑る。
[SYSTEM] Space Distortion Detected.
[MATRIX] | cos -sin |
| sin cos |十兵衛は、口の端から胃液を垂らしながら、必死に父の術を読解した。
これは幻術ではない。ただの『代入』だ。
物理的な空間を歪めているのではなく、十兵衛の脳内にある「空間認識のパラメータ」をハッキングしている。
新しい横位置($${x'}$$)は、元の横($${x}$$)と縦($${y}$$)をコサインとサインでブレンドしたもの。
新しい縦位置($${y'}$$)もまた、比率を変えてブレンドしたもの。
$$
\begin{pmatrix} x' \\ y' \end{pmatrix} = \begin{pmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{pmatrix} \begin{pmatrix} x \\ y \end{pmatrix}
$$
父は、十兵衛の脳内にある「縦と横の成分比率」を強制的に書き換え、脳髄を撹拌しているだけだ。
行列の符号の配置は、流派(行優先か列優先か)によって変わるが、本質は変わらない。
「基底($${x}$$と$${y}$$)」がどこへ飛んだか。それだけだ。
ミキサーにかけられた果物のように、意識がドロドロに混ざり合う。
「成分が混ざっているなら......解けばいい!」
十兵衛は自らの脳内で「逆行列」を展開した。
視覚に頼るな。三半規管を信じるな。
気配を、座標を、数式で逆算しろ。
混ぜられた比率を元に戻す。逆回転させる。
角度 $${\theta}$$ の回転を打ち消すには、角度 $${-\theta}$$ の回転行列を掛ければいい。
$$
\begin{pmatrix} \cos(-\theta) & -\sin(-\theta) \\ \sin(-\theta) & \cos(-\theta) \end{pmatrix} = \begin{pmatrix} \cos\theta & \sin\theta \\ -\sin\theta & \cos\theta \end{pmatrix}
$$
$${\cos}$$ と $${\sin}$$ の高速演算が脳髄を焼き切る寸前、世界がガチリと正常な位置に嵌まった。
歪んだ座標系が、直交座標系へと回帰する。
「捉えた!」
十兵衛の突きが、但馬守の眉間を捉える。
だが、手ごたえは軽い。
肉を貫く感触ではない。腐ったデータを削除するような、空虚な感触。
但馬守の顔が、幾何学模様のノイズとなって崩れ落ちていく。
ポリゴンの継ぎ目が裂け、その隙間から「無」が漏れ出している。
「見事......。座標の檻を抜け出したか......」
父の顔をしたノイズの塊が、砂のように崩れ去る。
十兵衛は涙を流さなかった。
ただ、空間の歪みが修正されたことへの安堵と、肉親を数式として処理しなければならなかった疲労だけがあった。
吐き出した胃液を袖で拭い、十兵衛は立ち上がった。
世界は、残酷なほど垂直に、正常に戻っていた。
画像回転の「難しさ」:デジタルの罠
スマホで写真を「クルッと回転」させる機能。現代では当たり前すぎて意識もしませんが、内部では驚くべき計算が行われています。
画像データというのは、小さな点(ピクセル)が碁盤の目のように整列して並んでいるものです。
それぞれの点は (x=10, y=20) のような整数の住所(インデックス)を持っています。
ここで「画像を30度回せ」という命令が来たとします。
紙の写真を回すなら簡単ですが、デジタルの「マス目」の上にある点を回すと、深刻な問題が起きます。
住所が半端になる:
計算結果が ($${x=12.34, y=45.67}$$) のような小数になってしまい、そんな住所のピクセルは存在しません。穴が開く:
単純にすべての点を移動させると、移動先で点が密集する場所と、誰も来ないスカスカの場所(穴)ができてしまい、画像が虫食い状態になります。
プログラマは、この「整数の壁」と戦うためにサインコサインを武器にします。
「情報を混ぜ合わせる」レシピ:回転行列
回転とは、実は「横の位置情報と、縦の位置情報を、ある比率でブレンドすること」と言い換えられます。
直感的に考えてみましょう。
ある点を、原点を中心に90度(反時計回り)回すとどうなりますか?
元の「横の長さ($${X}$$)」は、回転すると縦に立ち上がり、「縦の高さ($${Y}$$)」になります。
元の「縦の高さ($${Y}$$)」は、回転すると横に倒れて「マイナスの横の長さ($${-X}$$)」になります。
つまり、回転すると XとYの役割が入れ替わったり、混ざったりする のです。
30度のような中途半端な回転の場合、「Xの成分を87%残しつつ、Yの成分を50%混ぜる」というような微妙な配合が必要になります。
その「配合レシピ」を行列(マトリックス)にしたものが、いわゆる回転行列(Rotation Matrix)です。
新しいX = (元のX $${\times}$$ 横維持率) - (元のY $${\times}$$ 縦混入率)
新しいY = (元のX $${\times}$$ 縦混入率) + (元のY $${\times}$$ 横維持率)
この「率」の部分に入るのが、コサインとサインです。
横維持率 ($${\cos\theta}$$): 元のX成分を、新しいX成分としてどれくらい残すか。
縦混入率 ($${\sin\theta}$$): 元のX成分が、回転によってどれくらい新しいY成分(縦)に化けるか。
逆転の実装:逆算と「色の混合」
実は、プロの現場で画像を回すときは、発想を逆転させます。
「元の画素を、新しい場所に飛ばす」のではなく、「新しい空の画像の画素ひとつひとつについて、元の画像のどこから色を持ってくればいいか」を計算するのです(逆写像)。
こうしないと、画像に「穴」が開くからです。
ループ: 回転後の画像の全ピクセル (u, v) についてループを回す。
逆回転: サインコサインを使って「回転前の座標 (x, y)」を逆算する。
ここで x=10.5 のような小数の座標が出てきます。
補間(Interpolation):
x=10.5 ということは、ピクセル10番と11番のちょうど真ん中です。
そこで、10番の色と11番の色を50%ずつ混ぜ合わせた色を作って、新しいピクセルの色にします(バイリニア補間)。
ここでも「混ぜ合わせる」という発想が出てきました。
画像の回転処理とは、「位置をサインコサインで混ぜ合わせ(座標変換)、色を比率で混ぜ合わせる(補間)」という、二重の混合処理なのです。
マジックナンバーとしての利用
プログラミングや3Dグラフィックスの現場では、サインコサインを「波」として意識することはあまりありません。
それよりも、情報を回転させるための「魔法の係数(マジックナンバー)」として扱います。
例えば「30度回転」なら:
$${\cos(30^\circ) \approx 0.866}$$
$${\sin(30^\circ) \approx 0.5}$$
この数字さえあれば、2D画像だろうが、3Dのキャラクターだろうが、宇宙船だろうが、すべての頂点座標をこの係数で掛け合わせるだけで、世界ごと回すことができます。
線形代数への架け橋
この「回転行列」の考え方は、線形代数という分野の入り口です。
行列の中身をよく見ると、実は基底ベクトルの行き先が書いてあります。
行列の1列目 $${\begin{pmatrix} \cos\theta \\ \sin\theta \end{pmatrix}}$$ は、「真横(1,0)だった矢印が、回転後にどこへ行くか」を表しています。
行列の2列目 $${\begin{pmatrix} -\sin\theta \\ \cos\theta \end{pmatrix}}$$ は、「真上(0,1)だった矢印が、回転後にどこへ行くか」を表しています。
サインコサインとは、幾何学的な図形というよりも、「座標空間をねじ曲げるための変換係数」です。
「波」のイメージがわかなくても、「この係数行列を掛ければ回る」という機能さえ知っていれば、あなたは立派にサインコサインを使いこなしていると言えるのです。
第六公理『無相関』
対象:宮本武蔵
罪状:他者との関係性の拒絶。孤立波としての存在維持。
魔界の呪文:cos = 基準軸への影(内積・似ている度合い) sin = 基準軸からこぼれた分(独立した成分)
六番目の敵、宮本武蔵。
彼が現れた瞬間、周囲の空間から「色彩」が抜け落ちた。
極彩色の地獄にあって、彼だけがモノクロームの静寂の中にいる。
二刀流の怪物は、そこに立っているだけで、周囲のエントロピー増大を拒絶していた。絶対零度の孤独。
十兵衛が斬りかかる。
鋭い剣閃が武蔵の肩口を捉えた――はずだった。
ヌルッ。
手ごたえがない。
空振りではない。刃は確かに武蔵の肉体を通過している。だが、豆腐を切るような抵抗すらない。まるで、幽霊かホログラムを斬ったかのような、因果律のスカスカな感触。
だが、武蔵の二刀は、実体を持って十兵衛の脇腹を削ぎ落とす。
「グッ......!?」
十兵衛は飛び退く。脇腹から鮮血が噴き出すが、武蔵の刀には血が一滴もついていない。
武蔵は、十兵衛を見てもいない。彼の視線は、この次元のどこにも焦点が合っていない。
「拙者の剣は、貴殿の剣とは『独立』である。ゆえに、貴殿の攻撃は拙者には1ミリも影響を与えぬ」
武蔵の声は、深海のように冷たく、鼓膜ではなく脳幹を直接揺らす。
内積ゼロ。相関係数ゼロ。
武蔵は、十兵衛のベクトルに対して常に「直交」する位置を取り続けることで、物理的な干渉を無効化していた。
どれだけ強力な斬撃も、角度が90度であれば、相手への射影成分はゼロになる。
$${ \text{Impact} = |A||B|\cos(90^\circ) = 0 }$$
彼は、この世の誰とも関わらないことで、最強の防御を得ていた。
[WARNING] Cosine Similarity = 0.0000...
[STATUS] Orthogonal. Interaction Impossible.
[ERROR] Target exists in a disjoint subspace.眼帯が、計算不能のエラーを吐き続ける。
対象は、同じ空間にいるようでいて、数学的には全く別の次元に存在している。
これでは、核爆弾を落としても傷つかない。爆風というエネルギーさえも、彼とは「無関係」として透過するからだ。
「無敵か......。だが、それは死んでいるのと同じだ」
完全な拒絶は、完全な孤立。
生とは、他者との摩擦である。摩擦係数ゼロの存在は、物理世界においては幽霊に等しい。
「ならば、貴様をこの世に引きずり戻してやる」
十兵衛は賭けに出た。
防御を捨て、回避を捨て、自らのベクトルの向きを、武蔵の刃のベクトルと完全に一致させるように飛び込んだのだ。
角度ゼロ。コサイン類似度 1.0。
それは「完全なる同調」であり、互いの剣が100%の確率で食い込む自殺行為。
自分という個を捨て、相手という個に溶け込む、生理的な融合。
「同調したな、十兵衛!」
グチュリ。
直交の結界が破れる。
二人の剣が、互いの肉をバターのように裂く。
だが、それだけではない。傷口が触れ合った瞬間、互いの細胞が混ざり合い、血管が繋がり、神経がショートするようなおぞましい感覚が十兵衛を襲う。
他人の記憶、他人の痛み、他人の絶望が、物理的な汚物となって流れ込んでくる。
「ウ、オオオオオッ!!」
十兵衛は、嘔吐するように絶叫した。
精神汚染の濁流に耐えながら、肉を切らせて骨を断つ一撃を、武蔵の心臓へとねじ込む。
「......見事。この武蔵と『関係』を持ったか......」
武蔵の体が、白濁した粘液となって崩れ落ちていく。
孤高の剣豪は、内積の中で、自己という境界線を維持できなくなり、溶けて死んだ。
十兵衛の体には深い傷が残った。その傷口は、ドロドロとした武蔵の残骸で汚染され、腐食し始めていた。
だが、その痛みと醜さこそが、彼がまだ生きている唯一の証であった。
「矢印」で好みを数値化する
図形や物理の世界から離れて、現代の「データ分析」や「AI(人工知能)」の世界に飛び込みましょう。
実は、Amazonの「おすすめ商品」やGoogleの「検索結果」、そして大規模言語モデル(LLM)の裏側でも、コサインが主役として活躍しています。
データを「矢印(ベクトル)」としてイメージしてみましょう。
例えば、映画の好みを分析するために、「アクション映画」と「恋愛映画」に対する5段階評価をデータにします。
Aさん(アクション派): アクション5点、恋愛1点 $${\rightarrow}$$ $${(5, 1)}$$ という座標への矢印。右に長く、上には短い。
Bさん(アクション派): アクション4点、恋愛2点 $${\rightarrow}$$ $${(4, 2)}$$ という座標への矢印。Aさんと向きが似ている。
Cさん(恋愛派): アクション1点、恋愛5点 $${\rightarrow}$$ $${(1, 5)}$$ という座標への矢印。左上を向いている。
このとき、「AさんとBさんの好みは似ているか?」「AさんとCさんはどうな関係か?」を数学的に計算するにはどうすればいいでしょうか?
「似ている」とは「角度が近い」こと
直感的に、矢印の向いている方向が近ければ、その人たちの好みは「似ている」と言えますよね。
逆に、矢印が全く違う方向を向いていれば「似ていない」ことになります。
つまり、データの類似性を測るとは、2つの矢印のなす角度(開き具合)を測ることに他なりません。
完全に一致(0度): 矢印が重なっている。相性最高。
全く無関係(90度): 直角。例えば「アクション映画の好み」と「映画館のポップコーンの味の好み」のように、相関がない軸同士。
真逆(180度): 反対方向。相性最悪(逆相関)。
この「角度の開き具合」を、$${1.0}$$(最高)から $${-1.0}$$(最悪)の数値に変換してくれる便利な道具、それがコサイン(Cos)なのです。
コサイン類似度(Cosine Similarity)
データ分析の世界では、これを「コサイン類似度」と呼びます。
計算式は、高校数学で習う「ベクトルの内積」の公式を変形しただけのものです。
$$
\cos \theta = \frac{\mathbf{A} \cdot \mathbf{B}}{|\mathbf{A}| |\mathbf{B}|}
$$
数式で見ると難しそうですが、やっていることは単純です。
内積(分子): お互いの成分同士を掛けて足す。これが「相性ポイントの合計」です。
AさんとBさんなら:$${(5 \times 4) + (1 \times 2) = 20 + 2 = 22}$$
長さの積(分母): お互いの矢印の長さ(強さ)で割る。これが「正規化(補正)」です。
なぜ「長さ」で割るのか?(正規化の魔法)
コサイン類似度の最大の特徴は、「大きさ(長さ)」を無視して「方向(質)」だけを見る点にあります。ここにコサインを使う真の理由があります。
例えば、Dさんというヘビーユーザーが現れたとします。
Dさん(超アクション派): アクション50回視聴、恋愛10回視聴 $${\rightarrow}$$ $${(50, 10)}$$
Aさん$${(5, 1)}$$とDさん$${(50, 10)}$$のデータを見比べてください。数字の大きさ(視聴回数)は10倍も違います。
しかし、「アクション:恋愛 = 5:1」という比率(好み)は完全に同じです。
もし単純に「距離」で似ているかどうかを測ってしまうと、AさんとDさんは「遠く離れている(似ていない)」と判定されてしまいます。
しかし、コサイン(角度)で見れば、この2つの矢印はピッタリ重なっているので、類似度はMAXの1.0になります。
「たくさん買う人」も「たまにしか買わない人」も、好みの傾向が同じなら「似ている」と判定したい。
そのために、データの長さを割り算してキャンセルし、純粋な「方向」だけを抽出する。それがコサインの役割です。
「直交」=無関係
コサインの値による判定基準は以下のようになります。
$${\cos(0^\circ) = 1.0}$$ (激似:ポジティブな相関)
$${\cos(90^\circ) = 0.0}$$ (直交:無関係・無相関)
$${\cos(180^\circ) = -1.0}$$ (真逆:ネガティブな相関)
特に重要なのが、コサインがゼロになる「直交(Orthogonal)」という概念です。
「国語の点数」と「数学の点数」の相関(コサイン)を計算して、もしゼロに近ければ、「国語ができるかどうかと、数学ができるかどうかは無関係である(独立している)」という分析ができます。
データ分析において「直交している(コサインが0)」ということは、情報が被っておらず、純粋に独立した要素であることを意味します。これはデータを効率よく扱う上で非常に望ましい性質です。
AIと高次元空間のコサイン
私たちが生きているのは3次元空間までですが、AIやデータ分析の世界では、100次元、1000次元、あるいは数万次元という「高次元空間」でコサインを計算します。
例えば、大規模言語モデル(LLM)では、「単語」を数千次元のベクトル(数字の列)として表現しています。
「王様」という単語ベクトルと、「女王」という単語ベクトルのコサイン類似度を計算すると、非常に高い値が出ます(意味が似ているから)。
一方で、「王様」と「冷蔵庫」のコサイン類似度を計算すると、ゼロに近くなります(意味が無関係だから)。
次元が何万あろうとも、計算原理は同じです。「成分同士を掛けて足し、長さで割る」。
そうすることで、高次元の闇の中に浮かぶデータ同士の「意味的な距離」を、コサインというたった一つの数字で測ることができるのです。
コサインは「関係性の定規」
コサインは、もはや三角形の辺の比ではありません。
多次元宇宙における「データの相関関係(似ている度合い)を測るための定規」です。
あなたがネットニュースを見ているとき
通販サイトで買い物をしているとき
AIにチャットで質問しているとき
その裏側では、膨大なデータベクトル同士のコサイン類似度が、毎秒何億回と計算されています。
サインコサインは図形問題を解くためではなく、「私(データ)とあなた(データ)はどれくらい分かり合えるか?」を計算するために、現代社会のインフラとして稼働し続けているのです。
最終公理『周波数分解』
対象:天草四郎時貞
罪状:情報エントロピーの増大による、世界記述の汚染。
最後の敵、魔界のカリスマ、天草四郎時貞。
彼が泥濘の上を滑るように現れた時、世界から「静寂」という概念が死滅した。
キィィィィィン......ゴゴゴゴ......ザザザザ......。
耳鳴り、地鳴り、悲鳴、祈り、罵倒、赤子の泣き声、ガラスが割れる音。
世界中のありとあらゆる「音」が無秩序に混ざり合い、黒い津波となって押し寄せる。
それは単調な剣戟ではない。斬撃、刺突、払いが複雑怪奇に重なり合い、予測不能な「ノイズ」となって十兵衛を襲う。
「僕の剣はカオス。無数の波が重なり合う神の怒りだ」
天草が微笑むと、十兵衛の鼓膜が破れ、耳からどす黒い血が噴き出した。
音圧だけで、内臓が揺さぶられる。
「貴様の単純な円武では読み切れまい。ここには『周期』も『中心』もない。あるのは無限の無秩序だけだ」
視界が砂嵐に覆われる。
十兵衛は嘔吐した。胃液と胆汁が混ざったものを垂れ流しながら、膝をつく。
三半規管が狂い、上下の感覚さえ失われる。
波形が複雑すぎて、脳が処理を拒絶しているのだ。
矩形波のような鋭角的な殺意が皮膚を裂き、ノコギリ波のような執拗な振動が骨を削る。
このままでは、情報量の濁流に飲み込まれ、自我ごと分解される。
――死ぬ。
物理的な死ではない。情報的な死だ。
十兵衛という個が、無意味なノイズの一部として拡散してしまう。
だが、その絶望の淵で、十兵衛の左目――冥府の瞳だけが、冷徹にそのカオスを見つめていた。
世界が複雑に見えるのは、お前が「時間」という軸でしか物を見ていないからだ。
視点を変えろ。軸を回せ。
世界を、時間から切り離せ。
[SYSTEM] Engaging FFT (Fast Fourier Transform)...
[ANALYSIS] Converting Time-Domain to Frequency-Domain.
[LOADING] ......................................... COMPLETE.カッ! と十兵衛の脳内で閃光が走る。
視界を覆っていた黒いノイズの津波が、突如として「数本の美しい糸」に見え始めた。
フーリエの魔眼。
それは世界を「時間の経過」ではなく、「周波数の成分」で分解して見る神の瞳。
[RESULT] Spectrum Analysis:
- Fundamental Freq: 440Hz (Sin) [Amplitude: High]
- 1st Harmonic: 880Hz (Cos) [Amplitude: Med]
- Noise Component: Random Phase [Amplitude: Low]「あ......あ、アハハ......」
十兵衛は血の泡を吐きながら、乾いた笑いを漏らした。
見えた。見えてしまった。
神の怒り? カオス? 無秩序?
違う。
「いいや......見えるぞ天草。貴様のカオスは、ただの『足し算』だ!」
どんなに複雑でグロテスクな波形も、数学者フーリエの眼にかかれば、基本となるシンプルなサイン波とコサイン波の足し合わせに過ぎない。
なぜ分解できるか?
それは、宮本武蔵の理――「直交性」があるからだ。
異なる周波数の波は、互いに干渉しない(内積ゼロ)。だからこそ、どんなに混ざり合っても、後からきれいに分離できるのだ。
天草の攻撃は、一見すると無秩序な神の怒りに見える。だがその実体は、「440Hzの殺意」という主成分(基本周波数)に、「880Hzの慢心」や「1760Hzの狂気」という倍音成分(高調波)をトッピングしただけの、ただのスープだ。
「レシピが分かれば、味付けは変えられる!」
天草が、仕上げとなる巨大な一撃――全てを飲み込む合成波を放つ。
十兵衛は逃げない。
その波の「主成分」に対し、波長も振幅も全く同じで、位相だけを半波長ズラした「逆位相」の剣気を生成する。
山には谷を。
谷には山を。
プラス100の殺意には、マイナス100の虚無を。
武蔵よ、そして、BOSE、Sony、Appleよ、我に力を。
「滅びよ。――忍法・騒音相殺(ノイズ・キャンセリング)」
二つの波が衝突した瞬間。
爆発は起きなかった。衝撃もなかった。
起きたのは、完全なる「無」だ。
フツリ。
世界を覆っていた轟音が、唐突に消滅した。
絶対的な静寂。真空のような沈黙。
魔法が解け、音の鎧を剥ぎ取られ、丸裸になった天草四郎の胸を、十兵衛の無音の剣が貫通していた。
「な......?」
天草が自らの胸を見る。
血は出ない。
傷口から漏れ出しているのは、さらさらとした砂のようなノイズだけだ。
「僕の、カオスが......単純なサインに......」
天草の美しい顔が、ひび割れていく。
彼を構成していた複雑な身体は、無数のサインカーブの曲線へと分解され、ほどけ、空気に溶けていく。
神を自称した男は、ただの「波の合成」という物理現象に還元され、霧散した。
時間の世界と周波数の世界
私たちが普段生きている世界は、「時間」と共に変化する世界です。
マイクロフォンが拾う音は空気圧の時間変化であり、カメラが捉える映像は光の強さの空間的変化です。これらをグラフにすると、ギザギザとした複雑で予測不能な形をしています。
この「時間領域(Time Domain)」のままでは、データの分析や加工は極めて困難です。
例えば、録音したオーケストラの音から「バイオリンの音だけを消したい」と思ったとき、波形データの上でバイオリンの部分だけを手作業で消すことは不可能です。全ての楽器の音が混ざり合って一つの波になっているからです。
しかし、視点を変えれば世界は劇的にシンプルになります。それが「周波数領域(Frequency Domain)」です。
フーリエの発見:不連続を連続で説明する
19世紀初頭、フランスの数学者ジョゼフ・フーリエは、熱の伝わり方(熱伝導方程式)を研究している最中に、ある驚くべきアイディアに到達しました。
「どのような複雑な周期関数であっても、三角関数(サイン・コサイン)の無限級数として表すことができる」
これを「フーリエ級数展開」と言います。
当時の数学界では、滑らかにうねるサインコサインの波を足し合わせるだけで、カクカクした「矩形波」や、尖った「ノコギリ波」のような不連続な形まで作れるとは信じられていませんでした。しかし、フーリエはそれが可能であることを示したのです。
これは、世界を見るレンズの転換でした。
「今の瞬間の値はいくつか?」を見るのではなく、「どのような周期の波が含まれているか?」を見る。
これが信号処理の出発点です。
レシピとしてのスペクトル
料理の例えをさらに深掘りしてみましょう。
時間領域(波形):完成したスープを一口飲んで「美味しい」と感じる体験。
周波数領域(スペクトル):そのスープの「レシピ(成分表)」を見ること。
スープを飲んだだけでは「隠し味に何が入っているか」を正確に当てるのは難しいですが、レシピを見れば「塩:小さじ1、砂糖:大さじ1、醤油:少々...」と一目瞭然です。
信号処理におけるサインコサインは、この「成分表の項目(基本食材)」にあたります。
「440Hzのサイン波(ラの音)」や「880Hzのコサイン波(1オクターブ上の音)」といった純粋な成分が、それぞれ「どれくらいの分量(振幅)」で含まれているか。それを記述したものが周波数スペクトルです。
バイオリンの音を消したければ、波形をいじるのではなく、レシピ(スペクトル)を見て「バイオリンに相当する周波数の成分」をゼロに書き換え、もう一度スープに戻せば(逆変換すれば)よいのです。
メカニズム:なぜ「分解」できるのか?
では、どうやって複雑な波から「440Hzの成分がどれくらい含まれているか」を抽出するのでしょうか?
ここで、第六公理 無相関の考え方が合流します。(つまり、十兵衛は武蔵を斃した後でないと四郎に勝てなかったのです!エモい!)
ある波形データ $${f(t)}$$ に、440Hzのサイン成分が含まれているか調べたいとします。 その場合、調べたい波形 $${f(t)}$$ と、純粋な「探したい波(440Hzのサイン波)」を掛け合わせ、その合計(積分)を取ります。
$$
\int f(t) \cdot \sin(440 \times 2\pi t) \, dt
$$
これは、ベクトルにおける「内積(ドット積)」と同じ操作です。
もし $${f(t)}$$ の中に440Hzの成分があれば、波の山と山、谷と谷が重なり合い、掛け合わせた値は大きなプラスになります(相性が良い=成分が含まれている)。
逆に、全く関係ない周波数や、位相がズレた成分しかなければ、プラスとマイナスが打ち消し合って、合計はゼロに近くなります。
つまり、フーリエ変換とは、「無数の周波数のサインコサイン(テンプレート)を、元の波形に次々と『相性診断』にかけていく作業」なのです。
「直交する基底」という最強の性質
なぜ、分解の部品としてサインとコサインが選ばれたのでしょうか?
他の波(例えば三角波や矩形波)ではダメなのでしょうか?
サインとコサインが選ばれる最大の理由は、それらが「直交基底(Orthogonal Basis)」だからです。
直交基底とは、互いに全く干渉しない、独立した成分のことです。
数学的には、異なる周波数のサイン波同士、あるいはサイン波とコサイン波を掛け合わせて積分すると、必ずゼロになります。
これは、「塩」と「砂糖」の関係に似ています。塩をいくら足しても甘くはならず、砂糖をいくら足しても塩辛くはなりません。味の軸が独立しているからです。
もし部品同士が「直交」していなければ(例えば「塩」と「塩胡椒」のように成分が被っていたら)、分解したときに「どっちの成分か分からない」という曖昧さが残ります。
サインとコサインは、互いに完全に独立しているため、どんな波形でも「一意に(ただ一通りのレシピで)」分解できることが保証されているのです。
実社会での応用:JPEGとノイズキャンセリング
この「分解・加工・再構築」のプロセスは、現代テクノロジーの根幹を支えています。
1. JPEG画像圧縮(離散コサイン変換:DCT)
写真は、色の濃淡の波として捉えられます。
JPEG圧縮では、画像を8×8ピクセルの小さなブロックに分け、それぞれのブロックを「コサイン波の足し合わせ」に分解します。
低周波成分(ゆったりした波): 空のグラデーションや肌の色など、滑らかな変化。人間の目はここに敏感です。
高周波成分(細かい波): 髪の毛のディテールやノイズなど、激しい変化。人間の目はここの変化には鈍感です。
分解した後、人間が気付きにくい「高周波成分」のデータをバッサリ捨ててしまいます(量子化)。そして残った成分だけで画像を再構築します。
これが、見た目はあまり変わらないのにファイルサイズが劇的に小さくなる理由です。サインコサインによる分解ができなければ、インターネット上の画像通信はこれほどスムーズにはなりませんでした。
2. ノイズキャンセリング・ヘッドホン
周囲の騒音を消す技術も、波の性質を利用しています。
マイクで外部の騒音(波)を拾い、その波と「逆位相(山と谷が逆)」になるような波を計算してスピーカーから流します。
元の波に、逆の波を足し合わせることで、物理的に波を打ち消して「無音」を作り出しています。これも波を単純な成分の足し合わせとして捉えるからこそ可能な制御です。
結:円環の先に
七人の魔人を斬り伏せた十兵衛は、血塗れの荒野に立っていた。
DJ 森宗意軒の妖術は破れた。魔界の扉は再び閉ざされようとしている。
だが、十兵衛の心には、かつてとは決定的に違う景色が広がっていた。
風が吹けば、空気が振動し、サイン波となって鼓膜を揺らす。
光が差せば、電磁場が振動し、コサイン波となって網膜を刺激する。
歩けば、関節の角度が円運動を描き、大地の反力と直交する。
世界は、数字でできている。
感情も、痛みも、死さえも、パラメータの一つに過ぎない。
もはや、サインコサインは教科書の中の謎の記号ではない。
それは、暴走する力を制御し、見えない関係性を測り、世界を回し、混沌を読み解くための、最強の「見切り」の極意であった。
「直線を円に変え、円を力に変える......か」
十兵衛は、冥府の眼帯が静かに消えていくのを感じながら、刀を納めた。
その一動作さえも、無駄のない美しい円弧(サインカーブ)を描いていた。
胃の腑の不快感は、いつの間にか消えていた。
世界は美しく、シンプルで、計算可能であった。
これにて、終い。
(完)
