Siguiente: Funciones y variables para simplificación, Anterior: Simplificación, Subir: Simplificación [Índice general][Índice]
Tras la evaluación de una expresión se procede a su simplificación. Las
funciones matemáticas que involucran cálculos simbólicos y las expresiones con
operadores aritméticos no son evaluadas, sino simplificadas, para lo cual Maxima
las representa internamente en forma nominal; de ahí que el
cálculo numérico de una suma o de una multiplicación no se considera una
evaluación, sino una simplificación. La evaluación de una expresión
puede inhibirse con el operador de comilla simple ('
) y su simplificación
se puede controlar con el valor asignado a la variable opcional simp
.
En el siguiente ejemplo, se evita la simplificación con el operador de comilla
simple, siendo el resultado una expresión nominal. A continuación, se inhibe la
simplificación tras la evaluación de la derivada, dejando sin reducir el resultado
a 2*x
.
(%i1) 'diff(x*x,x); d 2 (%o1) -- (x ) dx (%i2) simp:false; (%o2) false (%i3) diff(x*x,x); (%o3) 1 x + 1 x
Para cada función u operador matemático dispone Maxima de una rutina interna que será utilizada para su simplificación siempre que se la encuentre en una expresión. Estas rutinas implementan propiedades simétricas, valores especiales de las funciones y otras propiedades y reglas. La gran cantidad de variables opcionales permiten mantener bajo control la simplificación de funciones y operadores.
Veamos un ejemplo. La simplificación de la función exponencial exp
se controla con las siguientes variables opcionales: %enumer
, %emode
,
%e_to_numlog
, code
, logsimp
y demoivre
.
En el primer caso la expresión con la función exponencial no se simplifica,
pero en el segundo se reduce a %i*%pi/2
.
(%i1) exp(x+%i*%pi/2), %emode:false; %i %pi x + ------ 2 (%o1) %e (%i2) exp(x+%i*%pi/2), %emode:true; x (%o2) %i %e
Junto con la simplificación aislada de funciones y operadores que Maxima
realiza de forma automática, existen también funciones como expand
o radcan
que realizan sobre las expresiones simplificaciones
especiales. Sigue un ejemplo:
(%i1) (log(x+x^2)-log(x))^a/log(1+x)^(a/2); 2 a (log(x + x) - log(x)) (%o1) ----------------------- a/2 log(x + 1) (%i2) radcan(%); a/2 (%o2) log(x + 1)
A un operador o función se le pueden asignar propiedades tales como la
linealidad, la simetría u otras. Maxima tiene en cuenta
estas propiedades durante la simplificación. Por ejemplo, la instrucción
declare(f, oddfun)
declara la función como impar, con lo que
Maxima sabrá que las formas f(-x)
y -f(x)
son equivalentes,
llevando a cabo la reducción oportuna.
Las siguientes propiedades están en la lista opproperties
y controlan
la simplificación de funciones y operadores:
additive lassociative oddfun antisymmetric linear outative commutative multiplicative rassociative evenfun nary symmetric
Tanto las propiedades como los hechos (o hipótesis) establecidos por el usuario dentro de un contexto influyen sobre el proceso de simplificación. Para más detalles véase el capítulo sobre la base de datos de Maxima.
La función seno reduce los múltiplos enteros de %pi
al valor cero.
En este ejemplo se muestra cómo al dotar al símbolo
n
de la propiedad de ser entero, la función se simplifica de la forma
apropiada.
(%i1) sin(n*%pi); (%o1) sin(%pi n) (%i2) declare(n, integer); (%o2) done (%i3) sin(n*%pi); (%o3) 0
Si las técnicas anteriores no devuelven el resultado esperado por el usuario, éste puede extender a voluntad las reglas que pueda aplicar Maxima; para más información al respecto, véase el capítulo dedicado a las reglas y patrones.
Siguiente: Funciones y variables para simplificación, Anterior: Simplificación, Subir: Simplificación [Índice general][Índice]