Math World Lab

天気予報の数学(数値予報の基礎)

微分方程式を細かい時間刻みで解き進める「数値シミュレーション」としての天気予報

この単元の発見をシェア
3行要約(Key Takeaways / AIOサマリー)
1
天気予報は過去の似た天気を検索する「統計的な当てずっぽう」ではなく、大気の運動方程式(微分方程式)を物理法則に基づいて未来へ計算し続ける「数値シミュレーション」である
2
コンピュータは連続的な時間・空間を微小な時間刻み Δt\Delta t と格子に分割し、オイラー法などの「離散化」手法で一歩ずつ未来の状態を計算する(数値予報, NWP)
3
このページでは1次元の温度分布が隣接点と熱を交換して滑らかになっていく「拡散方程式」の時間発展を通して、離散化シミュレーションの考え方を体感する(実際の気象モデルはこれよりはるかに複雑な3次元・多変数の方程式系である)

なぜこれを学ぶのか? — 現実社会とテクノロジーでの価値

Purpose & Motivation

なぜ生まれたのか?

天気予報は過去の似た天気を検索する「統計的な当てずっぽう」ではなく、大気の運動方程式(微分方程式)を物理法則に基づいて未来へ計算し続ける「数値シミュレーション」である

身につく武器・思考力

コンピュータは連続的な時間・空間を微小な時間刻み $\Delta t$ と格子に分割し、オイラー法などの「離散化」手法で一歩ずつ未来の状態を計算する(数値予報, NWP)

実社会・ITでの活躍現場

  • •1次元拡散モデルによる数値予報の時間積分シミュレーション(トイモデル)
  • •ITシステム・アルゴリズム実装における論理設計
  • •データ分析やシミュレーションにおける数理モデリング

Layer 1 — 直感・シミュレーター

1本の線上に並んだ「温度」の配列(1箇所だけ高温のスパイクがある初期状態)を用意し、「1ステップ進める」ボタンを押すたびに、各点の温度を「自分と両隣の平均」に近づける拡散の更新式が1回適用される。何ステップも押し続けると、鋭かった温度スパイクが徐々に周囲へ滲み出し、なだらかな山型に変化していく様子を観察できる。

拡散係数 r(数値安定性のため 0〜0.5 に制限)0.30
1次元「温度」分布(シミュレーション時刻: t = 0)最大値: 100.0
💡 離散化された拡散方程式:

各地点の値は、両隣との差(ラプラシアン)に比例した量だけ補正されます。uit+1=uit+r (ui+1t−2uit+ui−1t)u_i^{t+1} = u_i^t + r\,(u_{i+1}^t - 2u_i^t + u_{i-1}^t)を毎ステップ全地点に適用することで、鋭いスパイクが徐々に周囲へ滲み出していきます。

↑ 「1ステップ進める」を繰り返し押すと、中央の高温スパイクが左右になだらかに広がっていく様子が見えます。これは実際の数値天気予報(NWP)が行っている「微分方程式を時間刻みで解き進める」計算の、大幅に単純化した1次元版です。実際の予報モデルは気圧・風・水蒸気などを含む3次元の非線形方程式系を解いています。

直感チェック!ミニクイズ

数値天気予報がコンピュータの中で行っていることに最も近いのはどれか?

Layer 2 — 定義・受験・証明

定義

1次元空間上の温度分布を u(x,t)u(x, t)(位置 xx、時刻 tt における温度)とすると、熱(や大気中の物理量)が周囲へ広がっていく現象は次の拡散方程式(熱方程式)で記述される。

∂u∂t=α∂2u∂x2\frac{\partial u}{\partial t} = \alpha \frac{\partial^2 u}{\partial x^2}

ここで α\alpha は拡散係数である。この偏微分方程式を解析的に解く代わりに、コンピュータでは空間を格子点 x0,x1,…,xNx_0, x_1, \ldots, x_N に、時間を Δt\Delta t 刻みに離散化し、微分を差分で近似する「オイラー法」を用いて数値的に解く。

uit+1=uit+αΔt⋅ui+1t−2uit+ui−1tΔx2u_i^{t+1} = u_i^t + \alpha \Delta t \cdot \frac{u_{i+1}^t - 2u_i^t + u_{i-1}^t}{\Delta x^2}

