如何在网页上添加动态数学

我是一名数学老师,希望在网站中插入一些动态数学。我想要实现的是有一个按钮,学生可以按下该按钮随机改变一个问题,这样它就是同一类型的问题,但数字不同。例如, 因子形式ax ^ 2 + bx + c的二次表达式,其中a = 1,b和c是1到100之间的正整数,并且根将是实数整数。 如果我使用MathML对数学进行编码(例如,如下面的标记),存储在数据库(例如MySQL)中,我该如何设置,以便计算机自动和随机地改变数学表达式的方式我如上所述?我对服务器端脚本知之甚少...我能用PHP实现吗?或者这更像是客户端的JavaScript工作?我只是在寻找一些建议来指导我选择的学习路径。 谢谢
<math xmlns='http://www.w3.org/1998/Math/MathML'>
 <mrow>
  <msup>
   <mi>x</mi>
   <mn>2</mn>
  </msup>
  <mo>+</mo>
  <mrow>
   <mn>7</mn>
   <mo>&#8290;</mo>
   <mi>x</mi>
  </mrow>
  <mo>+</mo>
  <mn>12</mn>
 </mrow>
</math>
    
已邀请:
一种方法是在您的数据库中存储通用公式,即您给出的示例
ax^2 + bx + c
。名为
formulas
的数据库示例:
id_formulas  formula_problem      constants           type         formula_solution
1            ax^2 + bx + c = 0    a{split}b{split}c   polynomial   x = (-1*{b} + ({b}^2 - 4*{a}*{c}) ) / 2*{a} {split} x = (-1*{b} - ({b}^2 - 4*{a}*{c}) ) / 2*{a}
2            y = mx + b           b{split}m{split}y   graph        x = ({b} - {y}) / -1*{m}        
3            etc                  etc                 etc          etc
然后(psuedocode): app从数据库中检索随机
formula_problem
(任何类型或某种类型) app将随机生成的数字分配给常数,即“b = 1,m = 2,y = .5” app使用第2步中的数字交换
formula_solution
中的常量(内部
{}
,因此很容易找到) app解决x并加密答案(在二次方的情况下,有2个答案,
Split("{split}")
到数组中) 应用程序显示到Web浏览器并要求学生解决:“y = mx + b”和“b = 1,m = 2,y = .5” 应用程序还将加密的答案放在网页上的隐藏表单字段中 学生解决x,然后在文本框中键入答案,然后单击提交按钮 app将学生的解决方案与解密的隐藏解决方案进行比较 应用程序显示到Web浏览器:“正确/不正确”以及正确答案 此Web应用程序可以使用Java / C#.NET / VB.NET / PHP /任何Web技术编写。数据库可以是SQL Server / MySQL / PostgreSQL / XML /等。处理可以全部在服务器端以上述语言之一完成,或者,一旦从数据库检索数据(公式),处理就可以在客户端JavaScript中完成。 这个问题是非常开放的,因为开发人员可以采取许多方法,这取决于偏好。我个人的观点是,在客户端JavaScript与服务器端C#或PHP中编写一些这样的东西会更难。 如果您已经知道任何计算机语言,即C ++,那么选择看起来相似的脚本技术,并通过阅读书籍和在线教程/代码示例开始学习。 (对不起,我不是数学家)     
好吧,你可以使用javascript和随机数来改变系数。请查看以下Web方面,了解如何执行此操作: JavaScript:随机脚本     
我会尝试Google Mathematical(TeX)公式。它会更清洁。 如果你理解javascript,你可以做服务器端,php不是那么难。 数据库应该只存储表达式(a,b,c)的值/类型,而不是在db中存储特定于表示的东西。我会创建一个生成值a,b,c的生成器并将它们存储在db中。     
你当然可以在服务器端用PHP完成它。 PHP具有用于XML解析的内置库,在您的情况下应该是好的。很容易随机化a,b&amp; c但要始终有一个真正的答案,你必须使用其他算法来生成数字。由于你是一名数学老师,我认为你和找到这样一个算法的人一样好。 我认为你应该把工作分成不同的部分: 从MySQL获取一个问题(这很容易) 解析MathML(也许你可以找到一个库来做这个?) 生成随机数 最后一个是最难的,特别是如果你想要一个通用系统。计算机如何知道您正在寻找什么样的答案?也许你需要针对不同类型问题的特定算法,因为有时你需要一个复数,有时你需要一个正弦波。每个问题可能需要代表您采用不同的方法解决。 存在(或多或少)通用算法用于解决例如那里的多项式方程。你可能知道你职业中已有的一些方法。也许可以使用这样的算法?我想你会发现大部分的努力工作实际上都是这个项目所涉及的数学,而不是编码。 准备好通用系统可能无法实现。     
无论是服务器端还是客户端都无关紧要。我通常喜欢在客户端进行任何类型的处理,因为对于每个学生来说,它应该是随机的,没有理由为此添加服务器的处理时间。 你怎么读MySQL数据库?您可以轻松处理从该服务器端脚本返回的数据。至于如何实现它,我建议一个非常容易使用的jQuery插件:jQuery xmlObjectifier 然后流程为:学生Excersize页面加载并请求mathml xml对象,从mysql返回后,它动态加载xml,将其转换为js对象(json),然后对对象的数据执行随机化。完成后,将产品加载到学生页面上的容器中。     
这样的事情可能有所帮助:
<html>

<?php

//if the button has been pressed
if(isset($_POST['click'])){
    //generate a random number from 1 - 5 and store it in $random
$random = rand(1,5);
    //query the database for the equation with the id of $random
$result = $mysql_query("select equation from questions where id=$random");
$row = mysql_fetch_row($result);
    //print the equation
echo $row[0];
}

?>

<form method="post" action="">
<input type="submit" name="click" value="go"/>
</form>  
</html>
    
您可能想要考虑WeBWorK,这是一个由MAA管理的家庭作业管理系统。它是由数学家设计的,也是数学家的在线作业系统,它非常受欢迎。当然,它也比你要求的产品多得多。     

要回复问题请先登录注册