2010-10-23 18 views
7

Sono un insegnante di matematica che desidera inserire una matematica dinamica in un sito Web. Quello che mi piacerebbe ottenere è di avere un pulsante che uno studente può premere per variare casualmente una domanda in modo che sia lo stesso tipo di domanda, ma con numeri diversi. Ad esempio,come aggiungere matematica dinamica alla pagina web

Fattore l'espressione quadratica dell'asse di forma^2 + bx + c, dove a = 1 e b e c sono numeri interi positivi compresi tra 1 e 100 e tali che le radici siano numeri interi reali.

Se sto utilizzando MathML per codificare la matematica (ad esempio, come la marcatura di seguito), memorizzato in un database (ad esempio, MySQL), come posso impostare le cose in modo che il computer automaticamente e casualmente varia l'espressione matematica nel modo in cui ho descritto sopra? Non so molto sullo scripting lato server ... potrei ottenere questo con PHP? O sarebbe più un lavoro di JavaScript sul lato client? Sto solo cercando qualche consiglio per guidare la mia scelta del percorso di studio. Grazie

<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

Non so esattamente quanto sia difficile trovare radici di numeri interi per un'equazione quadratica, ma per me non sembra un lavoro javascript. Penso che la soluzione più semplice sia creare un database con esercizi predefiniti e mostrarli casualmente ai tuoi studenti. – Jan

risposta

1

Beh, è ​​possibile utilizzare JavaScript e casuali numeri di variare i coefficienti. Date un'occhiata al seguente lato web per agood lezione su come fare questo:

JavaScript: Random Scripts

+0

Lo farò, grazie. – Bill

1

vorrei provare il Google Mathematical (TeX) Formulas. Sarà molto più pulito.

È possibile farlo lato server se si capisce javascript, php non è così difficile.

Il database deve memorizzare solo i valori/tipo di espressione (a, b, c) in cui non è possibile memorizzare elementi specifici della presentazione nel db. Farei un generatore che crea i valori a, b, c e li memorizza nel db.

+0

Quindi si scoraggia l'uso del MathML? Il supporto del browser sembra essere migliorato di recente (in particolare Firefox, e IE ha un plugin "MathType". – Bill

1

qualcosa di simile potrebbe aiutare:

<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

Non sono abbastanza esperto in PHP per farlo, ma lo terrò a mente! Grazie. – Bill

+0

