このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
時間遅延する入力のパデ近似
この例では、制御系理論でパデ近似を使用して、1 次の系の応答における時間遅延をモデル化する方法を示します。時間遅延は、化学処理や輸送プロセスなど、入力とシステム応答の間に遅延があるシステムで発生します。これらの入力をモデル化したものはむだ時間入力と呼ばれます。
この例では、Symbolic Math Toolbox™ を使用して一次系の伝達関数を解き、パデ近似を使用してむだ時間ステップ入力への系の応答を求めます。この例では、計算をシンボリックに実行して解析結果を取得します。
はじめに
階数が [m, n]
のパデ近似は、 近傍で関数 f(x)
を次のように近似します。
パデ近似は 2 つのべき級数の比で構成される有理関数です。これは有理関数なので、極をもつ関数を近似するうえでテイラー級数よりも正確です。パデ近似は Symbolic Math Toolbox™ の関数 pade
によって表されます。
展開点 に極または零点が存在すると、パデ近似の精度が低下します。精度を上げるために、次に示すパデ近似の代替形を使用します。
入力引数 OrderMode
を Relative
に設定すると、関数 pade
はパデ近似の代替形を返します。
1 次システムの伝達関数を求める
1 次の系の動作は次の微分方程式によって表されます。
MATLAB® で微分方程式を入力します。
syms tau a x(t) y(t) xS(s) yS(s) H(s) tmp F = tau*diff(y)+y == a*x;
laplace
を使用して F
のラプラス変換を求めます。
F = laplace(F,t,s)
F =
t = 0
のときのシステムの応答が 0
であると仮定します。subs
を y(0) = 0
の代わりに使用します。
F = subs(F,y(0),0)
F =
simplify
を使用して共通項をくくります。
F = simplify(F)
F =
見やすくするため、x(t)
と y(t)
のラプラス変換を xS(s)
と yS(s)
で置き換えます。
F = subs(F,[laplace(x(t),t,s) laplace(y(t),t,s)],[xS(s) yS(s)])
F =
伝達関数のラプラス変換は yS(s)/xS(s)
です。方程式の両辺を xS(s)
で除算し、subs を使用して yS(s)/xS(s)
を H(s)
で置き換えます。
F = F/xS(s); F = subs(F,yS(s)/xS(s),H(s))
F =
H(s)
について方程式を解きます。H(s)
をダミー変数で置き換え、solve を使用してダミー変数の解を求め、解を Hsol(s)
に代入します。
F = subs(F,H(s),tmp); Hsol(s) = solve(F,tmp)
Hsol(s) =
時間遅延を加えたステップ入力に対するシステムの応答を求める
1 次の系への入力は時間遅延を加えたステップ入力です。ステップ入力を表すには heaviside
を使用します。入力を 3 時間単位遅らせます。laplace
を使用してラプラス変換を求めます。
step = heaviside(t - 3); step = laplace(step)
step =
システムの応答、つまり伝達関数と入力の積を求めます。
y = Hsol(s)*step
y =
応答をプロットするため、パラメーター a
と tau
に特定の値を設定します。a
と tau
には、それぞれ1
と 3
を選択します。
y = subs(y,[a tau],[1 3]); y = ilaplace(y,s);
パデ近似を使用して系の応答を求める
入力引数 Order を pade
に使用して、ステップ入力の階数 [2 2]
のパデ近似を求めます。
stepPade22 = pade(step,'Order',[2 2])
stepPade22 =
伝達関数と入力のパデ近似を乗算して入力に対する応答を求めます。
yPade22 = Hsol(s)*stepPade22
yPade22 =
ilaplace
を使用して yPade22
の逆ラプラス変換を求めます。
yPade22 = ilaplace(yPade22,s)
yPade22 =
応答をプロットするため、パラメーター a
と tau
の値をそれぞれ 1
と 3
に設定します。
yPade22 = subs(yPade22,[a tau],[1 3])
yPade22 =
システム y
の応答とパテ近似 yPade22
から算出された応答をプロットします。
fplot(y,[0 20]) hold on fplot(yPade22, [0 20]) grid on title 'Padé approximant for dead-time step input' legend('Response to dead-time step input', 'Padé approximant [2 2]',... 'Location', 'Best');
OrderMode を使用したパデ近似の精度の向上
0
の展開点に極が存在するため、[2 2]
パデ近似は応答をうまく表していません。展開点に極や零があるときに pade
の精度を上げるには、入力引数 OrderMode
に Relative を設定し、同じ手順を繰り返します。詳細については、pade
を参照してください。
stepPade22Rel = pade(step,'Order',[2 2],'OrderMode','Relative')
stepPade22Rel =
yPade22Rel = Hsol(s)*stepPade22Rel
yPade22Rel =
yPade22Rel = ilaplace(yPade22Rel); yPade22Rel = subs(yPade22Rel,[a tau],[1 3])
yPade22Rel =
fplot(yPade22Rel, [0 20], 'DisplayName', 'Relative Padé approximant [2 2]')
階数の増加によるパデ近似の精度の向上
階数を増やすことによりパデ近似の精度を上げることができます。階数を [4 5]
に増やし、同じ手順を繰り返します。t = 0
での応答を近似する点で、[n-1 n]
パデ近似は [n n]
パデ近似よりも優れています。
stepPade45 = pade(step,'Order',[4 5])
stepPade45 =
yPade45 = Hsol(s)*stepPade45
yPade45 =
yPade45 = subs(yPade45,[a tau],[1 3])
yPade45 =
ilaplace
を使用して yPade45
の逆ラプラス変換を求めます。vpa
を使用して yPade45
を数値的に近似します。パデ近似 yPade45
から計算された応答をプロットします。
yPade45 = vpa(ilaplace(yPade45)); fplot(yPade45, [0 20], 'DisplayName', 'Padé approximant [4 5]')
まとめ
以下の点を説明しました。
パデ近似はむだ時間ステップ入力をモデル化できる。
パデ近似の精度は、近似の階数の増加に合わせて向上する。
展開点に極または零点が存在すると、展開点周辺ではパデ近似は不正確になる。近似の精度を上げるには、
OrderMode
オプションをRelative
に設定する。分子に対する分母の階数を上げるという方法を使用することもできる。