Паде Аппроксимация

Аппроксимация Паде порядка [mn] аппроксимирует функцию f (x) вокруг  x = x 0 как

a0+a1(xx0)+...+am(xx0)m1+b1(xx0)+...+bn(xx0)n.

Аппроксимация Паде является рациональной функцией, образованной отношением двух степенных рядов. Поскольку это рациональная функция, она точнее ряда Тейлора в аппроксимации функций с полюсами. Аппроксимация Паде представлена функцией Symbolic Math Toolbox™ pade.

Когда шест или нуль существует в точке расширения x = x 0, точность аппроксимации Паде уменьшается. Для повышения точности может использоваться альтернативная форма аппроксимации Паде, которая является

(xx0)p(a0+a1(xx0)+...+am(xx0)m)1+b1(xx0)+...+bn(xx0)n.

pade функция возвращает альтернативную форму аппроксимации Паде, когда вы задаете OrderMode входной параметр в Relative.

Аппроксимация Паде используется в теории систем управления, чтобы смоделировать задержки в отклике системы. Задержки возникают в таких системах, как химические и транспортные процессы, где существует задержка между входом и откликом системы. Когда эти входы моделируются, они называются входами с потерей времени. В этом примере показано, как использовать Symbolic Math Toolbox для моделирования отклика системы первого порядка на входы с потерей времени с использованием аппроксимаций Padé.

Поведение системы первого порядка описывается этим дифференциальным уравнением

τdy(t)dt+y(t)=ax(t).

Введите дифференциальное уравнение в MATLAB®.

syms tau a x(t) y(t) xS(s) yS(s) H(s) tmp
F = tau*diff(y)+y == a*x;

Найдите преобразование Лапласа F использование laplace.

F = laplace(F,t,s)
F = laplace(y(t),t,s)-τy(0)-slaplace(y(t),t,s)=alaplace(x(t),t,s)laplace (y (t), t, s) - tau * (y (0) - s * laplace (y (t), t, s)) = = a * laplace (x (t), t, s)

Примите ответ системы в t = 0 является 0. Использовать subs для замены y(0) = 0.

F = subs(F,y(0),0)
F = laplace(y(t),t,s)+sτlaplace(y(t),t,s)=alaplace(x(t),t,s)laplace(y(t), t, s) + s*tau*laplace(y(t), t, s) == a*laplace(x(t), t, s)

Чтобы собрать общие термины, используйте simplify.

F = simplify(F)
F = sτ+1laplace(y(t),t,s)=alaplace(x(t),t,s)(s * tau + 1) * laplace (y (t), t, s) = = a * laplace (x (t), t, s)

Для читаемости замените преобразования Лапласа 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)sτ+1=axS(s)yS (s) * (s * tau + 1) = = a * xS (s)

Преобразование Лапласа передаточной функции 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)sτ+1=aH (s) * (s * tau + 1) = = a

Решите уравнение для H(s). Замена H(s) с фиктивной переменной, решить для фиктивной переменной используя solve, и назначить решение обратно H(s).

F = subs(F,H(s),tmp);
H(s) = solve(F,tmp)
H(s) = 

asτ+1a/( s * tau + 1)

Вход в систему первого порядка является шагом с задержкой во времени. Чтобы представлять входной вход шага, используйте heaviside. Задержка входа на три временных модулей. Найдите преобразование Лапласа используя laplace.

step = heaviside(t - 3);
step = laplace(step)
step = 

e-3ssexp (-3 * s )/s

Найдите ответ системы, который является продуктом передаточной функции и входа.

y = H(s)*step
y = 

