Skip to content

数値解法の初歩

数値解法とは、解析的に厳密解を得ることが難しい問題に対して、離散化と近似により計算可能な形へ変換し、所望の精度で解を得る方法論である。初歩では、手法の名前よりも、誤差・条件の良さ・安定性・収束という軸で、計算結果の意味を説明できるようになることが重要である。

参考ドキュメント

  1. UTokyo Online Education:数値解析 2017(松尾 宇泰)講義資料(PDF)
    https://ocw.u-tokyo.ac.jp/lecture_files/11479/sp6/notes/ja/講義資料1.pdf
  2. 京都大学:数値計算(大木 健太郎)講義資料(PDF)
    https://www.bode.amp.i.kyoto-u.ac.jp/member/ohki/lec/num_analysis/doc/lec01.pdf
  3. NIST Digital Library of Mathematical Functions:Arithmetics and Error Measures(浮動小数点と誤差尺度)
    https://dlmf.nist.gov/3.1

1. 数値計算で「正しさ」を語るための4語

数値解法は必ず近似を含む。よって「正しい」かどうかは、厳密解との一致ではなく、誤差の大きさとその振る舞いで記述することになる。

  • 近似(approximation) 連続量を有限の自由度で表すこと、または無限級数や積分を有限計算へ切ることを指す。

  • 誤差(error) 近似により生じる差である。誤差の種類を分けて考えることが基本である。

  • 安定性(stability) 入力の微小変化や丸め誤差が、計算途中で過度に増幅されない性質である。

  • 収束(convergence) 離散化幅(格子幅、時間刻み、近似次数など)を改善すると、計算解が厳密解へ近づく性質である。

これらは独立ではない。例えば、離散化を細かくすれば打ち切り誤差は減るが、丸め誤差や条件の悪さが支配的になる場合がある。数値計算は、誤差要因の相対的な大きさが状況で入れ替わる点に特徴がある。

2. 誤差の分解:どこから誤差が来るか

誤差は大きく次の要因に分けて理解すると見通しが良い。

2.1 モデル化誤差

現象の方程式化そのものが近似である場合に生じる誤差である。例えば、連続体近似、等方性、線形化、無視した相互作用などが該当する。数値解法そのものの議論の前に、モデルの妥当範囲があることを明示しておく必要がある。

2.2 離散化誤差(打ち切り誤差)

微分を差分で置き換える、積分を求積公式で近似する、関数を有限次元基底で展開する、といった操作で生じる誤差である。

例として、滑らかな関数 u(x) の1階微分に対し前進差分

u(x+h)u(x)h

を用いると、テイラー展開より

u(x+h)u(x)h=u(x)+h2u(x)+O(h2)

となり、主要誤差は O(h) である。これが「一次精度」であるという言い方に対応する。

2.3 丸め誤差(有限精度の誤差)

計算機では実数を有限ビットで表すため、加減乗除の結果は丸めを含む。丸めは微小であっても反復計算で蓄積または増幅する場合がある。

2.4 アルゴリズム誤差

反復法を途中で打ち切る、近似的な前処理を使う、最適化を近似解で止める、といった計算戦略により生じる誤差である。これは「どこで止めたか」という基準と結びつく。

3. 浮動小数点と誤差尺度

数値計算では、値の大きさに応じて誤差尺度を使い分ける必要がある。

  • 絶対誤差
eabs=|xx~|
  • 相対誤差
erel=|xx~||x|

ゼロ近傍では相対誤差が不安定になるため、状況に応じて基準尺度を設ける(例えば |x|+ϵ で割る等)という発想が必要である。

さらに、数値解析では「前向き誤差(forward error)」だけでなく「後ろ向き誤差(backward error)」を用いることが多い。後ろ向き誤差とは、計算結果 x~ が「少しだけ摂動した問題の厳密解」である、と解釈できる程度を測る考え方である。後ろ向き誤差が小さいアルゴリズムは、有限精度下でも信頼しやすい性質をもつ。

4. 条件の良さ:問題そのものの難しさ

安定性はアルゴリズムの性質である一方、条件の良さ(conditioning)は問題設定の性質である。入力が少し変わると解が大きく変わる問題は、どれほど良いアルゴリズムでも高精度な答えを得にくい。

一般に、関数 f の問題 y=f(x) に対し、微小摂動 δx が相対的にどれほど解へ影響するかを

κ|xf(x)f(x)|

のような感度で測る(1変数の場合)ことができる。

線形方程式 Ax=b では、行列の条件数

κ(A)=AA1

が重要である。κ(A) が大きいと、入力誤差や丸め誤差が解に増幅されやすい。

概念対象大きいと何が起こるか
条件の良さ問題小さな入力誤差が大きく増幅され得る
安定性手法丸め誤差が計算過程で増幅され得る
収束手法+離散化離散化改善で厳密解へ近づかない

5. 近似の基本道具:テイラー展開と残差

数値解法の多くはテイラー展開を骨格として理解できる。

