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