关于matlab ode45的问题

dxy=@(t,x)[-0.0544*x(2)+54000*(t>=0&t<1)+6000*(t>=2&t<3)+13000*(t>=5&t<6)-0.0106*x(1)... dxy=@(t,x)[-0.0544*x(2)+54000*(t>=0&t<1)+6000*(t>=2&t<3)+13000*(t>=5&t<6)-0.0106*x(1)]
[t,xy]=ode45(dxy,[0,36],[0,21500])

dxy =

包含以下值的 function_handle:

@(t,x)[-0.0544*x(2)+54000*(t>=0&t<1)+6000*(t>=2&t<3)+13000*(t>=5&t<6)-0.0106*x(1)]

错误使用 odearguments (line 95)
@(T,X)[-0.0544*X(2)+54000*(T>=0&T<1)+6000*(T>=2&T<3)+13000*(T>=5&T<6)-0.0106*X(1)] 返回的向量的长度为 1,但初始条件向
量的长度为 2。@(T,X)[-0.0544*X(2)+54000*(T>=0&T<1)+6000*(T>=2&T<3)+13000*(T>=5&T<6)-0.0106*X(1)] 返回的向量和初始条件
向量的元素数目必须相同。

出错 ode45 (line 115)
odearguments(FcnHandlesUsed, solver_name, ode, tspan, y0, options, varargin);
有人能解释下为什么出错并修改一下代码吗
展开
 我来答
lhmhz
高粉答主

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

向TA提问 私信TA
展开全部

从错误的警告来分析,你的自定义微分方程函数定义不明确,缺一组方程式,即有两个变量x(1)、x(2),而方程只有一个。请把具体的微分方程组贴出来,这样便于帮你分析解决。

追问
额,谢谢啊,我自己解决了,主要之前不知道前面的微分方程函数要分两段结构,现在用分号把-0.0106x(1)隔开就行了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式