2010-10-23 2 views
7

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

Коэффициент квадратичного выражения вида 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> 
+0

Я не знаю точно, как трудно найти целые корни числа для квадратичного уравнения, но для меня это не похоже на работу javascript. Я думаю, что самым простым решением является создание базы данных с заранее заданными упражнениями и случайное отображение их вашим ученикам. – Jan

ответ

1

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

JavaScript: Random Scripts

+0

Буду, спасибо. – Bill

1

Я хотел бы попробовать Google Mathematical (TeX) Formulas. Это будет намного чище.

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

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

+0

Итак, вы препятствуете использованию MathML? В последнее время поддержка браузеров улучшается (особенно Firefox и IE имеют плагин MathType. – Bill

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

Я недостаточно разбираюсь в PHP, но я буду помнить об этом! Спасибо. – Bill

+0

здесь, если у вас есть уравнения, которые читаются в браузере и хранятся в базе данных, вы можете сгенерировать случайное число (5 = # ofequations) и вывести и распечатать эту строку. Код ниже - это просто кнопка, которая будет запускать верхний код. Я буду добавлять комментарии для чтения. – Orbit

+0

Благодарим за добавление комментариев к коду. – Bill

1

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

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

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

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

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

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

+0

Ну, у Firefox, похоже, есть довольно хорошая встроенная поддержка для разбора MathML, и у IE есть плагин. Я признаю, что не знаю, насколько надежным они, но демонстрации кажутся довольно впечатляющими. – Bill

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 

Тогда (psuedocode):

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

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

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

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

(извините, я не математический парень, хотя)

+0

Я понимаю, что консенсус идет по пути вставки общей формулы на сервер и вставляет конкретные данные через JavaScript на стороне клиента. Спасибо. – Bill

+1

Я не понимаю, почему вы хотите что-то сделать в JavaScript здесь. Вы также можете вставлять определенные данные, используя скрипты на стороне сервера. Я думаю, вы должны придерживаться одного языка, иначе вы столкнетесь с проблемами, когда Js и PHP разговаривают друг с другом, что мне кажется ненужным. –

+0

Я согласен с Эмилем. – JohnB

1

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

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

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

0

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