2016-12-29 62 views
1

我計算jacobian用於雙體問題,這是像這樣 two-body problem雅可比 <p>然而,當我運行<code>jacobian</code>功能我收到以下錯誤</p> <blockquote> <p>第二個參數必須是變量的矢量。</p> </blockquote> <p>我在做什麼錯?</p> <p>編輯:</p> <p>我也曾嘗試進行參數<code>y</code>對於T <code>y(t)</code>無濟於事。</p>

定義我已經建立了我的方程組如下

syms y1(t) y2(t) y3(t) y4(t) 

r = sqrt(y1^2 + y2^2) 
y3 = diff(y1) 
y4 = diff(y2) 
yd = [y3; y4; -y1/r^3; -y2/r^3] 

jacobian(yd, [y1 y2 y3 y4]) 
非線性ODE的

回答

4

由於錯誤消息提示第二個參數必須是變量的向量,而在你的情況下它是:[y1, y2, 1, 1]

也沒有必要將它們初始化爲symfun類即y1(t)y2(t)y3(t)y4(t),你可以將它們定義爲sym類,而不是即y1y2y3y4

因此,通過初始化它們作爲sym和刪除您在其中進行y3y4等於1線,即

syms y1 y2 y3 y4 
r = sqrt(y1^2 + y2^2); 
yd = [y3; y4; -y1/r^3; -y2/r^3]; 
jacobian(yd, [y1 y2 y3 y4]) 

你會得到這樣的輸出:

[             0,             0, 1, 0] 
[             0,             0, 0, 1] 
[ (3*y1^2)/(y1^2 + y2^2)^(5/2) - 1/(y1^2 + y2^2)^(3/2),      (3*y1*y2)/(y1^2 + y2^2)^(5/2), 0, 0] 
[      (3*y1*y2)/(y1^2 + y2^2)^(5/2), (3*y2^2)/(y1^2 + y2^2)^(5/2) - 1/(y1^2 + y2^2)^(3/2), 0, 0] 
+2

具體來說,'symfun'對象不是象徵性的變量,但象徵性的功能。 – horchler

相關問題