アプリケーションでいくつかの数式を解く必要があります。このような方程式の典型的な例を次に示します。
a + b * c - d / e = a
追加のルール:
- b%10 = 0
- b> = 0
- b <= 100
- 各数値は整数でなければなりません
- ..。
a、b、c、d、eの可能な解集合を取得したいと思います。
そのような方程式を解くために使用できる、オープンソースまたは商用のライブラリはありますか?はいの場合、彼らはどのような結果をもたらしますか?
線形システムの解法は、一般に線形計画法を使用して解くことができます。まず、 Boost uBLASを検討することをお勧めします。これには、単純な三角ソルバーがあります。次に、よりドメイン固有のアプローチ (おそらくQSopt ) を対象とするライブラリをチェックアウトする場合があります。
あなたは数値解析の世界に足を踏み入れています。仕様の一見小さな違いが、正しいアプローチに大きな違いをもたらす可能性があります。
問題領域のかなり正確な説明がなければ、具体的な提案をすることを躊躇します。それを行うには多くの方法があるほど単純な制約付き線形問題を解決しているように表面的に聞こえますが、「...」は問題になる可能性があります。
一般的なソルバーなどに適したリソースはGAMSです。ソフトウェアの多くは、あなたが求めているものに対して少し重いかもしれません。
コンピューター代数システムが必要です。
見るhttps://stackoverflow.com/questions/160911/symbolic-math-lib、その答えはほとんどcと同じくらいc ++に関連しています。
それがあなたの本当の質問ではないことはわかっていますが、与えられた方程式を次のように単純化できます。
d = b * c * e with e != 0
数値レシピに何かがあることは間違いない
あなたはコンピューター代数システムを探していますが、それは簡単なことではありません。
それらの多くは利用可能ですが、ウィキペディアで次のリストを試してください。
http://en.wikipedia.org/wiki/Comparison_of_computer_algebra_systems
-アダム
これは線形計画法のように見えます。このリストは役に立ちますか?
他の投稿に加えて。あなたの制約セットはこれを整数計画問題を連想させるので、そのようなこともチェックしたいかもしれません. おそらく、あなたの問題は 1 つとして (再) 述べることができます。
ただし、整数計画問題は計算が難しい問題の 1 つになる傾向があるため、クラックするために多くのクロック サイクルを使用することになる可能性があることを知っておく必要があります。
TI-89 電卓には「ソルバー」アプリケーションがあります。あなたの例のような問題を解決するために構築されました。私はそれが図書館ではないことを知っています。しかし、TI-89 エミュレーターはいくつかあります。
「追加規則」の部分だけを見ると、線形計画法のように見えます。この場合、LINDO やシンプレックス アルゴリズムを実装した同様のプログラムで問題ありません。
ただし、最初の方程式が本当に典型的なものである場合、それは線形代数の問題ではないことを示しています。互いに乗算または除算する 2 つの変数が線形方程式に現れることはありません。
したがって、間違いなくコンピューター代数システムが必要か、遺伝的アルゴリズムを使用して問題を解決する必要があると思います。
線形計画法に見られる制限と同様の制限があるため、特定の問題の解決策が必要な場合は、遺伝的アルゴリズムに関するウィキペディアの記事の最後に記載されているライブラリのいずれかを選択してください。あなたに結果を与えるアプリを開発します。より一般的なアプローチが必要な場合は、コンピューターで代数操作をシミュレートする必要があります。それ以外の方法はありません。