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

この種の操作をサポートするパッケージを誰か教えてもらえますか?

編集

入力していただきありがとうございます。私が探しているものとはまったく異なります。シンボル操作は実際には問題ではありません。私は、導出の各ステップの代数的または数学的な正当化を明示するものを本当に探しています。ここでの私の目標は本当に教育的です。

4

2 に答える 2

3

Mathematica は代数を操作するための多くの高レベル関数も提供します.これらの中にはExpandApartTogetherCancelがありますが、他にもかなりの数があります。

また、同じ変換を方程式の両側 (つまり、 headを使用した式Equal) に適用する特定の例については、関数を使用できます。これは、Thread関数と同じようにMultBothSides機能しますが、はるかに一般的です。

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

head だけでなく、任意の head を持つ式でMultBothSides機能するという事実を利用するのは、関数の一般化です。Mathematica になじみのない聴衆とコミュニケーションを取ろうとしている場合,このような名前を使うとより明確にコミュニケーションをとることができます.関連する流れとして、Ira Baxter が提案する置換規則を使用する場合は、構文糖衣を使用する代わりに、Replace または ReplaceAll を記述すると役立つ場合があります。MapList/.

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

変数名の代わりに実際の方程式を入力に含めた方が明確であると思われexpression、ノートブック インターフェイスを使用している場合はexpression、マウスで単語を強調表示し、コンテキスト メニューを呼び出して、[次で評価] を選択します。場所"。

ノートブックのインターフェースは、「リテラシーなプログラミング」を行うのにも非常に快適な環境であるため、言葉ではすぐにわからない手順を説明することもできます。メディアに関係なく、数学的な証明を書くとき、これは良い習慣だと思います。

于 2009-08-31T14:18:28.273 に答える
2

パッケージはいらないと思います。やりたいことは、推論規則に従って各式を操作することです。MMa では、変換を使用して式の推論規則をモデル化できます。したがって、式fがある場合、実行することで推論ルールI を適用できます(私の MMa 構文は 15 年もさびています)。

f ./ I 

シーケンスの次の式を生成します。

定数や算術演算子などの標準的な代数演算子や項が含まれている場合、MMa はもちろん数式を単純化しようとします。数式をHold[...]フォームで囲む​​ことにより、MMa が独自の「推論」ルールを適用するのを防ぐことができます。

于 2009-08-28T05:57:33.577 に答える