2012-11-30 86 views
2

我想知道是否有辦法象徵性地處理數組變量(像sympy,但數組而不是數值變量)。所以,我可以有數組表達式如符號數組表達式

f1 = 3*A[i] + 4*B[i][j] - 7 == 0 

或更先進的東西,如嵌套數組關係

f2= 3 * A[C[i][j]] == B[i] + 3 

通過治療A,B象徵,我可以通過改變A的內容,B使用的取代,例如:

f1.subs(A=[1,2,3,4],B=[[1,2],[3,4]]) 

我可以再加入f1和f2等

+1

你能寫出一個函數來確定''我''和'j'的'A [i]','B [i] [j]'嗎?如果是這樣,您可能會哄['numpy.fromfunction'](http://docs.scipy.org/doc/numpy/reference/generated/numpy.fromfunction.html#numpy.fromfunction)進行您的出價。 –

+0

也許已編入索引。不過,我不知道它是否可以嵌套。 – asmeurer

回答

2

從你的標籤判斷,我假設你主要對Python解決方案感興趣。

有幾個項目以符號方式構建數組表達式。我建議你看看

  • Theano - 爲代碼生成構建數組表達式。主要用於機器學習應用程序,但是一個相當普遍的項目。
  • SymPy Matrix Expressions - 限於矩陣,但處理一些線性代數的特殊知識。
  • SymPy Indexed
  • Blaze - Continuum的一個新項目正在成長。

如果你願意走出Python,你可以看看Mathematica中的xAct

還有很多其他項目,我沒有在這裏列出可能相關取決於您的應用程序。符號線性代數是一個非常活躍的領域。不過,每個項目都傾向於設計一個特定的應用程序。