2014-03-02 54 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