【发布时间】:2013-06-29 12:15:47
【问题描述】:
我必须编写一个程序来测试两个代数表达式是否等价。它应该遵循 MDAS 优先级和括号分组。为了解决优先级问题,我想我应该为这些表达式实现一个中缀到后缀符号转换器。但是通过这样做,我无法得出它们的等价性。
程序应如下所示: 用户输入:a*(a+b) = a*a + a*b 输出:等效
对于这个问题,我不允许使用计算机代数系统或任何外部库。如果你有,请不要发布实际代码,我只需要一个想法来解决这个问题。
【问题讨论】:
-
你能描述一下你的方法是什么不起作用吗?我想如果你把这两个表达式放到同一个标准形式中,你应该可以通过遍历和比较两个树结构来比较它们。
-
你的程序必须为这两个代数表达式显示什么结果:
1/(a-a)和2/(a-a)? -
x + y和a + b也相等吗? -
^ x+y 和 a+b 不应该相等
-
mbratch 起初我其实是想先将表达式简化为标准形式,但意识到这会很乏味(我猜),而且在识别表达式是否简化时也存在问题。您能否详细说明如何使表达式在程序中成为标准形式?
标签: algorithm math linear-algebra algebra