表达式简化算法

阿尔斯通·林

我目前正在使用“计算器”应用程序,并且希望输出以简化表达式和十进制答案的形式出现。一个示例是sqrt 2 * sqrt 3 = sqrt 6,也可以将其输出为2.44948 ...最好的方法是什么?是否有完善的算法可以做到这一点?

艾拉·巴克斯特(Ira Baxter)

是的。您可能想要的是一个计算机代数系统,该系统将公式理解为要由明确的数学规则操纵的人工产物。

Mathematica和Macsyma是执行此操作的应用程序。但是,这些都是非常复杂的系统,很难看到它们是如何工作的。

您需要做的是:

  • 将公式表示为抽象语法树
  • 将文本公式(您的示例方程式)解析为此类树
  • 编码一组表示代数运算的树操作规则
  • 将这些规则应用于您的代数树
  • 完成后将Prettytree代数树作为文本打印回来

规则最好用代数的表面语法编写。(Mathematica不会这样做;它使用一种前缀S表达式将公式表示为树,而将规则表示为具有特殊变量节点的同类树)。

问题之一是确定要编码多少个“代数”规则。数学不仅是纯粹的9年级代数,而且使用此类系统的人们倾向于通过添加更多知识来扩展那里的内容(Mathematica和Macsyma的观点:它们是无限可扩展的)。

这是一个非常简单的版本。您可以从解析树和重写规则的角度查看所有“齿轮”以及如何描述事物。

http://www.semdesigns.com/Products/DMS/SimpleDMSmainExample.html

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章