台形法の数値リンギング

1次遅れ系の微分方程式はτを時定数として

\begin{align} &\frac{dx}{dt}+\frac{1}{\tau}x = \frac{1}{\tau}x_{in}(t)\\ \rightleftharpoons\ &\frac{dx}{dt}=f(x,t)\ ,\ f(x,t)=-\frac{1}{\tau}x+\frac{1}{\tau}x_{in}(t) \end{align}

と表されます。これを時間刻み幅Tの台形法によって差分方程式で近似すると、

\begin{align} \frac{x[n]-x[n-1]}{T} = \frac{f[n-1]+f[n]}{2} \end{align}

となります。ただし、x[n]=x(nT), f[n]=f(x(nT), nT)の意味です。x[n]について解くと

1次遅れ系の台形法近似
\begin{align} x[n]=\frac{1-\frac{T}{2\tau}}{1+\frac{T}{2\tau}}x[n-1] +\frac{\frac{T}{2\tau}}{1+\frac{T}{2\tau}}(x_{in}[n]+x_{in}[n-1]) \end{align}

が得られます。T/2τ>1、つまり時間刻み幅が時定数の2倍よりも大きい場合、右辺第1項が負となって数値リンギングが生じます。

たとえばxinがステップ信号の場合、xin[0]=0, n≥1でxin[n]=xin (一定値)ですが、n≥2において

ステップ応答
\begin{align} x[n]-x_{in} = \frac{1-\frac{T}{2\tau}}{1+\frac{T}{2\tau}}\left(x[n-1]-x_{in}\right) \end{align}

と表されます。T/2τ<1の場合は振動せずに(x[n]−xin)→0、T/2τ>1の場合は1サンプル点ごとに符号が反転しながら(x[n]−xin)→0となることが分かります。