公式・数理モデル

∂u∂t=α∂2u∂x2⟹uit+1=uit+r(ui+1t−2uit+ui−1t),r=αΔtΔx2\frac{\partial u}{\partial t} = \alpha \frac{\partial^2 u}{\partial x^2} \quad \Longrightarrow \quad u_i^{t+1} = u_i^t + r\left(u_{i+1}^t - 2u_i^t + u_{i-1}^t\right), \quad r = \frac{\alpha \Delta t}{\Delta x^2}

証明・導出

有限差分近似(テイラー展開)による離散化の導出:

時間微分は、微小時間 Δt\Delta t 後の値とのテイラー展開から前進差分で近似できる。

∂u∂t∣xi,t≈uit+1−uitΔt\frac{\partial u}{\partial t}\bigg|_{x_i, t} \approx \frac{u_i^{t+1} - u_i^t}{\Delta t}

空間の2階微分(曲率に相当)は、両隣の点とのテイラー展開を組み合わせた中心差分で近似できる。

ui+1t=uit+Δx ux+Δx22uxx+O(Δx3)u_{i+1}^t = u_i^t + \Delta x \, u_x + \frac{\Delta x^2}{2} u_{xx} + O(\Delta x^3)

ui−1t=uit−Δx ux+Δx22uxx+O(Δx3)u_{i-1}^t = u_i^t - \Delta x \, u_x + \frac{\Delta x^2}{2} u_{xx} + O(\Delta x^3)

両式を足し合わせると1次の項が相殺し、

ui+1t+ui−1t=2uit+Δx2uxx+O(Δx4)u_{i+1}^t + u_{i-1}^t = 2u_i^t + \Delta x^2 u_{xx} + O(\Delta x^4)

∴ ∂2u∂x2∣xi,t≈ui+1t−2uit+ui−1tΔx2\therefore \ \frac{\partial^2 u}{\partial x^2}\bigg|_{x_i,t} \approx \frac{u_{i+1}^t - 2u_i^t + u_{i-1}^t}{\Delta x^2}

これらを元の拡散方程式 ∂u/∂t=α ∂2u/∂x2\partial u/\partial t = \alpha \, \partial^2 u/\partial x^2 に代入し、uit+1u_i^{t+1} について解くと、

uit+1=uit+αΔt⋅ui+1t−2uit+ui−1tΔx2u_i^{t+1} = u_i^t + \alpha \Delta t \cdot \frac{u_{i+1}^t - 2u_i^t + u_{i-1}^t}{\Delta x^2}

が得られる。この式は「自分の値を、両隣との差(ラプラシアン)に比例した量だけ補正する」という更新規則になっており、これを繰り返し適用することで、鋭い温度スパイクは物理的に正しく(拡散方程式の解として)滑らかに広がっていく。

注意点として、この前進差分法(陽解法オイラー法)は r=αΔt/Δx2r = \alpha \Delta t / \Delta x^2 が一定の上限(1次元の場合 r≤0.5r \le 0.5)を超えると数値的に発散してしまう(数値安定性の条件, CFL条件)。実際の気象モデルではこの制約を回避するため、より高度な時間積分スキームが使われている。

押さえておきたいポイント

  • 天気予報は「過去の類似パターン検索」ではなく、流体力学・熱力学の支配方程式(ナビエ–ストークス方程式、熱力学方程式、水蒸気の保存則など)を数値的に解き進めるシミュレーションである
  • 現実の大気は連続体なので、コンピュータで扱うために空間を格子(メッシュ)に、時間を微小なステップに区切る「離散化」が不可欠
  • 離散化には時間刻み・格子間隔の取り方によって誤差や数値的不安定性が生じうるため、気象庁やECMWF等の現業モデルは非常に精緻な数値スキームと超高解像度の格子・膨大な観測データの同化(初期値の補正)を用いている
  • 本トピックの1次元拡散モデルは「隣接点との平均化で滑らかになる」という直感を掴むための大幅な単純化であり、実際の数値予報は気圧・風速・湿度など多数の変数が相互作用する3次元の連立方程式系である
参照基準・学習指導要領との対応

