用于简单数学表达式等价逻辑的现有工具

时间:2018-05-17 00:28:03

标签: matlab math sympy symbolic-math

这个问题有一些很好的回答,但已经moved to a more appropriate forum at this link.

在线系统,如ALEKS,Cengage的WebAssign,甚至可汗学院都对多项式表达式和数值(即分数)采用某种逻辑匹配。存在哪些可以提供表达/数字匹配的未付工具(库,命令行程序,脚本等)?例如,学生输入表达式

enter image description here

但以下表达式是等效的,也是可以接受的:

enter image description here

关于如何以数学方式执行此操作的问题在this post中有一个很好的答案,并且针对实现此问题的一种特定方式的问题在this post中有部分答案。 Sympy看起来很有希望,但命令行Maxima可以工作,WolframAlpha API,Maple,MatLab和任何数量的符号计算机代数系统也可以工作。

谈论“可以工作”的事情,但是已经使用了哪些工具?这是如何实现的?任何人都可以从有关在线数学学习程序在后端使用的经验谈话吗?举例或直接指示现有项目。

为了澄清这个问题,我在谈论逻辑上比较简单表达(中/高中数学),最简单的复杂,以及通常容易获得的规范形式。实现将在线(html + nifty_tool)并且输入很可能被捕获为字符串,除非有人可以为数学学习者建议更好的输入法 - 也许是LaTeX前端?

2 个答案:

答案 0 :(得分:2)

假设您可以将学生的输入翻译成Python,那么在大多数情况下验证表达式是否相等就足够了。例如,

>>> from sympy import *
>>> var('p')
p
>>> f_1 = 2*p**2*(p+5)-8
>>> f_2 = 2*(p**2+4*p-4)*(p+1)
>>> f_1.expand()==f_2.expand()
True

如果您有一个输入小部件,使学生能够输入问题中显示的那种表达式,并输出LaTeX,那么您可以使用https://github.com/alvinwan/tex2py之类的解析器来获取你需要的同情心。

答案 1 :(得分:1)

看看STACK,这是一个评估学生数学答案的自动化系统。 STACK基于Maxima。主要网站似乎是:http://www.stack.ed.ac.uk/

我找到了一些可能对您感兴趣的其他链接:

我实际上不确定STACK如何利用Maxima来确定答案是否正确。如果答案的形式无关紧要,那么ratsimp(answer - expected)如果answer等同于expected,则{0}应为0。但如果必须验证答案的形式,则比较变得更加复杂。我可以想象一些方法,但我不知道STACK究竟做了什么。

我看到Github项目的问题论坛(https://github.com/maths/moodle-qtype_stack/issues)似乎有相当多的流量,所以如果你遇到问题,可以在那里寻求帮助。