Аппроксимирующая функция Padé входа с временной задержкой

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

Этот пример использует Symbolic Math Toolbox™, чтобы решить для передаточной функции системы первого порядка и найти отклик системы к входному использованию шага потери времени аппроксимирующей функцией Padé. Этот пример выполняет вычисления символически, чтобы получить аналитические результаты.

Введение

Аппроксимирующая функция Padé порядка [m, n] аппроксимирует функциональный f(x) вокруг x=x0 как

a0+a1(x-x0)++am(x-x0)m1+b1(x-x0)++bn(x-x0)n.

Аппроксимирующая функция Padé является рациональной функцией, сформированной отношением двух степенных рядов. Поскольку это - рациональная функция, это более точно, чем Ряд Тейлора в аппроксимации функций с полюсами. Аппроксимирующая функция Padé представлена функцией Symbolic Math Toolbox™ pade.

Когда полюс или нуль существуют в точке расширения x=x0, точность уменьшений аппроксимирующей функции Padé. Чтобы увеличить точность, используйте альтернативную форму аппроксимирующей функции Padé, которая является

(x-x0)p(a0+a1(x-x0)++am(x-x0)m)1+b1(x-x0)++bn(x-x0)n.

pade функция возвращает альтернативную форму аппроксимирующей функции Padé, когда вы устанавливаете OrderMode входной параметр к Relative.

Найдите передаточную функцию системы первого порядка

Поведение системы первого порядка описано этим дифференциальным уравнением

τdy(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)Лаплас (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é

Найдите аппроксимирующую функцию Padé порядка [2 2] из входа шага с помощью входного параметра Порядка для pade.

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

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

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

yPade22 = Hsol(s)*stepPade22
yPade22 = 

a3s2-4s+22ssτ+1s+1(* (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τ-2+ (9*a*exp ((с))) / (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 ((с)))/4 - (11*exp ((-s/3)))/4 + 1

Постройте ответ системы 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');

Увеличьте Точность использования Аппроксимирующей функции Padé OrderMode

[2 2] Аппроксимирующая функция Padé не представляет ответ хорошо, потому что полюс существует в точке расширения 0. Увеличить точность pade когда будет полюс или нуль в точке расширения, установите OrderMode входной параметр Родственнику и повторению шаги. Для получения дополнительной информации смотрите 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(* (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 ((т)) * (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]')

Увеличьте точность аппроксимирующей функции Padé путем увеличения порядка

Можно увеличить точность аппроксимирующей функции Padé путем увеличения ее порядка. Увеличьте порядок до [4 5] и повторите шаги. [n-1 n] Аппроксимирующая функция Padé лучше в аппроксимации ответа в t = 0 чем [n n] Аппроксимирующая функция Padé.

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(* (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. Постройте ответ, вычисленный от аппроксимирующей функции Padé yPade45.

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

Заключения

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

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

  • Точность аппроксимирующей функции Padé увеличивается с увеличением порядка аппроксимирующей функции.

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

Для просмотра документации необходимо авторизоваться на сайте