我想通過首先將其置於正常情況下解決微分方程,如果我做得正確,應該是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