ae-3sssτ+1(a * exp ((-3 * s) )/( s * (s * tau + 1))

Чтобы разрешить построение графика отклика, установите параметры a и tau к их значениям. Для a и tau, выберите значения 1 и 3, соответственно.

y = subs(y,[a tau],[1 3]);
y = ilaplace(y,s);

Найдите аппроксимацию порядка Паде [2 2] шага входа с использованием Order входной параметр в pade.

stepPade22 = pade(step,'Order',[2 2])
stepPade22 = 

3s2-4s+22ss+1(3 * s ^ 2 - 4 * s + 2 )/( 2 * s * (s + 1))

Найдите ответ на вход, умножив передаточную функцию и аппроксимацию Padé входного сигнала.

yPade22 = H(s)*stepPade22
yPade22 = 

a3s2-4s+22ssτ+1s+1(a * (3 * s ^ 2 - 4 * s + 2 )/( 2 * s * (s * tau + 1) * (s + 1))

Найдите обратное преобразование Лапласа yPade22 использование ilaplace.

yPade22 = ilaplace(yPade22,s)
yPade22 = 

a+9ae-s2τ-2-ae-sτ2τ2+4τ+3τ2τ-2a + (9 * a * exp ((-s)) )/( sym (2) * tau - 2) - (a * exp ((-s/tau)) * (2 * tau ^ sym (2) + sym (4) * tau + 3) )/( tau * (sym (2) * tau - 2))

Чтобы построить график отклика, установите параметры a и tau к своим значениям 1 и 3, соответственно.

yPade22 = subs(yPade22,[a tau],[1 3])
yPade22 = 

9e-s4-11e-s34+1(9 * exp ((-s)) )/4 - (11 * exp ((-s/3)) )/4 + 1

Постройте график отклика системы 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')

Figure contains an axes. The axes with title Pade Approximant for dead-time step input contains 2 objects of type functionline. These objects represent Response to dead-time step input, Pade approximant [2 2].

The [2 2] Аппроксимация Паде не хорошо представляет реакцию, потому что полюс существует в точке расширения 0. Для повышения точности pade когда в точке расширения есть шест или нуль, установите OrderMode входной параметр в Relative и повторите шаги. Для получения дополнительной информации см. pade.

stepPade22Rel = pade(step,'Order',[2 2],'OrderMode','Relative')
stepPade22Rel = 

3s2-6s+4s3s2+6s+4(3 * s ^ 2 - 6 * s + 4 )/( s * (3 * s ^ 2 + 6 * s + 4))

yPade22Rel = H(s)*stepPade22Rel
yPade22Rel = 

a3s2-6s+4ssτ+13s2+6s+4(a * (3 * s ^ 2 - 6 * s + 4) )/( s * (s * tau + 1) * (3 * s ^ 2 + 6 * s + 4))

yPade22Rel = ilaplace(yPade22Rel)
yPade22Rel = 

a-ae-tτ4τ2+6τ+3σ1+12aτe-tcos(3t3)-3sin(3t3)36a-72aτ36aτ+1σ1where  σ1=4τ2-6τ+3a - (a * exp ((-t/tau)) * (4 * tau ^ sym (2) + sym (6) * tau + 3) )/( 4 * tau ^ sym (2) - sym (6) * tau + 3) + (12 * a * tau * exp (-t) * (cos ((sqrt (sym (3))

yPade22Rel = subs(yPade22Rel,[a tau],[1 3])
yPade22Rel = 

12e-tcos(3t3)+23sin(3t3)37-19e-t37+1(12 * exp ((-t)) * (cos ((sqrt (sym (3)) * t )/3) + (2 * sqrt (sym (3)) * sin ((sqrt (sym (3)) * t )/3 )/3) )/7 - (19 * exp ((-t/3)) )/7 + 1

fplot(yPade22Rel,[0 20],'DisplayName','Relative Pade approximant [2 2]')

Figure contains an axes. The axes with title Pade Approximant for dead-time step input contains 3 objects of type functionline. These objects represent Response to dead-time step input, Pade approximant [2 2], Relative Pade approximant [2 2].

Точность аппроксимации Паде также может быть увеличена путем увеличения её порядка. Увеличьте порядок до [4 5] и повторите шаги. The [n-1 n] Аппроксимация Паде лучше аппроксимирует ответ при t = 0 чем [n n] Паде аппроксимация.

stepPade45 = pade(step,'Order',[4 5])
stepPade45 = 

27s4-180s3+540s2-840s+560s27s4+180s3+540s2+840s+560(27 * s ^ 4 - 180 * s ^ 3 + 540 * s ^ 2 - 840 * s + 560 )/( s * (27 * s ^ 4 + 180 * s ^ 3 + 540 * s ^ 2 + 840 * s + 560))

yPade45 = H(s)*stepPade45
yPade45 = 

a27s4-180s3+540s2-840s+560ssτ+127s4+180s3+540s2+840s+560(a * (27 * s ^ 4 - 180 * s ^ 3 + 540 * s ^ 2 - 840 * s + 560) )/( s * (s * tau + 1) * (27 * s ^ 4 + 180 * s ^ 3 + 540 * s ^ 2 + 840 * s + 560))

yPade45 = subs(yPade45,[a tau],[1 3])
yPade45 = 

27s4-180s3+540s2-840s+560s3s+127s4+180s3+540s2+840s+560(27 * s ^ 4 - 180 * s ^ 3 + 540 * s ^ 2 - 840 * s + 560 )/( s * (3 * s + 1) * (27 * s ^ 4 + 180 * s ^ 3 + 540 * s ^ 2 + 840 * s + 560))

yPade45 = ilaplace(yPade45)
yPade45 = 

294120k=14etσ2σ22σ11001-2721e-t31001+46440k=14etσ2σ23σ11001+172560k=14etσ2σ1143+101520k=14eσ2tσ21290σ2+45σ22+9σ23+70143+1where  σ1=129σ23+45σ22+90σ2+70  σ2=root(s54+20s533+20s52+280s59+56027,s5,k)(294120 * (symsum ((exp ((t * root (s5 ^ 4 + (20 * s5 ^ 3 )/3 + 20 * s5 ^ 2 + (280 * s5 )/9 + sym (560/27), s5, k)) * корень (s5 ^ 4 + (20 * s5 ^ 3 )/3 + 20 * s5 ^ 2 + (280 * s5 )/9 + sym (560/27), s5, k)^ 2 )/( 12 * (9 * root (s5 ^ 4 + (20 * s5 ^ 3 )/3 + 20 * s5 ^ 2 + (280 * s5 )/9 + sym (560/27), s5, k)^ 3 + 45 * root (s5 ^ 4 + (20 * s5 ^ 3 )/3 + 20 * s5 ^ 2 + (280 * s5 )/9 + sym (560/27), s5, k)^ 2 + 90 * root (s5 ^ 4 + (20 * s5 ^ 3 )/3 + 20 * s5 ^ 2 + (280 * s5 )/9 + sym (560/27), s5, k) + 70)), k, 1, 4) )/1001 - (2721 * exp ((-t/3)) )/1001 + (46440 * (symsum ((exp ((t * root (s5 ^ 4 + (20 * s5 ^ 3 )/3 + 20 * s5 ^ 2 + (280 * s5 )/9 + sym (560/27), s5, k)) * root (s5 ^ 4 + (20 * s5 ^ 3 )/3 + 20 * s5 ^ 2 + (280 * s5 )/9 + sym (560/27), s5, k) ^ 3 )/( 12 * (9 * root (s5 ^ 4 + (20 * s5 ^ 3 )/3 + 20 * s5 ^ 2 + (280 * s5 )/9 + sym (560/27), s5, k) ^ 3 + 45 * root(s5 ^ 4 + (20 * s5 ^ 3 )/3 + 20 * s5 ^ 2 + (280 * s5 )/9 + sym (560/27), s5, k)^ 2 + 90 * root (s5 ^ 4 + (20 * s5 ^ 3 )/3 + 20 * s5 ^ 2 + (280 * s5 )/9 + sym (560/27), s5, k) + 70)), k, 1, 4) )/1001 + (172560 * (symsum (exp (t * root (s5 ^ 4 + (20 * s5 ^ 3 )/3 + 20 * s5 ^ 2 + (280 * s5 )/9 + sym (560/27), s5, k) )/( 12 * (9 * root (s5 ^ 4 + (20 * s5 ^ 3 )/3 + 20 * s5 ^ 2 + (280 * s5 )/9 + sym (560/27), s5, k) ^ 3 + 45 * root (s5 ^ 4 + (20 * s5 ^ 3 )/3 + 20 * s5 ^ 2 + (280 * s5 )/9 + sym (560/27), s5, k) ^ 2 + 90 * root (s5 ^ 4 + (20 * s5 ^ 3 )/3 + 20 * s5 ^ 2 + (280 * s5 )/9 + sym (560/27), s5, k) + 70)), k, 1, 4) )/143 + (101520 * (symsum ((exp ((root (s5 ^ 4 + (20 * s5 ^ 3 )/3 + 20 * s5 ^ 2 + (280 * s5 )/9 + sym (560/27), s5, k)* t)) * root (s5 ^ 4 + (20 * s5 ^ 3 )/3 + 20 * s5 ^ 2 + (280 * s5 )/9 + sym (560/27), s5, k))/( 12 * (90 * root (s5 ^ 4 + (20 * s5 ^ 3 )/3 + 20 * s5 ^ 2 + (280 * s5 )/9 + sym (560/27), s5, k) + 45 * root (s5 ^ 4 + (20 * s5 ^ 3 )/3 + 20 * s5 ^ 2 + (280 * s5 )/9 + sym (560/27), s5, k)^ 2 + 9 * root (s5 ^ 4 + (20 * s5 ^ 3 )/3 + 20 * s5 ^ 2 + (280 * s5 )/9 + sym (560/27), s5, k) ^ 3 + 70)), k, 1, 4)) )/143 + 1

yPade45 = vpa(yPade45)
yPade45 = 3.2418384981662546679005910164486e-1.930807068546914778929595950184tcos(0.57815608595633583454598214328008t)-2.7182817182817182817182817182817e-0.33333333333333333333333333333333t-1.5235567798845363861823092981669e-1.4025262647864185544037373831494tcos(1.7716120279045018112388813990878t)+11.595342871672681856604670597166e-1.930807068546914778929595950184tsin(0.57815608595633583454598214328008t)-1.7803798379230333426855987436911e-1.4025262647864185544037373831494tsin(1.7716120279045018112388813990878t)+1.0vpa ('3.2418384981662546679005910164486') *exp ((-vpa ('1.930807068546914778929595950184') *t)) *cos (vpa ('0.57815608595633583454598214328008') *t) - vpa ('2.7182817182817182817182817182817') *exp ((-vpa ('0.33333333333333333333333333333333') *t)) - vpa ('1.5235567798845363861823092981669') *exp ((-vpa ('1.4025262647864185544037373831494') *t)) *cos (vpa ('1.7716120279045018112388813990878') *t) + vpa ('11.595342871672681856604670597166') *exp ((-vpa ('1.930807068546914778929595950184') *t)) *sin (vpa ('0.57815608595633583454598214328008') *t) - vpa ('1.7803798379230333426855987436911') *exp ((-vpa ('1.4025262647864185544037373831494') *t)) *sin (vpa ('1.7716120279045018112388813990878') *t) + vpa ('1.0')
fplot(yPade45,[0 20],'DisplayName','Pade approximant [4 5]')

Figure contains an axes. The axes with title Pade Approximant for dead-time step input contains 4 objects of type functionline. These objects represent Response to dead-time step input, Pade approximant [2 2], Relative Pade approximant [2 2], Pade approximant [4 5].

Показаны следующие точки:

  • Аппроксимации Padé могут моделировать входы шага с потерей времени.

  • Точность аппроксимации Паде увеличивается с увеличением порядка аппроксимации.

  • Когда в точке расширения существует шест или нуль, аппроксимация Паде неточна относительно точки расширения. Чтобы увеличить точность аппроксимации, установите OrderMode опция для Relative. Можно также использовать увеличение порядка знаменателя относительно числителя.

Для просмотра документации необходимо авторизоваться на сайте