本トピックの内容・数理モデルは、文部科学省学習指導要領(算数・数学・情報)および国際標準カリキュラムに準拠し、エンジニアリング現場の実装事例と照らし合わせてMath World Lab編集部により検証・作成されています。

Layer 3 — 工学応用・現場実装

1次元拡散モデルによる数値予報の時間積分シミュレーション(トイモデル)

配列で表現した1次元の温度分布に対し、拡散方程式を陽解法オイラー法で離散化した更新式を繰り返し適用し、初期の鋭いスパイクが時間とともに滑らかに広がっていく様子をシミュレートする。実際の数値予報モデル(例: 気象庁のGSM、ECMWFのIFS)はこの考え方を3次元・多変数・非線形の方程式系に拡張し、スーパーコンピュータで計算している。

1// 1次元拡散方程式の陽解法オイラー法による時間積分(トイ数値予報モデル)
2function stepDiffusion(u: number[], r: number): number[] {
3 const n = u.length;
4 const next = new Array(n).fill(0);
5
6 for (let i = 0; i < n; i++) {
7 const left = u[(i - 1 + n) % n]; // 境界は周期的とする(簡略化)
8 const right = u[(i + 1) % n];
9 const center = u[i];
10
11 // u_i^(t+1) = u_i^t + r * (右隣 - 2*自分 + 左隣)
12 next[i] = center + r * (right - 2 * center + left);
13 }
14
15 return next;
16}
17
18// 初期状態: 1箇所だけ高温のスパイク(局所的な低気圧・熱源を模擬)
19const gridSize = 20;
20let temperature = new Array(gridSize).fill(10);
21temperature[10] = 100; // 中央にスパイク
22
23// 数値安定性条件 r <= 0.5 を満たす拡散係数を設定
24const r = 0.3;
25
26// 30ステップ(=30時刻分)シミュレーションを進める
27for (let step = 0; step < 30; step++) {
28 temperature = stepDiffusion(temperature, r);
29}
30
31console.log("30ステップ後の温度分布:", temperature.map((v) => v.toFixed(1)));
32// スパイクが崩れ、なだらかな山型分布へ収束していく

次に学ぶならコレ!おすすめトピック

この単元と深い繋がりを持つ、あわせて学ぶと理解が深まるおすすめ単元

数理モデル・概念が近い関連トピック

関連度高大学数学

微分方程式の基礎(振動・減衰)

ばね・質量・ダンパー系の運動方程式から学ぶ常微分方程式と、その数値解法(オイラー法)

関連度高工学応用

セル・オートマトン(ライフゲーム)

たった4つの単純なルールから、生命のような自己組織化と複雑系が創発する

関連度高工学応用

勾配降下法

谷底を探すAIの基本アルゴリズム

同じレベルで次に挑戦したいトピック

同レベル推薦工学応用

ニューラルネットワークの数学(順伝播と活性化関数)

入力に重みを掛けて足し合わせ、非線形関数で発火させるAIの基本素子

同レベル推薦工学応用

レコメンドの仕組み(コサイン類似度とベクトル検索)

ユーザーの好みと商品の近さを「ベクトルのなす角」で判定するアルゴリズム

"PASS"c=mᵉ%n
同レベル推薦工学応用

RSA暗号と素数の秘密(公開鍵暗号)

「掛け算は簡単だが、素因数分解は極めて困難」という非対称性を利用した現代暗号の金字塔

工学・実社会での応用先でつながるトピック

工学・実践連携工学応用

最短経路探索(ダイクストラ法とA*アルゴリズム)

グラフ上の無数のルートから「最もコストが小さい道」を一瞬で見つけ出す数学

工学・実践連携工学応用

当たり判定アルゴリズムの数学

2点間の距離公式と座標の不等式だけで、ゲームの「衝突」を判定する仕組み

工学・実践連携工学応用

画像圧縮の仕組み(離散コサイン変換の直感)

少数のコサイン波の足し算だけで、画像の明るさの並びを近似する数学

あなたの数学力をさらに伸ばす

数学の弱点診断や算数パズルに挑戦してみませんか?

簡単な質問に答えてあなたにぴったりの学習ロードマップを発見したり、直感を試すパズルで数の面白さを体験できます。