matlab ode45为什么显示错误

dxy=@(t,x)[-0.0106*x(1)+5400*(t>=0&t<1)+600*(t>=2&t<3)+13000*(t>=5&t<6)-0.0544*x(2)];... dxy=@(t,x)[-0.0106*x(1)+5400*(t>=0&t<1)+600*(t>=2&t<3)+13000*(t>=5&t<6)-0.0544*x(2)];
[t,xy]=ode45(dxy,[0:36],[0,21500]);
subplot(211),polt(t,xy(:,1),'r*',t,xy(:,2),'gD')
xlabel('时间t'),ylabel('人数'),legend('美军','日军')
subplot(212),plot(xy(:,1),xy(:,2))
xlabel('美军人数x'),ylabel('日军人数y')
错误使用 odearguments (line 95)
@(T,X)[-0.0106*X(1)+5400*(T>=0&T<1)+600*(T>=2&T<3)+13000*(T>=5&T<6)-0.0544*X(2)] 返回的向量的长度为 1,但初始条件向量的长度为
2。@(T,X)[-0.0106*X(1)+5400*(T>=0&T<1)+600*(T>=2&T<3)+13000*(T>=5&T<6)-0.0544*X(2)] 返回的向量和初始条件向量的元素数目必须相同。
展开
 我来答
lhmhz
高粉答主

2018-09-16 · 专注matlab等在各领域中的应用。
lhmhz
采纳数:7264 获赞数:17014

向TA提问 私信TA
展开全部

错误的原因,有

1、自定义函数的格式不对。应该这样来写

dxy=@(t,x)[(-0.0106*x(1)+5400).*(t>=0&t<1)+600.*(t>=2&t<3)+13000.*(t>=5&t<6);-0.0544*x(2)];

2、polt(t,xy(:,1),'r*',t,xy(:,2),'gD')这个命令,书写格式也存在问题。应该这样来写

plot(t,xy(:,1),'r*',t,xy(:,2),'g-')

更改上述错误后,运行可得到如下图形。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式