Как добавить динамическую математику на веб-страницу

Я учитель математики и хочу вставить динамическую математику на сайт. Чего я хотел бы добиться, так это иметь кнопку, которую ученик может нажимать, чтобы случайным образом изменить вопрос так, чтобы это был один и тот же тип вопроса, но с разными номерами. Например,

Фактор квадратное выражение вида 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 ответов

Одним из способов является сохранение общих формул в вашей базе данных, т.е. пример, который вы дали 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):

  1. приложение получает случайный formula_problem из базы данных (любого типа или определенного типа)
  2. приложение назначает случайным образом сгенерированные числа для констант, то есть "b = 1, m = 2, y = .5"
  3. приложение меняет константы в formula_solution с номерами из шага 2 (внутри {} так легко найти)
  4. приложение решает для х и шифрует ответ (в случае квадратичного, есть 2 ответа, Split("{split}") в массив)
  5. Приложение отображается в веб-браузере и просит ученика решить: "y = mx + b" и "b = 1, m = 2, y = .5"
  6. Приложение также помещает зашифрованный ответ в скрытое поле формы на веб-странице.
  7. студент решает для х, затем вводит ответ в текстовое поле и нажимает кнопку отправки
  8. приложение сравнивает решение студента с расшифрованным скрытым решением
  9. приложение отображает в веб-браузере: "правильно / неправильно" вместе с правильным ответом

Это веб-приложение может быть написано на Java/C#.NET/VB.NET/PHP/ любой веб-технологии. База данных может быть SQL Server/MySQL/PostgreSQL/XML/ и т. Д. Обработка может быть выполнена на стороне сервера на одном из вышеупомянутых языков, или, как только данные (формула) извлечены из базы данных, обработка может быть выполнена на клиентском JavaScript.

Этот вопрос очень открытый, потому что есть много подходов, которые разработчик может использовать, и он сводится к предпочтениям. Однако, по моему личному мнению, было бы сложнее запрограммировать некоторые из этих вещей на стороне клиента на JavaScript или на стороне сервера C# или PHP.

Если вы уже знаете какие-либо компьютерные языки, например, C++, выберите подобную технологию сценариев и начните изучать ее, читая книги и онлайн-учебники / примеры кода.

(извините, я не математик, хотя)

Что -то вроде этого может помочь:

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

Я бы попробовал математические формулы Google (TeX). Это будет намного чище.

Вы можете сделать это на стороне сервера, если вы понимаете JavaScript, php не так уж и сложен.

База данных должна хранить только значения / тип выражения (a,b,c), вы не должны хранить специфичные для презентации вещи в БД. Я бы сделал генератор, который создает значения a, b, c и сохраняет их в БД.

Не должно иметь большого значения, делать это на стороне сервера или на стороне клиента. Я обычно предпочитаю выполнять какую-либо обработку на стороне клиента, поскольку она должна быть случайной для каждого учащегося, поэтому нет причин добавлять для этого время обработки сервером.

Как вы читаете из базы данных MySQL? Вы можете легко работать с данными, возвращаемыми из этого серверного скрипта. Что касается того, как его реализовать, я бы предложил плагин jQuery, который должен быть очень простым в использовании: jQuery xmlObjectifier

Затем выполняется процесс: страница ученика Excersize загружается и запрашивает объект mathml xml, после возвращения из mysql он динамически загружает xml, преобразует его в объект js (json) и затем выполняет рандомизацию данных объекта. После завершения он загружает продукт в контейнер на странице студента.

Ну, вы можете использовать JavaScript и случайные числа, чтобы варьировать коэффициенты. Посмотрите на следующую веб-страницу для хорошего урока о том, как это сделать:

JavaScript: случайные скрипты

Конечно, вы можете сделать это в PHP на стороне сервера. PHP имеет встроенные библиотеки для разбора XML, что должно быть хорошо в вашем случае. Легко просто рандомизировать a, b & c, но чтобы всегда иметь реальный ответ, вы должны использовать какой-то другой алгоритм для генерации чисел. Так как вы учитель математики, я думаю, вы так же хороши, как и все, в поиске такого алгоритма.

Я думаю, что вы должны разделить работу на несколько частей:

  • Получить вопрос из MySQL (это легко)
  • Разбор MathML (может быть, вы можете найти библиотеку для этого?)
  • Генерация случайных чисел

Последний самый сложный, особенно если вы хотите общую систему. Как компьютер узнает, какой ответ вы ищете? Возможно, вам нужен конкретный алгоритм для разных типов вопросов, потому что иногда вам нужно комплексное число, а иногда вам нужна синусоида. Каждый вопрос может быть решен с помощью другого подхода от вашего имени.

Существуют (более или менее) общие алгоритмы для решения, например, полиномиальных уравнений. Вы, наверное, знаете некоторые подходы уже в вашей профессии. Может быть, такой алгоритм можно использовать? Я думаю, вы обнаружите, что большая часть тяжелой работы - это математика, вовлеченная в этот проект, а не кодирование.

Будьте готовы к тому, что общая система может оказаться невозможной.

Возможно, вы захотите рассмотреть WeBWorK, систему управления домашним заданием, которая в настоящее время администрируется MAA. Он спроектирован математиками и для него как система домашней работы онлайн, и он довольно популярен. Конечно, это также намного больше продукта, чем вы просите.

Другие вопросы по тегам