Introducción a la simplificación (Manual de Maxima 5.45.0)

Siguiente: Funciones y variables para simplificación, Anterior: Simplificación, Subir: Simplificación [Índice general][Índice]

### 9.1 Introducción a la simplificación

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]