2014-03-02 29 views
0

我想通过首先将其置于正常情况下解决微分方程enter image description here,如果我做得正确,应该是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]}。我知道我们正在定义变量,但为什么我们使用大括号,为什么一些用方括号括起来,而其他的则不用?

回答

2

错误由

[a8 +x8/3 - b8/3; a8; b8] 

,因为这将尝试与第一空间的第一行中分离列中的条目以产生具有不一致的尺寸的矩阵引起的。使用没有空格或空格的任何一方的运营商将解决这...

[a8 + x8/3 - b8/3; a8; b8] or [a8+x8/3-b8/3; a8; b8] 

应该按预期工作。

看到​​3210

+0

噢,所以当MATLAB读取的行[A8 + X8/3 - B8/3; A8; b8]它“试图”制作一个矩阵,其第一行包含3个元素,第二行和第三行包含一个元素,因此错误?哦,当然。非常感谢你!!! – Mack

+1

本质上是肯定的......除了第一行有两个元素,' - '在这个上下文中被视为' - ',它只是作为元素分隔符的'+'。 – RTL