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