这个问题有一些很好的回答,但已经moved to a more appropriate forum at this link.
在线系统,如ALEKS,Cengage的WebAssign,甚至可汗学院都对多项式表达式和数值(即分数)采用某种逻辑匹配。存在哪些可以提供表达/数字匹配的未付工具(库,命令行程序,脚本等)?例如,学生输入表达式
但以下表达式是等效的,也是可以接受的:
关于如何以数学方式执行此操作的问题在this post中有一个很好的答案,并且针对实现此问题的一种特定方式的问题在this post中有部分答案。 Sympy看起来很有希望,但命令行Maxima可以工作,WolframAlpha API,Maple,MatLab和任何数量的符号计算机代数系统也可以工作。
谈论“可以工作”的事情,但是已经使用了哪些工具?这是如何实现的?任何人都可以从有关在线数学学习程序在后端使用的经验谈话吗?举例或直接指示现有项目。
为了澄清这个问题,我在谈论逻辑上比较简单表达(中/高中数学),最简单的复杂,以及通常容易获得的规范形式。实现将在线(html + nifty_tool)并且输入很可能被捕获为字符串,除非有人可以为数学学习者建议更好的输入法 - 也许是LaTeX前端?
答案 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)似乎有相当多的流量,所以如果你遇到问题,可以在那里寻求帮助。