我有一个二阶微分方程
function Xdot =second_order(t,X)
y=X(1);
y_d=X(2);
Xdot=zeros(2,1);
Xdot(1)=y_d;
Xdot(2)= -5*y_d-7;
y_dd=Xdot(2);
end
使用MATLAB ode45命令,我可以对其进行仿真[t,X]=ode45(@(t,X)second_order(t,X),tspan,X0);
通过这种方式,我能够捕获向量中的两个状态变量y和y_d作为时间的函数。
我想捕获向量中的y_dd作为时间的函数,但是我无法保存它。如何将其视为输出变量?我已经尝试对功能文件function [Xdot,y_dd] =second_order(t,X)
进行以下更改,但我不知道如何使用ode45命令,因此我也可以在执行过程中保存y_dd。
仅评估轨迹点上的second_order
函数。结果的第二部分是所需的导数。
您还具有评估功能deval
,可以访问溶液的“密集输出”插值以及这些点的斜率,请参阅https://de.mathworks.com/help/matlab/ref/deval.html#bu7i1mf
sol=ode45(@second_order,[tspan(1) tspan(end)] ,X0);
[X,Xp] = deval(sol,tspan)
[您应该发现X(:,2)
和Xp(:,1)
中的一阶导数是(几乎)相同,然后第二个导数在Xp(:,2)
中。