2009-08-28 2 views
7

私が論文や派生物を紙に書いているとき、私はあるステップから次のステップへと移動するときに頻繁に符号エラーや用語を削除します。 Mathematicaを使って、これらのばかげた間違いから自分自身を救いたいと思っています。私はMathematicaが式を解決しないようにしたい、私はそれを実行し、一連の代数操作を表示したい。校正/派生を表すMathematicaパッケージはありますか?

In[111]:= MultBothSides[Equal[a_, b_], c_] := Equal[c a, c b]; 

In[112]:= expression = 2 a == a b 

Out[112]= 2 a == a b 

In[113]:= MultBothSides[expression, 1/a] 

Out[113]= 2 == b 

誰でもこの種の操作をサポートするパッケージを指摘できますか?

編集

私が探しているものはありません。シンボルの操作は実際問題ではありません。私は実際に導出の各ステップの代数的または数学的正当化を明示する何かを探しています。私のここの目標は本当に教育的です。

+2

申し訳ありません私は数年遅れています...しかし、私がここで言及している小さなパッケージhttp://stackoverflow.com/q/5701159/667867は、あなたがしたいことをする必要があります。警告の質問とディスカッションを読む! – telefunkenvf14

答えて

3

Mathematicaは、代数を操作するための多くの高水準関数も提供しています。これらの中には、Expand,ApartおよびTogetherおよびCancelがありますが、それ以上の数があります。

また、(つまり、ヘッドEqualと表現)式の両辺に同じ変換を適用し、あなたの具体的な例のために、あなたは自分のMultBothSides機能と同じように動作Thread機能を、使用していますが、持つことができます非常に多くの一般性。提示のソリューションのいずれかで

In[1]:= expression = 2 a == a b 
Out[1]:= 2 a == a b 

In[2]:= Thread[expression /a, Equal] 
Out[2]:= 2 == b 

In[3]:= Thread[expression - c, Equal] 
Out[3]:= 2 a - c == a b - c 

、ステップを伴うものを見ることは比較的容易でなければなりません。あなたはもう少し明示的な何かをしたい場合は、そのようなあなた自身の関数を書くことができます。

In[4]:= ApplyToBothSides[f_, eq_Equal] := Map[f, eq] 

In[5]:= ApplyToBothSides[4 * #&, expression] 
Out[5]:= 8 a == 4 a b 

これは、任意の頭部を持つ式の事実はMap作品だけでなく、頭を活用して、あなたのMultBothSides機能の一般化ですList。 Mathematicaに慣れていないオーディエンスとコミュニケーションしようとしている場合は、このような名前を使用すると、より明確に伝えることができます。関連する文脈では、Ira Baxterが提案した置換ルールを使用する場合は、/.構文砂糖を使用する代わりにReplaceまたはReplaceAllを記述すると便利です。あなたはあなたの入力には、代わりに変数名expressionの、実際の式を持つことが明確になると思うし、あなたのマウスを使って強調表示し、単語expressionをノートブック・インターフェースを使用している場合

In[6]:= ReplaceAll[expression, a -> (x + y)] 
Out[6]:= 2 (x + y) == b (x + y) 

、呼び出しますコンテキストメニューを開き、「評価」を選択します。

ノートブックのインターフェイスは、 "文章のプログラミング"を行うための非常に快適な環境ですので、すぐにはっきりとわからないことも説明できます。私は、これが媒体にかかわらず数学的な校正を書くときの良い練習であると信じています。

+1

あなたの答えをありがとう。私はこれらの行に沿って缶詰のパッケージがすでに存在していることを期待していましたが、あなたが作ったポイントは自分のパッケージで始めるのに役立ちます。 –

2

私はあなたがパッケージが必要と思わない。あなたがしたいことは、推論規則に従って各式を操作することです。 MMaでは、変換を使用して数式の推論規則をモデル化できます。あなたが式Fを持っているのであれば、あなたが実行することにより、推論規則Iを適用することができ、あなたのシーケンス内の次の式を生成するために

f ./ I 

(私のMMA構文は錆び15年です)。

MMaでは、定数や算術演算子などの標準代数演算子や用語が含まれている場合は、もちろんその数式を簡略化しようとします。数式をホールド[...]形式で囲むことで、MMaが独自の「推論」ルールを適用するのを防ぐことができます。

関連する問題