1

プロジェクトで使用するには、C++代数ライブラリが必要です。最初は書けると思っていたのですが、車輪の再発明に失敗し、貴重な時間を無駄にしていることに気づきました。

算術の問題については、GMPライブラリ(無制限の算術計算用)と他の種類のタスク用のツール(標準のC ++ライブラリは疑似乱数の生成には十分であるように見えました)を見つけました。しかし、代数の仕事に適したものを見つけることができませんでした。

線形代数ライブラリ(Armadilloなど)がありますが、そのようなライブラリが必要かどうかはわかりません。私のニーズを要約したいと思います。

#include <string>
#include <somelibrary.h>

int main(){
std::string str = "3*x^3+2*x^2+x+sqrt(x)*x^(1/3)";
algebraic_expression* exp = new algebraic_expression(str);
}


そんな表情で木が欲しいです。いくつかの情報を含むstd::vectorまたはCスタイルの配列を返すとしましょう。たとえば(上記の例を考慮すると)exp[0]は"3 * x ^ 3"、またはexp [0] ["base"]="x"になります。

そして、なぜ私はこれが必要なのですか?実際、正規表現を使用して同様のことを行うことができますが、3 * x ^ 0が単純に3であるなど、処理できない場合があります。3* x ^ 0は意味がないため、印刷できません。 3 * x^1は3*x)です。または(3-3)* 5*2は0などを返します...

ご協力いただきありがとうございます。

4

2 に答える 2

1

'CAS'(数式処理システム)を探す必要があります。私はあなたに2つ提案することができます:

Ginac http://www.ginac.de/

ジャック:http ://www-fourier.ujf-grenoble.fr/~parisse/giac.html

Giacを使用したプログラムの例:http ://www-fourier.ujf-grenoble.fr/~parisse/giac_us.html#First%20example

Giacには、XCASと呼ばれるGUIアプリケーションも付属しています。これは、試してみる必要のある非常に強力なツールです。

于 2013-02-08T12:35:55.260 に答える
0

3D代数計算の修士論文プログラムにLAPACKを使用しました。

于 2013-04-08T20:43:36.683 に答える