如何将动态数学添加到网页

时间:2010-10-23 14:48:41

标签: math mathml database-driven

我是一名数学老师,希望在网站中插入一些动态数学。我想要实现的是有一个按钮,学生可以按下该按钮随机改变一个问题,这样它就是同一类型的问题,但数字不同。例如,

表示形式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>

7 个答案:

答案 0 :(得分:3)

一种方法是在数据库中存储通用公式,即您提供的示例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

然后(伪代码):

  1. app从数据库中检索随机formula_problem(任何类型或某种类型)
  2. app将随机生成的数字分配给常量,即“b = 1,m = 2,y = .5”
  3. app将formula_solution中的常量与第2步中的数字交换({}内部很容易找到)
  4. app解决 x 并加密答案(在二次方的情况下,有2个答案,Split("{split}")到数组中)
  5. 应用程序显示到网络浏览器并要求学生解决:“y = mx + b”和“b = 1,m = 2,y = .5”
  6. app还会将加密答案放在网页上的隐藏表单字段中
  7. 学生解决 x ,然后在文本框中输入答案,然后点击提交按钮
  8. app将学生的解决方案与解密的隐藏解决方案进行比较
  9. 应用程序显示到网络浏览器:“正确/不正确”以及正确答案
  10. 此Web应用程序可以用Java / C#.NET / VB.NET / PHP /任何Web技术编写。数据库可以是SQL Server / MySQL / PostgreSQL / XML /等。处理都可以在服务器端以上述语言之一完成,或者,一旦从数据库中检索数据(公式),处理就可以在客户端JavaScript中完成。

    这个问题是非常开放的,因为开发人员可以采取许多方法,这取决于偏好。我个人的观点是,在客户端JavaScript与服务器端C#或PHP中编写一些这样的东西会更难。

    如果您已经了解任何计算机语言,即C ++,那么选择看起来相似的脚本技术,并通过阅读书籍和在线教程/代码示例开始学习。

    (抱歉,我不是数学家)

答案 1 :(得分:1)

好吧,您可以使用javascript和随机数来改变系数。请查看以下Web方面,了解如何执行此操作:

JavaScript: Random Scripts

答案 2 :(得分:1)

我会尝试Google Mathematical (TeX) Formulas。它会更清洁。

如果您了解javascript,那么您可以在服务器端执行此操作,而php并不是那么难。

数据库应该只存储表达式(a,b,c)的值/类型,而不是在db中存储特定于表示的东西。我会创建一个生成值a,b,c并将它们存储在db中的生成器。

答案 3 :(得分:1)

这样的事情可能会有所帮助:

<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>

答案 4 :(得分:1)

你当然可以在服务器端用PHP完成。 PHP具有用于XML解析的内置库,在您的情况下应该是好的。很容易随机化a,b&amp; c但要始终有一个真正的答案,你必须使用其他算法来生成数字。既然你是一名数学老师,我认为你和找到这样算法的人一样好。

我认为你应该把工作分成不同的部分:

  • 从MySQL获取问题(这很容易)
  • 解析MathML(也许您可以找到一个库来执行此操作?)
  • 生成随机数

最后一个是最难的,特别是如果你想要一个通用系统。计算机如何知道您正在寻找什么样的答案?也许你需要针对不同类型问题的特定算法,因为有时你需要一个复数,有时你需要一个正弦波。每个问题可能需要代表您采用不同的方法解决。

有(或多或少)通用算法用于解决,例如那里的多项式方程。你可能知道你职业中已有的一些方法。也许可以使用这样的算法?我想你会发现大部分的努力工作实际上都是这个项目涉及的数学,而不是编码。

准备好通用系统可能无法实现。

答案 5 :(得分:1)

无论是服务器端还是客户端都无关紧要。我通常喜欢在客户端进行任何类型的处理,因为对于每个学生来说,它应该是随机的,没有理由为此添加服务器的处理时间。

你如何阅读MySQL数据库?您可以轻松处理从该服务器端脚本返回的数据。至于如何实现它,我建议一个非常容易使用的jQuery插件:jQuery xmlObjectifier

然后流程:学生Excersize页面加载并请求mathml xml对象,从mysql返回后,它动态加载xml,将其转换为js对象(json),然后对对象的数据执行随机化。完成后,将产品装入学生页面的容器中。

答案 6 :(得分:0)

您可能需要考虑WeBWorK,这是一个由MAA管理的家庭作业管理系统。它是由数学家设计的,也是数学家的在线作业系统,它非常受欢迎。当然,这也是你要求的产品。