<TeXmacs|1.0.0.8>

<style|<tuple|article|maxima>>

<\body>
  <\expand|make-title>
    <title|Introducción a Maxima>

    <author|Richard H. Hand (Universidad de Cornell)>

    <name|Traducción española : Pablo Ruiz Múzquiz>

    <\address>
      <\with|paragraph mode|center>
        e-mail : <verbatim|pabloruiz@gnu.org>\ 
      </with>

      <with|font|palatino|<with|paragraph mode|center|Versión 1.0, 16 de
      Junio de 2002>>
    </address>
  </expand>

  Este artículo es la traducción al español de un documento de introducción a
  Maxima, escrito por Richard Hand, de la Universidad de Cornell. Como texto
  de apoyo se ha utilizado una traducción al francés de este mismo documento
  realizada por Michel Gosse (michel.gosse@ac-poitiers.fr).

  Este documento se ha escrito utilizando el programa <TeXmacs> (ver
  <verbatim|http://www.texmacs.org>), que dispone de un interfaz con Maxima y
  permite una presentación en notación matemática estándar de los resultados
  producidos por este programa de cálculo simbólico.

  <\expand|table-of-contents|toc>
    <vspace*|1fn><with|font series|<quote|bold>|math font
    series|<quote|bold>|1<space|2spc>Introducción><value|toc-dots><pageref|to\
    c-1><vspace|0.5fn>

    <vspace*|1fn><with|font series|<quote|bold>|math font
    series|<quote|bold>|2<space|2spc>Las teclas y símbolos
    especiales><value|toc-dots><pageref|toc-2><vspace|0.5fn>

    <vspace*|1fn><with|font series|<quote|bold>|math font
    series|<quote|bold>|3<space|2spc>Aritmética><value|toc-dots><pageref|toc-\
    3><vspace|0.5fn>

    <vspace*|1fn><with|font series|<quote|bold>|math font
    series|<quote|bold>|4<space|2spc>Álgebra><value|toc-dots><pageref|toc-4><\
    vspace|0.5fn>

    <vspace*|1fn><with|font series|<quote|bold>|math font
    series|<quote|bold>|5<space|2spc>Cálculo
    diferencial><value|toc-dots><pageref|toc-5><vspace|0.5fn>

    <vspace*|1fn><with|font series|<quote|bold>|math font
    series|<quote|bold>|6<space|2spc>Cálculo
    matricial><value|toc-dots><pageref|toc-6><vspace|0.5fn>

    <vspace*|1fn><with|font series|<quote|bold>|math font
    series|<quote|bold>|7<space|2spc>Programar en
    Maxima><value|toc-dots><pageref|toc-7><vspace|0.5fn>

    <vspace*|1fn><with|font series|<quote|bold>|math font
    series|<quote|bold>|8<space|2spc>Una lista parcial de funciones de
    Maxima><value|toc-dots><pageref|toc-8><vspace|0.5fn>
  </expand>

  <section|Introducción>

  Para arrancar Maxima en Windows, haga doble clic sobre el fichero
  <with|font family|tt|xmaxima>, que está situado dentro del directorio de
  instalación del programa. En GNU/Linux, uno puede escribir en una consola
  bien <with|font family|tt|maxima>, que arrancará el programa en modo texto,
  o bien <with|font family|tt|xmaxima>, que lo arrancará en modo gráfico. Si
  se desea arrancar Maxima dentro de una sesión de <TeXmacs> vaya a
  <strong|Insert> (Insertar) en el menú, seleccione <strong|session> (sesión)
  y finalmente <strong|maxima>. En todos los casos, se obtiene un mensaje
  semejante a:

  <\session|maxima|default>
    <\output>
      GCL (GNU Common Lisp) \ Version(2.4.0) Wed May \ 9 12:02:00 CDT 2001

      Licensed under GNU Library General Public License

      Contains Enhancements by W. Schelter

      Maxima 5.6 Thu Mar 8 08:08:39 CDT 2002 (with enhancements by W.
      Schelter).

      Licensed under the GNU Public License (see file COPYING)

      \;
    </output>

    <\input|<\with|color|red>
      (C1) <with|color|black|>
    </with>>
      \;
    </input>
  </session>

  (C1) es una <em|etiqueta>. Cada entrada o salida está numerada y es posible
  referirse a ella por su etiqueta durante el transcurso de la sesión de
  maxima. La C indica una entrada (<em|Command>) y la D una salida
  (<em|Display>). No se podrán emplear nunca variables como C1 o D5, ya que
  se prestaría a confusión.

  Maxima no distingue entre los caracteres en mayúsculas y minúsculas; Si se
  introduce <with|font family|tt|sin(x)> o <with|font family|tt|SIN(x)>,
  ambas designarán la función <em|seno> para el programa. Por contra, en las
  respuestas que el programa envía (etiquetas D), Maxima empleará
  sistemáticamente una notación en mayúsculas. Esta regla <strong|no> se
  aplica a las variables definidas por el usuario; por ejemplo, las variables
  <with|font family|tt|x> y <with|font family|tt|X> se consideran distintas
  en Maxima. Le invitamos a probar...

  <section|Las teclas y símbolos especiales>

  <\expand|enumerate-numeric>
    <\with|line stretch|0.3cm>
      <\with|line stretch|0cm>
        <item>Para finalizar una sesión de Maxima, escriba <with|font
        family|tt|<with|font|pandora|quit();>>. Si, por el contrario, escribe
        CTRL C, esto es lo que ocurrirá:\ 

        <\code>
          Correctable error : Console interrupt

          Signalled by Macysgma-top-level

          If continued : Type :r to resume execution, or :q to quit to top
          level

          Broken at SYSTEM:TERMINAL-INTERRUPT

          Type :H for Help

          Maxima\<gtr\> \<gtr\>:q

          (C1)
        </code>

        <\with|paragraph mode|left>
          <\with|paragraph mode|left>
            A la pregunta de Maxima, es necesario responder <with|font
            family|tt|:q> (o <with|font family|tt|:t>) para parar el cálculo
            en curso y volver al <em|prompt> de Maxima. Si escribe <with|font
            family|tt|:r>, el cálculo continuará. La presión de las teclas
            CTRL Y no tendrá ningún efecto aparte de aparecer indicado en la
            pantalla. Finalmente, CTRL Z tendrá el mismo efecto que el
            comando <with|font family|tt|quit();> Nótese que CTRL C significa
            el apoyo simultáneo de las teclas CONTROL y C del teclado.
          </with>
        </with>
      </with>
    </with>

    <item>Para abortar un cálculo sin salir de Maxima, escriba CTRL C. Es
    importante que sepa esto para, por ejemplo, poder parar un cálculo que, a
    todas luces, esté llevando excesivo tiempo. Recuerde escribir <with|font
    family|tt|:q> en el prompt de <with|font family|tt|Maxima> que aparecerá
    para volver a Maxima.

    <item>Con el fin de indicarle a Maxima que ha finalizado un comando,
    utilice el punto y coma (;), y después presione ENTER. Nótese que
    presionar ENTER sin haber introducido el punto y coma no produce el
    resultado esperado.

    <item>Una forma alternativa a (;) de finalizar un comando es el símbolo
    del dólar ($), que a diferencia del punto y coma no muestra el resultado
    del comando introducido. Esto puede resultar útil si se está calculando
    algún resultado intermedio bastante largo y no se desea tener la ventana
    de Maxima saturada de datos, por ejemplo.

    <item>Si se desea repetir un comando que ya ha sido escrito antes en la
    sesión de Maxima, pongamos (C5), puede hacerlo sin necesidad de volver a
    escribir el comando. Simplemente escriba la etiqueta del comando
    precedida de dos comillas simples (''). Por ejemplo; ''C5. Nótese que no
    funcionará sin las comillas simples.

    <item>Si se desea referir al resultado generado por la orden
    inmediatamente anterior, se puede usar o bien la etiqueta D asociada o el
    símbolo de porcentaje (%).

    <item>Las constantes <with|mode|math|e> (exponencial de 1),
    <with|mode|math|i> (raíz cuadrada de -1) y <with|mode|math|\<pi\>> están
    representadas por \ %E (o %e), %I (o %i) y %PI (o %pi). Importante: El
    símbolo % aquí no tiene ninguna relación con el uso descrito en el punto
    6.

    <item>Para asociar un valor a una variable, Maxima utiliza los dos puntos
    (:), <strong|no> el signo de igualdad. El símbolo de igualdad, en cambio,
    se utiliza para representar ecuaciones.

    \;
  </expand>

  <section|Aritmética>\ 

  Operaciones fundamentales:

  <\expand|itemize-dot>
    <item>La suma se denota con +

    <item>La resta se denota con -

    <item>La multiplicación se denota con *

    <item>La división se denota con /

    <item>La potencia se denota con ^ ó **

    <item>La multiplicación matricial se denota con .

    <item>La función raíz se denota con <with|font family|tt|SQRT(x)>
  </expand>

  La salida de Maxima se caracteriza por devolver valores racionales exactos.
  Por ejemplo:

  <\session|maxima|default>
    <\input|maxima] >
      1/100+1/101;
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D2) <with|color|black|>><frac|201|10100>>
      </with>

      \;
    </output>
  </session>

  Si se emplean números irracionales, éstos se conservan en forma simbólica:

  <\session|maxima|default>
    <\input|maxima] >
      (1+sqrt(2))^5;
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D3) <with|color|black|>><left|(><sqrt|2>+1<right\
        |)><rsup|5>>
      </with>

      \;
    </output>

    <\input|<\with|color|red>
      (C4) <with|color|black|>
    </with>>
      expand(%);
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D4) <with|color|black|>>29*<sqrt|2>+41>
      </with>

      \;
    </output>
  </session>

  Sin embargo, es habitual querer expresar el resultado en forma decimal.
  Esto se consigue colocando tras la expresión deseada el texto "<with|font
  family|tt|,numer>":

  <\session|maxima|default>
    <\input|maxima] >
      %,numer;
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D5) <with|color|black|>>82.01219330881976>
      </with>

      \;
    </output>
  </session>

  Nótese que el símbolo % aquí se refiere al resultado calculado justo antes.
  Por defecto, el comando <with|font family|tt|numer> devuelve un número con
  16 cifras significativas (por lo que la última puede estar equivocada). Sin
  embargo, Maxima puede ofrecer precisión arbitraria utilizando la función
  <with|font family|tt|BFLOAT()>:

  <\session|maxima|default>
    <\input|maxima] >
      bfloat(D3);
    </input>

    <\output>
      8.201219330881976B1

      \;
    </output>
  </session>

  El número de decimales está controlado por la variable de Maxima
  <with|font|pandora|FPPREC>, que por defecto vale 16:

  <\session|maxima|default>
    <\input|maxima] >
      fpprec;
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D7) <with|color|black|>>16>
      </with>

      \;
    </output>
  </session>

  Si asignamos a esta variable el valor 100:

  <\session|maxima|default>
    <\input|maxima] >
      fpprec:100;
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D8) <with|color|black|>>100>
      </with>

      \;
    </output>

    <\input|<\with|color|red>
      (C9) <with|color|black|>
    </with>>
      bfloat(D3);
    </input>

    <\output>
      8.2012193308819756415248973002081244278520484385931494122123712401731

      \ 2418754011041266612384955016056B1

      \;
    </output>
  </session>

  Maxima puede calcular valores exactos de números muy grandes:

  <\session|maxima|default>
    <\input|maxima] >
      100!;
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D12) <with|color|black|>>93326215443944152681699\
        238856266700490715968264381621468592963895217599993229915608941463976\
        156518286253697920827223758251185210916864000000000000000000000000>
      </with>

      \;
    </output>
  </session>

  <section|Álgebra>

  La importancia de Maxima como programa que nos ayuda en el cálculo
  analítico se muestra más evidente cuando observamos la facilidad con que
  manipula el álgebra por nosotros. He aquí un ejemplo en donde se expande un
  polinomio:

  <\session|maxima|default>
    <\output>
      \;
    </output>

    <\input|<\with|color|red>
      (C1) <with|color|black|>
    </with>>
      (x+3*y+x^2*y)^3;
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D1) <with|color|black|>><left|(>x<rsup|2>*y+3*y+\
        x<right|)><rsup|3>>
      </with>

      \;
    </output>

    <\input|<\with|color|red>
      (C2) <with|color|black|>
    </with>>
      expand(%);
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D2) <with|color|black|>>x<rsup|6>*y<rsup|3>+9*x<\
        rsup|4>*y<rsup|3>+27*x<rsup|2>*y<rsup|3>+27*y<rsup|3>+3*x<rsup|5>*y<r\
        sup|2>+18*x<rsup|3>*y<rsup|2>+27*x*y<rsup|2>+3*x<rsup|4>*y+9*x<rsup|2\
        >*y+x<rsup|3>>
      </with>

      \;
    </output>
  </session>

  \;

  Supongamos ahora que queremos sustituir \ <with|mode|math|x> por el valor
  <with|mode|math|<frac|5|z>> en la expresión precedente:

  <\session|maxima|default>
    <\input|maxima] >
      d2,x=5/z;
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D4) <with|color|black|>><frac|135*y<rsup|2>|z>+<\
        frac|675*y<rsup|3>|z<rsup|2>>+<frac|225*y|z<rsup|2>>+<frac|2250*y<rsu\
        p|2>|z<rsup|3>>+<frac|125|z<rsup|3>>+<frac|5625*y<rsup|3>|z<rsup|4>>+\
        <frac|1875*y|z<rsup|4>>+<frac|9375*y<rsup|2>|z<rsup|5>>+<frac|15625*y\
        <rsup|3>|z<rsup|6>>+27*y<rsup|3>>
      </with>

      \;
    </output>
  </session>

  La función <with|font family|tt|RATSIMP()> de Maxima reduce la expresión a
  común denominador:

  <\session|maxima|default>
    <\input|maxima] >
      ratsimp(%);
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D5) <with|color|black|>><frac|27*y<rsup|3>*z<rsu\
        p|6>+135*y<rsup|2>*z<rsup|5>+<left|(>675*y<rsup|3>+225*y<right|)>*z<r\
        sup|4>+<left|(>2250*y<rsup|2>+125<right|)>*z<rsup|3>+<left|(>5625*y<r\
        sup|3>+1875*y<right|)>*z<rsup|2>+9375*y<rsup|2>*z+15625*y<rsup|3>|z<r\
        sup|6>>>
      </with>

      \;
    </output>
  </session>

  Las expresiones pueden ser factorizadas:

  <\session|maxima|default>
    <\input|maxima] >
      factor(%);
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D6) <with|color|black|>><frac|<left|(>3*y*z<rsup\
        |2>+5*z+25*y<right|)><rsup|3>|z<rsup|6>>>
      </with>

      \;
    </output>
  </session>

  Maxima puede obtener soluciones exactas de sistemas de ecuaciones
  algebraicas no lineales. En este ejemplo utilizamos la función <with|font
  family|tt|SOLVE()> para resolver tres ecuaciones con tres incógnitas
  <with|mode|math|a,b> y <with|mode|math|c>:

  <\session|maxima|default>
    <\input|maxima] >
      a+b*c=1;
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D7) <with|color|black|>>b*c+a=1>
      </with>

      \;
    </output>

    <\input|<\with|color|red>
      (C8) <with|color|black|>
    </with>>
      b-a*c=0;
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D8) <with|color|black|>>b-a*c=0>
      </with>

      \;
    </output>

    <\input|<\with|color|red>
      (C9) <with|color|black|>
    </with>>
      a+b=5;
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D9) <with|color|black|>>b+a=5>
      </with>

      \;
    </output>

    <\input|<\with|color|red>
      (C10) <with|color|black|>
    </with>>
      solve([d7,d8,d9],[a,b,c]);
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D10) <with|color|black|>><left|[><left|[>a=<frac\
        |25*<sqrt|79>*i+25|6*<sqrt|79>*i-34>,b=<frac|5*<sqrt|79>*i+5|<sqrt|79\
        >*i+11>,c=<frac|<sqrt|79>*i+1|10><right|]>,<left|[>a=<frac|25*<sqrt|7\
        9>*i-25|6*<sqrt|79>*i+34>,b=<frac|5*<sqrt|79>*i-5|<sqrt|79>*i-11>,c=-\
        <frac|<sqrt|79>*i-1|10><right|]><right|]>>
      </with>

      \;
    </output>
  </session>

  Nótese que la salida consiste en una <em|lista>. Es decir, una expresión
  contenida dentro de dos corchetes [ ... ], que contiene a su vez dos
  listas. Cada una de estas últimas contiene una solución distinta para el
  sistema de ecuaciones.

  Manipular identidades triginométricas en Maxima es fácil. La función
  <with|font family|tt|TRIGEXPAND()> utiliza las fórmulas de suma de ángulos
  para intentar que los argumentos dentro de las funciones trigonométricas
  sean lo más sencillo posible:

  <\session|maxima|default>
    \;

    <\input|<\with|color|red>
      (C1) <with|color|black|>
    </with>>
      sin(u+v)*cos(u)^3;
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D1) <with|color|black|>>cos <rsup|3>u*sin
        <left|(>v+u<right|)>>
      </with>

      \;
    </output>

    <\input|<\with|color|red>
      (C2) <with|color|black|>
    </with>>
      trigexpand(%);
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D2) <with|color|black|>>cos
        <rsup|3>u*<left|(>cos u*sin v+sin u*cos v<right|)>>
      </with>

      \;
    </output>
  </session>

  Por contra, la función <with|font family|tt|TRIGREDUCE()> transforma una
  expresión trigonométrica en una suma de términos donde cada uno contiene un
  solo <with|font family|tt|sin> ó <with|font family|tt|cos>:

  <\session|maxima|default>
    <\input|maxima] >
      trigreduce(d1);
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D3) <with|color|black|>><frac|sin
        <left|(>v+4*u<right|)>+sin <left|(>v-2*u<right|)>|8>+<frac|3*sin
        <left|(>v+2*u<right|)>+3*sin v|8>>
      </with>

      \;
    </output>
  </session>

  Las funciones <with|font family|tt|REALPART()> y <with|font
  family|tt|IMAGPART()> devuelven, respectivamente, parte real e imaginara de
  una expresión compleja:

  <\session|maxima|default>
    <\input|maxima] >
      w:3+k*%i;
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D4) <with|color|black|>>i*k+3>
      </with>

      \;
    </output>

    <\input|<\with|color|red>
      (C5) <with|color|black|>
    </with>>
      w^2*%e^w;
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D5) <with|color|black|>><left|(>i*k+3<right|)><r\
        sup|2>*e<rsup|i*k+3>>
      </with>

      \;
    </output>

    <\input|<\with|color|red>
      (C6) <with|color|black|>
    </with>>
      realpart(%);
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D6) <with|color|black|>>e<rsup|3>*<left|(>9-k<rs\
        up|2><right|)>*cos k-6*e<rsup|3>*k*sin k>
      </with>

      \;
    </output>

    <\input|<\with|color|red>
      (C7) <with|color|black|>
    </with>>
      imagpart(D5);
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D7) <with|color|black|>>e<rsup|3>*<left|(>9-k<rs\
        up|2><right|)>*sin k+6*e<rsup|3>*k*cos k>
      </with>
    </output>
  </session>

  <section|Cálculo diferencial>

  Maxima puede evaluar derivadas e integrales, expandir en series de Taylor,
  tomar límites y obtener soluciones exactas para ecuaciones diferenciales
  ordinarias. Comencemos por definir el símbolo <with|font family|tt|f> que
  será una función de <with|font family|tt|x>:

  <\session|maxima|default>
    <\input|maxima] >
      f:x^3*%e^(k*x)*sin(a*x);
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D9) <with|color|black|>>x<rsup|3>*e<rsup|k*x>*si\
        n <left|(>a*x<right|)>>
      </with>

      \;
    </output>
  </session>

  Calculamos la derivada de <with|font family|tt|f> respecto de <with|font
  family|tt|x>:

  <\session|maxima|default>
    <\input|maxima] >
      diff(f,x);
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D10) <with|color|black|>>k*x<rsup|3>*e<rsup|k*x>\
        *sin <left|(>a*x<right|)>+3*x<rsup|2>*e<rsup|k*x>*sin
        <left|(>a*x<right|)>+a*x<rsup|3>*e<rsup|k*x>*cos
        <left|(>a*x<right|)>>
      </with>

      \;
    </output>
  </session>

  Ahora calculamos una primitiva de <with|font family|tt|f> respecto de
  <with|font family|tt|x>:

  <\session|maxima|default>
    <\input|maxima] >
      integrate(f,x);
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|font size|0.71|<with|mode|text|font
        family|tt|color|red|(D11) <with|color|black|>><frac|<left|(><left|(>k\
        <rsup|7>+3*a<rsup|2>*k<rsup|5>+3*a<rsup|4>*k<rsup|3>+a<rsup|6>*k<righ\
        t|)>*x<rsup|3>+<left|(>-3*k<rsup|6>-3*a<rsup|2>*k<rsup|4>+3*a<rsup|4>\
        *k<rsup|2>+3*a<rsup|6><right|)>*x<rsup|2>+<left|(>6*k<rsup|5>-12*a<rs\
        up|2>*k<rsup|3>-18*a<rsup|4>*k<right|)>*x-6*k<rsup|4>+36*a<rsup|2>*k<\
        rsup|2>-6*a<rsup|4><right|)>*e<rsup|k*x>*sin
        <left|(>a*x<right|)>+<left|(><left|(>-a*k<rsup|6>-3*a<rsup|3>*k<rsup|\
        4>-3*a<rsup|5>*k<rsup|2>-a<rsup|7><right|)>*x<rsup|3>+<left|(>6*a*k<r\
        sup|5>+12*a<rsup|3>*k<rsup|3>+6*a<rsup|5>*k<right|)>*x<rsup|2>+<left|\
        (>-18*a*k<rsup|4>-12*a<rsup|3>*k<rsup|2>+6*a<rsup|5><right|)>*x+24*a*\
        k<rsup|3>-24*a<rsup|3>*k<right|)>*e<rsup|k*x>*cos
        <left|(>a*x<right|)>|k<rsup|8>+4*a<rsup|2>*k<rsup|6>+6*a<rsup|4>*k<rs\
        up|4>+4*a<rsup|6>*k<rsup|2>+a<rsup|8>>>>
      </with>

      \;
    </output>
  </session>

  Un leve cambio en la sintaxis y tenemos integrales indefinidas:

  <\session|maxima|default>
    <\input|maxima] >
      integrate(1/x^2,x,1,inf);
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D12) <with|color|black|>>1>
      </with>

      \;
    </output>

    <\input|<\with|color|red>
      (C13) <with|color|black|>
    </with>>
      integrate(1/x,x,0,inf);
    </input>

    <\output>
      Integral is divergent

      \ -- an error. \ Quitting. \ To debug this try DEBUGMODE(TRUE);)

      \;
    </output>
  </session>

  A continuación definimos la función <with|font family|tt|s> en términos de
  <with|font family|tt|f> y de su seno hiperbólico para más tarde calcular su
  serie de Taylor de orden 3 alrededor del punto <with|mode|math|x=0>.

  <\session|maxima|default>
    <\input|maxima] >
      g:f/sinh(k*x)^4;
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D14) <with|color|black|>><frac|x<rsup|3>*e<rsup|\
        k*x>*sin <left|(>a*x<right|)>|sinh <rsup|4><left|(>k*x<right|)>>>
      </with>

      \;
    </output>

    <\input|<\with|color|red>
      (C15) <with|color|black|>
    </with>>
      taylor(g,x,0,3);
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D15) <with|color|black|>><frac|a|k<rsup|4>>+<fra\
        c|a*x|k<rsup|3>>-<frac|<left|(>a*k<rsup|2>+a<rsup|3><right|)>*x<rsup|\
        2>|6*k<rsup|4>>-<frac|<left|(>3*a*k<rsup|2>+a<rsup|3><right|)>*x<rsup\
        |3>|6*k<rsup|3>>+\<cdots\>>
      </with>

      \;
    </output>
  </session>

  El límite de <with|mode|math|g> cuando <with|mode|math|x> tiende hacia
  <with|mode|math|0> se calcula mediante la siguiente expresión:

  <\session|maxima|default>
    <\input|maxima] >
      limit(g,x,0);
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D16) <with|color|black|>><frac|a|k<rsup|4>>>
      </with>

      \;
    </output>
  </session>

  Además, Maxima puede representar derivadas sin necesidad de evaluarlas.
  Para ello es necesario preceder a nuestra expresión de una comilla simple
  ('):

  <\session|maxima|default>
    <\input|maxima] >
      'diff(y,x);
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D17) <with|color|black|>><frac|d|d*x>*y>
      </with>

      \;
    </output>
  </session>

  El operador <em|comilla simple> (') en la expresión anterior viene a decir
  <em|no evaluar>. Sin él, Maxima habría devuelto 0:

  <\session|maxima|default>
    <\input|maxima] >
      diff(y,x);
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D18) <with|color|black|>>0>
      </with>

      \;
    </output>
  </session>

  Utilizando el operador ('), podemos escribir ecuaciones diferenciales::

  <\session|maxima|default>
    <\input|maxima] >
      'diff(y,x,2)+'diff(y,x)+y;
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D19) <with|color|black|>><frac|d<rsup|2>|d*x<rsu\
        p|2>>*y+<frac|d|d*x>*y+y>
      </with>

      \;
    </output>
  </session>

  La función de Maxima <with|font family|tt|ODE2()> es capaz de resolver
  ecuaciones diferenciales ordinarias de primer y segundo orden:

  <\session|maxima|default>
    <\input|maxima] >
      ode2(D19,y,x);
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D20) <with|color|black|>>y=e<rsup|-<frac|x|2>>*<\
        left|(><with|math font family|rm|%K1>*sin
        <left|(><frac|<sqrt|3>*x|2><right|)>+<with|math font
        family|rm|%K2>*cos <left|(><frac|<sqrt|3>*x|2><right|)><right|)>>
      </with>

      \;
    </output>
  </session>

  siendo %K1 y %K2 constantes reales

  <section|Cálculo matricial>

  Maxima puede calcular el determinante, la inversa, los autovalores y
  autovectores de una matriz que contenga elementos simbólicos (por ejemplo,
  expresiones que contengan variables algebraicas). Comencemos introduciendo
  una matriz <with|font family|tt|m> elemento a elemento:

  <\session|maxima|default>
    <\input|maxima] >
      m:entermatrix(3,3);
    </input>

    <\output>
      Is the matrix \ 1. Diagonal \ 2. Symmetric \ 3. Antisymmetric \ 4.
      General

      \;
    </output>

    <\input|<\with|color|red>
      Answer 1, 2, 3 or 4 : <with|color|black|>
    </with>>
      4;
    </input>

    <\input|<\with|color|red>
      Row 1 Column 1: <with|color|black|>
    </with>>
      0;
    </input>

    <\input|<\with|color|red>
      Row 1 Column 2: <with|color|black|>
    </with>>
      1;
    </input>

    <\input|<\with|color|red>
      Row 1 Column 3: <with|color|black|>
    </with>>
      a;
    </input>

    <\input|<\with|color|red>
      Row 2 Column 1: <with|color|black|>
    </with>>
      1;
    </input>

    <\input|<\with|color|red>
      Row 2 Column 2: <with|color|black|>
    </with>>
      0;
    </input>

    <\input|<\with|color|red>
      Row 2 Column 3: <with|color|black|>
    </with>>
      1;
    </input>

    <\input|<\with|color|red>
      Row 3 Column 1: <with|color|black|>
    </with>>
      1;
    </input>

    <\input|<\with|color|red>
      Row 3 Column 2: <with|color|black|>
    </with>>
      1;
    </input>

    <\input|<\with|color|red>
      Row 3 Column 3: <with|color|black|>
    </with>>
      0;
    </input>

    <\output>
      Matrix entered.

      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D21) <with|color|black|>><left|(><expand|tabular\
        *|<tformat|<table|<row|<cell|0>|<cell|1>|<cell|a>>|<row|<cell|1>|<cel\
        l|0>|<cell|1>>|<row|<cell|1>|<cell|1>|<cell|0>>>>><right|)>>
      </with>

      \;
    </output>
  </session>

  Ahora calculamos la matriz traspuesta, su determinante y su matriz inversa:

  <\session|maxima|default>
    <\input|maxima] >
      transpose(m);
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D22) <with|color|black|>><left|(><expand|tabular\
        *|<tformat|<table|<row|<cell|0>|<cell|1>|<cell|1>>|<row|<cell|1>|<cel\
        l|0>|<cell|1>>|<row|<cell|a>|<cell|1>|<cell|0>>>>><right|)>>
      </with>

      \;
    </output>

    <\input|<\with|color|red>
      (C23) <with|color|black|>
    </with>>
      determinant(m);
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D23) <with|color|black|>>a+1>
      </with>

      \;
    </output>

    <\input|<\with|color|red>
      (C24) <with|color|black|>
    </with>>
      invert(m),detout;
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D24) <with|color|black|>><frac|<left|(><expand|t\
        abular*|<tformat|<table|<row|<cell|-1>|<cell|a>|<cell|1>>|<row|<cell|\
        1>|<cell|-a>|<cell|a>>|<row|<cell|1>|<cell|1>|<cell|-1>>>>><right|)>|\
        a+1>>
      </with>

      \;
    </output>
  </session>

  En la entrada C24, la opción <with|font family|tt|detout> fuerza al
  determinante a aparecer fuera de la matriz inversa. Como prueba,
  multiplicamos <with|font family|tt|m> por su inversa (nótese el uso del
  punto simple (.) para la multiplicación matricial):

  <\session|maxima|default>
    <\input|maxima] >
      m.d24;
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D25) <with|color|black|>><left|(><expand|tabular\
        *|<tformat|<table|<row|<cell|0>|<cell|1>|<cell|a>>|<row|<cell|1>|<cel\
        l|0>|<cell|1>>|<row|<cell|1>|<cell|1>|<cell|0>>>>><right|)>\<cdot\><f\
        rac|<left|(><expand|tabular*|<tformat|<table|<row|<cell|-1>|<cell|a>|\
        <cell|1>>|<row|<cell|1>|<cell|-a>|<cell|a>>|<row|<cell|1>|<cell|1>|<c\
        ell|-1>>>>><right|)>|a+1>>
      </with>

      \;
    </output>

    <\input|<\with|color|red>
      (C26) <with|color|black|>
    </with>>
      expand(%);
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D26) <with|color|black|>><left|(><expand|tabular\
        *|<tformat|<table|<row|<cell|<frac|a|a+1>+<frac|1|a+1>>|<cell|0>|<cel\
        l|0>>|<row|<cell|0>|<cell|<frac|a|a+1>+<frac|1|a+1>>|<cell|0>>|<row|<\
        cell|0>|<cell|0>|<cell|<frac|a|a+1>+<frac|1|a+1>>>>>><right|)>>
      </with>

      \;
    </output>

    <\input|<\with|color|red>
      (C27) <with|color|black|>
    </with>>
      factor(%);
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D27) <with|color|black|>><left|(><expand|tabular\
        *|<tformat|<table|<row|<cell|1>|<cell|0>|<cell|0>>|<row|<cell|0>|<cel\
        l|1>|<cell|0>>|<row|<cell|0>|<cell|0>|<cell|1>>>>><right|)>>
      </with>

      \;
    </output>
  </session>

  Para encontrar autovalores y autovectores, se emplea la función <with|font
  family|tt|EIGENVECTORS()> :

  <\session|maxima|default>
    <\input|maxima] >
      eigenvectors(m);
    </input>

    <\output>
      Warning - you are redefining the MACSYMA function EIGENVALUES

      Warning - you are redefining the MACSYMA function EIGENVECTORS

      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D28) <with|color|black|>><left|[><left|[><left|[\
        >-<frac|<sqrt|4*a+5>-1|2>,<frac|<sqrt|4*a+5>+1|2>,-1<right|]>,<left|[\
        >1,1,1<right|]><right|]>,<left|[>1,-<frac|<sqrt|4*a+5>-1|2*a+2>,-<fra\
        c|<sqrt|4*a+5>-1|2*a+2><right|]>,<left|[>1,<frac|<sqrt|4*a+5>+1|2*a+2\
        >,<frac|<sqrt|4*a+5>+1|2*a+2><right|]>,<left|[>1,-1,0<right|]><right|\
        ]>>
      </with>

      \;
    </output>
  </session>

  En la expresión D28, el primer corchete interior al triple corchete muestra
  los tres autovalores, a los que siguen sus multiplicidades (vemos que aquí
  ninguna se repite). Los siguientes tres corchetes contienen los
  correspondientes autovectores de los tres autovalores de <with|font
  family|tt|m>. Si deseamos extraer alguno de estos autovectores de la
  expresión, podemos usar la función <with|font family|tt|PART()>:

  <\session|maxima|default>
    <\input|maxima] >
      part(D28,2);
    </input>

    <\output>
      <\with|mode|math>
        <with|formula style|true|<with|mode|text|font
        family|tt|color|red|(D29) <with|color|black|>><left|[>1,-<frac|<sqrt|\
        4*a+5>-1|2*a+2>,-<frac|<sqrt|4*a+5>-1|2*a+2><right|]>>
      </with>
    </output>
  </session>

  <section|Programar en Maxima>

  Hasta ahora hemos usado Maxima en el modo interactivo, casi como una
  calculadora. Sin embargo, para cálculos que conllevan secuencias
  repetitivas de comandos, es mejor ejecutar un programa. Presentamos aquí un
  programa corto y simple que calculará los puntos críticos de una función
  <with|font family|tt|f> de dos variables, <with|font family|tt|x> e
  <with|font family|tt|y>. El programa se encarga de preguntar al usuario por
  la función <with|font family|tt|f>, calcula sus derivadas parciales
  <with|mode|math|f<rsub|x>> y <with|mode|math|f<rsub|y>> y utiliza la
  función de Maxima <with|font family|tt|SOLVE()> para obtener las soluciones
  de <with|mode|math|f<rsub|x>=f<rsub|y>=0>. Este programa se puede escribir
  fuera de Maxima con un editor de textos, y dentro de Maxima se cargará
  mediante la función <with|font family|tt|BATCH()>. Presentamos aquí el
  listado del programa:

  <\code>
    /*-----------------------------------------------------------------------\
    ---

    Éste es el programa critpts.max. Como puede verse,

    los comentarios en Maxima son como aquéllos en lenguaje C

    Autor : Nelson Luis Dias

    Traducción: Pablo Ruiz Múzquiz. 16/06/2002

    Creado el 07/07/2000

    -------------------------------------------------------------------------\
    --*

    critpts():=(

    print("Programa que determina los puntos críticos "),

    /* ----------------------------------------------------------------------\
    ---

    Preguntamos por una función

    -------------------------------------------------------------------------\
    --*

    f:read("Escriba f(x,y)"),

    /*-----------------------------------------------------------------------\
    ---

    Imprimimos la respuesta para poder verificarla

    -------------------------------------------------------------------------\
    --*

    print("f = ",f),

    /*-----------------------------------------------------------------------\
    ---

    Construimos una lista con las derivadas parciales:

    -------------------------------------------------------------------------\
    --*

    eqs:[diff(f,x),diff(f,y)],

    /*-----------------------------------------------------------------------\
    ---

    Construimos una lista de incógnitas

    -------------------------------------------------------------------------\
    --*

    unk:[x,y],

    /*-----------------------------------------------------------------------\
    ---

    Resolvemos el sistema

    -------------------------------------------------------------------------\
    --*

    solve(eqs,unk)

    )<with|mode|math|>

    $
  </code>

  El programa (que es en realidad una función sin argumentos) se llama
  <with|font family|tt|cripts>. Cada línea es un comando válido de Maxima que
  podría ejecutarse desde el teclado y que se encuentra separado del
  siguiente comando por medio de una coma. Las derivadas parciales se guardan
  en una variable llamada <with|font family|tt|eqs>, y las incógnitas en otra
  variable llamada <with|font family|tt|unk>. Veamos una ejecución de ejemplo
  de este programa:

  <\session|maxima|default>
    \;

    <\input|<\with|color|red>
      (C1) <with|color|black|>
    </with>>
      batch("/home/michel/temp/critpts.max");
    </input>

    batching #p/home/michel/temp/critpts.max\ 

    (C2) critpts() := (PRINT("Programa que determina los puntos criticos "),

    f : READ("Escriba f(x,y)"), PRINT(" f = ", f), eqs : [DIFF(f, x), DIFF(f,
    y)],

    unk : [x, y], SOLVE(eqs, unk))
  </session>

  (C3) critpts();

  Programa que determina los puntos críticos

  Escriba f(x,y)\ 

  %E^(x^3+y^2)*(x+y);\ 

  <with|mode|math|f=(y+x)e<rsup|y<rsup|2>+x<rsup|3>>>

  (D3) [[x = 0.4588955685487 %I + 0.35897908710869,

  y = 0.49420173682751 %I - 0.12257873677837],

  [x = 0.35897908710869 - 0.4588955685487 %I,

  y = - 0.49420173682751 %I - 0.12257873677837],

  [x = 0.41875423272348 %I - 0.69231242044203,

  y = 0.86972626928141 %I + 0.4559120701117]]

  y = 0.4559120701117 - 0.86972626928141 %I],

  [x = - 0.41875423272348 %I - 0.69231242044203,

  y = 0.86972626928141 %I + 0.4559120701117]]

  <section|Una lista parcial de funciones de Maxima>

  Consulte el manual de Maxima que se encuentra en el directorio <with|font
  family|tt|maxima-/info> en formatos texinfo y html. Desde el interfaz de
  Maxima puede usar <with|font family|tt|DESCRIBE(nombre de función)>.

  <\expand|itemize-dot>
    <item>ALLROOTS(A)\ 

    Encuentra todas las raíces (generalmente complejas) de la ecuación
    <with|font family|tt|A> y las lista en formato numérico (por ejemplo, con
    16 cifras significativas).

    <item>APPEND(A,B)

    Concatena la lista B a la lista A, resultando en una sola lista.

    <item>BATCH(A)

    Carga y ejecuta un programa BATCH de nombre A.

    <item>COEFF(A,B,C)

    Devuelve el coeficiente B elevado a C en la expresión A.

    <item>CONCAT(A,B)

    Crea el símbolo AB.

    <item>CONS(A,B)

    Añade A a la lista B como primer elemento.

    <item>DEMOIVRE(A)

    Transforma todas las exponenciales complejas en sus equivalentes formas
    trigonométricas.

    <item>DENOM(A)

    Devuelve el denominador de A.

    <item>DEPENDS(A,B)

    Esta función indica que A es una función de B. Esto es útil para escribir
    derivadas sin evaluar, como, por ejemplo, en las ecuaciones
    diferenciales.

    <item>DESOLVE(A,B)

    Intenta resolver A (un sistema lineal de EDO's) con B incógnitas
    utilizando transformaciones de <name|<verbatim|Laplace<name|<verbatim|>>>\
    >.

    <item>DETERMINANT(A)

    Devuelve el determinante de la matriz cuadrada A.

    <item>DIFF(A,B1,C1,B2,C2,...,Bn,Cn)

    Devuelve la derivada parcial de A respecto de cada B<em|i>, C<em|i>
    veces. Para abreviar, <with|font family|tt|DIFF(A,B,1)> puede ser
    representado por <with|font family|tt|DIFF(A,B)>. 'DIFF(...) representa
    la derivada sin evaluar, útil cuando estamos trabajando con ecuaciones
    diferenciales.

    <item>EIGENVALUES(A)

    Devuelve dos listas. La primera contiene los valores propios de una
    matriz cuadrada A y la segunda sus respectivas multiplicidades.

    <item>EIGENVECTORS(A)

    Realiza todo lo que <with|font family|tt|EIGENVALUES()> hace y además
    añade una lista de autovectores asociados.

    <item>ENTERMATRIX(A,B)

    Pregunta al usuario por una matriz A x B, elemento a elemento.

    <item>EV(A,B1,B2,...,Bn)

    Evalua A bajo las condiciones B<em|i>. En particular, las B<em|i> pueden
    ser ecuaciones, listas de ecuaciones (tales como las que devuelve la
    función <with|font family|tt|SOLVE()>) o asignamientos, es decir, casos
    en los que <with|font family|tt|EV> reemplaza los B<em|i> en A por sus
    valores correspondientes. Los B<em|i> pueden también ser palabras como
    <with|font family|tt|NUMBER> (en cuyo caso el resultado se devueleve en
    formato numérico), <with|font family|tt|DETOUT> (en cuyo caso cualquier
    inversión de matrices en A se calcula con el determinante presentado
    fuera de forma explícita) o <with|font family|tt|DIFF> (en cuyo caso
    todas las diferenciales en A se evalúan, por ej: <with|font
    family|tt|'DIFF> en A se ve reemplazado por <with|font family|tt|DIFF>).
    Para abreviar en la forma interactiva de introducir el comando
    (<strong|no> dentro de una función definida por el usuario, por ejemplo),
    podemos obviar la propia función <with|font family|tt|EV>, quedando la
    sintaxis reducida a A,B1,B2,...Bn.

    <item>EXPAND(A)

    Efectúa la expansión de A. En concreto, las multiplicaciones tienen
    prioridad sobre las sumas.

    <item>EXPONENTIALIZE(A)

    Transforma todas las funciones trigonométricas contenidas en A en
    exponenciales complejas.

    <item>FACTOR(A)

    Factoriza la expresión A.

    <item>FREEOF(A,B)

    Devuelve TRUE si la expresión B está libre de la variable A.

    <item>GRIND(A)

    Presenta una variable o función A en forma compacta. Cuando se usa
    conjuntamente con <with|font family|tt|WRITEFILE()> en un editor externo
    a Maxima, permite producir ficheros BATCH que incluyan expresiones
    generadas por Maxima.

    <item>IDENT(A)

    Devuelve la matriz identidad de orden A.

    <item>IMAGPART(A)

    Devuelve la parte imaginaria de A.

    <item>INTEGRATE(A,B)

    Intenta determinar una primitiva de A respecto de B.

    <item>INTEGRATE(A,B,C,D)

    Intenta calcular la integral de A respecto de B entre los límites B=C y
    B=D. Los límites de integración C y D pueden tomar el valor de INF
    (infinito positivo) ó MINF (infinito negativo).

    <item>INVERT(A)

    Calcula la matriz inversa de la matriz cuadrada A.

    <item>KILL(A)

    Elimina la variable A de todas las definiciones y propiedades de la
    sesión actual de Maxima.

    <item>LIMIT(A,B,C)

    Devuelve el límite de la expresión A cuando B tiende a C. El valor de C
    puede ser INF ó MINF al igual que en la función <with|font
    family|tt|INTEGRATE()>.

    <item>LHS(A)

    Devuelve el miembro izquierdo de la ecuación A.

    <item>LOADFILE(A)

    Carga un fichero del disco duro de nombre A del directorio de trabajo por
    defecto. El fichero del disco duro ha de encontrarse en el formato
    adecuado (por ejemplo, creado por la función <with|font
    family|tt|SAVE()>).

    <item>MAKELIST(A,B,C,D)

    Crea una lista de elementos A (los cuales dependen, en principio, de B),
    para B variando entre B=C y B=D.

    <item>MAP(A,B)

    Aplica la función A a las subexpresiones de B.

    <item>MATRIX(A1,A2,...An)

    Crea una matriz con filas A<em|i>, en donde cada fila A<em|i> es una
    lista de elementos <with|font family|tt|[B1,B2,...,Bm]>

    <item>NUM(A)

    Devuelve el numerador de A.

    <item>ODE2(A,B,C)

    Intenta resolver la ecuación diferencial ordinaria de primer o segundo
    orden A siendo B una función de C.

    <item>PART(A,B1,B2,...Bn)

    Primero toma la parte B1-<em|ésima> de A, luego la B2-<em|ésima> y así
    sucesivamente.

    <item>PLAYBACK(A)

    Presenta las A últimas salidas producidas por Maxima. Si se omite A,
    entonces se presentan todas las salidas. Consúltese el manual para más
    opciones.

    <item>RATSIMP(A)

    Simplifica A y devuelve un cociente de dos polinomios.

    <item>REALPART(A)

    Devuelve la parte real de A.

    <item>RHS(A)

    Devuelve el miembro derecho de la ecuación A.

    <item>SAVE(A,B1,B2,...Bn)

    Crea un fichero llamado A en el directorio de trabajo por defecto actual,
    de variables, funciones o tablas B<em|i>. El formato del fichero permite
    ser cargado por Maxima utilizando la función <with|font
    family|tt|LOADFILE()>. Es posible guardar absolutamente todo (incluyendo
    etiquetas) si B1 vale <with|font family|tt|ALL>.\ 

    <item>SOLVE(A,B)

    Intenta resolver la ecuación algebraica A de incógnitas B. Devuelve una
    lista de soluciones. Para simplificar, si A es una ecuación de la forma
    C=0, puede escribirse simplemente C.

    <item>STRING(A)

    Convierte A en notación lineal de Maxima (parecida a Fortran) igual que
    si hubiese sido escrita directamente y mete A en el buffer para una
    posible edición. La expresión que devuelve STRING no deberá usarse en
    cálculos posteriores.

    <item>STRINGOUT(A,B1,B2,..,Bn)

    Crea un fichero de nombre A en el directorio de trabajo actual,
    conteniendo las variables B1, B2,...,Bn. Este fichero tendrá un formato
    de texto plano y no podrá ser cargado por Maxima. Sin embargo, las
    expresiones resultantes usando esta función pueden ser incorporadas en
    código FORTAN, BASIC o C sin apenas trabajo de post-edición.

    <item>SUBST(A,B,C)

    Reemplaza el valor de A por B en C.

    <item>TAYLOR(A,B,C,D)

    Expande A en una serie de Taylor en B alrededor de B=C, hasta el término
    (B-C)<with|mode|math|<rsup|D>>, inclusive. Maxima es también capaz de
    expandir series de Taylor en más de una variable independiente. Consulte
    el manual para más detalles.

    <item>TRANSPOSE(A)

    Devuelve la traspuesta de la matriz A.

    <item>TRIGEXPAND(A)

    Es una función de simplificación trignométrica que utiliza las fórmulas
    de sumas de ángulos para simplificar los argumentos de las funciones SIN
    y COS contenidas en A. Por ejemplo, <with|font
    family|tt|TRIGEXPAND(sin(x+y))> devuelve <with|font family|tt|<with|font
    family|tt|COS(x)*SIN(y) + SIN(x)*COS(y)>.>

    <item>TRIGREDUCE(A)

    Es una función de simplificación trigonométrica que utiliza las
    igualdades trigonométricas para convertir productos y potencias de SIN y
    COS encontrados en A en una suma de términos, cada uno de los cuales
    contiene únicamente un SIN o un COS. Por ejemplo, <with|font
    family|tt|TRIGREDUCE(sin(x)^2)> devuelve <with|font family|tt|(1 -
    COS(2x))/2)>.

    <item>TRIGSIMP(A)

    Es una función de simplificación trigonométrica que reemplaza TAN, SEC,
    etc, por sus equivalentes en función de SIN y COS. También utiliza la
    función SIN(<with|mode|math|x>)<with|mode|math|<rsup|2>+COS(x)<rsup|2>=1>\
    .\ 
  </expand>

  \;
</body>

<\initial>
  <\collection>
    <associate|odd page margin|30mm>
    <associate|paragraph width|150mm>
    <associate|page medium|paper>
    <associate|shrinking factor|4>
    <associate|page right margin|30mm>
    <associate|page top margin|30mm>
    <associate|reduction page right margin|25mm>
    <associate|reduction page bottom margin|15mm>
    <associate|page type|a4>
    <associate|reduction page left margin|25mm>
    <associate|even page margin|30mm>
    <associate|page bottom margin|30mm>
    <associate|reduction page top margin|15mm>
    <associate|language|spanish>
    <associate|show header and footer|true>
  </collection>
</initial>

<\references>
  <\collection>
    <associate|toc-1|<tuple|1|1>>
    <associate|toc-2|<tuple|2|2>>
    <associate|toc-3|<tuple|3|3>>
    <associate|toc-4|<tuple|4|4>>
    <associate|toc-5|<tuple|5|6>>
    <associate|toc-6|<tuple|6|7>>
    <associate|toc-7|<tuple|7|9>>
    <associate|toc-8|<tuple|8|10>>
    <associate|toc-9|<tuple|8|10>>
  </collection>
</references>

<\auxiliary>
  <\collection>
    <\associate|toc>
      <vspace*|1fn><with|font series|<quote|bold>|math font
      series|<quote|bold>|1<space|2spc>Introducción><value|toc-dots><pageref|\
      toc-1><vspace|0.5fn>

      <vspace*|1fn><with|font series|<quote|bold>|math font
      series|<quote|bold>|2<space|2spc>Las teclas y símbolos
      especiales><value|toc-dots><pageref|toc-2><vspace|0.5fn>

      <vspace*|1fn><with|font series|<quote|bold>|math font
      series|<quote|bold>|3<space|2spc>Aritmética><value|toc-dots><pageref|to\
      c-3><vspace|0.5fn>

      <vspace*|1fn><with|font series|<quote|bold>|math font
      series|<quote|bold>|4<space|2spc>Álgebra><value|toc-dots><pageref|toc-4\
      ><vspace|0.5fn>

      <vspace*|1fn><with|font series|<quote|bold>|math font
      series|<quote|bold>|5<space|2spc>Cálculo
      diferencial><value|toc-dots><pageref|toc-5><vspace|0.5fn>

      <vspace*|1fn><with|font series|<quote|bold>|math font
      series|<quote|bold>|6<space|2spc>Cálculo
      matricial><value|toc-dots><pageref|toc-6><vspace|0.5fn>

      <vspace*|1fn><with|font series|<quote|bold>|math font
      series|<quote|bold>|7<space|2spc>Programar en
      Maxima><value|toc-dots><pageref|toc-7><vspace|0.5fn>

      <vspace*|1fn><with|font series|<quote|bold>|math font
      series|<quote|bold>|8<space|2spc>Una lista parcial de funciones de
      Maxima><value|toc-dots><pageref|toc-8><vspace|0.5fn>
    </associate>
  </collection>
</auxiliary>

