😀

微分・積分、SPICE 過渡解析、そして非線形微分代数方程式のおはなし

2025/01/01に公開

微分・積分、SPICE 過渡解析、そして非線形微分代数方程式のおはなし

1. 微分と積分:関数の二つの側面

微分は「変化率」を表す

ある関数 (A(x)) を微分して得られる関数 (B(x)=A'(x)) は、よく「(A) の変化の様子(瞬間的な変化率)」を表すといわれます。たとえば、位置 (x(t)) を時間 (t) で微分すると速度 (v(t)) になり、速度をさらに微分すると加速度 (a(t)) になります。

  • 微分: 元の関数が「どのように変化しているか」を切り出す操作。

積分は「元の関数」を(定数を除いて)復元する

一方で、微分した結果 (B(x)) を積分することで、元の関数 (A(x)) を再構成できます。ただし、積分定数 (C) が現れるので、厳密には

[
\int B(x),dx = A(x) + C
]

のようになります。つまり、微分によって失われた「定数分の情報」は初期条件などを設定しないと分からないわけです。

  • 積分: 微分で抜き出した「変化率」の情報をもとに、定数を除いて元の関数を取り戻す操作。

このように、「微分した関数も、ある意味では元の関数を表している」 と言えます。なぜなら、積分(+初期条件)によって元に戻せるからです。


2. SPICE の過渡解析と非線形微分代数方程式 (Nonlinear DAE)

SPICE の過渡解析とは

SPICE(Simulation Program with Integrated Circuit Emphasis)では、回路素子(抵抗、コンデンサ、インダクタ、トランジスタなど)の物理法則(KCL, KVL など)と素子特性式を組み合わせて、回路の動作を数値的に解析します。そのうち、時間変化する電圧や電流を求める解析が 過渡解析(.TRAN) です。

実際は非線形微分代数方程式(Nonlinear DAE)

  • コンデンサやインダクタは、微分を含む関係式((i = C,dv/dt) や (v = L,di/dt) など)を持ちます。
  • 抵抗やダイオード、トランジスタなどは非線形な電流-電圧特性を持ち、さらに回路方程式は KCL/KVL を通じて 代数的(= 時間微分を含まない)な連立方程式も含みます。

このため、回路全体を表すと次のような形になることが多いです。

[
\begin{cases}
\displaystyle \frac{d\mathbf{x}}{dt} = \mathbf{f}(\mathbf{x}, \mathbf{y}, t)
&\quad\text{(微分を含む部分)}\[6pt]
\displaystyle \mathbf{g}(\mathbf{x}, \mathbf{y}, t) = \mathbf{0}
&\quad\text{(代数方程式部分)}
\end{cases}
]

  • (\mathbf{x}(t)) : 時間的に変化する状態変数(例: コンデンサ電圧、インダクタ電流)
  • (\mathbf{y}(t)) : ノード電圧や素子の電流など、代数方程式から決まる変数
  • (\mathbf{f}) : 状態変数の微分を与える非線形関数
  • (\mathbf{g}) : KCL/KVL や素子の I-V 特性を表す非線形代数方程式

このように、微分を含む部分代数(微分のない)部分 が混ざった形で記述されるのが 非線形微分代数方程式 (Nonlinear DAE) です。


3. 過渡解析での数値解法:時間ステップとニュートン法

数値積分するのは「微分方程式」だが、代数方程式も同時に満たす必要がある

  • 時間方向にステップを進める(数値積分)対象 となるのは、上式のうち
    (\displaystyle \frac{d\mathbf{x}}{dt} = \mathbf{f}(\mathbf{x}, \mathbf{y}, t))
    の微分方程式部分です。
  • しかし、シミュレーションでは「代数方程式 (\mathbf{g}(\mathbf{x},\mathbf{y},t)) も各時点で同時に成立」していなければいけません。
  • 実際の解法では、時間ステップごとに「微分方程式を積分するスキーム(オイラー法・トラペゾイド法など)」を当てはめ、(\mathbf{x}) と (\mathbf{y}) を同時に満たすようニュートン法(Newton-Raphson 法)などで反復しながら解を求めます。

ワンステップ、ワンステップでは「線形代数方程式」を解く

時間ステップ (t_n \to t_{n+1}) で、たとえば後退オイラー法やトラペゾイド法を用いると、

  • 「(\mathbf{x}_{n+1}) を含む非線形方程式」と
  • 「(\mathbf{y}_{n+1}) を含む代数方程式」

が同時に出現します。これらをまとめると、

[
\Phi(\mathbf{x}{n+1}, \mathbf{y}{n+1}) = \mathbf{0}
]

という 非線形連立方程式 になり、直接は解けません。そこで ニュートン法 を用いて、

  1. 推定値 (\mathbf{u}^{(k)} = (\mathbf{x}{n+1}^{(k)}, \mathbf{y}{n+1}^{(k)})) に対してテイラー展開の1次近似を行い、
  2. 得られる ヤコビアン行列 を使った 線形方程式 を解き、
  3. (\mathbf{u}^{(k)}) を更新して (\mathbf{u}^{(k+1)}) を得る

という反復を繰り返します。

したがって、1反復の単位で見れば「線形代数方程式」を解く作業ですが、非線形問題を反復解で近似しているというのが本質です。こうして 1 ステップ分 (\mathbf{x}{n} \to \mathbf{x}{n+1}) を収束させたら、次の時間ステップへ進む――これが SPICE の過渡解析(=非線形 DAE)の数値解法の概略です。


4. 初期値問題(初期条件)の重要性

微分方程式には解を一意にするための「初期条件」が必要

一般的に、(\frac{dx}{dt} = f(x,t)) のような微分方程式(あるいは DAE)を「積分」するときには、(t=0) やある時刻 (t_0) における (x(t_0)) の値が必要です。これを 初期条件 と呼びます。初期条件が与えられないと、解が一意に決まりません。

回路における初期条件

回路の場合は、以下のような初期状態が考えられます。

  • コンデンサの初期電圧
  • インダクタの初期電流
  • その他、トランジスタなどの状態に依存した端子電圧 など

これらが設定されることで、過渡解析のスタート地点が定まり、シミュレーション結果が物理的に正しくなるわけです。


5. .DCOP による初期条件の設定

DC Operating Point解析(.DCOP)とは?

SPICE 系シミュレータでは、過渡解析を行う前にしばしば

Discussion