我的解决方案基于Matlab - solving a third order differential equation提供的示例。
我的问题是我必须通过使用来解决三阶微分方程,y'' + 3y' + 2y' + y = 4u ode23求解器并绘制阶跃响应。 这是我到目前为止所拥有的。
function dy = diffuy( t, y )
%Split uy into variables in equation
%y'''+3y''+2y'+y=4u
%Have to take third order equation and convert to 1st order
%y0 = y
%y1 = y0'
%y2 = y1'
%y3 = y2'
%y0' = y1
%y1' = y2
%y2' = y3
%y3' = y''' = -3*y2-2*y1-y0+4*u
%Assume that y(0)= 0, y'(0)=0, y''(0)=0, no initial conditions
u = @(t) heaviside(t);
dy = zeros(4,1);
dy(1) = y(2);
dy(2) = y(3);
dy(3) = y(4);
dy(4) = -3*y(3)-2*y(2)-y(1)+4*u(t);
end
在我的主文件中,我有代码:
[T, Y]=ode23(@diffuy,[0 20],[0 0 0 0]);
figure(1)
plot(T,Y(:,1))
A=[0 1 0;0 0 1; -1 -2 -3]
B=[0;0;4]
C=[1 0 0]
D=[0]
sys4=ss(A,B,C,D)
figure(2)
step(sys4)
我遇到的问题是在MATLAB中使用状态空间表示命令产生的阶跃响应与ode23产生的阶跃响应不匹配,所以我假设我错误地解决了微分方程。任何提示或评论都会非常有用。
使用ode23的步骤响应: