SPICE における局所誤差(LTE)評価と予測子修正子法の関係

# SPICE における局所誤差(LTE)評価と予測子修正子法の関係

## はじめに
SPICE系シミュレータの**過渡解析**では、回路方程式を時間方向に少しずつステップを刻んで解いていきます。その際、各ステップで得られる解が「どれだけ正確か」を判断し、必要に応じてステップ幅（$\Delta t$）を拡大・縮小する仕組みとして、**局所誤差 (Local Truncation Error; LTE)** の評価が欠かせません。また、これを支える考え方として**予測子修正子法 (Predictor-Corrector method)** が深く関係しています。

本記事では、

1. SPICE における局所誤差 (LTE) の具体的な評価手順  
2. LTE が大きすぎる場合に行われるステップ拒否やステップ調整  
3. ニュートン法がどのように収束を判定するか  
4. それらが予測子修正子法とどのように関係しているか  

について、なるべく噛み砕いて解説します。

---

## 1. トランケーション誤差 (LTE) とは

### 1-1. 微分方程式の数値解と誤差
SPICE で行う回路の過渡解析は、コンデンサやインダクタなどの素子を含む**常微分方程式 (ODE)** を解くプロセスに相当します。具体的には、

$C \frac{dv}{dt} = i,\quad L \frac{di}{dt} = v$

などの形で表される複数の方程式を、**Backward Euler**、**Trapezoidal（台形則）**、**Gear 法**などの数値積分法で解き進めるわけです。

しかし、数値解はあくまでも「連続な時間軸を離散的に扱う近似」であり、理想的な「真の解」と必ずズレが生じます。こうしたズレのうち、「あるステップでの近似手法自身が生む誤差」を**局所誤差 (Local Truncation Error; LTE)** と呼びます。

### 1-2. 局所誤差とグローバル誤差
- **局所誤差 (LTE)**:  
  1ステップ内で「現在使っている積分公式」が理想的に成立すると仮定したときの「真の解とのズレ」を評価したもの。  
- **グローバル誤差**:  
  ステップを重ねることによって累積していく最終的な誤差。

SPICE では主に **局所誤差 (LTE)** を推定し、その大きさを基に**各ステップごとの精度管理**を行います。局所的に精度を保つことで、最終的なグローバル誤差も小さく抑える、という考え方です。

---

## 2. SPICE での LTE 評価とステップ制御

SPICE において、ステップごとに LTE を推定し、必要に応じてステップ幅を調整する仕組みを **Adaptive Time Stepping** と呼びます。以下に、SPICE が一般的に行う LTE 評価の流れを示します。

### 2-1. 解の予測 (Predict)
SPICE では過去の解（複数ステップ分）を利用して、**多項式近似**や**差分法**によって「次の時刻 $t + \Delta t$ における解」を**予測**します。  
- 例: Gear 法(多段法)では、過去の解を用いて2次または高次の多項式を外挿し、予測値を計算する。  
- 例: 台形則(Trapezoidal)でも、過去ステップの勾配(導関数近似)を活用した簡易な外挿を行う場合があります。

### 2-2. 解の修正 (Correct) — ニュートン反復
回路にはダイオードやトランジスタなどの**非線形素子**が含まれるため、回路方程式自体は非線形となります。そこで SPICE は、予測値を初期値として**ニュートン法**を繰り返し実行し、最終的に収束した解（修正値）を得ます。

### 2-3. トランケーション誤差 (LTE) の推定
修正値（最終的な収束解）と予測値、あるいは異なる次数（1次/2次）の近似結果の差などを用いて**局所誤差**を評価します。

- **収束解と予測子の値の差を誤差として扱う考え方**  
  一般に、予測子修正子法では「予測ステップ（仮の解）」と「修正ステップ（より高精度の解）」との**差**を、そのステップにおける誤差の推定値とみなすケースが多いです。  
  - 予測値は、前ステップまでの解を外挿して得た1次（もしくは低次）近似  
  - 修正値は、ニュートン法による収束解や高次近似  
  その差が大きいほど、今回の近似が「荒い」ことを示すため、LTE が大きいと判断できます。  

