Cómo hacer infinitas preguntas a partir de una
Esto es fácil de hacer por medio de números aleatorios, y para ello haremos uso del campo de variables de pregunta opcional.
Ejemplo 1
Duplica la pregunta que hemos creado y dale a la copia un nuevo nombre.
STACK utiliza la sintaxis de asignación de Maxima, que es inusual. En particular, usa ":" para asignar un valor a una variable. Entonces, para asignar el valor de 5 a n, usamos la sintaxis n:5.
Modifica las variables de la pregunta del ejemplo anterior para que p:(x-1)^3;
Luego cambia el texto de la pregunta a
Deriva {@p@} con respecto a \\(x\\). [[input:ans1]] [[validation:ans1]]
y en las entradas cambia la respuesta modelo a diff(p,x).
Observa que ahora hemos definido una variable local p y usado su valor en el texto de la pregunta. La diferencia está entre las matemáticas encerradas entre los símbolos $ y @. Todos los campos basados en texto en la pregunta, incluida la retroalimentación, son texto CAS. Este es HTML en el que se pueden insertar matemáticas. LaTeX se coloca entre $, y las expresiones CAS (incluidas tus variables) entre @. Hay más información en la documentación específica. Las expresiones CAS se evalúan en el contexto de las variables aleatorias y se muestran.
Dado que hemos usado @p@ aquí, el usuario no verá una p en la pantalla cuando se instancie la pregunta, sino el valor asignado a p.
Observa también que en la respuesta modelo hay un comando CAS para diferenciar el valor de p con respecto a x. Es necesario para que el CAS calcule la respuesta en una pregunta aleatoria. Ahora debes pasar por el árbol de respuesta potencial para usar la variable p o diff(p,x) (o tal vez alguna otra expresión CAS) según corresponda.
Ahora estamos en condiciones de generar una pregunta aleatoria. Para hacer esto, modifica las variables de la pregunta para que sean
n:2+rand(3);
p:(x-1)^n;
En este nuevo ejemplo, tenemos una variable adicional n que se define como un número aleatorio.
Esto luego se usa para definir la variable p que a su vez se usa en la pregunta misma.
Al generar preguntas aleatorias en CAS, hablamos de números aleatorios cuando en realidad queremos decir números pseudoaleatorios. Para llevar un registro de qué números aleatorios se generan para cada usuario, hay un comando especial en STACK, que debes usar en lugar del comando random de Maxima. Este es el comando rand que también se puede usar para hacer selecciones de una lista.
La nota de la pregunta permite al profesor hacer un seguimiento de qué versión de la pregunta se da a cada estudiante. Dos versiones son iguales si y solo si la nota de la pregunta es la misma. Por lo tanto, una pregunta aleatoria no puede tener una nota de pregunta vacía.
Completa esto como
dd@x@@p@=@diff(p,x)@d@x@d@p@=@diff(p,x)@
Es crucial hacer esto ahora ya que las preguntas con rand() en las variables de pregunta no pueden tener una nota de pregunta vacía. Al hacerlo ahora, evitamos frustraciones posteriores cuando sería imposible distinguir entre versiones aleatorias de una pregunta.
Edita tu pregunta de prueba, guárdala y previsualízala para obtener nuevas versiones aleatorias de la pregunta.
Ejemplo 2
Crea una nueva pregunta.
Probemos ahora con un ejemplo que contiene números aleatorios, y también algunas variables y expresiones seleccionadas de una lista.
n:rand(5)+3;
v:rand([x,s,t]);
p:rand([sin(n*v),cos(n*v)]);
Luego cambia el texto de la pregunta a
Deriva @p@ con respecto a @v@ . [[input:ans1]] [[validation:ans1]]
Una vez más, necesitamos usar expresiones como diff(p,v) en todo el árbol de respuesta potencial, e incluso diff(ans1,v).
Elimina el Nodo 3. Las pruebas de forma factorizada ya no tienen sentido en el contexto de esta pregunta.
A menudo es una buena idea usar variables en la pregunta desde el principio, incluso si no hay intención de generar una pregunta aleatoria inicialmente. Además, a medida que las preguntas se vuelven cada vez más complejas, es una buena práctica comentar las líneas complicadas en el código de Maxima en las variables de la pregunta y en las variables de retroalimentación, para hacer el código más fácil de leer para cualquier persona que desee editar la pregunta. Los comentarios se ingresan de la siguiente manera:
v:rand([x,s,t]) /* Establecer v aleatoriamente en x, s o t */.
También necesitarás actualizar la nota de la pregunta para que sea
dd@v@@p@=@diff(p,v)@d@v@d@p@=@diff(p,v)@