太陽と月の影響から海水の高さを予測する(2)
波形のデータを作成する
月の影響をシミュレーションするためには、時間の経過に沿って引力の変化を計算し、グラフ用のデータセットを作成する必要があります。その具体的な実装が以下のリストです。
// (1) 描画用のデータを作成する
renderMoonWave(group,scale,start,end){
const dataset = [];
// (2) 12.4時間で1周(2PIラジアン)となる角速度を算出
const moonAngularVelocity = (2 * Math.PI) / 12.4;
// 太陽に比べて2.2倍の力(振幅)に設定
const amplitude = 2.2;
for(let t = start ; t < end; t++) {
for(let i = 0 ; i < 60; i++) {
// (3) 1分ごとの計算結果をデータセットに格納
dataset.push({
x: t + (i / 60),
// 時間 t に対する月の引力の強さを算出
y: amplitude * Math.sin(moonAngularVelocity * ( t + (i / 60))),
});
}
}
// (省略)
}
コードのポイントは以下のとおりです。
(1)期間の指定
引数のstartは開始時刻(例:0時)、endは終了時刻(例:24時間後)を指し、シミュレーションする範囲を決定します。
(2)プログラム特有の単位「ラジアン」
プログラムで三角関数を扱う際は、度数(0~360度)ではなく「弧度法(ラジアン)」を用います。12.4時間で一周(2π)するように「角速度」を定義することで、月の正確なリズムを再現しています。
(3)滑らかなグラフを作る工夫
時間tを入力として、その瞬間の影響度yを算出します。この際、グラフがカクつかないよう、内部で1分刻みの細かなデータを生成しているのが、実務的な工夫のひとつです。
このロジックを応用し、太陽のデータや、それらを足し合わせた「合成波」のデータを用意することで、複雑な潮位の変動を予測できるようになります。
それぞれの波を合成してみる
作成した「太陽の波」と「月の波」、そしてその2つを単純に足し合わせた「合成波」を、まずは1日分(24時間)の長さで並べてみます(図3)。
この時点では、太陽と月はほとんど同じリズムを刻んでいるように見えます。しかし、視点を広げて30日間という長期スパンで表示させると、景色が一変します(図4)。
グラフを見ると、波が重なり合うことで全体に大きな「うねり」が生まれているのがわかります。これこそが、カレンダーでおなじみの「大潮(=干満の差が大きい)」と「小潮(=干満の差が小さい)」の正体です。わずか0.4時間という「リズムのズレ」が、15日間(約360時間)という長い時間をかけて、「山と山が重なって高くなる時期」と「山と谷が打ち消し合う時期」を交互に作り出しているのです。
このように、個別のデータを見るだけでは気づけない「長期的なうねり」を可視化できるのが、三角関数の持つ大きな力です。
和積の数式で表現を変えてみる
高校数学で学んだ「和積の公式(図5)」を覚えているでしょうか。2つの異なる波の「足し算」を「掛け算」の形に書き換える公式です。当時は「なぜこんな変換をするのか」と疑問に思った方も多いはずです。
この公式を、先ほどの「太陽と月の合成波」に当てはめてみましょう。厳密には振幅が異なりますが、傾向を掴むために、最大振幅3.2(太陽1.0+月2.2)に合わせて近似的に変換すると、以下の数式になります。
この数式が面白いのは、複雑に絡み合った一つの合成波を、「非常に速い振動(sin成分)」と「非常にゆっくりとした変動(cos成分)」の掛け算として再定義できる点にあります。
この2つの成分を、まずは1日(24時間)のミクロな視点で見てみましょう(図8)。
赤色の合成波は、緑色の「速い波(sin)」とほぼ重なっています。1日という短いスパンで見れば、海面は「平均的な周期」で上下しているだけに見え、紫色の「遅い波(cos)」はほとんど変化せず、単なる一定の値(定数)のように見えます。
しかし、これを30日間のマクロ視点に伸ばすと、全く別のイメージが浮かび上がります(図9)。
先ほどまで「定数」のように見えていた紫色の波(cos)が、ゆったりとした大きな「うねり」となって現れました。対して、緑色の波(sin)だけでは、大潮や小潮による振幅の変化を説明できず、予測は破綻してしまいます。
ここで重要な法則が導き出されます。
- sin成分(速い波): 「日々の満潮・干潮」というミクロな周期
- cos成分(遅い波): 「大潮・小潮」というマクロな変動
物理学で「うなり」と呼ばれるこの現象の正体は、実はこれら2つの視点の掛け算によって生まれる干渉模様なのです。和積の公式は、単なる数式の変形ではなく、データを「短期的な動き」と「長期的な傾向」に分離して捉えるための高度な分析手法と言えるでしょう。