- **1次/2次など複数オーダーの近似を比較する方法**  
  Gear 法(多段法)などでは、1次近似と2次近似を同時に生成し、その差を局所誤差とみなします。台形則(Trapezoidal)でも、実装によっては複数のオーダーで近似を行うことで誤差を推定する仕組みが存在します。

### 2-4. ステップ幅の調整 (Adaptive)
- **LTE が許容範囲内**  
  → 現行ステップ幅で問題なく計算できたと判断し、時刻を進める。場合によっては次ステップ幅を**少し拡大**することもある。  
- **LTE が大きすぎる**  
  → 「ステップ拒否 (Discard)」として同じ時刻ステップをもう一度計算し直すか、もしくは次のステップ幅を大きく**縮小**して再チャレンジする。

このようにして、**SPICE は局所誤差をもとにリアルタイムでステップ幅を最適化し、必要十分な精度を確保しつつ計算量(時間)を削減**しています。

---

## 3. 予測子修正子法との関係

### 3-1. Predictor-Corrector の基本理念
**予測子修正子法 (Predictor-Corrector method)** とは、  
1. **Predict**: 過去の解や傾き情報を使って次の解を予測する  
2. **Correct**: 予測した解を元に微分方程式を評価し、修正を加える  

のステップを繰り返す方法です。

### 3-2. SPICE における具体的な対応
SPICE では、台形則 (Trapezoidal) や Gear 法 (後退差分の多段法)などの数値積分法を実装しており、これらは広義に**予測子修正子法の考え方**を取り入れています。

- **予測 (Predict)**: 過去の解から多項式近似で次の時刻を外挿し、初期値を用意する  
- **修正 (Correct)**: 非線形素子を含む回路をニュートン法で解く（複数回の反復）  
- **誤差評価 (LTE)**: 予測解と修正解（または複数オーダーの解）のズレを比較  
- **ステップ調整**: 誤差が大きければステップ幅を小さく、十分小さければ次は拡大する  

この一連の流れが、まさに**Predictor-Corrector のフレームワーク**です。SPICE ではこれを「台形則」「Gear 法」など個別のアルゴリズム名で呼びますが、その根底にある考え方は予測子修正子法に基づいています。

---

## 4. ニュートン法の収束判定と誤差制御

### 4-1. ニュートン法が解こうとしているもの
SPICE の過渡解析では、ある時刻ステップごとにコンパニオンモデル化された回路方程式（非線形方程式）を解きます。たとえば

$\mathbf{f}(\mathbf{x}) = 0$

の形で、「ノード電圧やデバイス電流の未知数ベクトル $\mathbf{x}$」を求めることになります。MOSFET 等が含まれる場合、$\mathbf{f}(\mathbf{x})$ は非線形になり、ニュートン法を用いて解を反復する必要があります。

### 4-2. ニュートン法の収束判定 — 残差と変数更新量
SPICE では多くの場合、以下の2つが共に一定の閾値を下回ったときに「収束した」と見なします。

1. **残差 (residual)**  
   $\|\mathbf{f}(\mathbf{x}^{(k)})\|$ が十分小さいかどうか。  
   - 回路方程式が「ほぼ 0」となるかを表す指標。  
   - 実際にはノード電圧や素子電流のスケールを考慮し、相対/絶対誤差トレランスを組み合わせてチェックする。  

2. **変数更新量 (delta)**  
   $\Delta \mathbf{x}^{(k)} = \mathbf{x}^{(k+1)} - \mathbf{x}^{(k)}$ の大きさが十分小さいかどうか。  
   - 解がほとんど動かなくなった、という意味。  
   - これも相対/絶対誤差トレランスによる判定が行われる（$\|\Delta \mathbf{x}^{(k)}\|\le\max(\mathrm{RELtol}\times\|\mathbf{x}\|,\mathrm{ABStol})$ など）。

