我正在构建一种基于web的编程语言,部分灵感来自Prolog和Haskell (不要笑)。
它已经有了相当多的功能,你可以在http://www.lastcalc.com/上查看原型。您可以查看源代码here并阅读有关架构here的信息。记住,这只是一个原型。
目前,LastCalc不能简化表达式或求解方程。我不想用Java硬编码,而是想增强基础语言,这样它就可以扩展到只用语言本身就能做这些事情(就像Prolog一样)。与Prolog不同,LastCalc有一个更强大的搜索算法,Prolog是“带回溯的深度优先搜索”,LastCalc目前使用的是启发式的最佳优先搜索。
在深入研究这个问题之前,我想更多地了解其他系统是如何解决这个问题的,特别是Mathematica / Wolfram Alpha。
我假设的想法是,至少在一般情况下,您给系统一堆处理方程的规则(如a*(b+c) = a*b + a+c
),指定目标(例如。隔离变量x),然后释放它。
所以,我的问题是:
我也会感谢任何其他的建议(除了“放弃”--我经常忽略这条建议,这样做对我很有帮助;)。
发布于 2013-09-11 04:26:13
前段时间我自己处理过这样的问题。然后我找到了关于表达式简化的this document。它的标题是基于规则的表达式简化,并显示了Mupad中关于简化的一些细节,该部分后来成为Matlab的一部分。
根据这份文件,您的假设是正确的。有一组用于操作表达式的规则。启发式质量度量被用作简化的目标函数。
发布于 2013-09-15 10:41:32
Wolfram alpha是由Mathematica开发的
如果您想了解运行的后台程序,sagemath是一个免费的开源替代方案;您可以对您的问题的解决方案进行反向工程:
https://stackoverflow.com/questions/18727737
复制相似问题