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

3

你好。我有一个与以下形式相关的问题需要解决:

x_dot = Ax + F,

我想使用Matlab来解决这个问题。使用数值求解器(ode23/ode45)似乎很简单,但在我的情况下,矩阵A和向量F是状态相关的。因此,我需要在每次迭代步骤之后使用新推导出的状态更新它们。

实际上可以使用ode23/ode45完成吗?我需要遵循另一条路径吗?

谢谢您提前的回答,非常感谢任何见解。


你能告诉我们A和F的更新内容吗?如果它们是线性的,你应该能够将其“重新排列”成一个更大的矩阵微分方程。 - Sanjay Manohar
换句话说,A_dot和F_dot是关于x和t的函数吗? - Sanjay Manohar
可以的。ode45 可以解决形式为 x'(t) = f(t,x) 的非刚性微分方程,而您的问题符合这个描述。在命令窗口中键入 doc ode45 以获取详细信息。 - user2271770
Sanjay Manohar,这个问题非常非线性。该方程式是在对结构进行有限元分析后推导出来的,因此无法通过解析方法描述A和F的导数。感谢您抽出时间来审阅/回答此问题。 - Paraskevas Dimitris
1个回答

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');

感谢您抽出时间回答。我正在处理的问题非常非线性,并且在函数方面具有多层结构,但我会尝试按照您提出的方式进行工作。 - Paraskevas Dimitris
@ParaskevasDimitris 我不确定多级意味着什么(你是指调用其他函数的函数吗?),但所有元素都在那里:系统在 x 方面是非线性的,且是非齐次的,ODE 的唯一要求是显式的(即以 x' 为解)。构建 AF 的方式是语法问题。但是,只要您也提供有关此的详细信息,示例就可以变得更具体。由您决定。 - user2271770
是的,事实就是这样。感谢您的时间和见解,非常感激。 - Paraskevas Dimitris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接