编辑:我们有一个耦合系统,每个系统有 10 个颂歌。耦合出现在最后一个等式中。我考虑过使用 10 x 2 的矩阵作为初始条件。
我也在这里关注了一个具有相同标题的类似问题,但我仍然得到相同的错误('输入参数太多。')
time = [0 5];
x1_0 = [0 0 0 0 0 0 0 0 0 0];
x2_0 = [0 0 0 0 0 0 0 0 0 0];
initial = [x1_0;x2_0];
x = NaN(length(initial),2*length(time));
[t,x] = ode45(@ode,time,initial);
function [dxdt] = ode(x)
N = 2;
dxdt = NaN(10,2);
A = 3.25e-3;
B = 22e-3;
a = 100;
b = 50;
C = 135;
C1 = C;
C2 = 0.8*C;
C3 = 0.25*C;
C4 = 0.25*C;
C12 = C;
for i = 1:N
dxdt(1,i) = x(6,i);
dxdt(6,i) = A*a*C1*sigm((x(3,i)-x(4,i)+x(5,i))) - 2*a*x(6,i) -
x(1,i)*a^2;
dxdt(2,i) = x(7,i);
dxdt(7,i) = A*a*C2*sigm((x(3,i)-x(4,i)+x(5,i))) - 2*a*x(7,i) -
x(2,i)*a^2;
dxdt(3,i) = x(8,i);
dxdt(8,i) = A*a*C3*sigm((x(1,i))) - 2*a*x(8,i) - x(3,i)*a^2;
dxdt(4,i) = x(9,i);
dxdt(9,i) = B*b*C4*sigm(x(2,i)) - 2*b*x(9,i) - x(4,i)*b^2;
dxdt(5,i) = x(10,i);
if i == 1
j = 2;
elseif i == 2
j = 1;
end
dxdt(10,i) = A*a*C12*sigm(x(3,j)-x(4,j)+x(5,j)) - x(10,i) - x(5,i);
end
end
function X = sigm(u)
u0 = 6e-3;
e0 = 2.5;
r = 0.56e3;
X = 2*e0/(1+exp(r*(u0-u)));
end
如果我的错误是使用矩阵初始条件而不是向量,使用 1 x 20 向量,并相应地调整 ode 形式是不切实际的,我认为 - 解决初始条件的另一种更有效的方法是什么 -我给出的输入是不必要的,为什么?- 是否有任何其他计算方式来表示耦合?