美好的一天。我感興趣的解決形式的問題:Matlab - 矩陣微分方程[更新矩陣值? ]
x_dot = A + F,
用Matlab。數值解算器(ode23/ode45)的用法看起來很簡單,但在我的情況下,矩陣A和矢量F是狀態相關的。因此,我需要在每個迭代步驟後使用新派生的狀態來更新它們。
實際上可以使用ode23/ode45來完成嗎?我需要遵循另一條路徑嗎?
在此先感謝,任何洞察讚賞。
美好的一天。我感興趣的解決形式的問題:Matlab - 矩陣微分方程[更新矩陣值? ]
x_dot = A + 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');
感謝您花時間回答。我正在處理的問題是非線性的,它在功能方面是一個多層次的結構,但會嘗試按照您提出的方式工作。 –
@ParaskevasDimitris我不確定什麼多層次的手段(你是在談論調用函數調用其他函數的函數?),但所有的元素都在那裏:系統是非線性的'x'方面,並且是非 - 同質的,ODE的唯一要求是明確的(即用x'來解決)。你構造'A'和'F'的方式是語法問題。但是,只要你也提供了詳細的信息,這個例子就可以變得更具體。你決定。 –
是的,實際上是這樣。感謝您的時間/見解,非常感謝。 –
你能告訴我們什麼更新A和F是?如果它們是線性的,你應該能夠將它重新排列成一個更大的矩陣微分方程。 –
換句話說,作爲x和t的函數,A_dot和F_dot是什麼? –
這是可能的。 'ode45'以'x'(t)= f(t,x)'的形式求解非剛性微分方程,你的問題符合描述。在命令窗口輸入'doc ode45'獲取詳細信息。 –