1

数式が与えられたときに、数式を操作して任意の値 (連立数式の場合は共通値) を数式の主語にするプログラムを作成したいと考えています。

たとえば、次の場合:

a + b = c
d + b = c

したがって、プログラムは次のように言う必要があります。

b = c - a, d = c - b    etc.

元の式を入力として指定したときに、Javaがこれを自動的に実行できるかどうかはわかりません。方程式を解いて各変数の結果を取得することにはあまり興味がありません。操作された数式を返すことに興味があるだけです。

このためにアルゴリズムを作成する必要があるかどうかを教えてください。必要な場合は、どうすればよいでしょうか。また、役に立つリンクがあれば、投稿してください。

よろしく

4

4 に答える 4

1

はい、この種のコンピューター代数を行うには、何らかのアルゴリズムを作成する必要があります。少なくとも

  • 入力を解釈するパーサー
  • 解析されたオペランド ('a'、'b'、...) と演算子 ('+'、'=') を関連付ける代数モデル
  • 実行したい操作をサポートする適切なルールを実装します
于 2013-01-09T14:51:14.387 に答える
1

あなたが何を求めているのか正確にはわかりませんが、この問題は一般的な問題では難しいです。とても厳しい。

実際、一連の「式」(公理) と演繹規則 (数学的等価演算)が与えられた場合、与えられた式が正しいかどうかを推測することはできません。この問題は実際には決定不能です。

この問題は、Hilbert によってEntscheidungsproblemとして最初に取り上げられました。

于 2013-01-09T14:37:35.327 に答える
1

JavaCCを見てください。最初は少し戸惑うかもしれませんが、このような場合に適したツールです。さらに、あなたが達成しようとしていることのがすでにあります。

于 2013-01-09T14:26:19.793 に答える
1

Douglas Hofstadterの著書を読みましたが、Fluid Concepts and Creative Analogiesこの種の代数操作は、方程式を別の方法で自動的に書き換えて、与えられた規則に従って無限の (まだ制限された) 方法で方程式を他の方程式に結合しようとするものでした。それは、まだ証明されていない定理/証明を力ずくで証明しようとする試みでした。

http://en.wikipedia.org/wiki/Fluid_Concepts_and_Creative_Analogies

Douglas Hofstadter の Numbo プログラムは、あなたのやりたいことをやろうとします。彼はソースを提供せず、それがどのように機能するかを詳細に説明するだけです.

高校生が代数問題を解いて何かを知っている立場から移動し、それを修正し、それを他の方程式と組み合わせて、以前は知られていないことを証明するときに行うことをプログラムで実行したいようです。これを行うには、強力な人工知能が必要です。これを行う脳の部分は、科学を行う新皮質であり、その動作原理はまだ理解されていません.

大学生が微積分で方程式を操作するときに行うことと同じことが必要な場合は、かなり強力な人工知能を構築する必要があります。

http://en.wikipedia.org/wiki/Neocortex

人間の新皮質の全脳エミュレーションができたら、ここに答えを投稿します.

于 2013-01-09T14:30:20.003 に答える