Non molto qui, se si dispone di equazioni leggibili dal browser e memorizzate in un database, è possibile generare un numero casuale (5 = # diequazioni) e tirare e stampare quella riga, il codice riportato di seguito è solo un pulsante che attiverà il codice principale. Aggiungerò commenti per la leggibilità – Orbit

+0

Grazie per aver aggiunto i commenti del codice – Bill

1

Si può certamente farlo in PHP sul lato server. PHP ha librerie incorporate per l'analisi XML che dovrebbero essere utili nel tuo caso. È facile randomizzare a, b & c ma per avere sempre una risposta reale è necessario utilizzare qualche altro algoritmo per generare i numeri. Dato che sei un insegnante di matematica, penso che tu sia bravo come chiunque altro nel trovare un tale algoritmo.

Penso che si dovrebbe dividere il lavoro fino in diverse parti: (? Forse si può trovare una libreria per fare questo)

  • Fetch una domanda da MySQL (questo è facile)
  • Analizzare il MathML
  • Generare i numeri casuali

l'ultima è la più difficile, soprattutto se si vuole un sistema generico. Come fa il computer a sapere che tipo di risposta stai cercando? Forse hai bisogno di un algoritmo specifico per diversi tipi di domande, perché a volte vuoi un numero complesso, ea volte hai bisogno di un'onda sinusale. Ogni domanda potrebbe dover essere risolta con un approccio diverso a tuo nome.

Ci sono (più o meno) algoritmi generici per risolvere per es. equazioni polinomiali là fuori. Probabilmente conosci già alcuni degli approcci nella tua professione. Forse un tale algoritmo può essere usato? Penso che scoprirai che la maggior parte del duro lavoro è in realtà la matematica coinvolta in questo progetto, non la codifica.

Essere preparati che un sistema generico potrebbe non essere possibile.

+0

Bene, Firefox sembra avere un buon supporto integrato per l'analisi MathML e IE ha un plug-in. Ammetto che non so quanto sia affidabile lo sono, ma le demo sembrano piuttosto impressionanti – Bill

3

Un modo è quello di memorizzare formule generiche nel database, ad esempio nell'esempio fornito ax^2 + bx + c. Esempio di database denominato 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 

Poi (psuedocodarlo):

  1. app recupera una casuale formula_problem da database (qualsiasi tipo, o di un certo tipo)
  2. app assegna numeri generati casualmente a costanti, ovvero "b = 1, m = 2, y = .5"
  3. costanti di scambio di app in formula_solution con numeri dal passaggio 2 (all'interno di {} così facile da trovare)
  4. app risolve per x e crittografa risposta (nel caso del quadratica, ci sono 2 risposte, Split("{split}") nella matrice)
  5. applicazione visualizza al browser web e chiede studente di risolvere: "y = mx + b" e "b = 1, m = 2, y = 0,5"
  6. applicazione mette anche la risposta codificata in un campo di modulo nascosto sulla pagina web
  7. studente risolve per x, poi i tipi rispondere nella casella di testo e clic pulsante di invio
  8. l'app confronta la soluzione dello studente con la soluzione nascosta decrittata
  9. app visualizza sul browser web: "corretto/errato" con risposta corretta

Questa applicazione Web può essere scritta in Java/C#. NET/VB.NET/PHP/qualsiasi tecnologia web. Il database può essere SQL Server/MySQL/PostgreSQL/XML/etc. L'elaborazione può essere eseguita dal lato server in una delle lingue sopra menzionate, oppure, una volta che i dati (formula) sono stati recuperati dal database, l'elaborazione può essere eseguita sul lato client JavaScript.

Questa domanda è molto aperta perché ci sono molti approcci che uno sviluppatore potrebbe prendere, e si riduce alle preferenze. La mia opinione personale è che sarebbe più difficile programmare alcune di queste cose nel lato client JavaScript rispetto al lato server C# o in PHP.

Se conosci già qualche linguaggio informatico, cioè C++, scegli una tecnologia di scripting simile e inizia a studiare leggendo libri ed esercitazioni online/esempi di codice.

+0

Ho capito che il consenso è sulla falsariga di inserire la formula generica sul server, e inserire i dati specifici tramite JavaScript sul lato client. Grazie. – Bill

+1

Non capisco perché vuoi fare qualcosa in JavaScript qui. È possibile inserire dati specifici anche usando lo scripting lato server. Penso che dovresti restare con una sola lingua, altrimenti entrerai nei guai di far parlare Js e PHP l'un con l'altro, il che non mi sembra necessario. –

+0

Sono d'accordo con Emil. – JohnB

1

non dovrebbe importa molto se farlo server o client side (io non sono un ragazzo di matematica anche se mi dispiace). Di solito preferisco eseguire qualsiasi tipo di elaborazione dal lato client poiché dovrebbe essere casuale per ogni studente, non c'è motivo di aggiungere tempo di elaborazione del server per questo.

Come si legge dal database MySQL? Si potrebbe facilmente lavorare con i dati restituiti da quello script lato server.Per quanto riguarda il modo di implementarlo suggerisco un plugin jQuery che dovrebbe essere molto facile da usare: jQuery xmlObjectifier

Il flusso è quindi: La pagina di Student Excersize è caricata e richiede l'oggetto xml mathml, dopo averlo restituito da mysql carica dinamicamente l'xml, lo trasforma in un oggetto js (json) e quindi esegue la randomizzazione sui dati dell'oggetto. Al termine, carica il prodotto in un contenitore sulla pagina dello studente.

0

Si potrebbe prendere in considerazione WeBWorK, un sistema di gestione dei compiti a casa ora amministrato dal MAA. È progettato da e per i matematici come un sistema di compiti online, ed è abbastanza popolare. Naturalmente, è anche molto più prodotto di quello che chiedi.