u(x+h)=u(x)+hu(x)+h22u(x)+

差分公式の導出、局所誤差の評価、安定性解析の線形化などで繰り返し使う。残差(residual)という考え方も重要である。例えば近似解 u~ を方程式へ代入したとき

r=Lu~f

がどれほど小さいかを測る。残差が小さいことと、解が近いことは常に同値ではないが、条件の良さと組み合わせることで解の信頼性を論じやすくなる。

6. 非線形方程式 f(x)=0:反復法

6.1 二分法

区間 [a,b]f(a)f(b)<0 を満たすなら、連続性により根が存在する。二分法は

m=a+b2

で符号を見て区間を半分に縮める。収束は遅いが、条件が満たされる限り堅牢である。

6.2 ニュートン法

xn+1=xnf(xn)f(xn)

で与えられ、根の近傍では二次収束する。ただし初期値や f(x) の振る舞いに依存し、遠い初期値では発散することもある。導関数が得にくい場合は、差分で f(x) を近似するセカント法も基本である。

手法必要情報収束の速さ(近傍)特徴
二分法符号変化区間線形堅牢、遅い
ニュートン法f,f二次速いが初期値依存
セカント法f のみ約 1.618 次導関数不要

7. 線形方程式 Ax=b:数値解法の中心

PDE 離散化、最小二乗、統計推定、最適化などで、巨大な線形方程式が現れる。よって数値線形代数は数値解法の中核である。

7.1 直接法:ガウス消去と LU 分解

ガウス消去は基本であるが、有限精度下ではピボット選択が重要になる。行列を

A=LU

と分解し、前進代入・後退代入で解く枠組みは繰り返し使う。対称正定値なら

A=LLT

のコレスキー分解が有利である。

7.2 反復法:大規模疎行列の標準

疎行列では直接法のメモリ増大(フィルイン)が問題になりやすく、反復法が主要になる。

  • 固定点反復(ヤコビ法、ガウス・ザイデル法)
  • Krylov 部分空間法(CG、GMRES など)

対称正定値(SPD)では共役勾配法(CG)が基本である。非対称や不定の場合は GMRES などが用いられる。

7.3 前処理:反復法を成立させる鍵

前処理 M を用い

M1Ax=M1b

のように変形して条件数を改善する。IC(不完全コレスキー)、ILU、マルチグリッドなどが代表である。前処理は「解法の一部」であり、計算コストと収束性のバランスを決める。

分類代表手法適する状況
直接法LU, Cholesky中規模、密行列、精度重視
反復法CG, GMRES大規模疎行列、反復で十分
前処理ILU, IC, MG条件数が悪い、収束が遅い

8. 最小二乗と SVD:不安定さを扱う

観測誤差を含む方程式 Axb では、最小二乗

minxAxb2

を解く。正規方程式

ATAx=ATb

は基本式であるが、条件数が悪化しやすい。数値的には QR 分解や特異値分解(SVD)

A=UΣVT

が重要である。SVD はランク落ちや正則化(Tikhonov など)と結びつき、逆問題・データ同化・機械学習でも中心的役割をもつ。

9. 補間と近似:関数を有限情報で表す

9.1 多項式補間と分割

{xi} における値から多項式で補間する。しかし高次多項式補間は区間端で振動し得る(Runge 現象)。そこで、区分的多項式(スプライン)や、Chebyshev 点の利用が基本として重要である。

9.2 最良近似と直交基底

直交多項式(Legendre, Chebyshev など)による近似は、誤差評価がしやすい。フーリエ級数と同様に、内積空間での射影として理解できる。

10. 数値積分:求積公式と誤差

積分

I=abf(x)dx

は、関数値の重み付き和

Ik=1nwkf(xk)

で近似される(補間型求積)。台形則、Simpson 則、Gaussian 求積などが基本である。

  • 台形則は滑らかな関数に対して O(h2) 程度の誤差をもつ。
  • Simpson 則は O(h4) の誤差をもつ(十分滑らかである場合)。
  • Gaussian 求積は、重み関数付き内積の直交多項式と結びつき、少数点で高精度になり得る。

多次元積分では格子点数が指数的に増えるため、モンテカルロ法が重要になる。

11. 常微分方程式(ODE)初期値問題

ODE 初期値問題は

dydt=f(t,y),y(t0)=y0

である。時間刻み Δt を用い、近似列 yny(tn) を計算する。

11.1 オイラー法

陽的オイラー法は

yn+1=yn+Δtf(tn,yn)

であり、局所打ち切り誤差は O(Δt2)、大域誤差は O(Δt) となる。

11.2 Runge–Kutta 法

高次精度の代表が Runge–Kutta(RK)法である。4次RKは基本として広く使われるが、剛性(stiffness)が強い問題では安定性制約で刻み幅が極端に小さくなることがある。

11.3 安定性解析:線形試験方程式

安定性の基本解析は

y=λy

に対して行う。陽的オイラー法は

