В этом примере показано, как использовать аппроксиматор Паде в теории системы управления для моделирования временных задержек в реакции системы первого порядка. Временные задержки возникают в таких системах, как химические и транспортные процессы, где имеется задержка между вводом и реакцией системы. Когда эти входы моделируются, они называются входами мертвого времени.
В этом примере символьные математические Toolbox™ используются для решения передаточной функции системы первого порядка и поиска ответа системы на ввод шага мертвого времени с помощью аппроксиманта Паде. В этом примере выполняются символичные вычисления для получения аналитических результатов.
Аппроксиматор Паде порядка [m, n] аппроксимирует функцию f(x) около x0 как
+⋯+bn (x-x0) n.
Аппроксимант Паде - рациональная функция, образованная отношением двух степенных рядов. Поскольку это рациональная функция, она более точна, чем ряд Тейлора в аппроксимации функций полюсами. Аппроксимант Паде представлен функцией символьной математической Toolbox™ pade.
Когда полюс или ноль существует в точке расширения x0, точность аппроксиманта Паде уменьшается. Для повышения точности используйте альтернативную форму аппроксиматора Паде, которая
+⋯+bn (x-x0) n.
pade функция возвращает альтернативную форму аппроксиманта Padé при установке OrderMode входной аргумент для Relative.
Поведение системы первого порядка описывается этим дифференциальным уравнением
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 =
Предположим, что ответ системы на 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) и используйте подстрочки для замены yS(s)/xS(s) с H(s).
F = F/xS(s); F = subs(F,yS(s)/xS(s),H(s))
F =
Решить уравнение для H(s). Заменить на H(s) с фиктивной переменной, решить для фиктивной переменной с помощью решения и назначить решение Hsol(s).
F = subs(F,H(s),tmp); Hsol(s) = solve(F,tmp)
Hsol(s) =
Вход в систему первого порядка является вводом шага с временной задержкой. Чтобы представить ввод шага, используйте heaviside. Задержка ввода на три единицы времени. Поиск преобразования Лапласа с помощью 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);
Найти аппроксиматор Паде порядка [2 2] ввода шага с использованием аргумента Order input для pade.
stepPade22 = pade(step,'Order',[2 2])stepPade22 =
Найдите ответ на вход путем умножения передаточной функции и аппроксиманта Паде входа.
yPade22 = Hsol(s)*stepPade22
yPade22 =
Найти обратное преобразование Лапласа yPade22 использование ilaplace.
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');
![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].](../examples/symbolic/win64/PadeApproximantExample_01.png)
[2 2] Аппроксимант Паде не хорошо представляет ответ, потому что полюс существует в точке расширения 0. Для повышения точности 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]')
![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].](../examples/symbolic/win64/PadeApproximantExample_02.png)
Можно увеличить точность аппроксиманта Паде, увеличив его порядок. Увеличить заказ до [4 5] и повторите шаги. [n-1 n] Аппроксиматор Паде лучше аппроксимирует ответ при t = 0 чем [n n] Приближение Паде.
stepPade45 = pade(step,'Order',[4 5])stepPade45 =
yPade45 = Hsol(s)*stepPade45
yPade45 =
yPade45 = subs(yPade45,[a tau],[1 3])
yPade45 =
Найти обратное преобразование Лапласа 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].](../examples/symbolic/win64/PadeApproximantExample_03.png)
Были показаны следующие моменты:
Аппроксиматоры Padé могут моделировать входы шагов с мертвым временем.
Точность аппроксиманта Паде увеличивается с увеличением порядка аппроксиманта.
Когда в точке расширения существует полюс или ноль, аппроксимант Паде неточен относительно точки расширения. Для повышения точности аппроксиманта установите OrderMode опция для Relative. Можно также использовать увеличение порядка знаменателя относительно числителя.