为什么在 ODE 系统中给出八度语法错误
Why giving syntax error in octave with ODE system
我的 ODE 系统特别是 xdot(2) 似乎是一个 parse/syntax 错误。但是我想不通
我在 Whosebug 中检查过类似的问题,但我没有找到我的解决方案
function xdot = f3(x, t)
xdot =zeros(2, 1);
x=zeros(1, 2);
r_1=4;
R_1=1;
p_1=8;
l_1=0.2;
r_2=10;
p_2=10;
R_2=2;
l_2=50;
rM= 0.01;
d=2;
xdot(1)= ((r_1*p_1*x(3))/(1+p_1*x(3)))*x(1)-r_1*x(1)^2-(R-1*x(1))/(1+r_1*x(3)-x(1)*x(2)
xdot(2)= rM + ((r_2*p_2*x(3))/(1+p_2*x(3)))*x(2)-r_2*x(2)^2-(R_2*x(2))/(1+p_2*x(3))
xdot(3)= d - (l_1*r_1*x(1))/(1+p_1*x(2))-(l_2*r_2*x(2)/(1+r_2*x(3))
endfunction
x0 = [1; 0; -1];
t = linspace(0, 2, 201);
x = lsode (@f3, x0, t);
figure(1);
plot(t, x(:,1));
xlabel('t');
ylabel('X');
title('X - component');
figure(2);
plot(t, x(:,2));
xlabel('t');
ylabel('Y');
title('Y - component');
应该可以解决系统问题但是给我
f3
parse error near line 18 of file C:/Users/Admin/Desktop\f3.m
syntax error
>>> xdot(2)= rM + ((r_2*p_2*x(3))/(1+p_2*x(3)))*x(2)-r_2*x(2)^2-
(R_2*x(2))/(1+p_2*x(3))
^
似乎有几个问题。
您正在创建大小为 2 的 xdot 和 x 值,但 accessing/setting 在索引 3 处。
对于xdot(1)= ((r_1*p_1*x(3))/(1+p_1*x(3)))*x(1)-r_1*x(1)^2-(R-1*x(1))/(1+r_1*x(3)-x(1)*x(2)
a) 您缺少导致语法错误的 ')'。
b) R-1
是不正确的 - 你没有 'R' 所以它可能意味着 R_1
在 xdot(3)= d - (l_1*r_1*x(1))/(1+p_1*x(2))-(l_2*r_2*x(2)/(1+r_2*x(3))
中,您缺少一个 ')'
具有导数功能
function xdot = f3(x, t)
xdot = 0*x;
r_1=4;
R_1=1;
p_1=8;
l_1=0.2;
r_2=10;
p_2=10;
R_2=2;
l_2=50;
rM= 0.01;
d=2;
xdot(1)= ((r_1*p_1*x(3))/(1+p_1*x(3)))*x(1)-r_1*x(1)^2-(R_1*x(1))/(1+r_1*x(3)-x(1)*x(2));
xdot(2)= rM + ((r_2*p_2*x(3))/(1+p_2*x(3)))*x(2)-r_2*x(2)^2-(R_2*x(2))/(1+p_2*x(3));
xdot(3)= d - (l_1*r_1*x(1))/(1+p_1*x(2))-(l_2*r_2*x(2)/(1+r_2*x(3)));
end
纠正了@lostbard在评论中提到的和总结的所有错误,我得到了部分区间的解决方案。该解决方案在 t
的 X
组件中爆炸了大约 0.3295
,从结果图
中也可以看出
我的 ODE 系统特别是 xdot(2) 似乎是一个 parse/syntax 错误。但是我想不通
我在 Whosebug 中检查过类似的问题,但我没有找到我的解决方案
function xdot = f3(x, t)
xdot =zeros(2, 1);
x=zeros(1, 2);
r_1=4;
R_1=1;
p_1=8;
l_1=0.2;
r_2=10;
p_2=10;
R_2=2;
l_2=50;
rM= 0.01;
d=2;
xdot(1)= ((r_1*p_1*x(3))/(1+p_1*x(3)))*x(1)-r_1*x(1)^2-(R-1*x(1))/(1+r_1*x(3)-x(1)*x(2)
xdot(2)= rM + ((r_2*p_2*x(3))/(1+p_2*x(3)))*x(2)-r_2*x(2)^2-(R_2*x(2))/(1+p_2*x(3))
xdot(3)= d - (l_1*r_1*x(1))/(1+p_1*x(2))-(l_2*r_2*x(2)/(1+r_2*x(3))
endfunction
x0 = [1; 0; -1];
t = linspace(0, 2, 201);
x = lsode (@f3, x0, t);
figure(1);
plot(t, x(:,1));
xlabel('t');
ylabel('X');
title('X - component');
figure(2);
plot(t, x(:,2));
xlabel('t');
ylabel('Y');
title('Y - component');
应该可以解决系统问题但是给我
f3
parse error near line 18 of file C:/Users/Admin/Desktop\f3.m
syntax error
>>> xdot(2)= rM + ((r_2*p_2*x(3))/(1+p_2*x(3)))*x(2)-r_2*x(2)^2-
(R_2*x(2))/(1+p_2*x(3))
^
似乎有几个问题。
您正在创建大小为 2 的 xdot 和 x 值,但 accessing/setting 在索引 3 处。
对于
xdot(1)= ((r_1*p_1*x(3))/(1+p_1*x(3)))*x(1)-r_1*x(1)^2-(R-1*x(1))/(1+r_1*x(3)-x(1)*x(2)
a) 您缺少导致语法错误的 ')'。
b)
R-1
是不正确的 - 你没有 'R' 所以它可能意味着 R_1在
xdot(3)= d - (l_1*r_1*x(1))/(1+p_1*x(2))-(l_2*r_2*x(2)/(1+r_2*x(3))
中,您缺少一个 ')'
具有导数功能
function xdot = f3(x, t)
xdot = 0*x;
r_1=4;
R_1=1;
p_1=8;
l_1=0.2;
r_2=10;
p_2=10;
R_2=2;
l_2=50;
rM= 0.01;
d=2;
xdot(1)= ((r_1*p_1*x(3))/(1+p_1*x(3)))*x(1)-r_1*x(1)^2-(R_1*x(1))/(1+r_1*x(3)-x(1)*x(2));
xdot(2)= rM + ((r_2*p_2*x(3))/(1+p_2*x(3)))*x(2)-r_2*x(2)^2-(R_2*x(2))/(1+p_2*x(3));
xdot(3)= d - (l_1*r_1*x(1))/(1+p_1*x(2))-(l_2*r_2*x(2)/(1+r_2*x(3)));
end
纠正了@lostbard在评论中提到的和总结的所有错误,我得到了部分区间的解决方案。该解决方案在 t
的 X
组件中爆炸了大约 0.3295
,从结果图