exponenta event banner

Паде Аппроксимант

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

a0 + a1 (x x0) +... + am (x x0) m1 + b1 (x x0) +... + bn (x − x0) n.

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

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

(x x0) p (a0 + a1 (x x0) +... + am (x x0) m) 1 + b1 (x − x0) +... + bn (x − x0) n.

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

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

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

startdy (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))

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

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].

[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))*t)/3) - sqrt(sym(3))*sin((sqrt(sym(3))*t)/3)*((36*a - 72*a*tau)/(36*a*tau) + 1)))/(4*tau^sym(2) - sym(6)*tau + 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] и повторите шаги. [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)))*root(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. Можно также использовать увеличение порядка знаменателя относительно числителя.