exponenta event banner

Padé Аппроксимант входного сигнала временной задержки

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

В этом примере символьные математические Toolbox™ используются для решения передаточной функции системы первого порядка и поиска ответа системы на ввод шага мертвого времени с помощью аппроксиманта Паде. В этом примере выполняются символичные вычисления для получения аналитических результатов.

Введение

Аппроксиматор Паде порядка [m, n] аппроксимирует функцию 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) и используйте подстрочки для замены 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) с фиктивной переменной, решить для фиктивной переменной с помощью решения и назначить решение Hsol(s).

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

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

Поиск ответа системы на ввод шага с задержкой по времени

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

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

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

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

y = Hsol(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);

Найти ответ системы с помощью аппроксимантов Padé

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

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

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

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

yPade22 = Hsol(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.

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');

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

Увеличение точности аппроксиманта Padé с помощью OrderMode

[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 = Hsol(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 = 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 Padé approximant [2 2]')

Figure contains an axes. The axes with title Padé approximant for dead-time step input contains 3 objects of type functionline. These objects represent Response to dead-time step input, Padé approximant [2 2], Relative Padé 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 = Hsol(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 численно с использованием vpa. Постройте график ответа, рассчитанного по аппроксиманту Паде yPade45.

yPade45 = vpa(ilaplace(yPade45));
fplot(yPade45, [0 20], 'DisplayName', 'Padé approximant [4 5]')

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

Заключения

Были показаны следующие моменты:

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

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

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