Matlab - 矩阵微分方程 [更新矩阵值? ]

Matlab - Matrix Differential Equations [ Update matrix values? ]

美好的一天。我有兴趣解决以下形式的问题:

x_dot = Ax + F,

使用 Matlab。使用数值求解器 (ode23/ode45) 似乎很简单,但在我的例子中,矩阵 A 和向量 F 是状态相关的。因此,我需要在每个迭代步骤后使用新派生的状态更新它们。

真的可以使用 ode23/ode45 来完成吗?我需要走另一条路吗?

提前致谢,任何见解都值得赞赏。

您的问题非常符合ode45的描述。例如,采用以下无意义的方程式,对系统进行数值求解 t = [0,1], x(0) = (1,1):

    A = @(t,x) [       x(2),    exp(-t)  ; ...
                  exp(-2*t),       x(1)  ];

    F = @(t,x) [   -0.1*x(2)  ; ...
                 sin(2*pi*t)  ];

    [t_out, x_out] = ode45(@(t,x) A(t,x)*x + F(t,x), 0:0.01:1, [1;1]);

    figure();
    plot(t_out,x_out(:,1), '-b');
    hold on;
    plot(t_out,x_out(:,2), '-r');