2015-11-13 287 views
3

美好的一天。我感兴趣的解决形式的问题:Matlab - 矩阵微分方程[更新矩阵值? ]

x_dot = A + F,

用Matlab。数值解算器(ode23/ode45)的用法看起来很简单,但在我的情况下,矩阵A和矢量F是状态相关的。因此,我需要在每个迭代步骤后使用新派生的状态来更新它们。

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

在此先感谢,任何洞察赞赏。

+0

你能告诉我们什么更新A和F是?如果它们是线性的,你应该能够将它重新排列成一个更大的矩阵微分方程。 –

+0

换句话说,作为x和t的函数,A_dot和F_dot是什么? –

+0

这是可能的。 'ode45'以'x'(t)= f(t,x)'的形式求解非刚性微分方程,你的问题符合描述。在命令窗口输入'doc ode45'获取详细信息。 –

回答

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

感谢您花时间回答。我正在处理的问题是非线性的,它在功能方面是一个多层次的结构,但会尝试按照您提出的方式工作。 –

+0

@ParaskevasDimitris我不确定什么多层次的手段(你是在谈论调用函数调用其他函数的函数?),但所有的元素都在那里:系统是非线性的'x'方面,并且是非 - 同质的,ODE的唯一要求是明确的(即用x'来解决)。你构造'A'和'F'的方式是语法问题。但是,只要你也提供了详细的信息,这个例子就可以变得更具体。你决定。 –

+0

是的,实际上是这样。感谢您的时间/见解,非常感谢。 –