yn+1=(1+λΔt)yn

となり、|1+λΔt|<1 が満たされる範囲で安定となる。λ が大きな負の実部をもつとき、安定条件が厳しくなる。

12. 剛性(stiffness)と陰的法:安定領域の考え方

剛性とは、解の時間スケールが大きく異なる成分を含み、陽的法だと安定性のために刻み幅を非常に小さくせざるを得ない状況である。

陰的オイラー法は

yn+1=yn+Δtf(tn+1,yn+1)

であり、各ステップで非線形方程式を解く必要があるが、安定性が高い。線形試験方程式での増幅因子は

yn+1=11λΔtyn

であり、Re(λ)<0 に対して広い安定性をもつ(A-stability の議論へつながる)。

13. 偏微分方程式(PDE)の離散化

PDE は離散化により線形(または非線形)方程式系へ落ちる。代表的枠組みは次である。

13.1 有限差分法(FDM)

格子点上で微分を差分で近似する。実装が比較的簡潔で、直交格子で強い。境界が複雑だと工夫が要る。

13.2 有限要素法(FEM)

弱形式(変分形式)へ変換し、要素ごとの基底関数で近似する。複雑形状や材料不均一に強い。行列は疎になり、反復法と相性が良い。

弱形式の基本例として、ポアソン方程式

2u=fin Ω

に対し、試験関数 v を用いて

ΩuvdΩ=ΩfvdΩ

のような形が現れる(境界条件により境界項を含む)。

13.3 有限体積法(FVM)

保存則をセル積分し、セル境界のフラックスで更新する。流体など保存性が重要な問題で強い。

手法強み注意点
FDM直交格子で簡潔、高速形状適合が難しい場合がある
FEM複雑形状・多様な境界条件形式化(弱形式)と実装が必要
FVM保存則と整合、衝撃波などに適合数値流束の設計が重要

14. 時間発展 PDE:CFL 条件と安定性

移流方程式

ut+cux=0

などの双曲型 PDE では、時間刻み Δt と空間刻み Δx の比が安定性を支配し、CFL 条件として

|c|ΔtΔxC

の形が現れる(スキームに依存)。拡散方程式では

ΔtCΔx2

のような制約が現れ、空間分解能を上げると時間刻みが二乗で厳しくなることがある。

このように、時間離散と空間離散は独立ではなく、同時に設計される必要がある。

15. スペクトル法:高次精度と基底展開

滑らかな解に対して、フーリエ基底や Chebyshev 多項式などで展開すると、少数自由度で非常に高精度になり得る。スペクトル法は「基底展開により微分が代数操作へ落ちる」点で強力であるが、境界条件や非周期境界での扱いに工夫が要る。

16. 数値解法を選ぶ視点

数値解法は万能ではない。選定は、次の軸で整理すると論理が立つ。

  • 問題規模:自由度が 103109 かで戦略が変わる
  • 行列の性質:疎か密か、対称か非対称か、正定値か不定か
  • 時間スケール:剛性があるか
  • 幾何:複雑境界か、直交格子で十分か
  • 求めたい量:点値か、平均量か、保存量か、スペクトルか
  • 誤差の優先順位:位相誤差を抑えたいか、保存性を優先するか、など

これらの整理ができると、手法の名前を列挙するよりも、選定の根拠をサイズ、疎密、剛性、境界、目的精度などの観点から学術的に説明できるようになる。

17. 計算科学の位置づけ:数値解法が支える研究の拡大

数値解法は、理論と実験の間を埋める第三の方法として発展してきた。近年は大規模計算資源とAIが結びつき、銀河形成のような超大規模問題や都市・防災のデジタルツインなど、現象の多階層性を含む計算が推進されている。こうした発展は、アルゴリズム(数値解法)と計算基盤(HPC)の両方が揃うことで成立しているのである。

まとめと展望

数値解法の初歩は、(i) 誤差をモデル化誤差・離散化誤差・丸め誤差・アルゴリズム誤差に分け、(ii) 条件の良さと安定性を区別して理解し、(iii) 収束が何に対して語られるのか(格子幅、時間刻み、近似次数)を明確にする段階である。さらに、非線形方程式、線形方程式、ODE、PDEという主要クラスに対して、代表的離散化と解法の骨格を把握することが、以後の専門的手法(前処理、マルチグリッド、高次法、適応法、逆問題)を学ぶための土台になるのである。

展望としては、第一に、数値線形代数(反復法・前処理・スペクトル解析)を深めることが、大規模 PDE やデータ同化、機械学習の計算基盤を理解する近道になる。第二に、時間積分の安定性理論(A-stability、L-stability、保存則とシンプレクティック性など)を学ぶことで、長時間計算での信頼性が上がる。第三に、離散化の設計(FEM/FVM/スペクトル)と誤差評価を結びつけることで、「どの自由度を増やすと何が改善するか」を説明できるようになり、研究における数値結果の解釈が一段と強固になるのである。

参考文献