2011-03-02 13 views
2

我嘗試從方程(方程組)中提取係數爲列表(矩陣)。我試過CoefficientList[poly, {var1, var2, ...}]但沒有成功。係數列表/矩陣係數方程(方程組)

這個簡單的例子應該解釋我的問題:

Eq1 = a D[U[x1, x2], {x1, 2}] + b D[V[x1, x2], {x2, 2}] 

reproduce problem

有什麼建議?

編輯:

丹尼爾的Lichtblau解決方案是很清楚的(感謝你),但如果它看起來像這樣的公式?

additional question

有沒有更好的解決方案:

Eq1 = a D[U[x1, x2], {x1, 2}] + b D[V[x1, x2], {x2, 2}] + c W[x1, x2] 

一個簡單的例子可以如下解決? (特別是對於更復雜的表達式)

Ps我不明白爲什麼,但是這個解決方案給了我正確的結果。

reproduce problem

+0

如果你陳述'CoefficientList [EQ1,{V ^(0,2) [x1,x2],U ^(2,0)[x1,x2]}]'? – vissi 2011-03-02 01:00:00

+0

'係數列表如何對D [U [x1,x2],{x1,2}] + bD [V [x1,x2],{x2,2}],{D [U1,x2, ],{x1,2}],D [V [x1,x2],{x2,2}]}]' – 2011-03-02 01:32:40

回答

4

首先的偏導數被表示與Derivative,所以圖案需要匹配。此外,我不認爲你想使用CoefficientList,因爲它會接受你的表達式出現的條件。總而言之,下面應該工作:

In[7]:= (Coefficient[Eq1, #] &) /@ {Derivative[2, 0][U][x1, x2], Derivative[0, 2][V][x1, x2]} 
Out[7]= {a, b} 

這裏(Coefficient[Eq1, #] &)是一個匿名函數,發現自變量的係數,並/@它映射到右邊的列表中。

HTH

+0

謝謝。這正是我需要的。 – kros 2011-03-02 09:14:39

1

CoefficientArrays往往是在一些組變量提取係數以線性系統是有用的。在這種情況下,我們首先需要獲取變量列表。

dvars = Cases[Eq1, Derivative[__][_][__], -1]; 

CoefficientArrays返回形式{常量,係數}的結果。它使用稀疏數組,因此我將使用Normal轉換爲顯式列表。

Normal[CoefficientArrays[Eq1, dvars]] 

缺貨[672] = {0,{B,A}}

丹尼爾Lichtblau Wolfram Research的

+0

非常好。謝謝。我已經更新了這個問題。如果你能看一下,我將非常感激。 – kros 2011-03-02 19:16:55