1
@c english version 1.45
3
* Introducci@'on a Entrada y Salida::
6
* Definiciones para Entrada y Salida::
9
@node Introducci@'on a Entrada y Salida, Comentarios, Entrada y Salida, Entrada y Salida
10
@section Introducci@'on a Entrada y Salida
12
@node Comentarios, Archivos, Introducci@'on a Entrada y Salida, Entrada y Salida
15
En Maxima, un comentario es cualquier texto encerrado entre las
16
marcas @code{/*} y @code{*/}.
18
El analizador sint@'actico de Maxima trata los comentarios como
19
espacios en blanco a efectos de encontrar @i{tokens} en el flujo
20
de entrada. Una entrada tal como @code{a/* foo */b} contiene dos
21
@i{tokens}, @code{a} y @code{b}, no un @'unico @i{token} @code{ab}.
22
En cualquier otro contexto, los comentarios son ignorados por Maxima;
23
no se almacenan ni sus contenidos ni sus localizaciones.
25
Los comentarios pueden anidarse hasta una profundidad arbitraria.
26
Las marcas @code{/*} y @code{*/} deben emparejarse y debe haber igual n@'umero
32
@c /* aa is a variable of interest */ aa : 1234;
33
@c /* Value of bb depends on aa */ bb : aa^2;
34
@c /* User-defined infix operator */ infix ("b");
35
@c /* Parses same as a b c, not abc */ a/* foo */b/* bar */c;
36
@c /* Comments /* can be nested /* to arbitrary depth */ */ */ 1 + xyz;
39
(%i1) /* aa is a variable of interest */ aa : 1234;
41
(%i2) /* Value of bb depends on aa */ bb : aa^2;
43
(%i3) /* User-defined infix operator */ infix ("b");
45
(%i4) /* Parses same as a b c, not abc */ a/* foo */b/* bar */c;
47
(%i5) /* Comments /* can be nested /* to arbitrary depth */ */ */ 1 + xyz;
52
@node Archivos, Definiciones para Entrada y Salida, Comentarios, Entrada y Salida
55
Un archivo no es m@'as que una @'area de un cierto dispositivo de almacenamiento que contiene datos o texto.
56
Los archivos se agrupan en los discos en "directorios", que son listas de archivos.
57
Instrucciones que operan con archivos son:
68
@node Definiciones para Entrada y Salida, , Archivos, Entrada y Salida
69
@section Definiciones para Entrada y Salida
71
@defvr {Variable del sistema} __
73
@code{__} es la expresi@'on de entrada que est@'a siendo actualmente evaluada.
74
Esto es, mientras se est@'a evaluando una expresi@'on de entrada,
75
@code{__} es igual a @var{expr}.
77
A @code{__} se le asigna la expresi@'on de entrada antes de que @'esta sea
78
simplificada o evaluada. Sin embargo, el valor de @code{__} es simplificado,
79
pero no evaluado, cuando su valor es mostrado en el terminal.
81
La variable @code{__} es reconocida por @code{batch} y por @code{load}.
82
Cuando un fichero es procesado por @code{batch}, la variable @code{__}
83
tiene el mismo significado que en el modo interactivo.
84
Cuando un fichero es procesado por @code{load}, a la variable @code{__}
85
se le asigna la @'ultima expresi@'on introducida, bien desde el modo
86
interactivo, bien en un fichero por lotes; en ning@'un caso se le asigna
87
a @code{__} una expresi@'on de entrada del fichero que est@'a siendo procesado.
88
En particular, si @code{load (@var{filename})} es ejecutado desde el modo
89
interactivo, entonces @code{__} almacena la expresi@'on @code{load (@var{filename})}
90
mientras el fichero est@'a siendo procesado.
92
V@'eanse tambi@'en @code{_} y @code{%}.
97
@c print ("I was called as", __);
99
@c g (x) := (print ("Current input expression =", __), 0);
100
@c [aa : 1, bb : 2, cc : 3];
101
@c (aa + bb + cc)/(dd + ee + g(x));
104
(%i1) print ("I was called as", __);
105
I was called as print(I was called as, __)
106
(%o1) print(I was called as, __)
109
(%i3) g (x) := (print ("Current input expression =", __), 0);
110
(%o3) g(x) := (print("Current input expression =", __), 0)
111
(%i4) [aa : 1, bb : 2, cc : 3];
113
(%i5) (aa + bb + cc)/(dd + ee + g(x));
115
Current input expression = --------------
125
@defvr {Variable del sistema} _
127
El s@'{@dotless{i}}mbolo @code{_} representa la @'ultima expresi@'on de entrada (esto es, @code{%i1}, @code{%i2}, @code{%i3}, ...).
129
Al s@'{@dotless{i}}mbolo @code{_} se le asigna la expresi@'on de entrada antes de que @'esta sea simplificada o evaluada. Sin embargo, el valor de @code{_} se simplifica (pero no se eval@'ua) cuando se muestra en el terminal.
131
La variable @code{_} es reconocida por @code{batch} y por @code{load}.
132
Cuando un fichero es procesado por @code{batch}, la variable @code{_}
133
tiene el mismo significado que en el modo interactivo.
134
Cuando un fichero es procesado por @code{load}, a la variable @code{_}
135
se le asigna la @'ultima expresi@'on introducida, bien desde el modo
136
interactivo, bien en un fichero por lotes; en ning@'un caso se le asigna
137
a @code{_} una expresi@'on de entrada del fichero que est@'a siendo procesado.
139
V@'eanse tambi@'en @code{__} y @code{%}.
168
((%SIN) ((MQUOTIENT) $%PI 2))
187
@defvr {Variable del sistema} %
188
El s@'{@dotless{i}}mbolo @code{%} representa la expresi@'on de salida (esto es, @code{%o1}, @code{%o2}, @code{%o3}, ...)
189
m@'as reciente calculada por Maxima, independientemente de que la haya mostrado o no.
191
La variable @code{%} es reconocida por @code{batch} y por @code{load}.
192
Cuando un fichero es procesado por @code{batch}, la variable @code{%}
193
tiene el mismo significado que en el modo interactivo.
194
Cuando un fichero es procesado por @code{load}, a la variable @code{%}
195
se le asigna la @'ultima expresi@'on introducida, bien desde el modo
196
interactivo, bien en un fichero por lotes; en ning@'un caso se le asigna
197
a @code{%} una expresi@'on de entrada del fichero que est@'a siendo procesado.
199
V@'eanse tambi@'en @code{_}, @code{%%} y @code{%th}.
203
@defvr {Variable del sistema} %%
204
En una sentencia compuesta, como @code{block}, @code{lambda} o @code{(@var{s_1}, ..., @var{s_n})}, @code{%%} es el valor de la sentencia previa.
208
block (integrate (x^5, x), ev (%%, x=2) - ev (%%, x=1));
209
block ([prev], prev: integrate (x^5, x), ev (prev, x=2) - ev (prev, x=1));
212
devuelven el mismo resultado @code{21/2}.
214
Una sentencia compuesta puede contener otras sentencias compuestas.
215
Independientemente de que una sentencia sea simple o compuesta, @code{%%} es el valor de la sentencia previa.
219
block (block (a^n, %%*42), %%/6)
222
devuelve @code{7*a^n}.
224
Dentro de una sentencia compuesta, el valor de @code{%%} puede inspeccionarse en un punto de interrupci@'on que se abra ejecutando la funci@'on @code{break}. Por ejemplo, en el punto de interrupci@'on abierto por
227
block (a: 42, break ())$
230
introduciendo @code{%%;} se obtiene @code{42}.
232
En la primera sentencia de una sentencia compuesta, o fuera de una sentencia compuesta, @code{%%} no est@'a definido.
234
La variable @code{%%} es reconocida por @code{batch} y por @code{load}.
235
Cuando un fichero es procesado por @code{batch}, la variable @code{%%}
236
tiene el mismo significado que en el modo interactivo.
238
V@'ease tambi@'en @code{%}.
242
@defvr {Variable opcional} %edispflag
243
Valor por defecto: @code{false}
245
Si @code{%edispflag} vale @code{true}, Maxima muestra @code{%e} elevado a un exponente negativo como un cociente.
246
Por ejemplo, @code{%e^-x} se muestra como @code{1/%e^x}.
250
@deffn {Funci@'on} %th (@var{i})
251
Es el valor de la expresi@'on de salida previa @var{i}-@'esima.
252
Esto es, si la siguiente expresi@'on a calcular es la salida @var{n}-@'esima,
253
@code{%th (@var{m})} es la salida (@var{n} - @var{m})-@'esima.
255
La funci@'on @code{%th} es @'util en archivos tipo @code{batch} o para hacer referencia a un grupo de expresiones de salida.
259
block (s: 0, for i:1 thru 10 do s: s + %th (i))$
262
asigna a @code{s} la suma de las diez @'ultimas expresiones de salida.
264
La variable @code{%th} es reconocida por @code{batch} y por @code{load}.
265
Cuando un fichero es procesado por @code{batch}, la variable @code{%th}
266
tiene el mismo significado que en el modo interactivo.
267
Cuando un fichero es procesado por @code{load}, a la variable @code{%th}
268
se le asigna la @'ultima expresi@'on introducida, bien desde el modo
269
interactivo, bien en un fichero por lotes; en ning@'un caso se le asigna
270
a @code{%th} una expresi@'on de entrada del fichero que est@'a siendo procesado.
272
V@'ease tambi@'en @code{%}.
276
@deffn {Special symbol} ?
277
Como prefijo de una funci@'on o nombre de variable, @code{?} significa que el nombre es de Lisp, no de Maxima.
278
Por ejemplo, @code{?round} representa la funci@'on de Lisp @code{ROUND}.
279
V@'ease @code{Lisp y Maxima} para m@'as informaci@'on.
281
La notaci@'on @code{? word} (un s@'{@dotless{i}}mbolo de interrogaci@'on seguido de una palabra y separados por un espacio)
282
equivale a @code{describe ("word")}.
286
@defvr {Variable opcional} absboxchar
287
Valor por defecto: @code{!}
289
La variable @code{absboxchar} es el car@'acter utilizado para representar el valor absoluto de una expresi@'on que ocupa m@'as de una l@'{@dotless{i}}nea de altura.
293
@defvr {Variable opcional} file_output_append
294
Valor por defecto: @code{false}
296
La variable @code{file_output_append} controla si las funciones de escritura de ficheros a@~naden informaci@'on o sustituyen el fichero de salida. Cuando @code{file_output_append} toma el valor @code{true}, estas funciones ampl@'{@dotless{i}}an el contenido de sus ficheros de salida; en otro caso, sustituyen el fichero anterior de igual nombre por otro con el nuevo contenido.
298
Las funciones @code{save}, @code{stringout} y @code{with_stdout} se ven afectadas por el valor que tome la variable @code{file_output_append}. Otras funciones que tambi@'en escriben en ficheros de salida no tienen en cuenta este valor; en concreto, las funciones para la representaci@'on de gr@'aficos y las de traducci@'on siempre sustituyen el fichero anterior por uno nuevo de igual nombre, mientras que las funciones @code{tex} y @code{appendfile} siempre a@~naden informaci@'on al fichero de salida sin eliminar la informaci@'on anterior.
299
@c WHAT ABOUT WRITEFILE ??
303
@deffn {Funci@'on} appendfile (@var{filename})
304
A@~nade informaci@'on de la consola a @var{filename}, de igual manera que lo hace @code{writefile}, pero con la salvedad de que si el archivo ya existe la informaci@'on queda a@~nadida al final de su contenido.
306
La funci@'on @code{closefile} cierra los archivos abiertos por @code{appendfile} o @code{writefile}.
310
@deffn {Funci@'on} batch (@var{filename})
311
Lee expresiones de Maxima desde @var{filename} y las eval@'ua. La funci@'on
312
@code{batch} busca @var{filename} en la lista @code{file_search_maxima}.
313
V@'ease @code{file_search}.
315
El contenido de @var{filename} debe ser una secuencia de expresiones de Maxima,
316
cada una de las cuales termina en @code{;} o @code{$}.
317
La variable especial @code{%} y la funci@'on @code{%th}
318
se refieren a resultados previos dentro del archivo.
319
El archivo puede incluir construcciones del tipo @code{:lisp}.
320
Espacios, tabulaciones y saltos de l@'{@dotless{i}}nea en el archivo se ignoran.
321
Un archivo de entrada v@'alido puede crearse con un editor de texto o con la funci@'on @code{stringout}.
323
La funci@'on @code{batch} lee las expresiones del archivo @var{filename}, muestra las entradas en la consola, realiza los c@'alculos solicitados y muestra las expresiones de los resultados.
324
A las expresiones de entrada se les asignan etiquetas, as@'{@dotless{i}} como a las de salida. La funci@'on
325
@code{batch} eval@'ua todas las expresiones de entrada del archivo a menos que se produzca un error.
326
Si se le solicita informaci@'on al usuario (con @code{asksign} o @code{askinteger}, por ejemplo)
327
@code{batch} se detiene para leer la nueva informaci@'on para luego continuar.
329
Es posible detener @code{batch} tecleando @code{control-C} desde la consola.
330
El efecto de @code{control-C} depende del entorno Lisp instalado.
332
La funci@'on @code{batch} tiene diversas aplicaciones, tales como servir de almac@'en de l@'{@dotless{i}}neas de instrucciones, suministrar demostraciones libres de errores o ayudar a organizar el trabajo del usuario en la resoluci@'on de problemas complejos.
334
La funci@'on @code{batch} eval@'ua su argumento.
336
V@'eanse tambi@'en @code{load}, @code{batchload} y @code{demo}.
340
@deffn {Funci@'on} batchload (@var{filename})
341
Lee expresiones de Maxima desde @var{filename} y las eval@'ua sin mostrar las entradas ni las salidas y sin asignarles etiquetas. Sin embargo, las salidas producidas por @code{print} o @code{describe} s@'{@dotless{i}} se muestran.
343
La variable especial @code{%} y la funci@'on @code{%th} se refieren a resultados previos del int@'erprete interactivo, no a los del propio archivo. El archivo no puede incluir construcciones del tipo @code{:lisp}.
345
La funci@'on @code{batchload} devuelve la ruta de @var{filename} en formato de cadena.
347
La funci@'on @code{batchload} eval@'ua sus argumentos.
349
V@'eanse tambi@'en @code{batch} y @code{load}.
350
@c batchload APPEARS TO HAVE THE SAME EFFECT AS load. WHY NOT GET RID OF batchload ???
354
@deffn {Funci@'on} closefile ()
355
La funci@'on @code{closefile} cierra los archivos abiertos por @code{appendfile} o @code{writefile}.
359
@c FALTA DEFINICION DE collapse
361
@deffn {Funci@'on} concat (@var{arg_1}, @var{arg_2}, ...)
362
Concatena sus argumentos, que deben ser todos @'atomos.
363
El valor devuelto es un s@'{@dotless{i}}mbolo si el primer argumento es a su vez un s@'{@dotless{i}}mbolo, o una cadena de Maxima en caso contrario.
365
La funci@'on @code{concat} eval@'ua sus argumentos.
366
El ap@'atrofo @code{'} evita la evaluaci@'on.
371
(%i3) concat (y, z/2);
373
(%i4) concat ('y, z/2);
377
A un s@'{@dotless{i}}mbolo construido por @code{concat} se le puede asignar un valor y ser utilizado posteriormente en expresiones.
378
La asignaci@'on con el operador @code{::} eval@'ua su expresi@'on izquierda.
381
(%i5) a: concat ('y, z/2);
395
N@'otese que aunque @code{concat (1, 2)} parezca un n@'umero, se trata de una cadena de Maxima.
398
(%i10) concat (1, 2) + 3;
404
@deffn {Funci@'on} sconcat (@var{arg_1}, @var{arg_2}, ...)
406
Concatena sus argumentos para producir una cadena.
407
Al contrario que @code{concat}, sus argumentos @i{no} necesitan ser @'atomos.
409
El resultado es una cadena de Lisp.
410
@c THAT'S ODD; WHY NOT A MAXIMA STRING ??
413
(%i1) sconcat ("xx[", 3, "]:", expand ((x+y)^3));
414
(%o1) xx[3]:y^3+3*x*y^2+3*x^2*y+x^3
419
@deffn {Funci@'on} disp (@var{expr_1}, @var{expr_2}, ...)
420
Es como @code{display} pero s@'olo se muestran los valores de los argumentos, no las ecuaciones. Es @'util para argumentos complicados que no tienen nombre o en situaciones en las que solamente es de inter@'es el valor del argumento pero no su nombre.
424
@deffn {Funci@'on} dispcon (@var{tensor_1}, @var{tensor_2}, ...)
425
@deffnx {Funci@'on} dispcon (all)
426
Muestra las propiedades contractivas de sus argumentos tal como fueron asignadas por @code{defcon}. La llamada @code{dispcon (all)} muestra todas propiedades contractivas que fueron definidas.
430
@deffn {Funci@'on} display (@var{expr_1}, @var{expr_2}, ...)
431
Muestra las ecuaciones cuyos miembros izquierdos son
432
@var{expr_i} sin evaluar y cuyos miembros derechos son los valores de las expresiones. Esta funci@'on es @'util en los bloques y en las sentencias @code{for} para mostrar resultados intermedios. Los argumentos de @code{display} suelen ser @'atomos, variables subindicadas o llamadas a funciones. V@'ease tambi@'en @code{disp}.
435
(%i1) display(B[1,2]);
444
@defvr {Variable opcional} display2d
445
Valor por defecto: @code{true}
447
Si @code{display2d} vale @code{false}, la salida por consola es una cadena unidimensional, en lugar de una expresi@'on bidimensional.
451
@defvr {Variable opcional} display_format_internal
452
Valor por defecto: @code{false}
454
Si @code{display_format_internal} vale @code{true},
455
las expresiones se muestran sin ser transformadas de manera que oculten su representaci@'on matem@'atica interna. Se representa lo que la funci@'on @code{inpart} devolver@'{@dotless{i}}a, en oposici@'on a @code{part}.
461
a-b; A - B A + (- 1) B
476
@deffn {Funci@'on} dispterms (@var{expr})
477
Muestra @var{expr} en partes, una debajo de la otra.
478
Esto es, primero se muestra el operador de @var{expr}, luego cada t@'ermino si se trata de una suma, o cada factor si es un producto, o si no se muestra separadamente la parte de una expresi@'on m@'as general. Es @'util si @var{expr} es demasiado grande para representarla de otra forma. Por ejemplo, si @code{P1}, @code{P2}, ... son expresiones muy grandes, entonces el programa de representaci@'on puede superar el espacio de almacenamiento tratando de mostrar @code{P1 + P2 + ...} todo junto. Sin embargo, @code{dispterms (P1 + P2 + ...)} muestra @code{P1}, debajo @code{P2}, etc. Cuando una expresi@'on exponencial es demasiado ancha para ser representada como @code{A^B}, si no se utiliza @code{dispterms}, entonces aparecer@'a como @code{expt (A, B)} (o como @code{ncexpt (A, B)}, en lugar de @code{A^^B}).
482
@defvr {Variable opcional} error_size
483
Valor por defecto: 10
485
La variable @code{error_size} modifica los mensajes de error de acuerdo con el tama@~no de las expresiones que aparecen en @'el. Si el tama@~no de una expresi@'on (tal como lo determina la funci@'on Lisp @code{ERROR-SIZE})
486
es mayor que @code{error_size}, la expresi@'on se reemplaza en el mensaje por un s@'{@dotless{i}}mbolo, asign@'andole a @'este una expresi@'on. Los s@'{@dotless{i}}mbolos se toman de la lista @code{error_syms}.
488
En caso contrario, si la expresi@'on es menor que @code{error_size}, la expresi@'on se muestra en el propio mensaje.
490
V@'eanse tambi@'en @code{error} y @code{error_syms}.
493
@c OUTPUT GENERATED BY THE FOLLOWING
494
@c U: (C^D^E + B + A)/(cos(X-1) + 1)$
496
@c error ("Example expression is", U);
499
@c error ("Example expression is", U);
501
El tama@~no de @code{U}, tal como lo determina @code{ERROR-SIZE}, es 24.
504
(%i1) U: (C^D^E + B + A)/(cos(X-1) + 1)$
506
(%i2) error_size: 20$
508
(%i3) error ("Example expression is", U);
510
Example expression is errexp1
511
-- an error. Quitting. To debug this try debugmode(true);
518
(%i5) error_size: 30$
520
(%i6) error ("Example expression is", U);
525
Example expression is --------------
527
-- an error. Quitting. To debug this try debugmode(true);
532
@defvr {Variable opcional} error_syms
533
Valor por defecto: @code{[errexp1, errexp2, errexp3]}
535
En los mensajes de error, las expresiones mayores que @code{error_size} son reemplazadas por s@'{@dotless{i}}mbolos a los cuales se les asignas estas expresiones. Los s@'{@dotless{i}}mbolos se toman de la lista @code{error_syms}. La primera expresi@'on que resulte ser demasiado larga se reemplaza por @code{error_syms[1]}, la segunda por @code{error_syms[2]} y as@'{@dotless{i}} sucesivamente.
537
Si hay m@'as expresiones largas que elementos en @code{error_syms}, los s@'{@dotless{i}}mbolos se construyen autom@'aticamente, siendo el @var{n}-@'esimo s@'{@dotless{i}}mbolo equivalente a @code{concat ('errexp, @var{n})}.
539
V@'eanse tambi@'en @code{error} y @code{error_size}.
543
@deffn {Funci@'on} expt (@var{a}, @var{b})
544
Si una expresi@'on exponencial es demasiado ancha para ser mostrada como @code{@var{a}^@var{b}} aparecer@'a como @code{expt (@var{a}, @var{b})} (o como @code{ncexpt (@var{a}, @var{b})} en lugar de @code{@var{a}^^@var{b}}).
546
@c THIS SEEMS LIKE A BUG TO ME. expt, ncexpt SHOULD BE RECOGNIZED SINCE MAXIMA
547
@c ITSELF PRINTS THEM SOMETIMES. THESE SHOULD JUST SIMPLIFY TO ^ AND ^^, RESPECTIVELY.
548
Las funciones @code{expt} y @code{ncexpt} no se reconocen en una entrada.
552
@defvr {Variable opcional} exptdispflag
553
Valor por defecto: @code{true}
555
Si @code{exptdispflag} vale @code{true}, Maxima muestra las expresiones con exponentes negativos como cocientes; por ejemplo, @code{X^(-1)} se muestra como @code{1/X}.
559
@deffn {Funci@'on} filename_merge (@var{path}, @var{filename})
560
Construye una ruta modificada a partir de @var{path} y @var{filename}.
561
Si la componente final de @var{path} es de la forma @code{###.@var{something}},
562
la componente se reemplaza con @code{@var{filename}.@var{something}}.
563
En otro caso, la componente final se reemplaza simplemente por @var{filename}.
565
@c SAY SOMETHING ABOUT ARG TYPE -- LISP STRINGS WORK BETTER THAN MAXIMA STRINGS
566
@c SAY SOMETHING ABOUT RETURN TYPE
569
@deffn {Funci@'on} file_search (@var{filename})
570
@deffnx {Funci@'on} file_search (@var{filename}, @var{pathlist})
572
La funci@'on @code{file_search} busca el archivo @var{filename} y devuelve su ruta como una cadena; si no lo encuentra, @code{file_search} devuelve @code{false}. La llamada
573
@code{file_search (@var{filename})} busca en los directorios de b@'usqueda por defecto,
574
que son los especificados por las variables @code{file_search_maxima}, @code{file_search_lisp} y @code{file_search_demo}.
576
La funci@'on @code{file_search} analiza primero si el nombre del argumento existe antes de hacerlo coincidir con los comodines de los patrones de b@'usqueda de archivos.
577
V@'ease @code{file_search_maxima} para m@'as informaci@'on sobre patrones de b@'usqueda de archivos.
579
El argumento @var{filename} puede ser una ruta con nombre de archivo,
580
o simplemente el nombre del archivo, o, si el directorio de b@'usqueda de archivo incluye un patr@'on de b@'usqueda, es suficiente con el nombre de archivo sin extensi@'on.
584
file_search ("/home/wfs/special/zeta.mac");
585
file_search ("zeta.mac");
586
file_search ("zeta");
589
todos buscan el mismo archivo, dando por hecho que el archivo existe y que @code{/home/wfs/special/###.mac}
590
est@'a en @code{file_search_maxima}.
592
La llamada @code{file_search (@var{filename}, @var{pathlist})} busca solamente en los directorios especificados por @var{pathlist}, que es una lista de cadenas.
593
El argumento @var{pathlist} ignora los directorios de b@'usqueda por defecto, de manera que si se da la lista de rutas, @code{file_search} busca solamente en ellas y no en los directorios por defecto.
594
Incluso si hay un @'unico directorio en @var{pathlist}, debe ser suministrado como una lista de un @'unico elemento.
596
El usuario puede modificar los directorios de b@'usqueda por defecto; v@'ease para ello See @code{file_search_maxima}.
598
La funci@'on @code{file_search} es llamada por @code{load} con los directorios de b@'usqueda @code{file_search_maxima} y @code{file_search_lisp}.
602
@defvr {Variable opcional} file_search_maxima
603
@defvrx {Variable opcional} file_search_lisp
604
@defvrx {Variable opcional} file_search_demo
605
Estas variables especifican listas de directorios en los que deben buscar la funciones @code{load}, @code{demo} y algunas otras. Los valores por defecto de estas variables nombran directorios de la instalaci@'on de Maxima.
607
El usuario puede modificar estas variables, bien reemplazando los valores por defecto, bien a@~nadiendo nuevos directorios.
611
file_search_maxima: ["/usr/local/foo/###.mac",
612
"/usr/local/bar/###.mac"]$
615
reemplaza el valor por defecto de @code{file_search_maxima}, mintras que
618
file_search_maxima: append (file_search_maxima,
619
["/usr/local/foo/###.mac", "/usr/local/bar/###.mac"])$
622
a@~nade dos directorios m@'as. Puede ser conveniente colocar una expresi@'on como esta en el archivo @code{maxima-init.mac}, de manera que la ruta de b@'usqueda de ficheros se asigne autom@'aticamente cada vez que arranca Maxima.
624
Se pueden especificar varias extensiones de archivos y rutas con comodines especiales.
625
La cadena @code{###} representa el nombre del archivo buscado y una lista separada de comas y encerrada entre llaves, @code{@{foo,bar,baz@}} representa m@'ultiples cadenas.
626
Por ejemplo, suponiendo que se busca el nombre @code{neumann},
629
"/home/@{wfs,gcj@}/###.@{lisp,mac@}"
632
se interpreta como @code{/home/wfs/neumann.lisp}, @code{/home/gcj/neumann.lisp}, @code{/home/wfs/neumann.mac} y @code{/home/gcj/neumann.mac}.
636
@deffn {Funci@'on} file_type (@var{filename})
637
Devuelve una descripci@'on del contenido de @var{filename} basada en la extensi@'on, sin intentar abrir el archivo para inspeccionar su contenido.
639
El valor que la funci@'on retorna puede ser cualquiera de los siguientes: @code{object}, @code{lisp} o @code{maxima}.
640
Si la extensi@'on comienza por @code{m} o @code{d}, @code{file_type} devuelve @code{maxima}.
641
Si la extensi@'on comienza por @code{l}, @code{file_type} devuelve @code{lisp}.
642
En cualquier otro caso, @code{file_type} devuelve @code{object}.
647
@deffn {Funci@'on} grind (@var{expr})
648
@deffnx {Variable opcional} grind
649
La funci@'on @code{grind} imprime @var{expr}
650
en la consola en un formato admisible como entrada para Maxima. La funci@'on
651
@code{grind} devuelve siempre @code{done}.
653
Cuando @var{expr} es el nombre de una funci@'on o macro, @code{grind}
654
muestra la definici@'on de la funci@'on o de la macro en lugar de s@'olo
657
V@'ease tambi@'en @code{string}, que devuelve una cadena en lugar de imprimir la salida. La funci@'on
658
@code{grind} intenta imprimir la expresi@'on de forma que sea lago m@'as sencilla de leer que la salida de @code{string}.
660
Cuando la variable @code{grind} vale @code{true},
661
la salida de @code{string} y @code{stringout} tienen el mismo formato que la de @code{grind};
662
en caso contrario no se formatea la salida de esas funciones.
663
El valor por defecto de la variable @code{grind} es @code{false}.
665
La variable @code{grind} tambi@'en se puede utilizar como argumento en @code{playback}.
666
Si @code{grind} est@'a presente,
667
@code{playback} imprime las expresiones de entrada en el mismo formato que lo hace la funci@'on @code{grind};
668
en caso contrario no se formatean la expresiones de entrada.
670
La funci@'on @code{grind} eval@'ua sus argumentos.
677
@c [aa, 1729, aa + 1729];
679
@c matrix ([aa, 17], [29, bb]);
681
@c set (aa, 17, 29, bb);
683
@c exp (aa / (bb + 17)^29);
685
@c expr: expand ((aa + bb)^10);
688
@c cholesky (A):= block ([n : length (A), L : copymatrix (A),
689
@c p : makelist (0, i, 1, length (A))], for i thru n do for j : i thru n do
690
@c (x : L[i, j], x : x - sum (L[j, k] * L[i, k], k, 1, i - 1), if i = j then
691
@c p[i] : 1 / sqrt(x) else L[j, i] : x * p[i]), for i thru n do L[i, i] : 1 / p[i],
692
@c for i thru n do for j : i + 1 thru n do L[i, j] : 0, L)$
694
@c string (fundef (cholesky));
702
(%i3) [aa, 1729, aa + 1729];
703
(%o3) [aa, 1729, aa + 1729]
707
(%i5) matrix ([aa, 17], [29, bb]);
712
matrix([aa,17],[29,bb])$
714
(%i7) set (aa, 17, 29, bb);
715
(%o7) @{17, 29, aa, bb@}
719
(%i9) exp (aa / (bb + 17)^29);
728
(%i11) expr: expand ((aa + bb)^10);
730
(%o11) bb + 10 aa bb + 45 aa bb + 120 aa bb + 210 aa bb
732
+ 252 aa bb + 210 aa bb + 120 aa bb + 45 aa bb
736
bb^10+10*aa*bb^9+45*aa^2*bb^8+120*aa^3*bb^7+210*aa^4*bb^6
737
+252*aa^5*bb^5+210*aa^6*bb^4+120*aa^7*bb^3+45*aa^8*bb^2
740
(%i13) string (expr);
741
(%o13) bb^10+10*aa*bb^9+45*aa^2*bb^8+120*aa^3*bb^7+210*aa^4*bb^6\
742
+252*aa^5*bb^5+210*aa^6*bb^4+120*aa^7*bb^3+45*aa^8*bb^2+10*aa^9*\
744
(%i14) cholesky (A):= block ([n : length (A), L : copymatrix (A),
745
p : makelist (0, i, 1, length (A))], for i thru n do for j : i thru n do
746
(x : L[i, j], x : x - sum (L[j, k] * L[i, k], k, 1, i - 1), if i = j then
747
p[i] : 1 / sqrt(x) else L[j, i] : x * p[i]), for i thru n do L[i, i] : 1 / p[i],
748
for i thru n do for j : i + 1 thru n do L[i, j] : 0, L)$
749
(%i15) grind (cholesky);
751
[n:length(A),L:copymatrix(A),
752
p:makelist(0,i,1,length(A))],
754
(for j from i thru n do
755
(x:L[i,j],x:x-sum(L[j,k]*L[i,k],k,1,i-1),
756
if i = j then p[i]:1/sqrt(x)
757
else L[j,i]:x*p[i])),
758
for i thru n do L[i,i]:1/p[i],
759
for i thru n do (for j from i+1 thru n do L[i,j]:0),L)$
761
(%i16) string (fundef (cholesky));
762
(%o16) cholesky(A):=block([n:length(A),L:copymatrix(A),p:makelis\
763
t(0,i,1,length(A))],for i thru n do (for j from i thru n do (x:L\
764
[i,j],x:x-sum(L[j,k]*L[i,k],k,1,i-1),if i = j then p[i]:1/sqrt(x\
765
) else L[j,i]:x*p[i])),for i thru n do L[i,i]:1/p[i],for i thru \
766
n do (for j from i+1 thru n do L[i,j]:0),L)
771
@defvr {Variable opcional} ibase
772
Valor por defecto: 10
774
Los enteros que se escriban en Maxima se interpretan como dados en base @code{ibase}.
776
A la variable @code{ibase} se le puede asignar cualquier entero entre 2 y 35 (decimal), ambos inclusive.
777
@c WHY NOT 36, BY THE WAY ??
778
Si @code{ibase} es mayor que 10, las cifras ser@'an los n@'umeros decimales entre 0 y 9, m@'as las letras may@'usculas A, B, C, ..., sg@'un sea necesario.
779
Las cifras en base 35, la mayor base que acepta Maxima, son los d@'{@dotless{i}}gitos de 0 a 9 y las letras de A a Y.
780
@c HOW, EXACTLY, DOES ONE TYPE IN THE LETTERS ??
781
@c ibase: 11$ 1A; YIELDS AN ERROR
782
@c \1A; #1A; \#1A; DON'T WORK EITHER
784
V@'ease tambi@'en @code{obase}.
786
@c NEED EXAMPLES HERE
789
@defvr {Variable opcional} inchar
790
Valor por defecto: @code{%i}
792
La variable @code{inchar} es el prefijo de las etiquetas de las expresiones introducidas por el usuario.
793
Maxima crea autom@'aticamente una etiqueta para cada expresi@'on de entrada concatenando @code{inchar} y @code{linenum}; a
794
@code{inchar} se le puede asignar cualquier s@'{@dotless{i}}mbolo o cadena, no necesariamente un carac@'acter sencillo.
797
(%i1) inchar: "input";
799
(input1) expand ((a+b)^3);
801
(%o1) b + 3 a b + 3 a b + a
805
V@'ease tambi@'en @code{labels}.
809
@deffn {Funci@'on} ldisp (@var{expr_1}, ..., @var{expr_n})
810
Muestra las expresiones @var{expr_1}, ..., @var{expr_n} en la consola con el formato de salida;
811
@code{ldisp} asigna una etiqueta a cada argumento y devuelve la lista de etiquetas.
813
V@'ease tambi@'en @code{disp}.
821
(%o2) b + 3 a b + 3 a b + a
827
(%t4) b + 3 a b + 3 a b + a
835
(%o5) b + 3 a b + 3 a b + a
840
@deffn {Funci@'on} ldisplay (@var{expr_1}, ..., @var{expr_n})
841
Muestra las expresiones @var{expr_1}, ..., @var{expr_n} en la consola con el formato de salida.
842
Cad expresi@'on se muestra como una ecuaci@'on de la forma @code{lhs = rhs}
843
en la que @code{lhs} es uno de los argumentos de @code{ldisplay}
844
y @code{rhs} su valor. Normalmente, cada argumento ser@'a el nombre de una variable. La funci@'on
845
@code{ldisp} asigna una etiqueta a cada ecuaci@'on y devuelve la lista de etiquetas.
847
V@'ease tambi@'en @code{display}.
855
(%o2) b + 3 a b + 3 a b + a
856
(%i3) ldisplay (e, f);
861
(%t4) f = b + 3 a b + 3 a b + a
869
(%o5) f = b + 3 a b + 3 a b + a
874
@defvr {Variable opcional} linechar
875
Valor por defecto: @code{%t}
877
La variable @code{linechar} es el prefijo de las etiquetas que genera Maxima para expresiones intermedias. Cuando sea necesario, Maxima crear@'a una etiqueta para cada expresi@'on intermedia concatenando @code{linechar} y @code{linenum}. A
878
@code{linechar} se le puede asignar cualquier cadena o s@'{@dotless{i}}mbolo, no necesariamente un car@'acter simple.
880
Las expresiones intermedias pueden ser mostradas o no.
881
V@'eanse tambi@'en @code{programmode} y @code{labels}.
885
@defvr {Variable opcional} linel
886
Valor por defecto: 79
888
La variable @code{linel} es la anchura (medida en n@'umero 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 @'este es muy peque@~no o grande resultar@'a de poca utilidad. El texto que impriman las funciones internas de Maxima, como los mensajes de error y las salidas de la funci@'on @code{describe}, no se ve afectado por el valor de @code{linel}.
892
@defvr {Variable opcional} lispdisp
893
Valor por defecto: @code{false}
895
Si @code{lispdisp} vale @code{true}, los s@'{@dotless{i}}mbolos de Lisp se muestran precedidos del car@'acter de interrogaci@'on @code{?}. En caso contrario, los s@'{@dotless{i}}mbolos de Lisp se muestran sin esta marca.
906
(%i1) lispdisp: false$
909
(%i3) lispdisp: true$
916
@deffn {Funci@'on} load (@var{filename})
917
Eval@'ua las expresiones del archivo @var{filename}, trayendo variables, funciones y otros objetos a Maxima.
918
Una asignaci@'on hecha previamente a una variable en Maxima ser@'a destruida por otra asignaci@'on que se le haga en @var{filename}. Para encontrar el fichero, @code{load} llama a @code{file_search} con @code{file_search_maxima} y @code{file_search_lisp} como directorios de b@'usqueda. Si la llamada a @code{load} funciona correctamente, devuelve el nombre del fichero; en caso contrario, @code{load} muestra un mensaje de error.
920
La funci@'on @code{load} trabaja indistintamente con c@'odigo Lisp y Maxima.
921
Los ficheros creados con @code{save}, @code{translate_file} y @code{compile_file}, que crea c@'odigo Lisp,
922
y @code{stringout}, que crea c@'odigo Maxima, todos ellos pueden ser procesados por @code{load}. La funci@'on
923
@code{load} llama a @code{loadfile} para cargar archivos en Lisp y a @code{batchload} para cargar archivos en Maxima.
925
La funci@'on @code{load} no reconoce las construcciones de tipo @code{:lisp} en
926
ficheros de Maxima. Adem@'as, mientras se est@'a procesando @var{filename},
927
las variables globales @code{_}, @code{__}, @code{%} y @code{%th} mantienen los
928
valores que ten@'{@dotless{i}}an cuando se realiz@'o la llamada a @code{load}.
930
V@'eanse tambi@'en @code{loadfile}, @code{batch}, @code{batchload} y @code{demo};
931
@code{loadfile} procesa archivos en Lisp; @code{batch}, @code{batchload} y @code{demo} procesan archivos en Maxima.
933
V@'ease @code{file_search} para m@'as detalles sobre el mecanismo de b@'usqueda de archivos.
935
La funci@'on @code{load} eval@'ua sus argumentos.
939
@deffn {Funci@'on} loadfile (@var{filename})
940
Eval@'ua las expresiones Lisp del archivo @var{filename}. La funci@'on
941
@code{loadfile} no llama a @code{file_search}, de manera que @code{filename} debe incluir la extensi@'on del archivo y su ruta completa.
943
La funci@'on @code{loadfile} puede procesar ficheros creados por @code{save}, @code{translate_file} y @code{compile_file}.
944
Puede ser m@'as conveniente utilizar @code{load} en lugar de @code{loadfile}.
946
La funci@'on @code{loadfile} no eval@'ua su argumento, de manera que @code{filename} debe ser una cadena, no una variable que la contenga. La utilizaci@'on del operador comilla-comilla s@'{@dotless{i}} permite la evaluaci@'on.
950
@defvr {Variable opcional} loadprint
951
Valor por defecto: @code{true}
953
La variable @code{loadprint} indica si mostrar un mensaje cuando se carga un archivo.
957
Si @code{loadprint} vale @code{true}, se muestra siempre un mensaje.
959
Si @code{loadprint} vale @code{'loadfile}, muestra un mensaje s@'olo si el archivo es cargado con la funci@'on @code{loadfile}.
961
Si @code{loadprint} vale @code{'autoload}, muestra un mensaje s@'olo cuandi un archivo se carga autom@'aticamente. V@'ease @code{setup_autoload}.
963
Si @code{loadprint} vale @code{false}, nunca mostrar@'a mensajes.
968
@defvr {Variable opcional} obase
969
Valor por defecto: 10
971
La variable @code{obase} es la base de los enteros mostrados por Maxima; se le puede asignar cualquier entero entre 2 y 35 (decimal), ambos inclusive. Si @code{obase} es mayor que 10, las cifras ser@'an los n@'umeros decimales entre 0 y 9, m@'as las letras may@'usculas A, B, C, ..., sg@'un sea necesario.
972
Las cifras en base 35, la mayor base que acepta Maxima, son los d@'{@dotless{i}}gitos de 0 a 9 y las letras de A a Y.
974
V@'ease tambi@'en @code{ibase}.
976
@c NEED EXAMPLES HERE
979
@defvr {Variable opcional} outchar
980
Valor por defecto: @code{%o}
982
La variable @code{outchar} es el prefijo de las etiquetas de las expresiones calculadas por Maxima.
983
Maxima crea autom@'aticamente una etiqueta para cada expresi@'on calculada concatenando @code{outchar} y @code{linenum}; a
984
@code{outchar} se le puede asignar cualquier s@'{@dotless{i}}mbolo o cadena, no necesariamente un carac@'acter sencillo.
987
(%i1) outchar: "output";
989
(%i2) expand ((a+b)^3);
991
(output2) b + 3 a b + 3 a b + a
995
V@'ease tambi@'en @code{labels}.
999
@defvr {Variable opcional} packagefile
1000
Valor por defecto: @code{false}
1002
Los desarrolladores de paquetes que utilizan @code{save}
1003
o @code{translate} para crear paquetes (ficheros) que van a ser utilizados por terceros pueden hacer @code{packagefile: true} para evitar que se a@~nada informaci@'on a la listas de informaci@'on de Maxima (por ejemplo, @code{values},
1004
@code{functions}) excepto all@'{@dotless{i}} donde sea necesario cuando el archivo sea cargado en memoria.
1005
@c FALTA COMPLETAR ESTE PARRAFO
1009
@defvr {Variable opcional} pfeformat
1010
Valor por defecto: @code{false}
1012
Si @code{pfeformat} vale @code{true}, una fracci@'on de enteros ser@'a mostrada con el car@'acter de barra inclinada @code{/} entre ellos.
1016
(%i1) pfeformat: false$
1025
(%i4) pfeformat: true$
1034
@deffn {Funci@'on} print (@var{expr_1}, ..., @var{expr_n})
1035
Eval@'ua y muestra las expresiones @var{expr_1}, ..., @var{expr_n} secuencialmente de izquierda a derecha, comenzando la impresi@'on por el borde izquierdo de la consola.
1037
El valor devuelto por @code{print} es el valor de su @'ultimo argumento. La funci@'on @code{print} no genera etiquetas para las expresiones intermedias.
1039
V@'eanse tambi@'en @code{display}, @code{disp}, @code{ldisplay} y @code{ldisp}, que muestran una expresi@'on por l@'{@dotless{i}}nea, mientras que @code{print} trata de mostrar dos o m@'as expresiones por l@'{@dotless{i}}nea.
1041
Para mostrar el contenido de un archivo v@'ease @code{printfile}.
1044
(%i1) r: print ("(a+b)^3 is", expand ((a+b)^3), "log (a^10/b) is", radcan (log (a^10/b)))$
1046
(a+b)^3 is b + 3 a b + 3 a b + a log (a^10/b) is
1050
(%o2) 10 log(a) - log(b)
1051
(%i3) disp ("(a+b)^3 is", expand ((a+b)^3), "log (a^10/b) is", radcan (log (a^10/b)))$
1055
b + 3 a b + 3 a b + a
1064
@deffn {Funci@'on} read (@var{expr_1}, ..., @var{expr_n})
1065
Imprime @var{expr_1}, ..., @var{expr_n} y a continuaci@'on lee una expresi@'on desde la consola y devuelve la expresi@'on evaluada. La expresi@'on termina con un punto y coma @code{;} o con el s@'{@dotless{i}}mbolo de d@'olar @code{$}.
1067
V@'ease tambi@'en @code{readonly}.
1071
(%i2) foo: read ("foo vale", foo, " -- nuevo valor.")$
1072
foo vale 42 -- nuevo valor.
1081
@deffn {Funci@'on} readonly (@var{expr_1}, ..., @var{expr_n})
1082
Imprime @var{expr_1}, ..., @var{expr_n} y a continuaci@'on lee una expresi@'on desde la consola y devuelve la expresi@'on sin evaluar. La expresi@'on termina con un punto y coma @code{;} o con el s@'{@dotless{i}}mbolo de d@'olar @code{$}.
1086
(%i2) foo: readonly ("Introducir expresion:");
1087
Introducir expresion:
1091
(%i3) foo: read ("Introducir expresion:");
1092
Introducir expresion:
1097
V@'ease tambi@'en @code{read}.
1101
@deffn {Funci@'on} reveal (@var{expr}, @var{nivel})
1102
Reemplaza partes de @var{expr} al @var{nivel} especificado y las sutituye por descripciones cortas.
1106
Las sumas y restas se reemplazan por @code{sum(@var{n})},
1107
siendo @var{n} el n@'umero de t@'erminos de la suma.
1109
Los productos se reemplazan por @code{product(@var{n})},
1110
siendo @var{n} el n@'umero de factores del producto.
1112
Las potencias se reemplazan por @code{expt}.
1114
Los cocientes se reemplazan por @code{quotient}.
1116
El s@'{@dotless{i}}mbolo negativo se reemplaza por @code{negterm}.
1119
Si el entero @var{depth} es mayor o igual que la profundidad m@'axima de @var{expr},
1120
@code{reveal (@var{expr}, @var{depth})} devuelve @var{expr} sin modificar.
1122
La funci@'on @code{reveal} eval@'ua sus argumentos y devuelve la expresi@'on con las modificaciones solicitadas.
1127
(%i1) e: expand ((a - b)^2)/expand ((exp(a) + exp(b))^2);
1130
(%o1) -------------------------
1133
(%i2) reveal (e, 1);
1135
(%i3) reveal (e, 2);
1139
(%i4) reveal (e, 3);
1140
expt + negterm + expt
1141
(%o4) ------------------------
1142
product(2) + expt + expt
1143
(%i5) reveal (e, 4);
1146
(%o5) ------------------------------------
1147
product(2) product(2)
1149
(%i6) reveal (e, 5);
1152
(%o6) --------------------------
1155
(%i7) reveal (e, 6);
1158
(%o7) -------------------------
1165
@defvr {Variable opcional} rmxchar
1166
Valor por defecto: @code{]}
1168
La variable @code{rmxchar} es el car@'acter que se dibuja al lado derecho de una matriz.
1170
V@'ease tambi@'en @code{lmxchar}.
1174
@deffn {Funci@'on} save (@var{filename}, @var{name_1}, @var{name_2}, @var{name_3}, ...)
1175
@deffnx {Funci@'on} save (@var{filename}, values, functions, labels, ...)
1176
@deffnx {Funci@'on} save (@var{filename}, [@var{m}, @var{n}])
1177
@deffnx {Funci@'on} save (@var{filename}, @var{name_1}=@var{expr_1}, ...)
1178
@deffnx {Funci@'on} save (@var{filename}, all)
1179
Alamacena los valores actuales de @var{name_1}, @var{name_2}, @var{name_3}, ..., en el archivo @var{filename}.
1180
Los argumentos son nombres de variables, funciones u otros objetos.
1181
Si un nombre no tiene un valor o una funci@'on asociado a @'el, entonces se ignora.
1183
La funci@'on @code{save} devuelve @var{filename}.
1185
La funci@'on @code{save} almacena datos en forma de expresiones Lisp.
1186
Los datos almacenados por @code{save} pueden recuperarse con @code{load (@var{filename})}.
1187
El resultado de ejecutar @code{save} cuando @var{filename} ya existe depende del soporte Lisp implementado;
1188
el archivo puede ser sobreescrito o que @code{save} env@'{@dotless{i}}e un mesaje de error.
1190
La llamada @code{save (@var{filename}, values, functions, labels, ...)}
1191
almacena los elementos cuyos nombres son @code{values}, @code{functions}, @code{labels}, etc.
1192
Los nombres pueden ser cualesquiera de los especificados por la variable @code{infolists};
1193
@code{values} incluye todas las variables definidas por el usuario.
1195
La llamada @code{save (@var{filename}, [@var{m}, @var{n}])} almacena los valores de las etiquetas de entrada y salida desde @var{m} hasta @var{n}.
1196
N@'otese que @var{m} y @var{n} deben ser n@'umeros.
1197
Las etiquetas de entrada y salida tambi@'en se pueden almacenar una a una, por ejemplo, @code{save ("foo.1", %i42, %o42)}.
1198
La llamada @code{save (@var{filename}, labels)} almacena todas las etiquetas de entrada y salida.
1199
Cuando las etiquetas almacenadas en el archivo sean posteriormente recuperadas, se sobreescribir@'an las activas en ese momento.
1201
La llamada @code{save (@var{filename}, @var{name_1}=@var{expr_1}, @var{name_2}=@var{expr_2}, ...)}
1202
almacena los valores de @var{expr_1}, @var{expr_2}, ...,
1203
con los nombres @var{name_1}, @var{name_2}, ....
1204
Es @'util hacer este tipo de llamada para con etiquetas de entrada y salida, por ejemplo, @code{save ("foo.1", aa=%o88)}.
1205
El miembro derecho de la igualdad puede ser cualquier expresi@'on, que ser@'a evaluada.
1206
Esta llamada a la funci@'on @code{save} no incorpora nuevos nombres a la sesi@'on actual de Maxima,
1207
simplemente los almacena en el archivo @var{filename}.
1209
Todas estas formas de llamar a la funci@'on @code{save} se pueden combinar a voluntad.
1210
Por ejemplo, @code{save (@var{filename}, aa, bb, cc=42, functions, [11, 17])}.
1212
La llamada @code{save (@var{filename}, all)} almacena el estado actual de Maxima, lo que incluye todas las variables definidas por el usuario, funciones, arreglos, etc., as@'{@dotless{i}} como algunos objetos definidos autom@'aticamente.
1213
Los elementos almacenados incluyen variables del sistema, como @code{file_search_maxima} o @code{showtime}, si han sido modificadas por el usuario. V@'ease @code{myoptions}.
1215
La funci@'on @code{save} no eval@'ua sus argumentos. El argumento @var{filename} debe ser una cadena, no una variable que contenga una cadena. Si se especifican n@'umeros de etiquetas, @'estos deben ser enteros.
1216
El operador comilla-comilla @code{'@w{}'} eval@'ua una variable de cadena devolviendo su valor;
1217
por ejemplo, @code{s: "foo.1"$ save (''s, all)$}, y de las variables enteras devuelve sus valores enteros, como en @code{m: 5$ n: 12$ save ("foo.1", [''m, ''n])$}.
1219
@c ANY USE FOR THE FOLLOWING ???
1220
@c The following device constructs a list of variables to save and saves them.
1224
@c l: ['aa, 'bb, 'cc, 'dd]$
1225
@c apply (save, append ([s], l))$
1229
@defvr {Variable opcional} savedef
1230
Valor por defecto: @code{true}
1232
Si @code{savedef} vale @code{true}, se mantiene la versi@'on Maxima de una funci@'on definida por el usuario cuando @'esta se traduce, lo que permite mostrar su c@'odigo con @code{dispfun} y que la funci@'on pueda ser editada.
1234
Si @code{savedef} vale @code{false}, los nombres de las funciones traducidas se eliminan de la lista @code{functions}.
1238
@deffn {Funci@'on} show (@var{expr})
1239
Muestra @code{expr} con sus objetos indexados que tengan @'{@dotless{i}}ndices covariantes como sub@'{@dotless{i}}ndices y los contravariantes como super@'{@dotless{i}}ndices. Los @'{@dotless{i}}ndices derivados se muestran como sub@'{@dotless{i}}ndices, separados por una coma de los covariantes.
1243
@deffn {Funci@'on} showratvars (@var{expr})
1244
Devuelve una lista de las variables de expresiones can@'onicas racionales (CRE) en la expresi@'on @code{expr}.
1246
V@'ease tambi@'en @code{ratvars}.
1250
@defvr {Variable opcional} stardisp
1251
Valor por defecto: @code{false}
1253
Si @code{stardisp} vale @code{true}, la multiplicaci@'on se muestra con un asterisco @code{*} entre los operandos.
1257
@deffn {Funci@'on} string (@var{expr})
1258
Convierte @code{expr} a la notaci@'on lineal de Maxima, tal como si fuese tecleada.
1260
El valor que retorna la funci@'on @code{string} es una cadena, por lo que no puede ser utilizada en los c@'alculos.
1264
@defvr {Variable de Lisp} stringdisp
1265
Valor por defecto: @code{false}
1267
Si @code{?stringdisp} vale @code{true},
1268
las cadenas alfanum@'ericas se muestran encerradas entre comillas dobles. En caso contrario, no se nuestran las comillas.
1270
La variable @code{?stringdisp} vale siempre @code{true} cuando se muestra la definici@'on de una funci@'on.
1272
La variable @code{?stringdisp} es una variable Lisp, por lo que debe ser escrita precedida de un signo de interrogaci@'on @code{?}.
1277
@c ?stringdisp: false$
1278
@c "This is an example string.";
1279
@c foo () := print ("This is a string in a function definition.");
1280
@c ?stringdisp: true$
1281
@c "This is an example string.";
1284
(%i1) ?stringdisp: false$
1285
(%i2) "This is an example string.";
1286
(%o2) This is an example string.
1287
(%i3) foo () := print ("This is a string in a function definition.");
1289
print("This is a string in a function definition.")
1290
(%i4) ?stringdisp: true$
1291
(%i5) "This is an example string.";
1292
(%o5) "This is an example string."
1297
@deffn {Funci@'on} stringout (@var{filename}, @var{expr_1}, @var{expr_2}, @var{expr_3}, ...)
1298
@deffnx {Funci@'on} stringout (@var{filename}, [@var{m}, @var{n}])
1299
@deffnx {Funci@'on} stringout (@var{filename}, input)
1300
@deffnx {Funci@'on} stringout (@var{filename}, functions)
1301
@deffnx {Funci@'on} stringout (@var{filename}, values)
1303
La funci@'on @code{stringout} escribe expresiones en un archivo de la misma forma en que se escribir@'{@dotless{i}}an como expresiones de entrada. El archivo puede ser utilizado entonces como entrada a las funciones @code{batch} o @code{demo}, y puede ser editado para cualquier otro prop@'osito.
1305
La forma general de @code{stringout} escribe los valores de una o m@'as expresiones en el archivo de salida. N@'otese que si una expresi@'on es una variable, solamente se escribir@'a el valor de la variable y no el nombre de @'esta. Como caso especial, y muy @'util en algunas ocasiones, las expresiones pueden ser etiquetas de entrada (@code{%i1}, @code{%i2}, @code{%i3}, ...) o de salida (@code{%o1}, @code{%o2}, @code{%o3}, ...).
1307
Si @code{grind} vale @code{true}, @code{stringout} formatea la salida utilizando @code{grind}. En caso contrario, se utilizar@'a el formato @code{string}. V@'eanse @code{grind} y @code{string}.
1309
La forma especial @code{stringout (@var{filename}, [@var{m}, @var{n}])} escribe los valores de las etiquetas de entrada desde la m hasta la n, ambas inclusive.
1311
La forma especial @code{stringout (@var{filename}, input)} escribe todas las etiquetas de entrada en el archivo.
1313
La forma especial @code{stringout (@var{filename}, functions)} escribe todas las funciones definidas por el usuario, contenidas en la lista global @code{functions}, en el archivo.
1315
La forma especial @code{stringout (@var{filename}, values)} escribe todas las variables asignadas por el usuario, contenidas en la lista global @code{values}, en el archivo. Cada variable se escribe como una sentencia de asignaci@'on, con el nombre de la variable seguida de dos puntos y a continuaci@'on su valor. N@'otese que la forma general de @code{stringout} no escribe las variables como sentencias de asignaci@'on.
1319
@deffn {Funci@'on} tex (@var{expr})
1320
@deffnx {Funci@'on} tex (@var{label})
1321
@deffnx {Funci@'on} tex (@var{expr}, @var{filename})
1322
@deffnx {Funci@'on} tex (@var{label}, @var{filename})
1324
Devuelve la expresi@'on en un formato apropiado para para ser incorporado a un documento basado en TeX.
1325
El resultado que se obtiene es un fragmento de c@'odigo que puede incluirse en un documento mayor, pero que
1326
no puede ser procesado aisladamente.
1328
La instrucci@'on @code{tex (@var{expr})} imprime en la consola la representaci@'on en TeX de @var{expr}.
1330
La instrucci@'on @code{tex (@var{label})} imprime en la consola la representaci@'on en TeX de la expresi@'on a la que hace referencia la etiqueta @var{label}, asign@'andole a su vez una etiqueta de ecuaci@'on que ser@'a mostrada al lado izquierdo de la misma. La etiqueta de la expresi@'on en TeX es la misma que la de Maxima.
1332
La instrucci@'on @code{tex (@var{expr}, @var{filename})} a@~nade la representaci@'on TeX de @var{expr} al fichero @var{filename}. La funci@'on @code{tex} no eval@'ua el argumento @var{filename}, pero la doble comilla simple @code{''} fuerza su evaluaci@'on.
1334
La instrucci@'on @code{tex (@var{label}, @var{filename})} a@~nade la representaci@'on TeX de la expresi@'on a la que hace referencia la etiqueta @var{label}, junto con una etiqueta, al fichero @var{filename}. La funci@'on @code{tex} no eval@'ua el argumento @var{filename}, pero la doble comilla simple @code{''} fuerza su evaluaci@'on.
1336
La funci@'on @code{tex} eval@'ua sus argumentos tras comprobar si se trata de una etiqueta. La doble comilla simple @code{''} fuerza la evaluaci@'on del argumento, anulando la comprobaci@'on sobre la etiqueta.
1338
V@'ease tambi@'en @code{texput}.
1343
(%i1) integrate (1/(1+x^3), x);
1346
log(x - x + 1) sqrt(3) log(x + 1)
1347
(%o1) - --------------- + ------------- + ----------
1350
$$-@{@{\log \left(x^2-x+1\right)@}\over@{6@}@}+@{@{\arctan \left(@{@{2\,x-1
1351
@}\over@{\sqrt@{3@}@}@}\right)@}\over@{\sqrt@{3@}@}@}+@{@{\log \left(x+1\right)
1352
@}\over@{3@}@}\leqno@{\tt (\%o1)@}$$
1354
(%i3) tex (integrate (sin(x), x));
1357
(%i4) tex (%o1, "foo.tex");
1364
@deffn {Funci@'on} texput (@var{a}, @var{s})
1365
@deffnx {Funci@'on} texput (@var{a}, @var{s}, @var{operator_type})
1366
@deffnx {Funci@'on} texput (@var{a}, [@var{s_1}, @var{s_2}], matchfix)
1367
@deffnx {Funci@'on} texput (@var{a}, [@var{s_1}, @var{s_2}, @var{s_3}], matchfix)
1369
Establece el formato en TeX del @'atomo @var{a}, el cual puede ser un s@'{@dotless{i}}mbolo o el nombre de un operador.
1371
La instrucci@'on @code{texput (@var{a}, @var{s})} hace que la funci@'on @code{tex} introduzca @var{s} en la salida TeX en el lugar de @var{a}.
1373
La instrucci@'on @code{texput (@var{a}, @var{s}, @var{operator_type})}, en la que @var{operator_type} es @code{prefix}, @code{infix} o @code{postfix}, hace que la funci@'on @code{tex} introduzca @var{s} en la salida TeX en el lugar de @var{a}, coloc@'andolo en el lugar correcto.
1375
La instrucci@'on @code{texput (@var{a}, [@var{s_1}, @var{s_2}], matchfix)} hace que la funci@'on @code{tex} introduzca @var{s_1} y @var{s_2} en la salida TeX a los lados de los argumentos de @var{a}. Si son m@'as de uno, los argumentos se separan por comas.
1377
La instrucci@'on @code{texput (@var{a}, [@var{s_1}, @var{s_2}, @var{s_3}], matchfix)} hace que la funci@'on @code{tex} introduzca @var{s_1} y @var{s_2} en la salida TeX a los lados de los argumentos de @var{a}, con @var{s_3} separando los argumentos.
1382
@c texput (me,"\\mu_e");
1384
@c texput (lcm, "\\mathrm{lcm}");
1385
@c tex (lcm (a, b));
1387
@c texput ("grad", " \\nabla ", prefix);
1390
@c texput ("~", " \\times ", infix);
1393
@c texput ("@", "!!", postfix);
1395
@c matchfix ("<<", ">>");
1396
@c texput ("<<", [" \\langle ", " \\rangle "], matchfix);
1399
@c texput ("<<", [" \\langle ", " \\rangle ", " \\, | \\,"], matchfix);
1404
(%i1) texput (me,"\\mu_e");
1409
(%i3) texput (lcm, "\\mathrm@{lcm@}");
1410
(%o3) \mathrm@{lcm@}
1411
(%i4) tex (lcm (a, b));
1412
$$\mathrm@{lcm@}\left(a , b\right)$$
1414
(%i5) prefix ("grad");
1416
(%i6) texput ("grad", " \\nabla ", prefix);
1423
(%i9) texput ("~", " \\times ", infix);
1428
(%i11) postfix ("@@");
1430
(%i12) texput ("@@", "!!", postfix);
1435
(%i14) matchfix ("<<", ">>");
1437
(%i15) texput ("<<", [" \\langle ", " \\rangle "], matchfix);
1438
(%o15) \langle ( \rangle , false)
1440
$$ \langle a \rangle $$
1442
(%i17) tex (<<a, b>>);
1443
$$ \langle a , b \rangle $$
1445
(%i18) texput ("<<", [" \\langle ", " \\rangle ", " \\, | \\,"], matchfix);
1446
(%o18) \langle ( \rangle , \, | \,)
1448
$$ \langle a \rangle $$
1450
(%i20) tex (<<a, b>>);
1451
$$ \langle a \, | \,b \rangle $$
1458
@deffn {Funci@'on} system (@var{command})
1459
Ejecuta la instrucci@'on @var{command} como un proceso independiente de Maxima.
1460
La instrucci@'on se le pasa a la consola del sistema para su ejecuci@'on.
1461
La funci@'on @code{system} no est@'a soportada por todos los sistemas operativos, pero suele estarlo en todos los entornos Unix y similares.
1463
Suponiendo que @code{_hist.out} es una lista de frecuencias que se quieren representar en un diagrama de barras utilizando el programa @code{xgraph},
1466
(%i1) (with_stdout("_hist.out",
1467
for i:1 thru length(hist) do (
1469
system("xgraph -bar -brw .7 -nl < _hist.out"));
1472
A fin de hacer el diagrama y eliminar el archivo temporal posteriormente, h@'agase:
1475
system("(xgraph -bar -brw .7 -nl < _hist.out; rm -f _hist.out)&")
1480
@defvr {Variable opcional} ttyoff
1481
Valor por defecto: @code{false}
1483
Si @code{ttyoff} vale @code{true}, no se muestran las expresiones resultantes, pero @'estas se calculan de todos modos y se les asignan etiquetas. V@'ease @code{labels}.
1485
El texto que escriban las funciones internas de Maxima, tales como los mensajes de error y las salidas de @code{describe},
1486
no se ven afectadas por @code{ttyoff}.
1490
@deffn {Macro} with_stdout (@var{filename}, @var{expr_1}, @var{expr_2}, @var{expr_3}, ...)
1491
Abre el archivo @var{filename} y a continuaci@'on eval@'ua @var{expr_1}, @var{expr_2}, @var{expr_3}, ....
1492
Los valores de los argumentos no se almacenan @var{filename}, pero cualquier resultado a imprimir por @code{print}, @code{display}, @code{disp} o @code{grind}, va a parar al archivo @var{filename} en lugar de a la consola.
1494
La macro @code{with_stdout} devuelve el valor de su @'ultimo argumento.
1496
V@'ease tambi@'en @code{writefile}.
1498
@c THIS DOESN'T SEEM VERY IMPORTANT TO MENTION ...
1499
@c Note the binding of display2d to be
1500
@c false, otherwise the printing will have things like "- 3" instead
1504
@c THIS EXAMPLE USES SOME UNIX-ISH CONSTRUCTS -- WILL IT WORK IN WINDOWS ???
1505
@c ALSO IT'S SORT OF COMPLICATED AND THE SIMPLER SECOND EXAMPLE ILLUSTRATES with_stdout BETTER !!!
1506
@c mygnuplot (f, var, range, number_ticks) :=
1507
@c block ([numer:true, display2d:false],
1508
@c with_stdout("tmp.out",
1509
@c dx: (range[2]-range[1])/number_ticks,
1510
@c for x: range[1] thru range[2] step dx
1511
@c do print (x, at (f, var=x))),
1512
@c system ("echo \"set data style lines; set title '", f,"' ;plot '/tmp/gnu'
1513
@c ;pause 10 \" | gnuplot"))$
1514
(%i1) with_stdout ("tmp.out", for i:5 thru 10 do print (i, "! yields", i!))$
1515
(%i2) printfile ("tmp.out")$
1526
@deffn {Funci@'on} writefile (@var{filename})
1527
Comienza escribiendo una transcripci@'on de la sesi@'on de Maxima en el archivo @var{filename}.
1528
Cualquier interacci@'on entre Maxima y el usuario se almacena tambi@'en en este archivo, tal como aparece en la consola.
1530
Puesto que la transcripci@'on se escribe en el formato de salida a la consola, su contenido no es interpretable por Maxima.
1531
Para hacer un archivo que contenga expresiones que puedan ser nuevamente cargadas en Maxima, v@'eanse @code{save} y @code{stringout}; la funci@'on @code{save} almacena expresiones en formato Lisp, mientras que @code{stringout} lo hace en formato Maxima.
1533
El resultado de ejecutar @code{writefile} cuando el archivo @var{filename} ya existe depende del entorno Lisp operativo; el contenido anterior puede ser sobreescrito o ampliado con la sesi@'on actual. La funci@'on @code{appendfile} siempre a@~nade la sesi@'on al contenido actual.
1535
Puede ser @'util ejecutar @code{playback} despu@'es de @code{writefile} para guardar las interacciones previas de la sesi@'on. Puesto que @code{playback} muestra solamente las variables de entrada y salida (@code{%i1}, @code{%o1}, etc.),
1536
cualquier salida generada por una sentencia de impresi@'on desde dentro de una funci@'on no es mostrada por @code{playback}.
1538
La funci@'on @code{closefile} cierra los archivos abiertos por @code{writefile} o @code{appendfile}.