2009-08-28 20 views
7

Cuando escribo una prueba o una derivación en un papel, con frecuencia hago errores de señas o dejo caer términos cuando paso de un paso al siguiente. Me gustaría utilizar Mathematica para salvarme de estos errores tontos. No quiero que Mathematica resuelva la expresión, solo quiero usarla para llevar a cabo y mostrar una serie de manipulaciones algebraicas. Para un ejemplo (trivial)¿Hay paquetes de Mathematica para presentar pruebas/derivaciones?

In[111]:= MultBothSides[Equal[a_, b_], c_] := Equal[c a, c b]; 

In[112]:= expression = 2 a == a b 

Out[112]= 2 a == a b 

In[113]:= MultBothSides[expression, 1/a] 

Out[113]= 2 == b 

¿Alguien me puede indicar un paquete que admitiría este tipo de manipulación?

Editar

Gracias por la entrada, no es lo que estoy buscando sin embargo. La manipulación del símbolo no es realmente el problema. Realmente estoy buscando algo que haga explícita la justificación algebraica o matemática de cada paso de una derivación. Mi objetivo aquí es realmente pedagógico.

+2

Lo siento, estoy un par de años tarde ... pero el pequeño paquete que menciono aquí http://stackoverflow.com/q/5701159/667867 debe hacer lo que quiera. ¡Lee la pregunta y la discusión para advertencias! – telefunkenvf14

Respuesta

3

Mathematica también proporciona una serie de funciones de alto nivel para la manipulación de algebraicos. Entre estos se encuentran Expand, Apart y Together, y Cancel, aunque hay bastantes más.

Además, para su ejemplo específico de la aplicación de la misma transformación a ambos lados de una ecuación (es decir, y la expresión con la cabeza Equal), puede utilizar la función Thread, que funciona igual que su función MultBothSides, pero con mucho más general.

In[1]:= expression = 2 a == a b 
Out[1]:= 2 a == a b 

In[2]:= Thread[expression /a, Equal] 
Out[2]:= 2 == b 

In[3]:= Thread[expression - c, Equal] 
Out[3]:= 2 a - c == a b - c 

En cualquiera de las soluciones presentadas, debería ser relativamente fácil de ver lo que el paso implicaba. Si quieres algo un poco más explícito, puede escribir su propia función, así:

In[4]:= ApplyToBothSides[f_, eq_Equal] := Map[f, eq] 

In[5]:= ApplyToBothSides[4 * #&, expression] 
Out[5]:= 8 a == 4 a b 

Es una generalización de la función MultBothSides que se aprovecha del hecho de que Map obras en expresiones con cualquier cabeza, no sólo la cabeza List. Si intenta comunicarse con una audiencia que no está familiarizada con Mathematica, usar este tipo de nombres puede ayudarlo a comunicarse más claramente. En una línea relacionada, si desea utilizar reglas de reemplazo como lo sugiere Ira Baxter, puede ser útil escribir Reemplazar o Reemplazar todo en lugar de usar el azúcar sintáctico /..

In[6]:= ReplaceAll[expression, a -> (x + y)] 
Out[6]:= 2 (x + y) == b (x + y) 

Si cree que sería más claro para tener la ecuación real, en lugar del nombre de la variable expression, en su entrada, y está usando la interfaz de bloc de notas, resaltar la palabra expression con el ratón, llamar el menú contextual, y seleccione "Evaluar en el lugar".

La interfaz de la computadora portátil es también un entorno muy agradable para realizar "programación lectora", por lo que también puede explicar cualquier paso que no sea inmediatamente obvio en palabras. Creo que esta es una buena práctica al escribir pruebas matemáticas independientemente del medio.

+1

Gracias por su respuesta. Esperaba que ya existiera un paquete enlatado a lo largo de estas líneas, pero el punto que me pones me ayudará a comenzar con mi propio paquete. –

2

No creo que necesite un paquete. Lo que quiere hacer es manipular cada fórmula de acuerdo con una regla de inferencia. En MMa, puede modelar reglas de inferencia en una fórmula usando transformaciones. Por lo tanto, si usted tiene una fórmula f, se puede aplicar una regla de inferencia que mediante la ejecución (mi sintaxis MMA es 15 años oxidadas)

f ./ I 

para producir la siguiente fórmula en su secuencia.

MMa, por supuesto, intentará simplificar sus fórmulas si contienen operadores y términos algebraicos estándar, como números constantes y operadores aritméticos. Puede evitar que MMa aplique sus propias reglas de "inferencia" adjuntando su fórmula en un formulario [...] Retener.

Cuestiones relacionadas