www.gusucode.com > symbolic 源码程序 matlab案例代码 > symbolic/PadeApproximationOfDeadTimeStepInputExample.m

    %% Find Response to Dead-Time Step Input using Pade Approximant
%% 1
syms tau a x(t) y(t) xS(s) yS(s) H(s) tmp
F = tau*diff(y)+y == a*x;
%% 2
F = laplace(F,t,s)
%% 3
F = subs(F,y(0),0)
%% 4
F = simplify(F)
%% 5
F = subs(F,[laplace(x(t),t,s) laplace(y(t),t,s)],[xS(s) yS(s)])
%% 6
F = F/xS(s);
F = subs(F,yS(s)/xS(s),H(s))
%% 7
F = subs(F,H(s),tmp);
H(s) = solve(F,tmp)
%% 8
step = heaviside(t - 3);
step = laplace(step)
%% 9
y = H(s)*step
%% 10
y = subs(y,[a tau],[1 3]);
y = ilaplace(y,s);
%% 11
stepPade22 = pade(step,'Order',[2 2])
%% 12
yPade22 = H(s)*stepPade22
%% 13
yPade22 = ilaplace(yPade22,s)
%% 14
yPade22 = subs(yPade22,[a tau],[1 3])
%% 15
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')
%% 16
stepPade22Rel = pade(step,'Order',[2 2],'OrderMode','Relative')
yPade22Rel = H(s)*stepPade22Rel
yPade22Rel = ilaplace(yPade22Rel)
yPade22Rel = subs(yPade22Rel,[a tau],[1 3])
fplot(yPade22Rel,[0 20])
title('Pade Approximant for dead-time step input')
legend('Response to dead-time step input',...
       'Pade approximant [2 2]',...
       'Relative Pade approximant [2 2]', 'Location', 'Best')
%% 17
stepPade45 = pade(step,'Order',[4 5])
yPade45 = H(s)*stepPade45
yPade45 = subs(yPade45,[a tau],[1 3])
yPade45 = ilaplace(yPade45)
yPade45 = vpa(yPade45)
fplot(yPade45,[0 20])
title('Pade Approximant for dead-time step input')
legend('Response to dead-time step input',...
       'Pade approximant [2 2]',...
       'Relative Pade approximant [2 2]',...
       'Pade approximant [4 5]', 'Location', 'Best')