В этом примере показано, как использовать аппроксимирующую функцию Padé в теории системы управления смоделировать задержки ответа системы первого порядка. Задержки возникают в системах, таких как химические и транспортные процессы, где существует задержка между входом и откликом системы. Когда эти входные параметры моделируются, они называются входными параметрами потери времени.
Этот пример использует Symbolic Math Toolbox™, чтобы решить для передаточной функции системы первого порядка и найти отклик системы к входному использованию шага потери времени аппроксимирующей функцией Padé. Этот пример выполняет вычисления символически, чтобы получить аналитические результаты.
Аппроксимирующая функция Padé порядка [m, n]
аппроксимирует функциональный f(x)
вокруг как
Аппроксимирующая функция Padé является рациональной функцией, сформированной отношением двух степенных рядов. Поскольку это - рациональная функция, это более точно, чем Ряд Тейлора в аппроксимации функций с полюсами. Аппроксимирующая функция Padé представлена функцией Symbolic Math Toolbox™ pade
.
Когда полюс или нуль существуют в точке расширения , точность уменьшений аппроксимирующей функции Padé. Чтобы увеличить точность, используйте альтернативную форму аппроксимирующей функции Padé, которая является
pade
функция возвращает альтернативную форму аппроксимирующей функции Padé, когда вы устанавливаете OrderMode
входной параметр к Relative
.
Поведение системы первого порядка описано этим дифференциальным уравнением
Введите дифференциальное уравнение в 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);
Найдите аппроксимирующую функцию Padé порядка [2 2]
из входа шага с помощью входного параметра Порядка для pade
.
stepPade22 = pade(step,'Order',[2 2])
stepPade22 =
Найдите ответ на вход путем умножения передаточной функции и аппроксимирующей функции Padé входа.
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
и ответ, вычисленный от аппроксимирующей функции Padé 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');
[2 2]
Аппроксимирующая функция Padé не представляет ответ хорошо, потому что полюс существует в точке расширения 0
. Увеличить точность pade
когда будет полюс или нуль в точке расширения, установите OrderMode
входной параметр Родственнику и повторению шаги. Для получения дополнительной информации смотрите 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]')
Можно увеличить точность аппроксимирующей функции Padé путем увеличения ее порядка. Увеличьте порядок до [4 5]
и повторите шаги. [n-1 n]
Аппроксимирующая функция Padé лучше в аппроксимации ответа в t = 0
чем [n n]
Аппроксимирующая функция Padé.
stepPade45 = pade(step,'Order',[4 5])
stepPade45 =
yPade45 = Hsol(s)*stepPade45
yPade45 =
yPade45 = subs(yPade45,[a tau],[1 3])
yPade45 =
Найдите обратное Преобразование Лапласа yPade45
использование ilaplace
. Аппроксимированный yPade45
численно использующий vpa
. Постройте ответ, вычисленный от аппроксимирующей функции Padé yPade45
.
yPade45 = vpa(ilaplace(yPade45)); fplot(yPade45, [0 20], 'DisplayName', 'Padé approximant [4 5]')
Следующие моменты показали:
Аппроксимирующие функции Padé могут смоделировать входные параметры шага потери времени.
Точность аппроксимирующей функции Padé увеличивается с увеличением порядка аппроксимирующей функции.
Когда полюс или нуль существуют в точке расширения, аппроксимирующая функция Padé неточна о точке расширения. Чтобы увеличить точность аппроксимирующей функции, установите OrderMode
опция к Relative
. Можно также использовать, увеличивают порядок знаменателя относительно числителя.