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