我正在使用一个简单的 if 循环来更改我的 ode 脚本中的参数值。这是我编写的一个示例脚本,它表现出同样的问题。所以首先是有效的版本:
function aah = al(t,x)
if (t>10000 && t<10300)
ab = [0; 150];
else
ab = [150; 0];
end
aah = [ab];
这可以使用
t = [0:1:10400];
x0 = [0,0];
[t,x] = ode23tb(@al, t,x0);
并可视化
plot(t,x(:,1))
plot(t,x(:,2))
好的,这是好的版本。现在,如果您所做的只是将 t 更改为
t = [0:1:12000];
整个事情都爆炸了。您可能认为这只是 matlab 对图形进行平均,但这不是因为如果您查看
x(10300,2)
两种情况下的答案应该是相同的,因为代码没有改变。但是第二个版本输出 0,这是错误的!
到底是怎么回事?有人有想法吗?
非常感谢您的帮助