如何使用ode45 [MATLAB]保存输出变量?

问题描述 投票:1回答:1

我有一个二阶微分方程

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。

matlab simulation ode differential-equations
1个回答
1
投票

仅评估轨迹点上的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)中。

© www.soinside.com 2019 - 2024. All rights reserved.