Аппроксимирующая функция Padé

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

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

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

Когда полюс или нуль существуют в точке расширения x = x 0, точность уменьшений аппроксимирующей функции 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.

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

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

τ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)-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)=a laplace(x(t),t,s)

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

F = simplify(F)
F = s τ+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=a xS(s)

Преобразованием Лапласа передаточной функции является 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) s τ+1=a

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

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

as τ+1

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

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

e-3 ss

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

y = H(s)*step
y = 

a e-3 ss s τ+1

Чтобы позволить строить ответа, установите параметры 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 = 

3 s2-4 s+22 s s+1

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

yPade22 = H(s)*stepPade22
yPade22 = 

a 3 s2-4 s+22 s s τ+1 s+1

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

yPade22 = ilaplace(yPade22,s)
yPade22 = 

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

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

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

9 e-s4-11 e-s34+1

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

Figure contains an axes object. The axes object with title Pade Approximant for dead-time step input contains 2 objects of type functionline. These objects represent Response to dead-time step input, Pade approximant [2 2].

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

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

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

yPade22Rel = H(s)*stepPade22Rel
yPade22Rel = 

a 3 s2-6 s+4s s τ+1 3 s2+6 s+4

yPade22Rel = ilaplace(yPade22Rel)
yPade22Rel = 

a-a e-tτ 4 τ2+6 τ+3σ1+12 a τ e-t cos(3 t3)-3 sin(3 t3) 36 a-72 a τ36 a τ+1σ1where  σ1=4 τ2-6 τ+3

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

12 e-t cos(3 t3)+2 3 sin(3 t3)37-19 e-t37+1

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

Figure contains an axes object. The axes object with title Pade Approximant for dead-time step input contains 3 objects of type functionline. These objects represent Response to dead-time step input, Pade approximant [2 2], Relative Pade approximant [2 2].

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

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

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

yPade45 = H(s)*stepPade45
yPade45 = 

a 27 s4-180 s3+540 s2-840 s+560s s τ+1 27 s4+180 s3+540 s2+840 s+560

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

27 s4-180 s3+540 s2-840 s+560s 3 s+1 27 s4+180 s3+540 s2+840 s+560

yPade45 = ilaplace(yPade45)
yPade45 = 

101520 ∑k=14eσ2 t σ212 90 σ2+45 σ22+9 σ23+70143-2721 e-t31001+172560 ∑k=14et σ2σ1143+294120 ∑k=14et σ2 σ22σ11001+46440 ∑k=14et σ2 σ23σ11001+1where  σ1=12 9 σ23+45 σ22+90 σ2+70  σ2=root(z4+20 z33+20 z2+280 z9+56027,z,k)

yPade45 = vpa(yPade45)
yPade45 = 3.2418384981662546679005910164486 e-1.930807068546914778929595950184 t cos(0.57815608595633583454598214328008 t)-2.7182817182817182817182817182817 e-0.33333333333333333333333333333333 t-1.5235567798845363861823092981669 e-1.4025262647864185544037373831494 t cos(1.7716120279045018112388813990878 t)+11.595342871672681856604670597166 e-1.930807068546914778929595950184 t sin(0.57815608595633583454598214328008 t)-1.7803798379230333426855987436911 e-1.4025262647864185544037373831494 t sin(1.7716120279045018112388813990878 t)+1.0
fplot(yPade45,[0 20],'DisplayName','Pade approximant [4 5]')

Figure contains an axes object. The axes object with title Pade Approximant for dead-time step input contains 4 objects of type functionline. These objects represent Response to dead-time step input, Pade approximant [2 2], Relative Pade approximant [2 2], Pade approximant [4 5].

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

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

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

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