我有以下公式的機械系統:解微分方程單時間循環利用MATLAB
xdot = Ax+ Bu
我要解決的一個循環這個等式,因爲在我的每一步需要更新û但求解器如ode45
或lsim
解決時間間隔的微分方程。
for i = 1:10001
if x(i,:)>= Sin1 & x(i,:)<=Sout2
U(i,:) = Ueq - (K*(S/Alpha))
else
U(i,:) = Ueq - (K*S)
end
% [y(i,:),t,x(i+1,:)]=lsim(sys,U(i,:),(time=i/1000),x(i,:));
or %[t,x] = ode45(@(t,x)furuta(t,x,A,B,U),(time=i/1000),x)
end
難道我有另一種方法來解決這個方程在循環中的一次(不是單一的時間步)。
我不明白你的解釋。我想你應該更清楚地解釋什麼是問題。此外,嘗試把你的完整程序(或至少一個工作程序) – Daniel 2015-02-06 18:01:39
我不想解決時間間隔方程。我想分別爲0,0.001,0,002解決它。因爲在每一步我需要更新U和X. 如果我使用ode45,它將解決我的時間間隔公式,並且我的代碼無法在每一步更新U或x。 – Cena 2015-02-06 18:19:54
我想我有一個解決方案,但我需要一些澄清。您正在執行矢量比較'x(i,:)> = Sin1';你是否試圖以這種方式逐行調整「U」?您保存了以前的所有'U'向量;這個存儲是否需要? – TroyHaskin 2015-02-06 19:15:39