2013-10-04 33 views
2

我一直在討論連續介質力學,並且有很多操作需要得到關於另一個張量的張量的導數。我很樂意在計算機上嘗試象徵性地做到這一點。例如,彈性張量c = d(第二PK應力)/ d(應變張量),而第二PK應力張量和應變張量都是3×3矩陣,並且所得到的彈性張量是3×3×3×3四階張量。任何工具來區分張量與另一個張量?

我試過使用sympy,但它似乎最支持的是矩陣(2階張量)。在numpy中的ndarray根本就不在sympy中。

我曾經使用matlab,現在我意識到它可以在matlab中工作。

因此,我想知道,是否有任何工具可用於此目的?數學可以這樣做嗎?

非常感謝!

-Shawn

+0

數字或符號?差異非常重要。另外,請正確定義操作,因爲「張量的導數與另一個張量的導數」沒有多大意義。 – Krastanov

+1

@Krastanov感謝您的回覆!正如我在問題的第一段中指出的那樣,我的意思是象徵性的。對於操作,它可以粗略地理解爲「一張張的每個分量都與另一張張的每個分量有區別」。儘管這在每張張量分析書中都有更精確的定義。而且,我在我的問題的第二段中舉了一個簡短的例子。 –

回答

2

辦法做到這在Python是使用numpy的陣列使用dtype=object,這樣就可以與sympy表達,而不是數字填補他們。但是你必須自己編寫所有的便捷方法(但是它們會非常簡單,只是將已經實現的sympy函數循環到numpy數組中)。

這顯然可以在Mathematica或Matlab中完成,如果您安裝必要的符號包。

Mathematica也有用於張量分析的軟件包,但它們對於您所描述的問題來說會是一種矯枉過正。用同樣的方法,SymPy中有不同的幾何和張量分析軟件包,但它們又是一個矯枉過正的工具。