我需要編寫一些代碼來處理生成和操作多元多項式。我將用簡單的例子概述我的任務。用於操作多元多項式的庫
假設我有三個表達式:2x^2,3y + 1和1z。然後我需要把它們放在一起,這會給我6x^2yz + 2x^2z。然後我想找出這個表達式關於x,y和z的偏導數。這會給我12xyz + 4xz,6x^2z和6x^2y + 2x^2。
我的問題涉及在包含數千個變量的表達式上做這樣的簡單操作,我需要一個簡單的方法來系統地完成此操作。我真的很喜歡使用python,因爲我已經使用numpy/scipy/matplotlib完成了許多與項目相關的功能,但是如果在另一種語言中存在強大的工具箱,我也願意使用它。我正在進行大學研究,所以我也願意使用Matlab。
我一直沒能找到任何好的python庫,可以很容易地做到這一點,理想情況下,想要類似於scipy polynomial routines可以在多維多項式上工作的東西。有誰知道一個好的庫,似乎適合這個問題,這將很容易集成到已經存在的Python代碼?
謝謝!
跟進:我花了幾天工作sympy,結果是非常容易使用。然而,對於我正在研究的問題的規模來說,這很慢,所以我現在要去探索matlab。爲了使用小樣本量對速度進行非常粗略的估計,需要大約5秒來計算包含250個變量的2階多項式的每個偏導數。
後續行動#2:當我還在處理這個問題時,我可能應該做到這一點,但我可能會讓每個人都知道matlab符號庫在速度上與sympy極其相似。換句話說,對於大型計算而言,這是非常緩慢的。這兩個庫非常容易使用,所以對於小型計算,我強烈推薦。
爲了解決我的問題,我手工計算了漸變,簡化了它們,然後使用我發現的模式在我的代碼中硬編碼了一些值。這是更多的工作,但使我的代碼指數更快,最終可用。
你的榜樣代表性如何?如果你的起始多邊形只是一個var的函數,那麼問題就更容易了。 – 2010-06-22 22:15:07
+1:真的很好的問題。我正在*要*建議SymPy,它明顯做符號計算(與標記的庫不同),但它似乎只做數值分化! http://docs.sympy.org/modules/mpmath/calculus/differentiation.html – 2010-06-22 22:19:55
@尼克希爾:sympy也做象徵性的分化。看我下面的例子。 – 2010-06-22 22:31:08