用于简单数学表达式等价逻辑的现有工具
Existing Tools for Simple Math Expression Equivalence Logic
这个问题有一些很好的回答,但是 moved to a more appropriate forum at this link.
在线系统,例如 ALEKS、Cengage 的 WebAssign,甚至 Khan Academy 都对多项式表达式和数值(即分数)采用某种逻辑匹配。存在哪些可以提供 expression/numerical 匹配的免费工具(库、命令行程序、脚本等)?例如,学生输入表达式
但是下面的表达式是等价的,也是可以接受的:
关于如何从数学上做到这一点的问题在 this post, and a question addressing one particular way to implement this has a partial answer in this post. Sympy 中有一个很好的答案看起来很有希望,但命令行 Maxima 可以工作,WolframAlpha API、Maple、MatLab 和任意数量的符号计算机代数系统。
谈论 "could work" 的事情很好,但是已经使用了哪些工具?这是如何实施的?任何人都可以根据经验谈谈后端使用的在线数学学习程序吗?举例说明或直接针对现有项目。
为了澄清这个问题,我说的是在逻辑上比较简单的表达式(middle/high 学校数学),最简单,规范的形式通常很容易获得。该实现将在线(html+nifty_tool)并且输入很可能会被捕获为字符串,除非有人可以为数学学习者建议更好的输入法 - 也许是 LaTeX 前端?
假设您可以将学生的输入翻译成 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 之类的解析器来获取 sympy 所需的输入。
看看 STACK,这是一个用于评估学生数学答案的自动化系统。 STACK 基于 Maxima。主要网站似乎是:http://www.stack.ed.ac.uk/
我发现了一些您可能感兴趣的其他链接:
- STACK 的 Moodle 插件:https://moodle.org/plugins/qtype_stack
- Moodle 插件资源位于 Github:https://github.com/maths/moodle-qtype_stack
- 关于 STACK 如何使用 Maxima 的一些描述:https://github.com/maths/moodle-qtype_stack/blob/master/doc/en/CAS/Maxima.md
我实际上不确定 STACK 如何使用 Maxima 来确定答案是否正确。如果答案的形式无关紧要,那么如果 answer
等同于 expected
,则 ratsimp(answer - expected)
应该为 0。但如果答案的形式也必须验证,比较就变得更加复杂。我可以想象一些方法来做到这一点,但我不知道 STACK 实际上做了什么。
我看到 Github 项目 (https://github.com/maths/moodle-qtype_stack/issues) 的问题论坛似乎有相当多的访问量,所以如果您 运行 遇到问题,您可以寻求帮助那里。
这个问题有一些很好的回答,但是 moved to a more appropriate forum at this link.
在线系统,例如 ALEKS、Cengage 的 WebAssign,甚至 Khan Academy 都对多项式表达式和数值(即分数)采用某种逻辑匹配。存在哪些可以提供 expression/numerical 匹配的免费工具(库、命令行程序、脚本等)?例如,学生输入表达式
但是下面的表达式是等价的,也是可以接受的:
关于如何从数学上做到这一点的问题在 this post, and a question addressing one particular way to implement this has a partial answer in this post. Sympy 中有一个很好的答案看起来很有希望,但命令行 Maxima 可以工作,WolframAlpha API、Maple、MatLab 和任意数量的符号计算机代数系统。
谈论 "could work" 的事情很好,但是已经使用了哪些工具?这是如何实施的?任何人都可以根据经验谈谈后端使用的在线数学学习程序吗?举例说明或直接针对现有项目。
为了澄清这个问题,我说的是在逻辑上比较简单的表达式(middle/high 学校数学),最简单,规范的形式通常很容易获得。该实现将在线(html+nifty_tool)并且输入很可能会被捕获为字符串,除非有人可以为数学学习者建议更好的输入法 - 也许是 LaTeX 前端?
假设您可以将学生的输入翻译成 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 之类的解析器来获取 sympy 所需的输入。
看看 STACK,这是一个用于评估学生数学答案的自动化系统。 STACK 基于 Maxima。主要网站似乎是:http://www.stack.ed.ac.uk/
我发现了一些您可能感兴趣的其他链接:
- STACK 的 Moodle 插件:https://moodle.org/plugins/qtype_stack
- Moodle 插件资源位于 Github:https://github.com/maths/moodle-qtype_stack
- 关于 STACK 如何使用 Maxima 的一些描述:https://github.com/maths/moodle-qtype_stack/blob/master/doc/en/CAS/Maxima.md
我实际上不确定 STACK 如何使用 Maxima 来确定答案是否正确。如果答案的形式无关紧要,那么如果 answer
等同于 expected
,则 ratsimp(answer - expected)
应该为 0。但如果答案的形式也必须验证,比较就变得更加复杂。我可以想象一些方法来做到这一点,但我不知道 STACK 实际上做了什么。
我看到 Github 项目 (https://github.com/maths/moodle-qtype_stack/issues) 的问题论坛似乎有相当多的访问量,所以如果您 运行 遇到问题,您可以寻求帮助那里。