使用 Matlab 求解矩阵形式的 DDE
Solving DDE in Matrix form using Matlab
我需要求解以下延迟方程:
Xdot = A*x(t) + B*U(t) + E(t)
U(t) = K*S*x(t-0.02) or U(t) = K*S*x(t-0.02)/alpha
其中:
A: 6*6 matrix
K and alpha are scalar
S: 1*6 vector
E and U and x and B: 6*1 vectors.
我正在使用以下代码求解方程:
for i = 2:2688
if %(first condition ok)
sol = dde23(@Insectorforce,0.02,history(:,i-1),[time(i-1) time(i)]);
else
sol = dde23(@Outsectorforce,0.02,history(:,i-1),[time(i-1) time(i)]);
end
x(:,i)=sol.x
history(i+2) = x(:,i);
end
具有以下功能文件:
function xdot = Insectorforce(t,y,z,A,B,S,E,K,Beta,P)
xdot = (A*y) - ((B*K*S/alpha)*(z)) + E;
end
和
function xdot = Outsectorforce(t,y,z,A,B,S,E,K)
xdot = (A*y) - ((B*K*S*z) + E;
end
但是,我收到以下错误:
Error using Outsectorforce (line 2)
Not enough input arguments.
Error in dde23 (line 217)
f0 = feval(ddefun,t0,y0,Z0,varargin{:});
Error in filename (line 101)
sol = dde23(@Outsectorforce,0.02,history(:,i-1),[time(i-1) time(i)]);
我的代码有什么问题?我对尺寸没有问题,我用 ode23
毫不拖延地解决了这个方程。但是,我无法使用 dde23
或 ddesd
来解决它。
dde23
需要带有三个参数的函数句柄。尝试
sol = dde23(@(t,y,z)(Insectorforce(t,y,z,A,B,S,E,K,Beta,P)),0.02,history(:,i-1),[time(i-1) time(i)]);
和
sol = dde23((@(t,y,z)(Outsectorforce(t,y,z,A,B,S,E,K)),0.02,history(:,i-1),[time(i-1) time(i)]);
分别
我需要求解以下延迟方程:
Xdot = A*x(t) + B*U(t) + E(t)
U(t) = K*S*x(t-0.02) or U(t) = K*S*x(t-0.02)/alpha
其中:
A: 6*6 matrix
K and alpha are scalar
S: 1*6 vector
E and U and x and B: 6*1 vectors.
我正在使用以下代码求解方程:
for i = 2:2688
if %(first condition ok)
sol = dde23(@Insectorforce,0.02,history(:,i-1),[time(i-1) time(i)]);
else
sol = dde23(@Outsectorforce,0.02,history(:,i-1),[time(i-1) time(i)]);
end
x(:,i)=sol.x
history(i+2) = x(:,i);
end
具有以下功能文件:
function xdot = Insectorforce(t,y,z,A,B,S,E,K,Beta,P)
xdot = (A*y) - ((B*K*S/alpha)*(z)) + E;
end
和
function xdot = Outsectorforce(t,y,z,A,B,S,E,K)
xdot = (A*y) - ((B*K*S*z) + E;
end
但是,我收到以下错误:
Error using Outsectorforce (line 2)
Not enough input arguments.
Error in dde23 (line 217)
f0 = feval(ddefun,t0,y0,Z0,varargin{:});
Error in filename (line 101)
sol = dde23(@Outsectorforce,0.02,history(:,i-1),[time(i-1) time(i)]);
我的代码有什么问题?我对尺寸没有问题,我用 ode23
毫不拖延地解决了这个方程。但是,我无法使用 dde23
或 ddesd
来解决它。
dde23
需要带有三个参数的函数句柄。尝试
sol = dde23(@(t,y,z)(Insectorforce(t,y,z,A,B,S,E,K,Beta,P)),0.02,history(:,i-1),[time(i-1) time(i)]);
和
sol = dde23((@(t,y,z)(Outsectorforce(t,y,z,A,B,S,E,K)),0.02,history(:,i-1),[time(i-1) time(i)]);
分别