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

时间:2015-11-13 12:00:39

标签: matlab matrix differential-equations

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

x_dot = Ax + F,

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

可以使用ode23 / ode45实际完成吗?我需要走另一条道路吗?

提前致谢,任何见解都表示赞赏。

1 个答案:

答案 0 :(得分:0)

您的问题非常符合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');