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

Этот пример показывает, как использовать аппроксимирующую функцию 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 = Лаплас(y(t),t,s)-τy(0)-sЛаплас(y(t),t,s)=aЛаплас(x(t),t,s)

Примите, что ответом системы в t = 0 является 0. Используйте subs, чтобы заменить y(0) = 0.

F = subs(F,y(0),0)
F = Лаплас(y(t),t,s)+sτЛаплас(y(t),t,s)=aЛаплас(x(t),t,s)

Чтобы собрать распространенные слова, используйте simplify.

F = simplify(F)
F = sτ+1Лаплас(y(t),t,s)=aЛаплас(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)/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=a

Решите уравнение для H(s). Замените H(s) с фиктивной переменной, решите для фиктивного переменного использования, решают и присваивают решение Hsol(s).

F = subs(F,H(s),tmp);
Hsol(s) = solve(F,tmp)
Hsol(s) = 

asτ+1

Найдите ответ системы к задержанному временем входу шага

Вход к системе первого порядка является задержанным временем входом шага. Чтобы представлять вход шага, используйте heaviside. Задержите вход тремя единицами измерения времени. Найдите Преобразование Лапласа с помощью laplace.

step = heaviside(t - 3);
step = laplace(step)
step = 

e-3ss

Найдите ответ системы, которая является продуктом передаточной функции и входа.

y = Hsol(s)*step
y = 

ae-3sssτ+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

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

yPade22 = Hsol(s)*stepPade22
yPade22 = 

a3s2-4s+22ssτ+1s+1

Найдите обратное Преобразование Лапласа yPade22 с помощью ilaplace.

yPade22 = ilaplace(yPade22,s)
yPade22 = 

a+9ae-s2τ-2-ae-sτ2τ2+4τ+3τ2τ-2

Чтобы построить ответ, установите параметры a и tau к их значениям 1 и 3, соответственно.

yPade22 = subs(yPade22,[a tau],[1 3])
yPade22 = 

9e-s4-11e-s34+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

Аппроксимирующая функция Padé [2 2] не представляет ответ хорошо, потому что полюс существует в точке расширения 0. Чтобы увеличить точность pade, когда существует полюс или нуль в точке расширения, устанавливает входной параметр OrderMode на Родственника и повторяют шаги. Для получения дополнительной информации смотрите pade.

stepPade22Rel = pade(step,'Order',[2 2],'OrderMode','Relative')
stepPade22Rel = 

3s2-6s+4s3s2+6s+4

yPade22Rel = Hsol(s)*stepPade22Rel
yPade22Rel = 

a3s2-6s+4ssτ+13s2+6s+4

yPade22Rel = ilaplace(yPade22Rel);
yPade22Rel = subs(yPade22Rel,[a tau],[1 3])
yPade22Rel = 

12e-tпотому что(3t3)+23sin(3t3)37-19e-t37+1

fplot(yPade22Rel, [0 20], 'DisplayName', 'Relative Padé approximant [2 2]')

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

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

stepPade45 = pade(step,'Order',[4 5])
stepPade45 = 

27s4-180s3+540s2-840s+560s27s4+180s3+540s2+840s+560

yPade45 = Hsol(s)*stepPade45
yPade45 = 

a27s4-180s3+540s2-840s+560ssτ+127s4+180s3+540s2+840s+560

yPade45 = subs(yPade45,[a tau],[1 3])
yPade45 = 

27s4-180s3+540s2-840s+560s3s+127s4+180s3+540s2+840s+560

yPade45 = vpa(ilaplace(yPade45));
display('yPade45 ='); pretty(yPade45);
yPade45 =
exp(-1.930807068546914778929595950184 t)

   cos(0.57815608595633583454598214328008

   t) 3.2418384981662546679005910164486

   - exp(-0.33333333333333333333333333333333 t)

   2.7182817182817182817182817182817

   - exp(-1.4025262647864185544037373831494 t)

   cos(1.7716120279045018112388813990878

   t) 1.5235567798845363861823092981669

   + exp(-1.930807068546914778929595950184 t)

   sin(0.57815608595633583454598214328008

   t) 11.595342871672681856604670597166

   - exp(-1.4025262647864185544037373831494 t)

   sin(1.7716120279045018112388813990878

   t) 1.7803798379230333426855987436911 + 1.0
fplot(yPade45, [0 20], 'DisplayName', 'Padé approximant [4 5]')

Заключения

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

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

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

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