2011-06-08 44 views
7

我不太確定如何解釋這一點。Mathematica - DSolve在輸出中吐出#1

我正在解決一個相當大的微分方程組,DSolve 有時吐出一個包含具有#1的項的替換規則列表。我知道#1是一個爭論的佔位符,但我不知道它來自哪裏。

如果我有類似的方程來

系統
eqs = { 
x1'[t] = a1*x1[t] + b1*y1[t] 
x2'[t] = a2*x2[t] + b2*y2[t] 
... 
y1'[t] = c1*y1[t] + d1*x1[t] 
y2'[t] = c2*y2[t] + d2*x2[t]} 

DSolve[eqs,vars,t]吐出像

x1 -> e^(-ta1) 
x2 -> e^(-t)RootSum[a1a2+a3b4#1 + a3a1b2#1] 
... 

顯然有點複雜,但你明白了吧。

文檔中的任何暗示,爲什麼這正在發生,而且只在參數一定permuations(例如,當我在原來的系統參數玩,要麼工作或沒有)

回答

10

出現這種情況RootSum可以通過Integrate,其用於通過內部DSolve,像這樣產生:

In[511]:= Integrate[1/(1 + x + x^2 + x^3 + x^4), x] 

Out[511]= RootSum[1 + #1 + #1^2 + #1^3 + #1^4 &, 
Log[x - #1]/(1 + 2 #1 + 3 #1^2 + 4 #1^3) &] 

它代表一個符號表達式是Sum[ Log[x-t]/(1+2*t+3 t^2+4 t^3), {t, {"roots of 1+t+t^2+t^3+t^4"}](注意,無效的語法故意)。您可以使用Normal恢復預期的正常形式:

In[512]:= Normal[%] 

Out[512]= 
Log[(-1)^(1/5) + x]/(1 - 2 (-1)^(1/5) + 3 (-1)^(2/5) - 4 (-1)^(3/5)) + 
    Log[-(-1)^(2/5) + x]/(
1 - 4 (-1)^(1/5) + 2 (-1)^(2/5) + 3 (-1)^(4/5)) + 
Log[(-1)^(3/5) + x]/(
1 - 3 (-1)^(1/5) - 2 (-1)^(3/5) + 4 (-1)^(4/5)) + 
Log[-(-1)^(4/5) + x]/(1 + 4 (-1)^(2/5) - 3 (-1)^(3/5) + 2 (-1)^(4/5)) 

或直接用Sum

In[513]:= Sum[ 
Log[x - t]/(1 + 2*t + 3 t^2 + 4 t^3), {t, 
    t /. {ToRules[Roots[1 + t + t^2 + t^3 + t^4 == 0, t]]}}] 

Out[513]= 
Log[(-1)^(1/5) + x]/(1 - 2 (-1)^(1/5) + 3 (-1)^(2/5) - 4 (-1)^(3/5)) + 
    Log[-(-1)^(2/5) + x]/(
1 - 4 (-1)^(1/5) + 2 (-1)^(2/5) + 3 (-1)^(4/5)) + 
Log[(-1)^(3/5) + x]/(
1 - 3 (-1)^(1/5) - 2 (-1)^(3/5) + 4 (-1)^(4/5)) + 
Log[-(-1)^(4/5) + x]/(1 + 4 (-1)^(2/5) - 3 (-1)^(3/5) + 2 (-1)^(4/5)) 

In[514]:= % - %% // FullSimplify 

Out[514]= 0 
+0

'Normal'解決了'RootSum'的'#1'的但是仍然有流浪者周圍。 – crasic 2011-06-08 05:41:19

+0

@crasic我想問題是'RootSum'是一個很好的表達,你不應該試圖擺脫它。比較'積分[1 /(1 + 2 x + x^7),x]'到'積分[1 /(1 + 2 x + x^7),x] //正常'。應該可以使用'Normal'將任何'RootSum'解析爲顯式和。如果你不能做到這一點,你可以發表頑固的'RootSum'表達嗎? – Sasha 2011-06-08 12:41:11

+1

所有的RootSum組件都可以根除,但可能有必要保留使用#的Root對象。 – 2011-06-08 14:38:10