Mathematica 还提供了许多用于处理代数的高级函数。其中包括Expand
,Apart
和Together
, 和Cancel
, 尽管还有很多。
此外,对于将相同变换应用于等式两边(即带有 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
它是对您的函数的概括MultBothSides
,它利用了适用于任何 head 的表达式的事实Map
,而不仅仅是 head List
。如果您尝试与不熟悉 Mathematica 的观众交流,使用这些名称可以帮助您更清楚地交流。在相关方面,如果您想使用 Ira Baxter 建议的替换规则,写出 Replace 或 ReplaceAll 而不是使用/.
语法糖可能会有所帮助。
In[6]:= ReplaceAll[expression, a -> (x + y)]
Out[6]:= 2 (x + y) == b (x + y)
如果您认为expression
在输入中使用实际方程式而不是变量 name 会更清楚,并且您正在使用笔记本界面,expression
请用鼠标突出显示该单词,调出上下文菜单,然后选择“Evaluate in地方”。
笔记本界面也是一个非常愉快的“文学编程”环境,所以你也可以用语言解释任何不是立即显而易见的步骤。我相信在编写数学证明时,无论使用何种媒介,这是一个很好的做法。