1

我想dvdt = -(A - B*inv(R)*B'*S)'*v - Q*rd使用 ode45 以矩阵形式评估微分方程,其中、A和是时变矩阵,是一个常数行向量,是要积分的变量。该方程在函数文件中定义。另一方面,3D 矩阵是在调用文件中独立于时间获得的。问题是,在我的方程函数中,我需要为 ode45 中的每个时间步使用每个矩阵 S(例如,时间步 1、时间步 2、时间步 3 等)。我想知道您是否可以建议我如何执行此过程。函数文件为:BQRrdvS = S(:,:,250)S(:,:,1)S(:,:,2)S(:,:,3)

function dvdt = myfun(t,v,S)
A = A(t); B = B(t); R = R(t); Q = Q(t);
dvdt = -(A - B*inv(R)*B'*S)'*v - Q*rd;
end

调用文件很简单:

S = S(:,:,250); % Defined previously in this file
[t,v] = ode45(@(f,v) myfun(t,v,S),f,v0);

提前致谢。

4

0 回答 0