伝達関数の差分化の話(その3)
そろそろ終わりにしたい気もするけど、やっぱりグラフの比較くらいほしいのと、自分流+=戦法の話をもう少し書いておく。もうちっとだけ続くんじゃ。
3.1. 1次遅れ系の実装と波形の比較
さて、(1)の実装として、(2)と(3)を比較してみよう。
...... (1)
...... (2)
...... (3)
(、とおいた)
(2)のいい所はが出てこないところ。
タイマ「CPUさん、時間です!」
CPU「よし、を計算するか。ADCよ、はまだか?」
ADC「すいません!ただ今取ってきますので少々お待ちください!」
CPU「ちっ、これだからのろまなやつと組むのは嫌いなんだ。」
みたいな事にならずにCPUの手元に残ってる一個前のyとuの値で済む。一方で(3)のいい所は何にも考えずに実装できるわりにはそれなりに使えるところ。え?茶番よりグラフ?はい。
ΔTが細かい場合と粗い場合。双一次変換は一次遅れ系ならほぼ誤差は気にしなくてよさげ。+=戦法はΔT/Tが0.1くらい以下ならいいかなって感じ。
3.2. 2次遅れ系の実装と波形の比較
以上で良いかと思ったんだけどエクセルで遊んでたら色々思い出してきたのでもうちょっと書く。以下の二次遅れ系を実装してみる。
...... (4)
双一次変換は何も考えずに(4)に(5)をぶち込んでぐつぐつ煮て(6)を得ましょう。
...... (5)
...... (6)
(、とおいた)
頭は使わず手だけ動かせば良いのがいい所。
一方で+=戦法はそのまま代入しちゃいけない。なぜか?が2個以上出てくる式にそのまま入れるとの多項式になってとかが出てきてしまう。一個前のだけで書ける事だけが利点なのでちょっと頭を使おう。一言で書くと1元高次の方程式を多元1次の方程式にすればいい。
...... (4')
とりあえずyの時間微分をxとおく。
...... (4'')
...... (5)
できた。(5)の2行目の最後がじゃなくでなのはずるい気もするけど、2行目みたいに微分だけの時は1行目の結果が使えるからできる。当然お互いにお互いの行の結果を使うようなときは全部にするしかないけど。
どっちもΔTω=0.3くらいが限界ぽい。周波数の補正とかすれば使えなくもないけど。
添え字が全部のずる無し版+=戦法だとΔTω=0.03くらいが限界ぽい。そして周波数じゃなくて振幅がずれるのか。なるほど。
(ちなみに勘の良い読者は「(4'')って状態方程式ぽくね?」とか思ったかもしれない。実はその通りで伝達関数を状態方程式にして一階微分方程式にしちゃえば+=戦法以外もやりたい放題(4次ルンゲクッタとか)なんだけど余白が足りないので今回はここまで。もう飽きたけど需要があれば続くかも。)