### 4-3. 収束失敗時の対処 — ステップ縮小や GMIN ステッピング
ニュートン反復が一定回数まで進んでも収束しない場合、SPICE は
- **ステップ幅をさらに縮小**して再トライ  
- **GMIN ステッピング**や**ソースステッピング**といった強力な収束支援策  
を試すことがあります。それでも収束しない場合は、解析を中断しエラーメッセージを返す場合があります。

---

## 5. 相対誤差と絶対誤差は「ニュートン法」「LTE判定」の両方で使われている

SPICE の過渡解析では、**二重の誤差制御**が行われています。

1. **ニュートン法の収束判定**  
   - **空間方向**（ノード電圧・素子電流）の非線形解の誤差を見る  
   - 「残差が小さいか」「変数の更新量が微小か」を**相対/絶対誤差トレランス**と比較してチェックする

2. **局所トランケーション誤差 (LTE) の評価**  
   - **時間方向**（ステップ間）での近似解の精度を見る  
   - 予測解・修正解の差や1次/2次オーダーの差分を**相対/絶対誤差トレランス**を基準に判定し、大きい場合はステップ幅を小さくする

どちらも同じく「RELtol」「ABStol」といったパラメータを用いて“誤差が閾値内か”を判断しますが、**前者は「非線形方程式の解」、後者は「時間離散の近似解」の誤差**を管理するための仕組みである、という違いがあります。

---

## 6. まとめ

1. **局所誤差 (LTE) とは**  
   - 数値積分手法（台形則、Gear 法など）が1ステップごとに発生させる「真の解とのズレ」を示す指標。  
   - SPICEではこのLTEを推定し、ユーザ設定の相対/絶対誤差トレランスを満たしているかどうかを確認する。

2. **評価からステップ制御までの流れ**  
   - **予測 (Predict)** → **修正 (Correct; ニュートン反復)** → **誤差推定 (LTE)** → **ステップ幅調整**  
   - 誤差が大きければステップをやり直したり縮めたり、誤差が小さければステップ幅を拡げることもある。

3. **ニュートン法の収束判定**  
   - 残差(回路方程式 $f(\mathbf{x})$ の大きさ)と変数更新量($\Delta \mathbf{x}$)が、ともに相対/絶対誤差トレランス内に収まれば合格。  
   - 収束しない場合はステップ縮小や収束支援策を試す。

4. **予測子修正子法との関係**  
   - 台形則や Gear 法は、広義の予測子修正子法の枠組みに該当。  
   - 予測子修正子法の理念 (予測 → 修正 → 誤差評価 → ステップ調整) が SPICE の過渡解析にも活かされている。

5. **二重の誤差管理**  
   - **ニュートン法の誤差管理** … 同じ時刻ステップ内の非線形方程式の収束判定。  
   - **トランケーション誤差 (LTE) 管理** … 時間ステップ間の近似精度の判定。  
   - どちらも最終的には「相対/絶対誤差トレランス」と比較して判断するが、それぞれ異なる観点での誤差を見ている。

---

## おわりに
SPICE の過渡解析は、**ステップごとに近似解を求め、収束した解から局所誤差 (LTE) を推定し、ステップ幅を調整しながら前進する**というプロセスの繰り返しです。その根本には、**予測子修正子法**という数値解析の考え方があります。

さらに、その時刻ステップでの非線形方程式解法（ニュートン反復）でも、**相対/絶対誤差**に基づく収束判定が行われます。これは時間方向の誤差（LTE）とは別に、空間方向（ノード電圧や素子電流）の精度を管理しているわけです。

本記事で紹介したフローを理解すると、SPICE が内部でどのように精度を確保しつつ効率的にシミュレーションを進めているかが、より明確になります。実際の SPICE 実装ではさらに多くの特殊ケースや高度なヒューリスティクスが組み込まれていますが、大枠としてはここで述べた**予測 → 修正 → 誤差評価 → ステップ制御**の流れと、ニュートン法での**収束判定**が基盤になっています。

ぜひ、SPICE の詳細マニュアルや学術資料も参照し、さらに深いレベルでのアルゴリズム設計や回路解析手法に触れてみてください。局所誤差の管理と予測子修正子法の理解が深まるほど、より複雑な回路解析の仕組みが見えてくるはずです。