2015-11-13 327 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

是的,實際上是這樣。感謝您的時間/見解,非常感謝。 –