Аппроксимирующая функция 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')
[2 2]
Аппроксимирующая функция Padé не представляет ответ хорошо, потому что полюс существует в точке расширения 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]
и повторите шаги. [n-1 n]
Аппроксимирующая функция Padé лучше в аппроксимации ответа в t = 0
чем [n n]
Аппроксимирующая функция Padé.
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
. Можно также использовать, увеличивают порядок знаменателя относительно числителя.