Rename specvar integer-info to *integer-info*
[maxima.git] / doc / info / es / Command.es.texi
blob9545229f7dd6d46602726064940be1b33f342393
1 @c English version 2011-08-10.
2 @menu
3 * Introducción a la línea de comandos::
4 * Funciones y variables para la línea de comandos::
5 * Funciones y variables para la impresión::
6 @end menu
17 @node Introducción a la línea de comandos, Funciones y variables para la línea de comandos, Línea de comandos, Línea de comandos
19 @section Introducción a la línea de comandos
22 @subheading Consola
24 Existen distintos interfaces para Maxima, tales como wxMaxima, Xmaxima, Imaxima
25 y la consola o terminal de texto.
27 La consola trabaja en modo texto, al tiempo que para introducir instrucciones
28 con ayuda de un menú y obtener resultados en modo gráfico es necesario instalar
29 otros interfaces.
31 A lo largo de este manual se utilizará la consola, la cual está disponible en
32 cualquiera de los sistemas operativos en los que trabaja Maxima. El usuario puede
33 introducir todas las funciones de Maxima desde la consola; en el modo texto, los
34 resultados se devolverán normalmente en un formato ASCII bidimensional, mientras
35 que los gráficos necesitan de un programa adicional tal como Gnuplot.
37 @subheading Entrada, Evaluación, Simplificación y Salida
39 Desde que el usuario introduce una solicitud de cálculo hasta que obtiene el
40 resultado en la consola, se desarrolla un proceso que consta de cuatro fases:
42 @enumerate
43 @item
44 Bien sea desde un teclado o desde un fichero se lee una expresión que el
45 analizador sintáctico se encargará de transformar en una cierta representación
46 interna. En esta primera fase, se utilizan principalmente operadores tales
47 como "+", "/" o "do".
49 @item
50 La expresión leída por el analizador sintáctico es evaluada
51 durante la segunda fase. Las variables se substituyen por sus valores y se
52 ejecutan funciones tales como la derivación o la integración. El resultado 
53 de esta fase es una expresión evaluada.
55 @item
56 La expresión evaluada de la fase anterior se simplifica en esta tercera fase,
57 en la que una expresión tal como @code{a+a} se reduce a @code{2*a}, o
58 @code{sin(%pi/2)} se simplifica a @code{1}.
60 @item
61 Tras la tercera fase se dispone de una expresión que ha sido evaluada y
62 posteriormente simplificada. Ya en la cuarta y última fase, se prepara
63 el resultado para ser mostrado a través de la consola.
64 @end enumerate
66 El usuario puede tomar el control en cualquiera de las cuatro fases recién
67 descritas. En diferentes capítulos de este manual se detallan estas posibilidades,
68 pero en éste se describen aquellas instrucciones relacionadas con las fases
69 primera y cuarta, relacionadas con la entrada y salida a través de la consola.
70 Los capítulos sobre Evaluación y Simplificación tratan
71 de las otras dos fases intermedias.
73 @subheading Marcas
75 Maxima almacena todas las entradas con la marca @code{%i} seguida de un
76 número entero en orden creciente, así como las salidas o resultados con la
77 marca @code{%o} también seguida de un número de orden. Además,
78 ciertas funciones utilizan la marca intermedia @code{%t}. Otras variables
79 del sistema almacenan el último resultado devuelto por Maxima o la
80 última entrada efectuada por el usuario. Los siguientes símbolos
81 indican variables y funciones para la gestión de las marcas:
83 @verbatim
84    __          _        
85    %           %%           %th
86    inchar      linechar     outchar
87    linenum     nolabels
88 @end verbatim
90 @subheading Listas informativas
92 Maxima gestiona listas informativas, cuyos nombres se guardan en la variable
93 del sistema @code{infolists}. En el presente capítulo se
94 describen las listas @code{labels}, @code{values} y @code{myoptions}.
95 Los siguientes símbolos indican variables y funciones
96 relacionadas con las listas informativas y variables opcionales.
98 @verbatim
99    infolists     labels        values 
100    myoptions     optionset
101 @end verbatim
103 Otras listas informativas, que se describirán en otros capítulos,
104 son:
106 @verbatim
107    functions      arrays         macros
108    rules          aliases        dependencies 
109    gradefs        props          let_rule_packages
110    structures
111 @end verbatim
113 @subheading Borrado y reiniciación
115 A fin de establecer el contexto en el que trabaje Maxima, en el que
116 no haya variables o funciones definidas, o en el que se eliminen
117 hipótesis, propiedades o definiciones concretas, se dispone de las
118 siguientes funciones:
120 @verbatim
121    kill     reset     reset_verbosely
122 @end verbatim
124 @subheading Otras instrucciones
126 Se puede acceder a la documentación con los símbolos
127 @code{?} y @code{??}. En caso de que se utilice @code{?} a modo
128 de prefijo de un símbolo, éste se interpretará como
129 símbolo de Lisp. Hay instrucciones para terminar una sesión de 
130 Maxima o para cambiar a una sesión de Lisp. También es posible conocer el tiempo
131 que ha necesitado Maxima para realizar un cálculo. Para este tipo de cuestiones,
132 Maxima dispone de las siguientes instrucciones:
134 @verbatim
135    ?            ??
136    playback     prompt     showtime
137    quit         to_lisp
138 @end verbatim
140 Las funciones @code{read} und @code{readonly} imprimen texto en la consola y
141 leen la información introducida por el usuario.
143 @subheading Salida por consola
145 Antes de mostrar un resultado, se transforma su representación interna 
146 a otra externa. Por ejemplo, la representación interna de @code{sqrt(x)}
147 es @code{x^(1/2)}, y ambos formatos pueden ser devueltos por Maxima en
148 función del valor que guarde la variable opcional @code{sqrtdispflag}.
150 Los siguientes símbolos y variables opcionales controlan
151 la salida de resultados por consola:
153 @verbatim
154    %edispflag         absboxchar       display2d
155    display_format_internal             exptdispflag
156    expt               nexpt            ibase
157    linel              lispdisp         negsumdispflag
158    obase              pfeformat        powerdisp
159    sqrtdispflag       stardisp         ttyoff
160 @end verbatim
162 Con las siguientes funciones es posible formatear los resultados:
164 @verbatim
165    disp               display          dispterms
166    grind              ldisp            ldisplay
167    print
168 @end verbatim
193 @node Funciones y variables para la línea de comandos, Funciones y variables para la impresión, Introducción a la línea de comandos, Línea de comandos
195 @section Funciones y variables para la línea de comandos
198 @defvr {Variable del sistema} __
199 @ifinfo
200 @vrindex Expresión actual de entrada
201 @end ifinfo
203 @code{__} es la expresión de entrada que está siendo actualmente evaluada.
204 Esto es, mientras se está evaluando una expresión de entrada, 
205 @code{__} es igual a @var{expr}.
207 A @code{__} se le asigna la expresión de entrada antes de que ésta sea 
208 simplificada o evaluada. Sin embargo, el valor de @code{__} es simplificado,
209 pero no evaluado, cuando su valor es mostrado en el terminal.
211 La variable @code{__} es reconocida por  @code{batch} y por @code{load}.
212 Cuando un fichero es procesado por @code{batch}, la variable @code{__}
213 tiene el mismo significado que en el modo interactivo.
214 Cuando un fichero es procesado por @code{load}, a la variable @code{__}
215 se le asigna la última expresión introducida, bien desde el modo
216 interactivo, bien en un fichero por lotes; en ningún caso se le asigna 
217 a @code{__} una expresión de entrada del fichero que está siendo procesado.
218 En particular, si @code{load (@var{filename})} es ejecutado desde el modo
219 interactivo, entonces @code{__} almacena la expresión @code{load (@var{filename})}
220 mientras el fichero está siendo procesado.
222 Véanse también @code{_} y @code{%}.
224 Ejemplos:
226 @c ===beg===
227 @c print ("I was called as", __);
228 @c foo (__);
229 @c g (x) := (print ("Current input expression =", __), 0);
230 @c [aa : 1, bb : 2, cc : 3];
231 @c (aa + bb + cc)/(dd + ee + g(x));
232 @c ===end===
233 @example
234 (%i1) print ("I was called as", __);
235 I was called as print(I was called as, __) 
236 (%o1)              print(I was called as, __)
237 (%i2) foo (__);
238 (%o2)                     foo(foo(__))
239 (%i3) g (x) := (print ("Current input expression =", __), 0);
240 (%o3) g(x) := (print("Current input expression =", __), 0)
241 (%i4) [aa : 1, bb : 2, cc : 3];
242 (%o4)                       [1, 2, 3]
243 (%i5) (aa + bb + cc)/(dd + ee + g(x));
244                             cc + bb + aa
245 Current input expression = -------------- 
246                            g(x) + ee + dd
247                                 6
248 (%o5)                        -------
249                              ee + dd
250 @end example
252 @end defvr
258 @defvr {Variable del sistema} _
259 @ifinfo
260 @vrindex Entrada anterior
261 @end ifinfo
263 El símbolo @code{_} representa la última expresión de entrada (esto es, @code{%i1}, @code{%i2}, @code{%i3}, ...).
265 Al símbolo @code{_} se le asigna la expresión de entrada antes de que ésta sea simplificada o evaluada. Sin embargo, el valor de @code{_} se simplifica (pero no se evalúa) cuando se muestra en el terminal.
267 La variable @code{_} es reconocida por  @code{batch} y por @code{load}.
268 Cuando un fichero es procesado por @code{batch}, la variable @code{_}
269 tiene el mismo significado que en el modo interactivo.
270 Cuando un fichero es procesado por @code{load}, a la variable @code{_}
271 se le asigna la última expresión introducida, bien desde el modo
272 interactivo, bien en un fichero por lotes; en ningún caso se le asigna 
273 a @code{_} una expresión de entrada del fichero que está siendo procesado.
275 Véanse también @code{__} y @code{%}.
277 Ejemplos:
279 @c ===beg===
280 @c 13 + 29;
281 @c :lisp $_
282 @c _;
283 @c sin (%pi/2);
284 @c :lisp $_
285 @c _;
286 @c a: 13$
287 @c b: 29$
288 @c a + b;
289 @c :lisp $_
290 @c _;
291 @c a + b;
292 @c ev (_);
293 @c ===end===
294 @example
295 (%i1) 13 + 29;
296 (%o1)                          42
297 (%i2) :lisp $_
298 ((MPLUS) 13 29)
299 (%i2) _;
300 (%o2)                          42
301 (%i3) sin (%pi/2);
302 (%o3)                           1
303 (%i4) :lisp $_
304 ((%SIN) ((MQUOTIENT) $%PI 2))
305 (%i4) _;
306 (%o4)                           1
307 (%i5) a: 13$
308 (%i6) b: 29$
309 (%i7) a + b;
310 (%o7)                          42
311 (%i8) :lisp $_
312 ((MPLUS) $A $B)
313 (%i8) _;
314 (%o8)                         b + a
315 (%i9) a + b;
316 (%o9)                          42
317 (%i10) ev (_);
318 (%o10)                         42
319 @end example
321 @end defvr
325 @defvr {Variable del sistema} %
326 @ifinfo
327 @vrindex Salida anterior
328 @end ifinfo
330 El símbolo @code{%} representa la expresión de salida (esto es, @code{%o1}, @code{%o2}, @code{%o3}, ...)
331 más reciente calculada por Maxima, independientemente de que la haya mostrado o no.
333 La variable @code{%} es reconocida por  @code{batch} y por @code{load}.
334 Cuando un fichero es procesado por @code{batch}, la variable @code{%}
335 tiene el mismo significado que en el modo interactivo.
336 Cuando un fichero es procesado por @code{load}, a la variable @code{%}
337 se le asigna la última expresión introducida, bien desde el modo
338 interactivo, bien en un fichero por lotes; en ningún caso se le asigna 
339 a @code{%} una expresión de entrada del fichero que está siendo procesado.
341 Véanse también @code{_}, @code{%%} y @code{%th}.
343 @end defvr
348 @defvr {Variable del sistema} %%
349 @ifinfo
350 @vrindex Resultado anterior en una sentencia compuesta
351 @end ifinfo
353 En una sentencia compuesta, como @code{block}, @code{lambda} o 
354 @code{(@var{s_1}, ..., @var{s_n})}, @code{%%} es el valor de la sentencia previa.
356 La variable @code{%%} no está definida cuando se utiliza en la primera sentencia,
357 o fuera de una sentencia compuesta.
359 @code{%%} se puede utilizar con @code{batch} y @code{load}, manteniendo en ambos
360 casos el mismo significado que en el modo interactivo.
362 Véase también @code{%}
364 Ejemplos:
366 Los siguientes dos ejemplos devuelven el mismo resultado.
368 @example
369 (%i1) block (integrate (x^5, x), ev (%%, x=2) - ev (%%, x=1));
370                                21
371 (%o1)                          --
372                                2
373 (%i2) block ([prev], prev: integrate (x^5, x),
374                ev (prev, x=2) - ev (prev, x=1));
375                                21
376 (%o2)                          --
377                                2
379 @end example
381 Una sentencia compuesta puede contener otras sentencias compuestas.
382 Independientemente de que una sentencia sea simple o compuesta, @code{%%} es 
383 el valor de la sentencia previa.
385 @example
386 (%i3) block (block (a^n, %%*42), %%/6);
387                                  n
388 (%o3)                         7 a
389 @end example
391 Dentro de una sentencia compuesta, el valor de @code{%%} puede inspeccionarse
392 en un punto de interrupción que se abra ejecutando la función @code{break}.
393 Por ejemplo, escribiendo @code{%%;} en el siguiente ejemplo se obtiene @code{42}.
395 @example
396 (%i4) block (a: 42, break ())$
398 Entering a Maxima break point. Type 'exit;' to resume.
399 _%%;
402 @end example
403 @end defvr
407 @deffn {Función} %th (@var{i})
408 @ifinfo
409 @fnindex i-ésima salida anterior
410 @end ifinfo
412 Es el valor de la expresión de la @var{i}-ésima salida anterior.
413 Esto es, si la siguiente expresión a calcular es la salida @var{n}-ésima,
414 @code{%th (@var{m})} es la salida  (@var{n} - @var{m})-ésima.
416 @code{%th} es reconocido por @code{batch} y @code{load}, interpretándose
417 de la misma manera que se acaba de indicar. Cuando un fichero es procesado
418 por @code{load}, @code{%th} se refiere a los cálculos más recientes;
419 @code{%th} no hace referencia a las expresiones de salida incluidas en el
420 propio fichero que se está procesando.
422 Véanse también @code{%} y @code{%%}
424 Ejemplo:
426 @code{%th} es útil en ficheros @code{batch} para hacer referencia a grupos de resultados
427 recién obtenidos.  En este ejemplo se asigna a @code{s} la suma de los cinco resultados.
429 @example
430 (%i1) 1;2;3;4;5;
431 (%o1)                           1
432 (%o2)                           2
433 (%o3)                           3
434 (%o4)                           4
435 (%o5)                           5
436 (%i6) block (s: 0, for i:1 thru 5 do s: s + %th(i), s);
437 (%o6)                          15
438 @end example
439 @end deffn
443 @deffn {Símbolo especial} ?
444 @ifinfo
445 @fnindex Busca en la documentación
446 @end ifinfo
448 Como prefijo de una función o nombre de variable, @code{?} significa que el nombre es de Lisp, no de Maxima.
449 Por ejemplo, @code{?round} representa la función de Lisp @code{ROUND}.
450 Véase @code{Lisp y Maxima} para más información.
452 La notación @code{? word} (un símbolo de interrogación
453 seguido de una palabra y separados por un espacio)
454 equivale a @code{describe ("word")}.
455 El símbolo de interrogación debe escribirse al
456 comienzo de la línea de entrada; en caso contrario
457 no se reconoce como una solicitud de documentación.
459 @end deffn
461 @deffn {Símbolo especial} ??
462 @ifinfo
463 @fnindex Busca coincidencias inexactas en la documentación
464 @end ifinfo
466 La notación @code{?? palabra} (@code{??} seguido de un espacio
467 y una palabra) equivale a @code{describe("palabra", inexact)}.
468 El símbolo de interrogación debe escribirse al
469 comienzo de la línea de entrada; en caso contrario
470 no se reconoce como una solicitud de documentación.
472 @end deffn
476 @defvr {Variable opcional} inchar
477 Valor por defecto: @code{%i}
479 La variable @code{inchar} es el prefijo de las etiquetas de las
480 expresiones introducidas por el usuario. Maxima crea automáticamente 
481 una etiqueta para cada expresión de entrada concatenando @code{inchar} 
482 y @code{linenum}.
484 A @code{inchar} se le puede asignar cualquier símbolo 
485 o cadena, no necesariamente un caracácter sencillo. Puesto que
486 internamente Maxima solo tiene en cuenta el primer carácter del
487 prefijo, los prefijos @code{inchar}, @code{outchar} y @code{linechar}
488 deben comenzar con caracteres diferentes; en caso contrario, sentencias
489 como @code{kill(inlables)} pueden dar resultados inesperados.
491 Véase también @code{labels}.
493 Ejemplo:
495 @c ===beg===
496 @c inchar: "input";
497 @c expand((a+b)^3);
498 @c ===end===
499 @example
500 (%i1) inchar: "input";
501 (%o1)                         input
502 (input2) expand((a+b)^3);
503                      3        2      2      3
504 (%o2)               b  + 3 a b  + 3 a  b + a
505 (input3)
506 @end example
508 @end defvr
511 @defvr {Variable del sistema} infolists
512 Valor por defecto: @code{[]}
514 La variable @code{infolists} es una lista con los nombres de todas las listas que guardan información sobre Maxima. Estas son:
516 @table @code
517 @item labels
518 Todas las etiquetas @code{%i}, @code{%o} y @code{%t} con valores asignados.
519 @item values
520 Todos los átomos que son variables de usuario, no opciones de Maxima creadas con  @code{:} o @code{::}.
521 @item functions
522 Todas las funciones de usuario creadas con @code{:=} o @code{define}.
523 @item arrays
524 Arreglos declarados y no declarados, creados por @code{:}, @code{::} o @code{:=}.
525 @c AREN'T THERE OTHER MEANS OF CREATING ARRAYS ??
526 @item macros
527 Cualquier macro definida por el usuario.
528 @item myoptions
529 Todas las opciones inicializadas por el usuario, independientemente de que posteriormente hayan sido devueltas a sus valores por defecto.
530 @item rules
531 Reglas de patrones y simplificación definidas por el usuario, creadas con @code{tellsimp}, @code{tellsimpafter}, @code{defmatch} o @code{defrule}.
532 @item aliases
533 Átomos que tienen un "alias" definido por el usuario, creado por las funciones @code{alias}, @code{ordergreat} o @code{orderless} o por haber declarado el átomo como @code{noun} (nombre) con @code{declare}.
534 @item dependencies
535 Átomos que tienen dependencias funcionales, creados por las funciones @code{depends} o @code{gradef}.
536 @item gradefs
537 Funciones que tienen derivadas definidas por el usuario, creadas por la función @code{gradef}.
538 @item props
539 Todos los átomos que tengan cualquier propiedad que no sea de las mencionadas hasta ahora, como las establecidas por @code{atvalue}, @code{matchdeclare}, etc., así como propiedadas especificadas en la función @code{declare}.
540 @item let_rule_packages
541 Todos los paquetes de reglas @code{let} definidos por el usuario, junto con el paquete especial @code{default_let_rule_package}; @code{default_let_rule_package} es el nombre del paquete de reglas utilizado cuando no se use ningún otro especificado por el usuario.
542 @end table
544 @end defvr
548 @deffn {Función} kill (@var{a_1}, ..., @var{a_n})
549 @deffnx {Función} kill (labels)
550 @deffnx {Función} kill (inlabels, outlabels, linelabels)
551 @deffnx {Función} kill (@var{n})
552 @deffnx {Función} kill ([@var{m}, @var{n}])
553 @deffnx {Función} kill (values, functions, arrays, ...)
554 @deffnx {Función} kill (all)
555 @deffnx {Función} kill (allbut (@var{a_1}, ..., @var{a_n}))
556 Elimina todas las asignaciones (valor, función, arreglo o regla) hechas a los
557 argumentos @var{a_1}, ..., @var{a_n}.
558 Un argumento @var{a_k} puede ser un símbolo o el elemento
559 de un array. Si @var{a_k} es elemento de un array, @code{kill} elimina la
560 asignación hecha a este elemento sin afectar al resto del array.
562 Se reconocen varios argumentos especiales. 
563 Se pueden combinar diferentes clases de argumentos, 
564 como por ejemplo, @code{kill (inlabels, functions, allbut (foo, bar))}.
566 La instrucción @code{kill (labels)} borra todas las asignaciones asociadas
567 a las etiquetas de entrada, de salida e intermedias creadas hasta el
568 momento. La instrucción @code{kill (inlabels)} elimina únicamente
569 las asignaciones de las etiquetas de entrada que comienzan con el
570 valor actual de @code{inchar}. Del mismo modo, @code{kill (outlabels)}
571 elimina únicamente las asignaciones de las etiquetas de salida
572 que comienzan con el valor actual de @code{outchar}. Finalmente,
573 @code{kill (linelabels)} elimina únicamente las asignaciones
574 de las etiquetas de las expresiones intermedias
575 que comienzan con el valor actual de @code{linechar}.
577 La instrucción @code{kill (@var{n})}, siendo @var{n} un entero,
578 elimina las asignaciones de las últimas @var{n} etiquetas, tanto
579 de entrada como de salida.
581 La instrucción @code{kill ([@var{m}, @var{n}])} elimina las asignaciones
582 hechas a las etiquetas de entrada y salida desde la @var{m} hasta la@var{n}.
584 La instrucción @code{kill (@var{infolist})}, siendo @var{infolist} 
585 cualquier elemento de @code{infolists} (como @code{values}, @code{functions} 
586 o @code{arrays}), elimina todas las asignaciones hechas a los elementos de
587 @var{infolist}. Véase también @code{infolists}.
589 La instrucción @code{kill (all)} elimina todas las asignaciones de
590 todas las variables, pero no reinicia las variables globales a sus
591 valores por defecto. Véase también @code{reset}.
593 La instrucción @code{kill (allbut (@var{a_1}, ..., @var{a_n}))}
594 elimina las asignaciones hechas a todas las variables,
595 excepto a @var{a_1}, ..., @var{a_n}; la instrucción
596 @code{kill (allbut (@var{infolist}))} elimina todas las asignaciones,
597 excepto las de los elementos de @var{infolist}, pudiendo ser @var{infolist}
598 igual a @code{values}, @code{functions}, @code{arrays}, etc.
600 La memoria reservada para una asignación no se libera hasta que
601 no se vacíen todos los símbolos
602 asociados con esta asignación; por ejemplo, para liberar la memoria
603 del valor de un símbolo es necesario eliminar tanto
604 la asignación de la etiqueta de salida que muestra el resultado,
605 como la del propio símbolo.
607 La función @code{kill} no evalua sus argumentos. 
608 El operador comilla-comilla, @code{'@w{}'}, obliga a que se realice la evaluación.
610 La llamada @code{kill (@var{symbol})} elimina todas las propiedades de @var{symbol}.
611 Por el contrario, @code{remvalue}, @code{remfunction}, @code{remarray} y @code{remrule}
612 eliminan propiedades específicas. 
614 @code{kill} siempre devuelve @code{done}, incluso cuando alguno de sus 
615 argumentos carecía de asignación previa. 
617 @end deffn
621 @deffn {Función} labels (@var{symbol})
622 @deffnx {Variable del sistema} labels
623 Retorna la lista de etiquetas de entrada, salida o de expresiones intermedias las cuales empiezan con @var{symbol}. 
624 Típicamente @var{symbol} es el valor de las variables @code{inchar}, @code{outchar} o @code{linechar}. 
625 El caractér de etiqueta puede ser pasado con o sin signo de porcentaje, 
626 así, por ejemplo, @code{i} y @code{%i} producen el mismo resultado.  
628 Si ninguna etiqueta empieza con @var{symbol}, @code{labels} retorna a una
629 lista vacía. 
631 La función @code{labels} no evalua su argumento.
632 El operador comilla-comilla, @code{'@w{}'}, obliga a que se realice la evaluación.
633 Por ejemplo, 
634 @code{labels (''inchar)} devuelve las etiquetas de entrada que empiezan con el caractér de etiqueta de entrada actual. 
636 La variable @code{labels} es una lista de las etiquetas de entrada, salida y expresiones intermedias, incluyendo todas las etiquetas anteriores en el caso de que @code{inchar}, @code{outchar} o @code{linechar} hayan sido redefinidas. 
638 Por defecto, Maxima muestra el resultado de cada expresión introducida por el usuario, asignando al resultado una etiqueta de salida. 
639 La salida (es decir el resultado) puede ser suprimida terminando la expresión de entrada con un @code{$} (signo de dólar) en vez de un @code{;} (punto y coma). 
640 En este caso, se crea la etiqueta de salida y se le asigna el resultado, aunque éste no se muestre; aún así, la etiqueta puede ser referenciada de la misma forma que se hace con aquéllas cuyos resultados sí son mostrados.
642 Véanse también: @code{%}, @code{%%} y @code{%th}. 
644 Las etiquetas de expresiones intermedias pueden ser generadas por algunas funciones. El interruptor @code{programmode} controla si @code{solve} y algunas otras funciones generan etiquetas de expresiones intermedias en vez de retornar una lista de expresiones. 
645 Algunas otras funciones, tales como @code{ldisplay}, siempre generan etiquetas de expresiones intermedias. 
648 Véase también: @code{inchar}, @code{outchar}, @code{linechar} y @code{infolists}.
650 @end deffn
655 @defvr {Variable opcional} linechar
656 Valor por defecto: @code{%t}
658 La variable @code{linechar} es el prefijo de las etiquetas que
659 genera Maxima para expresiones intermedias. Cuando sea necesario,
660 Maxima creará una etiqueta para cada expresión intermedia 
661 concatenando @code{linechar} y @code{linenum}.
663 A @code{linechar} se le puede asignar cualquier símbolo 
664 o cadena, no necesariamente un caracácter sencillo. Puesto que
665 internamente Maxima solo tiene en cuenta el primer carácter del
666 prefijo, los prefijos @code{inchar}, @code{outchar} y @code{linechar}
667 deben comenzar con caracteres diferentes; en caso contrario, sentencias
668 como @code{kill(inlables)} pueden dar resultados inesperados.
670 Las expresiones intermedias pueden ser mostradas o no.
671 Véanse también @code{programmode} y @code{labels}.
673 @end defvr
677 @defvr {Variable del sistema} linenum
678 El número de la línea del par de expresiones de entrada y salida actuales. 
679 @end defvr
683 @defvr {Variable del sistema} myoptions
684 Valor por defecto: @code{[]}
686 @code{myoptions} es la lista de todas las opciones que nunca fueron reconfiguradas por el usuario, aunque éstas hayan sido reconfiguradas a su valor por defecto. 
688 @end defvr
691 @defvr {Variable opcional} nolabels
692 Valor por defecto: @code{false}
694 Cuando @code{nolabels} vale @code{true},
695 las etiquetas de entrada y salida 
696 (@code{%i} y @code{%o}, respectivamente)
697 son mostradas, pero a éstas no se les 
698 asignan los resultados; además, las etiquetas no se
699 incorporan a la lista @code{labels}.
700 Puesto que a las etiquetas no se les asignan resultados, 
701 el colector de basura puede recuperar la memoria ocupada
702 por éstos.
704 En el caso contrario, a las etiquetas de entrada y salida se les asignan los resultados correspondientes y son añadidas a la lista @code{labels}.
706 Las etiquetas de expresiones intermedias (@code{%t}) no se ven afectadas por la variable @code{nolabels};
707 independientemente de que @code{nolabels} valga @code{true} o @code{false}, a las etiquetas de expresiones intermedias se les asignan siempre valores, además de ser añadidas a la lista @code{labels}.
709 Véanse también @code{batch}, @code{batchload} y @code{labels}. 
711 @end defvr
714 @defvr {Variable opcional} optionset
715 Valor por defecto: @code{false}
717 Cuando @code{optionset} tiene como valor @code{true}, Maxima imprime un
718 mensaje cada vez que una opción de Maxima es reconfigurada. Esto es 
719 muy útil si el usuario duda con frecuencia de la correctitud de alguna
720 opción y quiere estar seguro de la variable a la que él asignó un
721 valor fue verdaramente una variable opción (o interruptor). 
723 Ejemplo:
725 @example
726 (%i1) optionset:true;
727 assignment: assigning to option optionset
728 (%o1)                         true
729 (%i2) gamma_expand:true;
730 assignment: assigning to option gamma_expand
731 (%o2)                         true
732 @end example
733 @end defvr
736 @defvr {Variable opcional} outchar
737 Valor por defecto: @code{%o}
739 La variable @code{outchar} es el prefijo de las etiquetas de las 
740 expresiones calculadas por Maxima. Maxima crea automáticamente 
741 una etiqueta para cada expresión calculada concatenando @code{outchar}
742 y @code{linenum}.
744 A @code{outchar} se le puede asignar cualquier símbolo 
745 o cadena, no necesariamente un caracácter sencillo. Puesto que
746 internamente Maxima solo tiene en cuenta el primer carácter del
747 prefijo, los prefijos @code{inchar}, @code{outchar} y @code{linechar}
748 deben comenzar con caracteres diferentes; en caso contrario, sentencias
749 como @code{kill(inlables)} pueden dar resultados inesperados.
751 Véase también @code{labels}.
753 Ejemplo:
755 @c ===beg===
756 @c outchar: "output";
757 @c expand((a+b)^3);
758 @c ===end===
759 @example
760 (%i1) outchar: "output";
761 (output1)                    output
762 (%i2) expand((a+b)^3);
763                      3        2      2      3
764 (output2)           b  + 3 a b  + 3 a  b + a
765 (%i3)
766 @end example
767 @end defvr
771 @deffn {Función} playback ()
772 @deffnx {Función} playback (@var{n})
773 @deffnx {Función} playback ([@var{m}, @var{n}])
774 @deffnx {Función} playback ([@var{m}])
775 @deffnx {Función} playback (input)
776 @deffnx {Función} playback (slow)
777 @deffnx {Función} playback (time)
778 @deffnx {Función} playback (grind)
779 Muestra las entradas, salidas y expresiones intermedias 
780 sin recalcularlas. 
781 @code{playback} sólo muestra las expresiones asociadas con etiquetas; 
782 cualquier otra salida (tal como texto impreso por @code{print} o @code{describe}, o mensajes de error) no es mostrada. 
783 Véase también: @code{labels}. 
785 @code{playback} no evalua sus argumentos. 
786 El operador comilla-comilla, @code{'@w{}'}, obliga a que se realice la evaluación.
787 @code{playback} siempre devuelve @code{done}. 
789 @code{playback ()} (sin argumentos) muestra todas las entradas, salidas y expresiones intermedias generadas hasta el momento. 
790 Una expresión de salida es mostrada incluso si ésta fue suprimida por el caracter de terminación @code{$}, cuando fue originalmente calculada. 
792 @code{playback (@var{n})}  muestra las @var{n} expresiones más recientes. Cada entrada, salida y expresión intermedia cuenta como una. 
794 @code{playback ([@var{m}, @var{n}])} muestra entradas, salidas y expresiones intermedias con los números desde @var{m} hasta @var{n}, ambos inclusive. 
796 @code{playback ([@var{m}])} es equivalente a @code{playback ([@var{m}, @var{m}])};
797 esto usualmente imprime un par de expresiones de entrada y salida. 
799 @code{playback (input)} muestra todas las expresiones de entrada generadas hasta el momento. 
801 @code{playback (slow)} hace pausas entre expresiones y
802 espera a que el usuario pulse la tecla @code{enter} para continuar. 
803 Esto es un comportamiento similar a @code{demo}. 
805 @c WHAT DOES THE FOLLOWING MEAN ???
806 @c HAY QUE ESPERAR PARA ACLARAR ESTA PARTE
807 @code{playback (slow)} es muy útil en conjunción con @code{save} o
808 @code{stringout} cuando se crea un archivo secundario de almacenamiento con el objetivo de elegir cuidadosamente las expresiones realmente útiles. 
810 @c @code{playback (slow)} is useful in conjunction with @code{save} or @code{stringout}
811 @c when creating a secondary-storage file in order to pick out useful expressions.
813 @code{playback (time)} muestra el tiempo de computo por cada expresión. 
815 @c DON'T BOTHER TO MENTION OBSOLETE OPTIONS !!!
816 @c The arguments @code{gctime} and @code{totaltime} have the same effect as @code{time}.
818 @code{playback (grind)} muestra las expresiones de entrada 
819 en el mismo formato como la función @code{grind}. 
820 Las expresiones de salida no se ven afectadas por la opción 
821 @code{grind}. 
822 Vea @code{grind}. 
823 Los argumentos pueden ser combinados, por ejemplo, 
824 @code{playback ([5, 10], grind, time, slow)}.
825 @c APPEARS TO BE input INTERSECT (UNION OF ALL OTHER ARGUMENTS). CORRECT ???
827 @end deffn
830 @defvr {Variable opcional} prompt
831 Valor por defecto: @code{_}
833 @code{prompt} es el símbolo del prompt de la función @code{demo}, 
834 del modo @code{playback (slow)} y del bucle de interrupción de Maxima (el que se invoca con @code{break}). 
836 @end defvr
841 @deffn {Función} quit ()
842 Termina una sesión de Maxima. 
843 Nótese que la función debe ser invocada como @code{quit();} o @code{quit()$}, no como @code{quit}. 
845 Para parar un cálculo muy demorado 
846 pulse @code{Control-C}. 
847 La acción por defecto es retornar a prompt de Maxima. 
848 Si @code{*debugger-hook*} tiene como valor @code{nil},
849 pulsar @code{Control-C} abrirá el depurador de Lisp. 
850 Vea también: @code{debugging}. 
852 @end deffn
855 @deffn {Función} read (@var{expr_1}, ..., @var{expr_n})
856 Imprime @var{expr_1}, ..., @var{expr_n} y a continuación lee una expresión desde la consola y devuelve la expresión evaluada. La expresión termina con un punto y coma @code{;} o con el símbolo de dólar @code{$}.
858 Véase también @code{readonly}.
860 @example
861 (%i1) foo: 42$ 
862 (%i2) foo: read ("foo vale", foo, " -- nuevo valor.")$
863 foo vale 42  -- nuevo valor. 
864 (a+b)^3;
865 (%i3) foo;
866                                      3
867 (%o3)                         (b + a)
868 @end example
870 @end deffn
874 @deffn {Función} readonly (@var{expr_1}, ..., @var{expr_n})
875 Imprime @var{expr_1}, ..., @var{expr_n} y a continuación lee una expresión desde la consola y devuelve la expresión sin evaluar. La expresión termina con un punto y coma @code{;} o con el símbolo de dólar @code{$}.
877 @example
878 (%i1) aa: 7$
879 (%i2) foo: readonly ("Introducir expresion:");
880 Introducir expresion: 
881 2^aa;
882                                   aa
883 (%o2)                            2
884 (%i3) foo: read ("Introducir expresion:");
885 Introducir expresion: 
886 2^aa;
887 (%o3)                            128
888 @end example
890 Véase también @code{read}.
892 @end deffn
896 @deffn {Función} reset ()
897 Reconfigura muchas variables y opciones globales y algunas otras variables a sus valores por defecto. 
899 @code{reset} procesa las variables que se encuentran en la lista Lisp 
900 @code{*variable-initial-values*}. 
901 La macro Lisp @code{defmvar} pone las variables en ésta lista (entre otras acciones). 
902 Muchas, pero no todas, las variables y opciones globales son definidas por @code{defmvar}, y algunas variables definidas por @code{defmvar} no son ni variables ni opciones globales. 
904 @end deffn
907 @defvr {Variable opcional} showtime
908 Valor por defecto: @code{false}
910 Cuando @code{showtime} tiene como valor @code{true}, el tiempo de cálculo y el tiempo de retardo se imprimen junto con la salida de cada expresión. 
912 El tiempo de cálculo se almacena siempre, de manera que @code{time} y @code{playback} puedan mostrar el tiempo de cálculo incluso cuando @code{showtime} vale @code{false}.
914 Véase también @code{timer}.
916 @end defvr
919 @deffn {Function} to_lisp ()
920 Entra en el intérprete Lisp bajo Maxima. @code{(to-maxima)} retorna de nuevo a Maxima. 
922 Ejemplo:
924 Define una función y entra en el nivel Lisp. La definición
925 se consulta en la lista de propiedades, luego se extrae la definición
926 de la función, se factoriza y almacena el resultado en la variable @code{$result}.
927 Esta variable se puede utilizar luego una vez se haya vuelto al nivel
928 de Maxima.
930 @example
931 (%i1) f(x):=x^2+x;
932                                          2
933 (%o1)                           f(x) := x  + x
934 (%i2) to_lisp();
935 Type (to-maxima) to restart, ($quit) to quit Maxima.
937 MAXIMA> (symbol-plist '$f)
938 (MPROPS (NIL MEXPR ((LAMBDA) ((MLIST) $X) ((MPLUS) ((MEXPT) $X 2) $X))))
939 MAXIMA> (setq $result ($factor (caddr (mget '$f 'mexpr))))
940 ((MTIMES SIMP FACTORED) $X ((MPLUS SIMP IRREDUCIBLE) 1 $X))
941 MAXIMA> (to-maxima)
942 Returning to Maxima
943 (%o2)                                true
944 (%i3) result;
945 (%o3)                              x (x + 1)
946 @end example
947 @end deffn
951 @defvr {Variable del sistema} values
952 Valor inicial: @code{[]}
954 @code{values} es una lista de todas las variables que el usuario ha creado
955 (no incluye las opciones de Maxima ni los interruptores). 
956 La lista comprende los símbolos a los que se ha asignado un
957 valor mediante @code{:} o @code{::}.
959 Si el valor de una variable se borra con cualquiera de las instrucciones
960 @code{kill}, @code{remove} o @code{remvalue}, dicha variable desaparece
961 de la lista @code{values}.
963 Véase @code{functions} para una lista de funciones definidas por el
964 usuario.
966 Ejemplos:
968 Primero, @code{values} muestra los símbolos @code{a}, 
969 @code{b} y @code{c}, pero no @code{d}, pues no tiene valor asignado,
970 ni la función de usuario @code{f}. Luego los valores de las variables se
971 borran y @code{values} queda como una lista vacía.
973 @c ===beg===
974 @c [a:99, b:: a-90, c:a-b, d, f(x):=x^2];
975 @c values;
976 @c [kill(a), remove(b,value), remvalue(c)];
977 @c values;
978 @c ===end===
979 @example
980 (%i1) [a:99, b::a-90, c:a-b, d, f(x):= x^2];
981                                                   2
982 (%o1)                     [99, 9, 90, d, f(x) := x ]
983 (%i2) values;
984 (%o2)                              [a, b, c]
985 (%i3) [kill(a), remove(b,value), remvalue(c)];
986 (%o3)                          [done, done, [c]]
987 (%i4) values;
988 (%o4)                                 []
989 @end example
991 @end defvr
1005 @node Funciones y variables para la impresión, , Funciones y variables para la línea de comandos, Línea de comandos
1007 @section Funciones y variables para la impresión
1010 @defvr {Variable opcional} %edispflag
1011 Valor por defecto: @code{false}
1013 Si @code{%edispflag} vale @code{true}, Maxima muestra @code{%e} elevado
1014 a un exponente negativo como un cociente. Por ejemplo, @code{%e^-x} se
1015 muestra como @code{1/%e^x}. Véase también @code{exptdispflag}.
1017 Ejemplo:
1019 @c ===beg===
1020 @c %e^-10;
1021 @c %edispflag:true$
1022 @c %e^-10;
1023 @c ===end===
1024 @example
1025 (%i1) %e^-10;
1026                                - 10
1027 (%o1)                        %e
1028 (%i2) %edispflag:true$
1029 (%i3) %e^-10;
1030                                1
1031 (%o3)                         ----
1032                                 10
1033                               %e
1034 @end example
1035 @end defvr
1039 @defvr {Variable opcional} absboxchar
1040 Valor por defecto: @code{!}
1042 La variable @code{absboxchar} es el carácter utilizado para representar el valor absoluto de una expresión que ocupa más de una línea de altura.
1044 Ejemplo:
1046 @example
1047 (%i1) abs((x^3+1));
1048                             ! 3    !
1049 (%o1)                       !x  + 1!
1050 @end example
1051 @end defvr
1054 @deffn {Función} disp (@var{expr_1}, @var{expr_2}, ...)
1056 Es como @code{display} pero sólo se muestran los valores de
1057 los argumentos, no las ecuaciones. Es útil para argumentos 
1058 complicados que no tienen nombre o en situaciones en las que 
1059 solamente es de interés el valor del argumento pero no su nombre.
1061 Véanse también @code{ldisp} y @code{print}.
1063 Ejemplos:
1065 @c ===beg===
1066 @c b[1,2]:x-x^2$
1067 @c x:123$
1068 @c disp(x, b[1,2], sin(1.0));
1069 @c ===end===
1070 @example
1071 (%i1) b[1,2]:x-x^2$
1072 (%i2) x:123$
1073 (%i3) disp(x, b[1,2], sin(1.0));
1074                                123
1076                                   2
1077                              x - x
1079                         .8414709848078965
1081 (%o3)                         done
1082 @end example
1083 @end deffn
1086 @deffn {Función} display (@var{expr_1}, @var{expr_2}, ...)
1088 Muestra las ecuaciones cuyos miembros izquierdos son 
1089 @var{expr_i} sin evaluar y cuyos miembros derechos son los 
1090 valores de las expresiones. Esta función es útil en los 
1091 bloques y en las sentencias @code{for} para mostrar resultados 
1092 intermedios.  Los argumentos de @code{display} suelen ser átomos, 
1093 variables subindicadas o llamadas a funciones.
1095 Véanse también @code{ldisplay}, @code{disp} y @code{ldisp}.
1097 Ejemplos:
1099 @c ===beg===
1100 @c b[1,2]:x-x^2$
1101 @c x:123$
1102 @c display(x, b[1,2], sin(1.0));
1103 @c ===end===
1104 @example
1105 (%i1) b[1,2]:x-x^2$
1106 (%i2) x:123$
1107 (%i3) display(x, b[1,2], sin(1.0));
1108                              x = 123
1110                                       2
1111                          b     = x - x
1112                           1, 2
1114                   sin(1.0) = .8414709848078965
1116 (%o3)                         done
1117 @end example
1118 @end deffn
1121 @defvr {Variable opcional} display2d
1122 Valor por defecto: @code{true}
1124 Si @code{display2d} vale @code{false}, la salida por consola es
1125 una cadena unidimensional, en lugar de una expresión bidimensional.
1127 Véase también @code{leftjust} para cambiar la justificación a
1128 la izquierda o el centrado de la ecuación.
1130 Ejemplo:
1132 @c ===beg===
1133 @c x/(x^2+1);
1134 @c display2d:false$
1135 @c x/(x^2+1);
1136 @c ===end===
1137 @example
1138 (%i1) x/(x^2+1);
1139                                x
1140 (%o1)                        ------
1141                               2
1142                              x  + 1
1143 (%i2) display2d:false$
1144 (%i3) x/(x^2+1);
1145 (%o3) x/(x^2+1)
1146 @end example
1147 @end defvr
1150 @defvr {Variable opcional} display_format_internal
1151 Valor por defecto: @code{false}
1153 Si @code{display_format_internal} vale @code{true},
1154 las expresiones se muestran sin ser transformadas de manera que oculten su representación matemática interna. Se representa lo que la función @code{inpart} devolvería, en oposición a @code{part}.
1156 Ejemplos:
1158 @example
1159 User     part       inpart
1160 a-b;      a - b     a + (- 1) b
1162            a            - 1
1163 a/b;       -         a b
1164            b
1165                        1/2
1166 sqrt(x);   sqrt(x)    x
1168           4 X        4
1169 X*4/3;    ---        - X
1170            3         3
1171 @end example
1173 @end defvr
1176 @deffn {Función} dispterms (@var{expr})
1177 Muestra @var{expr} en partes, una debajo de la otra.
1178 Esto es, primero se muestra el operador de @var{expr}, luego 
1179 cada término si se trata de una suma, o cada factor si es un 
1180 producto, o si no se muestra separadamente la parte de una expresión 
1181 más general. Es útil si @var{expr} es demasiado grande para 
1182 representarla de otra forma.  Por ejemplo, si @code{P1}, @code{P2}, ...  
1183 son expresiones muy grandes, entonces el programa de representación 
1184 puede superar el espacio de almacenamiento tratando de mostrar 
1185 @code{P1 + P2 + ...} todo junto.  Sin embargo, @code{dispterms (P1 + P2 + ...)} 
1186 muestra @code{P1}, debajo  @code{P2}, etc.  Cuando una expresión exponencial 
1187 es demasiado ancha para ser representada como @code{A^B}, si no se utiliza 
1188 @code{dispterms}, entonces aparecerá como @code{expt (A, B)} (o como 
1189 @code{ncexpt (A, B)}, en lugar de @code{A^^B}).
1191 Ejemplo:
1193 @example
1194 (%i1) dispterms(2*a*sin(x)+%e^x);
1198 2 a sin(x)
1200   x
1203 (%o1)                         done
1204 @end example
1205 @end deffn
1208 @deffn {Símbolo especial} expt (@var{a}, @var{b})
1209 @deffnx {Símbolo especial} ncexpt (@var{a}, @var{b})
1210 Si una expresión exponencial es demasiado ancha para ser mostrada como @code{@var{a}^@var{b}} aparecerá como @code{expt (@var{a}, @var{b})} (o como @code{ncexpt (@var{a}, @var{b})} en lugar de @code{@var{a}^^@var{b}}).
1212 @c THIS SEEMS LIKE A BUG TO ME. expt, ncexpt SHOULD BE RECOGNIZED SINCE MAXIMA
1213 @c ITSELF PRINTS THEM SOMETIMES. THESE SHOULD JUST SIMPLIFY TO ^ AND ^^, RESPECTIVELY.
1214 Las funciones @code{expt} y @code{ncexpt} no se reconocen en una entrada.
1216 @end deffn
1219 @defvr {Variable opcional} exptdispflag
1220 Valor por defecto: @code{true}
1222 Si @code{exptdispflag} vale @code{true}, Maxima muestra las expresiones con 
1223 exponentes negativos como cocientes. Véase también @code{%edispflag}.
1225 Ejemplo:
1227 @example
1228 (%i1) exptdispflag:true;
1229 (%o1)                         true
1230 (%i2) 10^-x;
1231                                 1
1232 (%o2)                          ---
1233                                  x
1234                                10
1235 (%i3) exptdispflag:false;
1236 (%o3)                         false
1237 (%i4) 10^-x;
1238                                 - x
1239 (%o4)                         10
1240 @end example
1242 @end defvr
1245 @deffn {Función} grind (@var{expr})
1246 @deffnx {Variable opcional} grind
1247 La función @code{grind} imprime @var{expr}
1248 en la consola en un formato admisible como entrada para Maxima. La función 
1249 @code{grind} devuelve siempre @code{done}.
1251 Cuando @var{expr} es el nombre de una función o macro, @code{grind}
1252 muestra la definición de la función o de la macro en lugar de sólo
1253 su nombre.
1255 Véase también @code{string}, que devuelve una cadena en lugar de imprimir la salida. La función
1256 @code{grind} intenta imprimir la expresión de forma que sea lago más sencilla de leer que la salida de @code{string}.
1258 Cuando la variable @code{grind} vale @code{true},
1259 la salida de @code{string} y @code{stringout} tienen el mismo formato que la de @code{grind};
1260 en caso contrario no se formatea la salida de esas funciones.
1261 El valor por defecto de la variable @code{grind} es @code{false}.
1263 La variable @code{grind} también se puede utilizar como  argumento en @code{playback}.
1264 Si @code{grind} está presente,
1265 @code{playback} imprime las expresiones de entrada en el mismo formato que lo hace la función @code{grind};
1266 en caso contrario no se formatean la expresiones de entrada.
1268 La función @code{grind} evalúa sus argumentos.
1270 Ejemplos:
1272 @c ===beg===
1273 @c aa + 1729;
1274 @c grind (%);
1275 @c [aa, 1729, aa + 1729];
1276 @c grind (%);
1277 @c matrix ([aa, 17], [29, bb]);
1278 @c grind (%);
1279 @c set (aa, 17, 29, bb);
1280 @c grind (%);
1281 @c exp (aa / (bb + 17)^29);
1282 @c grind (%);
1283 @c expr: expand ((aa + bb)^10);
1284 @c grind (expr);
1285 @c string (expr);
1286 @c cholesky (A):= block ([n : length (A), L : copymatrix (A),
1287 @c   p : makelist (0, i, 1, length (A))], 
1288 @c   for i thru n do for j : i thru n do
1289 @c   (x : L[i, j], x : x - sum (L[j, k] * L[i, k], k, 1, i - 1), 
1290 @c   if i = j then @c   p[i] : 1 / sqrt(x) else L[j, i] : x * p[i]), 
1291 @c   for i thru n do L[i, i] : 1 / p[i],
1292 @c   for i thru n do for j : i + 1 thru n do L[i, j] : 0, L)$
1293 @c grind (cholesky);
1294 @c string (fundef (cholesky));
1295 @c ===end===
1296 @example
1297 (%i1) aa + 1729;
1298 (%o1)                       aa + 1729
1299 (%i2) grind (%);
1300 aa+1729$
1301 (%o2)                         done
1302 (%i3) [aa, 1729, aa + 1729];
1303 (%o3)                 [aa, 1729, aa + 1729]
1304 (%i4) grind (%);
1305 [aa,1729,aa+1729]$
1306 (%o4)                         done
1307 (%i5) matrix ([aa, 17], [29, bb]);
1308                            [ aa  17 ]
1309 (%o5)                      [        ]
1310                            [ 29  bb ]
1311 (%i6) grind (%);
1312 matrix([aa,17],[29,bb])$
1313 (%o6)                         done
1314 (%i7) set (aa, 17, 29, bb);
1315 (%o7)                   @{17, 29, aa, bb@}
1316 (%i8) grind (%);
1317 @{17,29,aa,bb@}$
1318 (%o8)                         done
1319 (%i9) exp (aa / (bb + 17)^29);
1320                                 aa
1321                             -----------
1322                                      29
1323                             (bb + 17)
1324 (%o9)                     %e
1325 (%i10) grind (%);
1326 %e^(aa/(bb+17)^29)$
1327 (%o10)                        done
1328 (%i11) expr: expand ((aa + bb)^10);
1329          10           9        2   8         3   7         4   6
1330 (%o11) bb   + 10 aa bb  + 45 aa  bb  + 120 aa  bb  + 210 aa  bb
1331          5   5         6   4         7   3        8   2
1332  + 252 aa  bb  + 210 aa  bb  + 120 aa  bb  + 45 aa  bb
1333         9        10
1334  + 10 aa  bb + aa
1335 (%i12) grind (expr);
1336 bb^10+10*aa*bb^9+45*aa^2*bb^8+120*aa^3*bb^7+210*aa^4*bb^6
1337      +252*aa^5*bb^5+210*aa^6*bb^4+120*aa^7*bb^3+45*aa^8*bb^2
1338      +10*aa^9*bb+aa^10$
1339 (%o12)                        done
1340 (%i13) string (expr);
1341 (%o13) bb^10+10*aa*bb^9+45*aa^2*bb^8+120*aa^3*bb^7+210*aa^4*bb^6\
1342 +252*aa^5*bb^5+210*aa^6*bb^4+120*aa^7*bb^3+45*aa^8*bb^2+10*aa^9*\
1343 bb+aa^10
1344 (%i14) cholesky (A):= block ([n : length (A), L : copymatrix (A),
1345   p : makelist (0, i, 1, length (A))], for i thru n do
1346   for j : i thru n do
1347   (x : L[i, j], x : x - sum (L[j, k] * L[i, k], k, 1, i - 1),
1348   if i = j then p[i] : 1 / sqrt(x) else L[j, i] : x * p[i]),
1349   for i thru n do L[i, i] : 1 / p[i],
1350   for i thru n do for j : i + 1 thru n do L[i, j] : 0, L)$
1351 (%i15) grind (cholesky);
1352 cholesky(A):=block(
1353          [n:length(A),L:copymatrix(A),
1354           p:makelist(0,i,1,length(A))],
1355          for i thru n do
1356              (for j from i thru n do
1357                   (x:L[i,j],x:x-sum(L[j,k]*L[i,k],k,1,i-1),
1358                    if i = j then p[i]:1/sqrt(x)
1359                        else L[j,i]:x*p[i])),
1360          for i thru n do L[i,i]:1/p[i],
1361          for i thru n do (for j from i+1 thru n do L[i,j]:0),L)$
1362 (%o15)                        done
1363 (%i16) string (fundef (cholesky));
1364 (%o16) cholesky(A):=block([n:length(A),L:copymatrix(A),p:makelis\
1365 t(0,i,1,length(A))],for i thru n do (for j from i thru n do (x:L\
1366 [i,j],x:x-sum(L[j,k]*L[i,k],k,1,i-1),if i = j then p[i]:1/sqrt(x\
1367 ) else L[j,i]:x*p[i])),for i thru n do L[i,i]:1/p[i],for i thru \
1368 n do (for j from i+1 thru n do L[i,j]:0),L)
1369 @end example
1370 @end deffn
1375 @defvr {Variable opcional} ibase
1376 Valor por defecto: @code{10}
1378 @code{ibase} es la base en la que Maxima lee valores enteros.
1380 A @code{ibase} se le puede asignar cualquier entero entre
1381 2 y 36 (base decimal), ambos inclusive.
1382 Si @code{ibase} es mayor que 10,
1383 las cifras a utilizar serán los dígitos de
1384 0 a 9, junto con las letras del alfabeto A, B, C, ..., 
1385 tantas como sean necesarias para completar la base @code{ibase}.
1386 Las letras se interpretarán como cifras sólo cuando el 
1387 primer dígito sea un valor entre 9.
1388 Es indiferente hacer uso de letras mayúsculas o minúsculas.
1389 Las cifras para la base 36, la mayor posible, son los 
1390 dígitos numéricos de 0 a 9 y las letras desde
1391 la A hasta la Z.
1393 Cualquiera que sea el valor de @code{ibase}, si un entero termina
1394 con un punto decimal, se interpretará en base 10.
1396 Véase también @code{obase}.
1398 Ejemplos:
1400 @code{ibase} menor que 10.
1402 @c ===beg===
1403 @c ibase : 2 $
1404 @c obase;
1405 @c 1111111111111111;
1406 @c ===end===
1407 @example
1408 (%i1) ibase : 2 $
1409 (%i2) obase;
1410 (%o2)                          10
1411 (%i3) 1111111111111111;
1412 (%o3)                         65535
1413 @end example
1415 @code{ibase} mayor que 10.
1416 Las letras se interpretan como dígitos sólo
1417 si el primer dígito es una cifra entre 0 y 9.
1419 @c ===beg===
1420 @c ibase : 16 $
1421 @c obase;
1422 @c 1000;
1423 @c abcd;
1424 @c symbolp (abcd);
1425 @c 0abcd;
1426 @c symbolp (0abcd);
1427 @c ===end===
1428 @example
1429 (%i1) ibase : 16 $
1430 (%i2) obase;
1431 (%o2)                          10
1432 (%i3) 1000;
1433 (%o3)                         4096
1434 (%i4) abcd;
1435 (%o4)                         abcd
1436 (%i5) symbolp (abcd);
1437 (%o5)                         true
1438 (%i6) 0abcd;
1439 (%o6)                         43981
1440 (%i7) symbolp (0abcd);
1441 (%o7)                         false
1442 @end example
1444 Independientemente del valor de @code{ibase}, si el entero
1445 termina con un punto decimal, se interpretará en base
1446 diez.
1448 @c ===beg===
1449 @c ibase : 36 $
1450 @c obase;
1451 @c 1234;
1452 @c 1234.;
1453 @c ===end===
1454 @example
1455 (%i1) ibase : 36 $
1456 (%i2) obase;
1457 (%o2)                          10
1458 (%i3) 1234;
1459 (%o3)                         49360
1460 (%i4) 1234.;
1461 (%o4)                         1234
1462 @end example
1463 @end defvr
1467 @deffn {Función} ldisp (@var{expr_1}, ..., @var{expr_n})
1468 Muestra las expresiones @var{expr_1}, ..., @var{expr_n} en la consola con el formato de salida;
1469 @code{ldisp} asigna una etiqueta a cada argumento y devuelve la lista de etiquetas.
1471 Véanse también @code{disp}, @code{display} y @code{ldisplay}.
1473 @example
1474 (%i1) e: (a+b)^3;
1475                                    3
1476 (%o1)                       (b + a)
1477 (%i2) f: expand (e);
1478                      3        2      2      3
1479 (%o2)               b  + 3 a b  + 3 a  b + a
1480 (%i3) ldisp (e, f);
1481                                    3
1482 (%t3)                       (b + a)
1484                      3        2      2      3
1485 (%t4)               b  + 3 a b  + 3 a  b + a
1487 (%o4)                      [%t3, %t4]
1488 (%i4) %t3;
1489                                    3
1490 (%o4)                       (b + a)
1491 (%i5) %t4;
1492                      3        2      2      3
1493 (%o5)               b  + 3 a b  + 3 a  b + a
1494 @end example
1496 @end deffn
1500 @deffn {Función} ldisplay (@var{expr_1}, ..., @var{expr_n})
1501 Muestra las expresiones @var{expr_1}, ..., @var{expr_n} en la consola con el formato de salida.
1502 Cad expresión se muestra como una ecuación de la forma @code{lhs = rhs}
1503 en la que @code{lhs} es uno de los argumentos de @code{ldisplay}
1504 y @code{rhs} su valor. Normalmente, cada argumento será el nombre de una variable. La función
1505 @code{ldisp} asigna una etiqueta a cada ecuación y devuelve la lista de etiquetas.
1507 Véanse también @code{disp}, @code{display} y @code{ldisp}.
1509 @example
1510 (%i1) e: (a+b)^3;
1511                                    3
1512 (%o1)                       (b + a)
1513 (%i2) f: expand (e);
1514                      3        2      2      3
1515 (%o2)               b  + 3 a b  + 3 a  b + a
1516 (%i3) ldisplay (e, f);
1517                                      3
1518 (%t3)                     e = (b + a)
1520                        3        2      2      3
1521 (%t4)             f = b  + 3 a b  + 3 a  b + a
1523 (%o4)                      [%t3, %t4]
1524 (%i4) %t3;
1525                                      3
1526 (%o4)                     e = (b + a)
1527 (%i5) %t4;
1528                        3        2      2      3
1529 (%o5)             f = b  + 3 a b  + 3 a  b + a
1530 @end example
1532 @end deffn
1535 @defvr {Variable opcional} linel
1536 Valor por defecto: @code{79}
1538 La variable @code{linel} es la anchura (medida en número de caracteres) de la consola que se le da a Maxima para que muestre las expresiones. A @code{linel} se le puede asignar cualquier valor, pero si éste es muy pequeño o grande resultará de poca utilidad. El texto que impriman las funciones internas de Maxima, como los mensajes de error y las salidas de la función @code{describe}, no se ve afectado por el valor de @code{linel}.
1540 @end defvr
1543 @defvr {Variable opcional} lispdisp
1544 Valor por defecto: @code{false}
1546 Si @code{lispdisp} vale @code{true}, los símbolos de Lisp se muestran precedidos del carácter de interrogación @code{?}. En caso contrario, los símbolos de Lisp se muestran sin esta marca.
1548 Ejemplos:
1550 @c ===beg===
1551 @c lispdisp: false$
1552 @c ?foo + ?bar;
1553 @c lispdisp: true$
1554 @c ?foo + ?bar;
1555 @c ===end===
1556 @example
1557 (%i1) lispdisp: false$
1558 (%i2) ?foo + ?bar;
1559 (%o2)                       foo + bar
1560 (%i3) lispdisp: true$
1561 (%i4) ?foo + ?bar;
1562 (%o4)                      ?foo + ?bar
1563 @end example
1565 @end defvr
1568 @defvr {Variable opcional} negsumdispflag
1569 Valor por defecto: @code{true}
1571 Si @code{negsumdispflag} vale @code{true}, @code{x - y} se muestra como @code{x - y}
1572 en lugar de @code{- y + x}.  Dándole el valor @code{false} se realiza un análisis adicional para que no se representen de forma muy diferente dos expresiones similares.  Una aplicación puede ser para que @code{a + %i*b} y @code{a - %i*b} se representen ambas de la misma manera.
1574 @end defvr
1577 @defvr {Variable opcional} obase
1578 Valor por defecto: @code{10}
1580 @code{obase} es la base en la que Maxima imprime los números enteros.
1582 A @code{obase} se le puede asignar cualquier entero entre
1583 2 y 36 (base decimal), ambos inclusive.
1584 Si @code{obase} es mayor que 10,
1585 las cifras a utilizar serán los dígitos de
1586 0 a 9, junto con las letras del alfabeto A, B, C, ..., 
1587 tantas como sean necesarias para completar la base @code{obase}.
1588 Si el primer dígito resulta ser una letra, se le
1589 añadirá el cero como prefijo.
1590 Las cifras para la base 36, la mayor posible, son los 
1591 dígitos numéricos de 0 a 9 y las letras desde
1592 la A hasta la Z.
1594 Véase también @code{ibase}.
1596 Ejemplos:
1598 @c ===beg===
1599 @c obase : 2;
1600 @c 2^8 - 1;
1601 @c obase : 8;
1602 @c 8^8 - 1;
1603 @c obase : 16;
1604 @c 16^8 - 1;
1605 @c obase : 36;
1606 @c 36^8 - 1;
1607 @c ===end===
1608 @example
1609 (%i1) obase : 2;
1610 (%o1)                          10
1611 (%i2) 2^8 - 1;
1612 (%o10)                      11111111
1613 (%i3) obase : 8;
1614 (%o3)                          10
1615 (%i4) 8^8 - 1;
1616 (%o4)                       77777777
1617 (%i5) obase : 16;
1618 (%o5)                          10
1619 (%i6) 16^8 - 1;
1620 (%o6)                       0FFFFFFFF
1621 (%i7) obase : 36;
1622 (%o7)                          10
1623 (%i8) 36^8 - 1;
1624 (%o8)                       0ZZZZZZZZ
1625 @end example
1626 @end defvr
1629 @defvr {Variable opcional} pfeformat
1630 Valor por defecto: @code{false}
1632 Si @code{pfeformat} vale @code{true}, una fracción de enteros será mostrada con el carácter de barra inclinada @code{/} entre ellos.
1635 @example
1636 (%i1) pfeformat: false$
1637 (%i2) 2^16/7^3;
1638                               65536
1639 (%o2)                         -----
1640                                343
1641 (%i3) (a+b)/8;
1642                               b + a
1643 (%o3)                         -----
1644                                 8
1645 (%i4) pfeformat: true$ 
1646 (%i5) 2^16/7^3;
1647 (%o5)                       65536/343
1648 (%i6) (a+b)/8;
1649 (%o6)                      1/8 (b + a)
1650 @end example
1652 @end defvr
1655 @defvr {Variable opcional} powerdisp
1656 Valor por defecto: @code{false}
1658 Si @code{powerdisp} vale @code{true}, se muestran las sumas con sus términos ordenados de menor a mayor potencia. Así, un polinomio se presenta como una serie de potencias truncada con el término constante al principio y el de mayor potencia al final.
1660 Por defecto, los términos de una suma se muestran en el orden de las potencias decrecientes.
1662 Ejemplo:
1664 @example
1665 (%i1) powerdisp:true;
1666 (%o1)                         true
1667 (%i2) x^2+x^3+x^4;
1668                            2    3    4
1669 (%o2)                     x  + x  + x
1670 (%i3) powerdisp:false;
1671 (%o3)                         false
1672 (%i4) x^2+x^3+x^4;
1673                            4    3    2
1674 (%o4)                     x  + x  + x
1675 @end example
1676 @end defvr
1679 @deffn {Función} print (@var{expr_1}, ..., @var{expr_n})
1680 Evalúa y muestra las expresiones  @var{expr_1}, ..., @var{expr_n} secuencialmente de izquierda a derecha, comenzando la impresión por el borde izquierdo de la consola.
1682 El valor devuelto por @code{print} es el valor de su último argumento. La función @code{print} no genera etiquetas para las expresiones intermedias.
1684 Véanse también @code{display}, @code{disp}, @code{ldisplay} y @code{ldisp}, que muestran una expresión por línea, mientras que @code{print} trata de mostrar dos o más expresiones por línea.
1686 Para mostrar el contenido de un archivo véase @code{printfile}.
1688 @example
1689 (%i1) r: print ("(a+b)^3 is", expand ((a+b)^3), "log (a^10/b) is",
1690       radcan (log (a^10/b)))$
1691             3        2      2      3
1692 (a+b)^3 is b  + 3 a b  + 3 a  b + a  log (a^10/b) is 
1694                                               10 log(a) - log(b) 
1695 (%i2) r;
1696 (%o2)                  10 log(a) - log(b)
1697 (%i3) disp ("(a+b)^3 is", expand ((a+b)^3), "log (a^10/b) is",
1698       radcan (log (a^10/b)))$
1699                            (a+b)^3 is
1701                      3        2      2      3
1702                     b  + 3 a b  + 3 a  b + a
1704                          log (a^10/b) is
1706                        10 log(a) - log(b)
1707 @end example
1709 @end deffn
1712 @defvr {Variable opcional} sqrtdispflag
1713 Valor por defecto: @code{true}
1715 Si @code{sqrtdispflag} vale @code{false}, hará que @code{sqrt} se muestre con el exponente 1/2.
1716 @c AND OTHERWISE ... ??
1717 @end defvr
1720 @defvr {Variable opcional} stardisp
1721 Valor por defecto: @code{false}
1723 Si @code{stardisp} vale @code{true}, la multiplicación se muestra con un asterisco @code{*} entre los operandos.
1725 @end defvr
1728 @defvr {Variable opcional} ttyoff
1729 Valor por defecto: @code{false}
1731 Si @code{ttyoff} vale @code{true}, no se muestran las expresiones resultantes, pero éstas se calculan de todos modos y se les asignan etiquetas. Véase @code{labels}.
1733 El texto que escriban las funciones internas de Maxima, tales como los mensajes de error y las salidas de @code{describe},
1734 no se ven afectadas por @code{ttyoff}.
1736 @end defvr