たまには魔法使いらしく、異世界転移の魔法のことでも書こう。
ここは「魔法使いの森」だからね。
最初に転移魔法の術式から示してしまう。
今回の記事の目的は、この術式を解説することだから。
F(w) = ∫ f(t) e^(iwt) dt
まず、t は「この世界」を意味している。
具体的に言えば、時間によって変化していく世界。t は Time の意味だ。
転移後の世界は w で、これは「周波数」を意味している。
転移後の世界にはもはや時間はなく、周波数が支配する世界だ。
で、f(t) は転移させたいもの。F(w) が転移後の変化した姿。
この術式の主な目的は、「この世界」では強すぎて手も足も出ない敵を、転移させて よわよわ にして、その後で無双を楽しむことだ。
さて、転移の方法だが、術式に書かれた e^(iwt) というのが重要な部分だ。
この中で、t と w はすでに出てきた。時間と周波数だ。
並んで書かれているのは、この2つが密接な関係にあることを意味している。
というわけで、周波数の説明に移ろう。
すでに解っている人もいるかも知れないが、周波数とは「何かを繰り返すときの、一定時間での繰り返し回数」を意味している。
周波数の定義に時間が入っている。だから密接なのは当然で、不可分のものだ。
でも、並んで書く…掛け算を意味するのだけど、固定された w に対して、流れ続ける t をかけ合わせたら、結果の数は大きくなっていくだけだ。
周波数なのに「繰り返し」が出てこない。繰り返しはどこにあるのだろう。
ここで、e と i について説明する必要がある。この術式の最初の重要ポイントだ。
少し長くなるがお付き合いいただこう。
まず、i は √-1 のことだ。「自分自身を掛け合わせると、-1 になる数」だな。
i*i = -1 、と書き直すこともできる。でも、この数は普通は存在し得ない。
数には「同じものを掛け合わせると、必ずプラスになる」という性質があるためだ。
しかし、これは非常に都合が悪い。
我々の使う術式の体系は、完全性が求められる。
ある操作…ここでは √ という操作が決められたら、それは「すべての数」に適用できなくては完全とは言えない。
そこで、今まで知られていた数の体系を拡張し、「同じものを掛け合わせるとマイナスになる」という数を想定することにした。
それが i だ。虚数と呼ばれる。
…と、ここまで理解すると、当然次の疑問が出てくる。
√ は「完全性」を破綻させ、新たな数を想定する必要があった。
では、√i はどうなるのだろう。また破綻してしまうのではないか。
いや、幸いなことにそうではない。
i = ( (1+i) / √2 ) * ( (1+i) / √2 )
計算してみるとわかるが、この式は正しく、i を含む数の体系で √ は完全性を保つ。
1+i 、という形には、普通の数 1 と、虚数 i が入っている。
この形を、複素数と呼ぶ。
1 の部分を 2 , 3 と変化させられるように、i の部分も 2i , 3i というように変化させられる。
数は、直線上に表すことができる。これを数直線と呼ぶ。
しかし、虚数は数直線上には乗らず、独立した「虚数直線」を作る。
そして、複素数を表現するときは、数直線と虚数直線を直交させ、「複素数平面」を作る。
直交しているので、-1 と i は、0 を中心とした角度で言えば 90 度のところに位置する。
i = √-1
という式は、0 を中心に 90 度回転する操作なんだ。
先程 √i を複素数で示した。答えを複素数平面上に乗せると、回転が 45度になっていることがわかる。
√ によって、複素平面上で回転することができるんだ。
ここからは少し話を飛ばす。
√ を使えば、角度を半分づつ制御することができるが、もっと自由な角度に回転する方法が発見された。
e^(ix)
これで、角度が x のときの複素平面上の位置を計算できる。
ここで、e は「ネイピア数」と呼ばれるものだ。自然対数の底を意味する。
自然対数もまた面白い世界なのだが、ここでは詳細は扱わない。
話が長くなりすぎるからね。
今まで話に出てこなかった「自然対数」というものが急に顔を出してくるのは驚きなのだが、とにかくこれで自由な角度を示すことができるようになった。
さて、ここでやっと、最初の疑問に戻ることができる。
最初に書いた、異世界転移の術式をもう一度示そう。
F(w) = ∫ f(t) e^(iwt) dt
疑問は、wt は周波数…繰り返しを決めるもののはずなのに、掛け算だけでは大きくなる一方だ、ということだった。
その答えが、e^(iwt) 全体にある。
e^(ix) の形は、複素平面上で 0 を中心とした角度 x の位置にある、距離 1 の点を示すものだ。
簡単に言い換えれば x を変化させると「円を描く」。
円を描くのだから、当然繰り返しになる。wt は時間とともに大きくなるが、全体は繰り返すのだ。
このときの周波数は、w によって決まることになる。
この円こそが、異世界転移のための転移門となる、魔法陣だ。
魔法陣は円でなくてはならない。円は完全を意味するためだ。
もっとも、状況に応じて多少の装飾が行われる場合もある。
特定状況ではその方が効率が高まるためだが、今回は詳細に立ち入らない。
さて、魔法陣が描けたら、転移させたいものを魔法陣に載せる。
転移させたいものは、この世界 f(t) だった。
もう一度術式を示すと、
F(w) = ∫ f(t) e^(iwt) dt
魔法陣の隣に f(t) が並べられているのがわかる。
さて、ここでもう一度魔法陣に話を戻すと、これは複素平面上のものだ。
そのため、f(t) も複素平面に載る必要がある。
しかし、現実世界には虚数軸がない。
厳密にいえば、世界に虚数軸はあるのだ。
しかし、我々人間は、虚数軸方向の世界を感知することができない。
そのため、世界には虚数軸はないように思える。
こればかりは仕方がない。感じられないので、虚数軸は常に「0」でも入れておくことにしよう。
それでも複素平面に載りさえすれば大丈夫。
載せ方だが、術式の上では掛け算になっている。これは、ベクトルの内積を意味する。
内積は射影を意味するのだが…この理解が、異世界転移の術式の2番目のポイントとなる。
射影、「影がさす」というのはつまり、ある面の真上から光を当てたときに、別の面がどのような影を落とすか、という意味だ。
例えば、sin cos は、0 を中心とした、ある角度をもった長さ 1 の線に対して、座標軸に対する「射影」を求める操作になる。
意味が分かってもらえるだろうか?
これを、座標軸ではなく「2つの線」…ここでいう線というのはベクトルなのだが、原点を共有する2つのベクトルが作る射影が「内積」となる。
ここまではなんとなく理解できただろうか?
ここから、話はさらに飛んでいくので、いちいち立ち止まって理解しながら進んで欲しい。
さて、2つの線の長さが共に 1 である、という前提があった場合、内積は「同じ方向を向いているか」を示す指標となる。
直交する場合、内積は 0 になる。重なる場合、内積は 1 になる。
完全に逆方向を向いていると、-1 になる。
ここまでも大丈夫だろうか? 繰り返すが、理解しながら進んで欲しい。
さて、再び術式を振り返ろう。
F(w) = ∫ f(t) e^(iwt) dt
「世界」と「魔法陣」の内積を、∫ ~ dt で囲んでいる。
これは、「すべての t について計算し、足し合わせよ」という意味だ。
ここで、魔法陣は時間とともに、一定の速度でぐるぐる回る。
「世界」の側は、時間とともに変わるが無秩序だ。
無秩序ということは、内積は時間によっては 0 になったり 1 になったり、-1 になったりする。
いや、そんなわかりやすい値はめったになく、0.8256 だったり、-0.2429 だったり、とにかく無秩序だろう。
それらを全部足すと、おそらくプラスとマイナスが打ち消しあい、 0 になる。
厳密に 0 でなかったとしても、それに近い値になるだろう。
本当に無秩序なら、ね。
実際には、本当の無秩序というのはなかなかあるものではない。
いろいろな事象が重なり合ってわかりにくくはなっているが、世の中は波でできているのだ。
昔の偉大な魔法使いも、こんな言葉を残している、
ともかく、魔法陣の周波数と、世界の周波数の重なりがあると、結果に秩序が現れる。
無秩序の場合は結果が 0 付近になるが、秩序があると十分に大きな値が返される。
このとき、値の大きさはその周波数成分の強さを意味する。
つまり、術式によって世界を形作る波の周波数は解析され、「特定の」周波数の成分の強さを知ることができる。
…ん? 特定の?
繰り返しになるが術式を示す。
F(w) = ∫ f(t) e^(iwt) dt
ここで、術式で得られる F(w) は、「特定の」w についてのものだ。
異世界に転移するには「すべての」 w について操作を行い、完全な F を作り出さなくてはならない。
これには多大な計算力が必要になる。
「すべての t を足し合わせる」という操作を「すべての w について」行う必要があるのだ。
ここでは深く扱わないが、FFT とか DCT という改良型の術式があって、それらを使うと劇的に計算量が減る。
でも、基本はここに書かれた術式だ。
さて、なんでこんなややこしい術式が必要かというと、異世界転移で無双するためだ。
最後にそれについて記しておこう。
世の中みんな波だらけなのだが、この波には傾向があることが知られている。
いわゆる、1/f ゆらぎ、という現象だ。名前を聞いたことがある人もいるかもしれない。
ここでいう f は、w / 2π のことで、w とだいたい同じものだ。
(厳密にいえば、f が周波数で w を角周波数という)
1/f ゆらぎとは、周波数と振幅の関係性を示すものだ。
これによれば、周波数が高いほど振幅が小さくなり、「些細なもの」になる傾向にある。
これが異世界転移の利点の一つ。
実世界の「波」のままでは何が何だかわからなかった敵でも、周波数にすると重要な部分が見えてくる。
重要でない場合は、ばっさばっさと切り捨ててしまおう。
残ったのは、大切な部分だけを残して、いらない部分を切り捨てたデータだ。
これはデータの圧縮にすごく役立つ。
音楽とか、動画とか、すごく大きいデータを驚くほど小さく圧縮するのには、こうした技術が活躍している。
楽器とか、人の声とか、いろいろな「音」には特定の周波数領域がある。
人の声に注目したいとき、それ以外の周波数はノイズだろう。
波のままでは、何がノイズなのか全くわからない。
しかし、周波数に分解すると、どこにノイズがあるのか見えてくる。
さらに、人の声でも個人によって音の高低はある。
しかし、発声する際に特定の「同時に出される周波数の比率」とか、「時間による周波数の上げ下げ」などはあり、これは個人の声の高低とは別に、ある程度の共通性がある。
こうした部分に注目すると、機械に音声を認識させることができる。
こちらも、波のままではとても処理できないのだが、周波数に分解すると処理できる。
いずれにしても、波というのは捉えどころがなくて、どう処理してよいかわからない。
これが周波数空間に転移すると、自由自在に扱えるようになる。
これが無双でなくて何であろう。
ちなみに、「完全12平均律から多少音程がずれたときに、補正してくれる」なんてソフトもある。
誰かの歌をそのソフトにかけると、周波数解析して、音程がずれているときには一番近い音に揃えて出力してくれるの。
音痴でも上手に聞こえる魔法のソフト、だな。
CD だと歌がうまいのに、LIVE だと…なんて人は ゴニョゴニョ。
もう 20 年以上前に、アメリカの歌手 Cher がこれを効果的な「エフェクト」として使って話題を呼び、世界的な大ヒット曲となった。
元々歌がうまい人で、音痴補正はいらない。
でも、これで「滑らかに音程を変える」歌い方を処理すると、声が階段状にカクカクと変化する、非常に不思議な歌声になるのだ。
通称 Cher Effect。一時期使われすぎて食傷気味になって消えたのだけど、20年たってまた最近使われるようになっている、気がする。
(先日ラジオでこのエフェクトを使っている歌を聞いた)
さて、ここらへんで終了するが、一応エイプリルフールのネタだ。
術式自体は、フーリエ変換という数式で、これを使うと実世界のデータを周波数空間に変換できるのは事実。
先日、微分積分について書いたときに、最後に「フーリエ変換についても書きたかったけどやめた」と書いた。
その話はそれで終わりだったのだけど、今朝「今日は4月1日」と気づいたときに、このくだらないネタを書く好機だと思ったのだ。
ギャグは解説しすぎると面白くないので、細かな解説は省いた。
単に数学的な説明が面倒だった、ともいう。
そういう点でも、説明しないことの言い訳ができる今日は好機だった。
同じテーマの日記(最近の一覧)
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |