回答
這是一個很好的項目練習編程技能。但是,如果你想創建其他人將要使用這是你不想開始allone,並從頭開始一個項目真正的圖書館......
從哪裏開始:看一看解決方案那已經在那裏,想想你想做什麼不同。你的項目與其他項目有何不同?
@Resources:你可以看看pythonica--這是一個嘗試在Python中實現Mathematica類型的程序(源代碼可供下載)。
這個pySym Blog也可能讓你感興趣的獲取想法和初學者,並學習其他人在做什麼與Python &符號數學。
更多資源的方式:SympyCore:
的SympyCore項目的目的是尋求新的高性能解決方案,在Python編程語言來表達和處理符號表達式,並嘗試新的符號模型來達到基本一致和足夠一般的符號模型,這將很容易擴展到計算機代數系統(CAS)。
符號數學是一個有趣的項目。無論是否有人使用它,在你的問題中似乎都沒有問題,所以潛入。
我已經寫了兩年這些年。最酷的是SQL語句中的一個 - 它在SQL上做了一些簡單的符號操作來摺疊一些額外的AND條件。不是一個完整的「求解器」或「優化器」或其他任何東西,只是可能的任何SQL where子句的一些符號操作。調試器不太酷;它做了複雜的數學計算(符號)變量的堆棧偏移量。操作數,運算符,函數等
你必須決定什麼操縱這些對象都參與 -
通過定義一個數學表達式的元素開課。爲表達式獲得具體價值是一件容易而明顯的事情。從所有變量都具有綁定的情況開始。
然後處理一些變量保持未綁定的情況,並且您只能評估表達式的一部分。
然後處理將表達式重新排列爲規範形式。即,你已經完成了部分評估並且有Add(Variable(x), Add(Variable(x), Lit(3)))
。您需要編寫規則將其轉換爲Add(Multiply(Lit(2), Variable(x)), Lit(3))
。
一個非常酷的練習是優化括號,以便打印輸出具有捕獲含義所需的最少圓括號。
有很多很多其他的「表達式轉換」規則,我們都在學校學習做代數操作。其中很多。
特別是,在某些情況下,重新排列方程以隔離變量可能非常困難。
做衍生變換很容易,但符號集成對於大量特殊情況確實非常困難。
基本很有趣。取決於你想走多遠,它逐漸變得更難。
1.這個好項目的想法是什麼?
是的;我期望它能提供一個有趣的工作源泉,它將很快測試和擴展你的編程能力。
2.從哪裏開始?
我其他的建議,你應該看看現有的工作。 SAGE非常令人印象深刻,如果你問我的建議,我建議你首先編寫一個用數字和符號進行算術的基本系統;然後看看SAGE並編寫一個模塊來擴展系統,換句話說就是成爲一個更大的貢獻者,而不是試圖獨自完成這一切。還請看看Mathematica和Maple,Macsyma和Axiom。後者2是免費的(我認爲),但它們在網上都有很好的文檔記錄,是思想和挑戰的重要來源。
3.如何接近這個項目?
一個人會接近吃大象。一次咬一口。更嚴重的是,我認爲存在一些核心問題,比如表達式的表示,以及一些基本的功能(多項式算術),這些功能可以削減你的牙齒。
4.任何好的資源?
很多和很多。谷歌爲「計算機代數」,「術語重寫」。看看亞馬遜上有什麼可用的。並且,如果您有權訪問,請查看ACM數字圖書館
祝您好運。
我認爲這對任何技能水平的程序員來說都是一個很棒的項目。實現一個功能強大的符號計算器非常簡單,非常有用。如果你繼續在廣度上工作,那麼有很多有趣的功能需要添加,以至於你可以長期使用它。如果你選擇深入,你會發現很快就會得到很難。如果這就是你喜歡的,你可以無限地挑戰自己。
有很多很好的資源。我推薦zur Gathen和Gerhard編寫的「現代計算機代數」一書,雖然它比一般的符號操作更關心特殊形式(多項式,整數,矩陣)的算術。當你剛開始的時候,你可能通過查看一些Lisp或Scheme教程得到更好的幫助,因爲符號數學在Lisp中的概念上非常簡單,並且在Python中構建一個符號引擎時,你或多或少必須實現一個mini-Lisp作爲基礎。
正如其他人指出的,你可以看看SymPy和sympycore的靈感或具體算法。任何一個項目的源代碼都有點複雜(但從中學習起來並不難)。 (如果我可能會插入一點,我回到wrote a tiny symbolic engine(作爲一個週末的項目 - 這是非常小的,我從來沒有工作過),它在大約200行代碼中實現了一個通用的符號引擎,然後有300行代碼實現了符號算術和符號布爾代數,並進行了一些非常簡單的簡化,或許比SymPy更容易挖掘,但是其中的一切都是你可以輕易發現的,並且可能更有趣這樣做。)
- 1. 在Python/OpenGL中渲染數學符號?
- 2. 符號數學問題(數學)
- 3. 符號數學中的R
- 4. 朱莉婭符號數學?
- 5. .NET的符號數學
- 6. 數學符號字體
- 7. 什麼是數學符號?
- 8. 數學符號理解
- 9. 數學語法與&符號
- 10. 科學記數法符號
- 11. Python;科學記法字符串編號
- 12. 是數字,aplha還是數學符號
- 13. 在python中自動處理e(科學)符號中的數字
- 14. 使用Sympy比較符號數學表達式和Python
- 15. 如何用數學符號作爲python輸入變量名?
- 16. 隨機數與隨機數學符號的PHP數學
- 17. 在視圖上顯示數學符號和數學問題?
- 18. 比較傳統數學符號與APL/J符號的示例
- 19. 對象文字字符串轉義數學符號編號
- 20. 的Javascript轉化數學符號爲MATHML符號
- 21. HTML視圖乳膠數學符號
- 22. 無符號驗證數字(科學)
- 23. 列表中的數學符號
- 24. 防止數學符號和HTML代碼
- 25. 打印數學符號未啓用
- 26. 在JAVA中執行符號數學
- 27. Clojure與F的符號數學計算#
- 28. 數學符號從Mysql到HTML?
- 29. 如何顯示數學符號如theta
- 30. 算法中的符號數學
另一個圖書館選項是使用賢者(http://www.sagemath.org/) – 2009-02-03 22:10:34