我想通过首先将其置于正常情况下解决微分方程,如果我做得正确,应该是dx/dt = a8 1/3 x - 1/3 b8,其中a8是二阶导数,而b8是三阶导数。这里是我的代码的一部分:使用matlab函数定义一个微分方程
matlabFunction([a8 +x8/3 - b8/3; a8; b8],'vars',{t,[b8;a8;x8]},'file','DE_11')
这里是我得到的错误:
Error using sym/cat>checkDimensions (line 75)
CAT arguments dimensions are not consistent.
Error in sym/cat>catMany (line 38)
[resz, ranges] = checkDimensions(sz,dim);
Error in sym/cat (line 27)
ySym = catMany(dim, strs);
Error in sym/vertcat (line 19)
ySym = cat(1,args{:});
老实说,我不知道这些消息是在暗示什么。我希望有人能帮助我解读这些错误信息,并告诉我我出错的地方。我的意图是,在这些问题得到解决之后,使用ode45来解微分方程。
谢谢,我为我的无知道歉。
编辑:好的,在漫无目的地尝试了各种各样的东西之后,我能够把它变成“工作”。这里是我改变它:
matlabFunction([b8;a8;a8 - b8/3 - x8/3], 'vars',{t8,x8,[b8,a8]},'file','DE_11')
但是,我不确定为什么工作,或者如果它甚至正确的输入。有人可能会告诉我为什么它有效吗?我明白这个[b8; a8; a8 - b8/3 - x8/3]表示包含我未知函数的列向量,但我不完全理解这个部分{t8,x8,[b8,a8]}。我知道我们正在定义变量,但为什么我们使用大括号,为什么一些用方括号括起来,而其他的则不用?
噢,所以当MATLAB读取的行[A8 + X8/3 - B8/3; A8; b8]它“试图”制作一个矩阵,其第一行包含3个元素,第二行和第三行包含一个元素,因此错误?哦,当然。非常感谢你!!! – Mack
本质上是肯定的......除了第一行有两个元素,' - '在这个上下文中被视为' - ',它只是作为元素分隔符的'+'。 – RTL