1

私は多項式のシステム、かなり単純な多項式式を持っていますが、手を最適化するにはかなり時間がかかります。式はセットにグループ化され、特定のセットにはいくつかの変数に共通の用語があります。

Mathematica、Matlab、または sympy など、複数の多項式を共通の項で最適化して演算数を最小限に抑えることができるコンピューター代数システムがあるかどうかを知りたいです。また、そのようなシステムが中間項の数を最小限に抑えてレジスタの数を減らすことができれば素晴らしいことです。

そのようなシステムが存在しない場合は、Python 記号代数 Sympy を使用して独自に作成します。このようなパッケージに取り組んでいる場合、または開発や使用に興味がある場合は、お知らせください。

ここに作成例があります

x0 = ((t - q*A)*x + B)*y
y0 = ((t - q*A)*y + B)*z
z0 = ((t - q*A)*z + B)*x

したがって、明らかに (t - qA) 項を因数分解できます。ここで、一般的な用語のさまざまな組み合わせで非常に多くの用語を作成すると、手作業で行うのが難しくなります。私が持っている方程式には最大 40 の項が含まれ、セットのサイズは約 20 です。

ありがとうございました

4

4 に答える 4

1

sympy はあなたが探しているものですか? 多項式をサポートしていると思いますが、あなたが望むすべての機能をサポートしているかどうかはわかりません (それでも、不足していると思われるものを追加するために微調整することは、独自のものをゼロから作成するよりも簡単でなければなりません;-) .

于 2009-11-15T00:15:04.663 に答える
1

数学は、あなたが探している軽量のソリューションかもしれません。http:www.mathomatic.orgをご覧ください。

通常のすべての演算子を使用して単純な代数を実行し、記号式を単純化し、変数と方程式のセットを解くことができます。

プログラミング機能はありません。スタンドアロン アプリをビルドするか、ライブラリとヘッダー ファイルの形式で API を使用して C、C++、または Objective-C に組み込むか、コマンド ラインと環境を提供するアプリケーションからアプリを起動することができます。

NSTask をご覧ください。これにより、独自のアプリで stdin と stdout をデータストリームにパイプすることもできます。

Matomatic は、これらのシステムのプログラム コードに含めるために、結果の式を Java、Python、または maxima 形式で保存することもできます。

于 2010-12-27T21:38:20.017 に答える
1

マキシマを検討しましたか?

これは、無料のオープン ソースであり、非自明な定式化を扱う際に貴重な支援を提供する強力で活発なコミュニティを持つ印象的な記号計算パッケージです。3 つの主要なオペレーティング システムすべてですぐに利用でき、コンパイル済みの Windows バイナリが含まれています。

式や連立方程式 (独自のものなど) に使用できるさまざまな代数操作コマンドがあります: expand、factor、simplify、ratsimp、linsolve など。

このページ ( Maxima for Symbolic Computation ) から始める必要があります — ダウンロード、インストール、いくつかの例、そしてクイック コマンド リファレンス/チート シート、および独自の記述のためのガイドラインを含む追加リソースを指摘します。スクリプト。

于 2010-02-25T10:44:44.077 に答える
0

Mathematica は確かにあなたのような多項式のセットに対してあらゆる種類の変換を行うことができます.そしてそれらの変換のいくつかは項の数を減らすことになるかもしれません. それがあなたにとって正しい答えであるかどうかは疑問の余地があります.あなたはコピーを入手できないようです. Maple や他のほとんどの CAS についても同じことが言えると思います。

しかし、あなたの言及

レジスタ数を減らす

コンパイルのために実際にデータフロー分析を実行しようとしていることを示唆しています。そのトピックに関する文献も参照することをお勧めします。その文献のいくつかは、式に対するコンピューター代数のような変換について実際に言及しています。

于 2010-02-25T10:53:14.763 に答える