2012-07-04 57 views
10

我需要在C++中進行分析集成。例如,我應該整合這樣的表達式:exp[I(x-y)],I是一個虛數。C++中的符號計算

我該如何在C++中做到這一點?

我試圖GiNaC但它可以只合並多項式。我也試過SymbolicC++。它可以集成功能,如sinecosineexp(x)ln(x),但它是不是很厲害。例如,它不能整合x*ln(x),它可以很容易地通過使用Mathematica或通過部分集成獲得。

是否有任何其他工具或能夠做符號計算像在C++分析集成庫?

+0

你已經嘗試[千里馬](http://maxima.sourceforge.net/)? – jxh

+0

正在使用Matlab的一個選項? Matlab的符號工具箱應該能夠做到這些。使用C Matlab引擎,你可以從你的C++代碼中調用它? – Philipp

+0

我沒有Matlab的許可證,所以我不能使用它。 Maxima使用C++語法嗎? 我更喜歡C++中的某個庫。如果我想使用其他程序,如maxima或Matlab,我會使用Mathematica來代替。 其實我已經在mathematica中編寫了我的程序。這是一個簡單的程序來加工積分偏差方程,但問題是Mathematica在計算所需的時間方面效率不高。所以我決定用C++編寫我的程序。 – MOON

回答

4

如果你需要做象徵性的整合,那麼你很可能不會得到任何東西比數學或最大運行速度更快 - 他們已經寫在(像)C++。所以除非你的方程有一個非常具體的公式,你可以用一種Mathematica或Maxima不能用的方式來開發,那麼你很可能不是那麼幸運 - 至少你不會從一個現成的圖書館。

您可以編寫自己的代碼,如果你需要做的數值解得到提升速度是合理的。 (我知道我爲PDE生成數值解決方案)。

+0

我用Mathematica編寫的代碼位於以下鏈接:http://www.mediafire.com/?cw9s3ne7jz8fq7s 此代碼是關於recuult關係。我給它的第0學期,它獲得第一學期,然後使用第一學期獲得第二個學期等等。 對於前四屆而言,並不需要太多時間,但對於進一步的條款來說,這需要很多時間,並且我從來沒有獲得過更高的條款。 這段代碼應該解決一個積分微分方程,所以我需要大量的術語來獲得。至少我認爲50個條款是必要的。 – MOON

+0

所以,因爲它需要很多時間在Mathematica我決定寫它通過c + + – MOON

+0

你可以添加一個公式的圖片,我無法打開mathematica筆記本(這幾天沒有可用的mathematica ...) –

1

其他C++庫我知道做符號計算的是

如果我沒有記錯的話,SymEngine尚不支持整合;然而,食人魚呢。目前Piranha的documentation在某種程度上受到限制,並且正在開發中,但您可以看到集成功能here。請注意,第二個鏈接使用Python包裝器Piranha的語法。然而,Piranha是一個計算機代數庫,用於稀疏多元多項式和其他密切相關的符號對象(如Poisson系列)的符號操作,所以我不認爲它可以集成您可能感興趣的特定函數。

雖然不是C++,但您也可能對SymPy for Python感興趣,它可以執行一些您可能感興趣的更復雜的符號集成。SymPy集成的文檔是here