我有以下公式的机械系统:解微分方程单时间循环利用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