我正在构建一种基于Web的编程语言,部分受到Prolog和Haskell的启发(不要笑)。
它已经具有很多功能,您可以在http://www.lastcalc.com/上检查原型(prototype)。您可以查看源here并阅读有关体系结构here的信息。记住这是一个原型(prototype)。
当前,LastCalc无法简化表达式或求解方程式。除了使用Java对其进行硬编码之外,我还想增强基本语言,以便可以扩展该语言以使用这些语言本身(例如Prolog)来完成这些事情。与Prolog不同,LastCalc具有更强大的搜索算法,Prolog是“具有回溯功能的深度优先搜索”,LastCalc当前使用启发式最佳优先搜索。
在深入研究之前,我想了解更多有关其他系统如何解决此问题的信息,尤其是Mathematica / Wolfram Alpha。
我认为,至少在一般情况下,您的想法是为系统提供一堆用于处理方程式的规则(例如a*(b+c) = a*b + a+c
),以指定目标(例如,隔离变量x),然后放开它。
因此,我的问题是:
我也很感谢其他建议(“放弃”除外-我经常忽略该建议,这样做对我很有帮助;)。
最佳答案
一段时间之前,我本人已经解决了此类问题。然后,我发现有关简化表达式的this document。它的标题是“基于规则的表达式简化”,并显示了有关Mupad中简化的一些细节,而Mupad后来成为Matlab的一部分。
根据此文档,您的假设是正确的。有一组用于操纵表达式的规则。启发式质量度量用作简化的目标函数。