Merge branch 'master' into bug-4403-remove-polyfill
[maxima.git] / doc / info / es / DataTypes.es.texi
blob959046de9cb276ddffee1a7319544dd65fd7c10d
1 @c English version 2013-04-04
2 @menu
3 * Números::
4 * Cadenas de texto::
5 * Constantes::
6 * Listas::
7 * Arrays::
8 * Estructuras::
9 @end menu
13 @node Números, Cadenas de texto, Tipos de datos y estructuras, Tipos de datos y estructuras
14 @section Números
16 @menu
17 * Introducción a los números::
18 * Funciones y variables para los números::
19 @end menu
24 @node Introducción a los números, Funciones y variables para los números, Números, Números
25 @subsection Introducción a los números
30 @subheading Números enteros y racionales
32 Los cálculos aritméticos con números enteros y racionales son exactos.
33 En principio, los números enteros y racionales admiten una cantidad arbitraria
34 de cifras, con la única limitación que impongan las capacidades de memoria
35 del sistema.
37 @example
38 (%i1) 1/3+5/4+3;
39                                55
40 (%o1)                          --
41                                12
42 (%i2) 100!;
43 (%o2) 9332621544394415268169923885626670049071596826438162146859\
44 2963895217599993229915608941463976156518286253697920827223758251\
45 185210916864000000000000000000000000
46 (%i3) 100!/101!;
47                                 1
48 (%o3)                          ---
49                                101
50 @end example
52 Funciones disponibles para los números enteros y racionales:
54 @verbatim
55    integerp       numberp       nonnegintegerp     
56    oddp           evenp
57    ratnump        rationalize
58 @end verbatim
60 @subheading Números decimales en coma flotante
62 Maxima hace los cálculos con números decimales en coma flotante 
63 en doble precisión. Además, Maxima puede hacer c@'lculos con 
64 números decimales grandes en coma flotante (@i{bigfloats}, en inglés),
65 que, en principio, admiten precisión arbitraria.
67 La coma de los números decimales en coma flotante se escribe con un
68 punto y el exponente se puede indicar con "f", "e" o "d". Por defecto,
69 Maxima hace los cálculos en doble precisión y muestra el exponente
70 como "e" en el resultado, mientras que representa el exponente con la
71 letra "b" en el caso de decimales grandes de precisión arbitraria.
72 Maxima no distingue si la letra del exponente se escribe en minúscula
73 o mayúscula.
75 @example
76 (%i1) [2.0,1f10,1,e10,1d10,1d300];
77 (%o1)        [2.0, 1.e+10, 1, e10, 1.e+10, 1.e+300]
78 (%i2) [2.0b0,1b10,1b300];
79 (%o2)               [2.0b0, 1.0b10, 1.0b300]
80 @end example
82 Si en un cálculo aritmético aparece un número decimal en coma flotante,
83 se producirá un efecto de contagio que hará que el resultado se devuelva
84 también como decimal. Esto también es cierto para el caso de decimales
85 grandes de precisión arbitraria.
87 @example
88 (%i1) 2.0+1/2+3;
89 (%o1)                                 5.5
90 (%i2) 2.0b0+1/2+3;
91 (%o2)                                5.5b0
92 @end example
94 Con las funciones @code{float} y @code{bfloat} se puede convertir
95 un número en decimal de doble precisión, o de precisión
96 arbitraria, respectivamente:
98 @example
99 (%i1) float([2,1/2,1/3,2.0b0]);
100 (%o1)          [2.0, 0.5, .3333333333333333, 2.0]
101 (%i2) bfloat([2,1/2,1/3,2.0b0]);
102 (%o2)     [2.0b0, 5.0b-1, 3.333333333333333b-1, 2.0b0]
103 @end example
105 Funciones y variables disponibles para números decimales:
107 @verbatim
108    float        floatnump     
109    bfloat       bfloatp       fpprec
110    float2bf     bftorat       ratepsilon
112    number_pbranch 
113    m1pbranch
114 @end verbatim
116 @subheading Números complejos
118 Maxima no tiene un tipo de dato especíco para
119 números complejos; éstos se representan internamente como
120 la suma de la parte real y la imaginaria multiplicada por el
121 símbolo @code{%i}, que hace las veces de unidad
122 imaginaria. Por ejemplo, las raíces de la ecuación
123 @code{x^2 - 4*x + 13 = 0} se representan como @code{2 + 3*%i} y
124 @code{2 - 3*%i}.
126 Maxima no simplifica automáticamente productos, cocientes,
127 raíces y otras expresiones con números complejos.
128 Por ejemplo, para hacer la multiplicación de números
129 complejos se puede utilizar la función @code{expand}.
131 Funciones disponibles para los números complejos:
133 @verbatim
134    realpart     imagpart      rectform     polarform
135    cabs         carg          conjugate    csign
136 @end verbatim
144 @node Funciones y variables para los números, , Introducción a los números, Números
145 @subsection Funciones y variables para los números
148 @deffn {Función} bfloat (@var{expr})
149 Convierte todos los números y  funciones numéricas a números decimales de punto flotante grandes ("bigfloats").
150 El número de dígitos significativos de los "bigfloats" resultantes se especifica mediante la variable global @code{fpprec}.
152 Si @code{float2bf} vale @code{false} se mostrará un mensaje de aviso cuando un número en punto flotante se convierte a decimal de tipo "bigfloats", puesto que tal transformación puede conllevar pérdida de precisión.
154 @end deffn
157 @deffn {Función} bfloatp (@var{expr})
158 Devuelve @code{true} si @var{expr} es un número decimal en punto flotante grande ("bigfloats"), en caso contrario devuelve @code{false}.
160 @end deffn
163 @defvr {Variable optativa} bftorat
164 Valor por defecto: @code{false}
166 La variable @code{bftorat} controla la conversión de números decimales de punto flotante grandes ("bigfloats") a números racionales. Si @code{bftorat} vale @code{false}, se utilizará @code{ratepsilon} para controlar la conversión  (lo cual resulta en números racionales relativamente pequeños). Si  @code{bftorat} vale @code{true}, el número racional generado representará exactamente al número decimal de punto flotante grande ("bigfloat").
168 @end defvr
171 @defvr {Variable optativa} bftrunc
172 Valor por defecto: @code{true}
174 La variable @code{bftrunc} provoca la eliminación de ceros en números decimales grandes no nulos para que no se muestren.  Así, si @code{bftrunc} vale @code{false}, @code{bfloat (1)}
175 se muestra como @code{1.000000000000000B0}. En otro caso, se mostrará como @code{1.0B0}.
177 @end defvr
180 @deffn {Función} evenp (@var{expr})
181 Devuelve @code{true} si @var{expr} es un entero par y @code{false} en cualquier otro caso.
183 @end deffn
186 @deffn {Función} float (@var{expr})
187 Convierte los enteros, números racionales y los decimales de punto flotante grandes ("bigfloats") que están presentes en @var{expr} a números de punto flotante. También actúa como símbolo @code{evflag}.
189 @end deffn
192 @defvr {Variable optativa} float2bf
193 Valor por defecto: @code{true}
195 Si @code{float2bf} vale @code{false} se mostrará un mensaje de aviso cuando un número
196 en punto flotante se convierte a decimal de tipo "bigfloats", puesto que tal transformación
197 puede conllevar pérdida de precisión.
199 @end defvr
202 @deffn {Función} floatnump (@var{expr})
203 Devuelve @code{true} si @var{expr} es un número de punto flotante, en caso contario retorna @code{false}.
205 @end deffn
209 @defvr {Variable optativa} fpprec
210 Valor por defecto: 16
212 La variable @code{fpprec} guarda el número de dígitos significativos en la aritmética con números decimales de punto flotante grandes ("bigfloats"). La variable @code{fpprec} no afecta a los cálculos con números decimales de punto flotante ordinarios.
214 Véanse también @code{bfloat} y @code{fpprintprec}.
216 @end defvr
218 @defvr {Variable optativa} fpprintprec
219 Valor por defecto: 0
221 La variable @code{fpprintprec} guarda el número de dígitos
222 a imprimir de los números decimales en coma flotante, tanto los ordinarios
223 como los de precisión ilimitada (@i{bigfloats}).
225 En el caso de los decimales ordinarios, si @code{fpprintprec} toma un valor
226 entre 2 y 16 (inclusive), el número de dígitos que se 
227 imprimen es igual a @code{fpprintprec}. En caso contrario, @code{fpprintprec} es 0
228 o mayor que 16, siendo el número de dígitos
229 a imprimir en todos loa casos igual a 16.
231 En el caso de los decimales de precisión ilimitada (@i{bigfloats}),
232 si @code{fpprintprec} toma un valor entre 2 y 16 (inclusive),
233 el número de dígitos que se imprimen es igual a 
234 @code{fpprintprec}. En caso contrario, @code{fpprintprec} es 0
235 o mayor que @code{fpprec}, siendo el número de dígitos
236 a imprimir igual a @code{fpprec}.
238 La variable @code{fpprintprec} no admite el valor 1.
239 @end defvr
242 @deffn {Función} integerp (@var{expr})
244 Devuelve @code{true} si @var{expr} es un número entero y @code{false} en cualquier otro caso.
246 La función @code{integerp} devuelve @code{false} si su argumento es un símbolo, incluso cuando éste ha sido declarado como entero.
248 Ejemplos:
250 @example
251 (%i1) integerp (0);
252 (%o1)                         true
253 (%i2) integerp (1);
254 (%o2)                         true
255 (%i3) integerp (-17);
256 (%o3)                         true
257 (%i4) integerp (0.0);
258 (%o4)                         false
259 (%i5) integerp (1.0);
260 (%o5)                         false
261 (%i6) integerp (%pi);
262 (%o6)                         false
263 (%i7) integerp (n);
264 (%o7)                         false
265 (%i8) declare (n, integer);
266 (%o8)                         done
267 (%i9) integerp (n);
268 (%o9)                         false
269 @end example
271 @end deffn
274 @defvr {Variable opcional} m1pbranch
275 Valor por defecto: @code{false}
277 La variable @code{m1pbranch} es la rama principal de @code{-1} elevado a una potencia. Cantidades como @code{(-1)^(1/3)} (esto es, un exponente racional impar) y @code{(-1)^(1/4)} (esto es, un exponente racional par) son tratados como sigue:
279 @c REDRAW THIS AS A TABLE
280 @example
281               dominio real
282                             
283 (-1)^(1/3):      -1         
284 (-1)^(1/4):   (-1)^(1/4)   
286              dominio complejo              
287 m1pbranch:false          m1pbranch:true
288 (-1)^(1/3)               1/2+%i*sqrt(3)/2
289 (-1)^(1/4)              sqrt(2)/2+%i*sqrt(2)/2
290 @end example
292 @end defvr
295 @deffn {Función} nonnegintegerp (@var{n})
297 Devuelve @code{true} si y solo si @code{@var{n} >= 0}, siendo @var{n} un entero.
299 @end deffn
302 @deffn {Función} numberp (@var{expr})
304 Devuelve @code{true} si @var{expr} es un enúmero entero, racional, 
305 de coma flotante o "bigfloat", en caso contrario devuelve @code{false}.
307 La función @code{numberp} devuelve @code{false} si su argumento es un símbolo, incluso cuando el argumento es un número simbólico como @code{%pi} o @code{%i}, o aunque haya sido declarado como @code{even} (par), @code{odd} (impar), @code{integer} (entero), @code{rational} (racional), @code{irrational} (irracional), @code{real} (real), @code{imaginary} (imaginario) o @code{complex} (complejo).
309 Ejemplos:
311 @example
312 (%i1) numberp (42);
313 (%o1)                         true
314 (%i2) numberp (-13/19);
315 (%o2)                         true
316 (%i3) numberp (3.14159);
317 (%o3)                         true
318 (%i4) numberp (-1729b-4);
319 (%o4)                         true
320 (%i5) map (numberp, [%e, %pi, %i, %phi, inf, minf]);
321 (%o5)      [false, false, false, false, false, false]
322 (%i6) declare (a, even, b, odd, c, integer, d, rational,
323      e, irrational, f, real, g, imaginary, h, complex);
324 (%o6)                         done
325 (%i7) map (numberp, [a, b, c, d, e, f, g, h]);
326 (%o7) [false, false, false, false, false, false, false, false]
327 @end example
329 @end deffn
333 @defvr {Variable opcional} numer
335 La variable @code{numer} hace algunas funciones matemáticas
336 con argumentos numéricos se evalúen como decimales de punto flotante.
337 También hace que las variables de una expresión a las cuales se les ha
338 asignado un número sean sustituidas por sus valores.
339 Además, activa la variable @code{float}.
341 Véase también @code{%enumer}.
343 Ejemplos:
345 @c ===beg===
346 @c [sqrt(2), sin(1), 1/(1+sqrt(3))];
347 @c [sqrt(2), sin(1), 1/(1+sqrt(3))],numer;
348 @c ===end===
349 @example
350 (%i1) [sqrt(2), sin(1), 1/(1+sqrt(3))];
351                                                1
352 (%o1)                   [sqrt(2), sin(1), -----------]
353                                           sqrt(3) + 1
354 (%i2) [sqrt(2), sin(1), 1/(1+sqrt(3))],numer;
355 (%o2) [1.414213562373095, .8414709848078965, .3660254037844387]
356 @end example
357 @end defvr
361 @defvr {Variable opcional} numer_pbranch
362 Valor por defecto: @code{false}
364 La variable opcional @code{numer_pbranch} controla la evaluación
365 numérica de las potencias de números enteros, racionales y
366 decimales negativos. Si @code{numer_pbranch} vale @code{true} y el
367 exponente es decimal o la variable opcional @code{numer} vale 
368 @code{true}, Maxima evalúa el resultado numérico utilizando la rama
369 principal. En caso contrario, se devuleve un resultado simplificado pero
370 no evaluado.
372 Ejemplos:
374 @c ===beg===
375 @c (-2)^0.75;
376 @c (-2)^0.75,numer_pbranch:true;
377 @c (-2)^(3/4);
378 @c (-2)^(3/4),numer;
379 @c (-2)^(3/4),numer,numer_pbranch:true;
380 @c ===end===
381 @example
382 (%i1) (-2)^0.75;
383 (%o1) (-2)^0.75
385 (%i2) (-2)^0.75,numer_pbranch:true;
386 (%o2) 1.189207115002721*%i-1.189207115002721
388 (%i3) (-2)^(3/4);
389 (%o3) (-1)^(3/4)*2^(3/4)
391 (%i4) (-2)^(3/4),numer;
392 (%o4) 1.681792830507429*(-1)^0.75
394 (%i5) (-2)^(3/4),numer,numer_pbranch:true;
395 (%o5) 1.189207115002721*%i-1.189207115002721
396 @end example
398 @end defvr
401 @deffn {Función} numerval (@var{x_1}, @var{expr_1}, ..., @var{var_n}, @var{expr_n})
402 Declara las variables @code{x_1}, ..., @var{x_n} asignándoles los valores numéricos @code{expr_1}, ..., @code{expr_n}.
403 El valor numérico se evalúa y sustituye a la variable en cualquier expresión en la que ésta aparezca si @code{numer} toma el valor @code{true}. Véase también @code{ev}.
405 Las expresiones @code{expr_1}, ..., @code{expr_n} pueden ser expresiones no necesariamente numéricas.
406 @end deffn
410 @deffn {Función} oddp (@var{expr})
411 Devuelve @code{true} si @var{expr} es un entero impar y @code{false} en caso contrario.
412 @end deffn
416 @defvr {Variable opcional} ratepsilon
417 Valor por defecto: 2.0e-8
419 La variable @code{ratepsilon} guarda la tolerancia utilizada en la conversión de números decimales en coma flotante a números racionales.
421 @c NEED EXAMPLES HERE
422 @end defvr
427 @deffn {Función} rationalize (@var{expr})
428 Convierte todos los números en coma flotante de doble precisión y grandes (big float) presentes en una expresión @var{expr} de Maxima a sus formas racionales exactas equivalentes. Si el usuario no está familiarizado con la representación binaria de números en coma flotante, le puede extrañar que @code{rationalize (0.1)} no sea igual que 1/10.  Este comportamiento no es único de Maxima, ya que el número 1/10 en su forma binaria es periódico y no exacto.
430 @c ===beg===
431 @c rationalize (0.5);
432 @c rationalize (0.1);
433 @c fpprec : 5$
434 @c rationalize (0.1b0);
435 @c fpprec : 20$
436 @c rationalize (0.1b0);
437 @c rationalize (sin (0.1*x + 5.6));
438 @c ===end===
439 @example
440 (%i1) rationalize (0.5);
441                                 1
442 (%o1)                           -
443                                 2
444 (%i2) rationalize (0.1);
445                                1
446 (%o2)                          --
447                                10
448 (%i3) fpprec : 5$
449 (%i4) rationalize (0.1b0);
450                              209715
451 (%o4)                        -------
452                              2097152
453 (%i5) fpprec : 20$
454 (%i6) rationalize (0.1b0);
455                      236118324143482260685
456 (%o6)                ----------------------
457                      2361183241434822606848
458 (%i7) rationalize (sin (0.1*x + 5.6));
459                               x    28
460 (%o7)                     sin(-- + --)
461                               10   5
462 @end example
463 @end deffn
467 @deffn {Función} ratnump (@var{expr})
468 Devuelve @code{true} si @var{expr} es un entero literal o una fracción de enteros literales, en caso contrario devuelve @code{false}.
470 @end deffn
479 @page
480 @node Cadenas de texto, Constantes, Números, Tipos de datos y estructuras
481 @section Cadenas de texto
484 @menu
485 * Introducción a las cadenas de texto::
486 * Funciones y variables para las cadenas de texto::
487 @end menu
492 @node Introducción a las cadenas de texto, Funciones y variables para las cadenas de texto, Cadenas de texto, Cadenas de texto
493 @subsection Introducción a las cadenas de texto
498 Las cadenas de caracteres deben ir acotadas por comillas dobles (@code{"})
499 al ser introducidas en Maxima, siendo luego mostradas con o sin ellas, 
500 dependiendo del valor de la variable global @code{stringdisp}.
502 Las cadenas pueden contener todo tipo de caracteres, incluyendo tabulaciones,
503 caracteres de nueva línea y de retorno.
504 La secuencia @code{\"} se reconoce literalmente como una comilla doble, al
505 tiempo que @code{\\} se interpreta como una barra invertida. Cuando la barra
506 invertida aparece al final de una línea, tanto la barra como el
507 final de línea (representado éste bien por el carácter de nueva 
508 línea o el de retorno) son ignorados, de forma que la cadena
509 continúa en el siguiente renglón. No se reconocen más combinaciones especiales
510 de la barra invertida con otros caracteres aparte de las comentadas; de modo
511 que si la barra invertida aparece antes de cualquier otro carácter distinto de
512 @code{"}, @code{\}, o de un final de línea, dicha barra será
513 ignorada.
514 No hay manera de representar los caracteres especiales
515 (tabulación, nueva línea o retorno) de otra
516 forma que no sea incluyéndolos literalmente en la cadena.
518 No existe en Maxima el tipo de variable carácter, debiéndose
519 representar un carácter simple como una cadena de un solo carácter.
521 El paquete adicional @code{stringproc} contiene muchas funciones que
522 permiten trabajar con cadenas.
524 Ejemplos:
526 @c ===beg===
527 @c s_1 : "This is a string.";
528 @c s_2 : "Embedded \"double quotes\" and backslash \\ characters.";
529 @c s_3 : "Embedded line termination
530 @c in this string.";
531 @c s_4 : "Ignore the \
532 @c line termination \
533 @c characters in \
534 @c this string.";
535 @c stringdisp : false;
536 @c s_1;
537 @c stringdisp : true;
538 @c s_1;
539 @c ===end===
540 @example
541 (%i1) s_1 : "This is a string.";
542 (%o1)               This is a string.
543 (%i2) s_2 : "Embedded \"double quotes\" and backslash \\ characters.";
544 (%o2) Embedded "double quotes" and backslash \ characters.
545 (%i3) s_3 : "Embedded line termination
546 in this string.";
547 (%o3) Embedded line termination
548 in this string.
549 (%i4) s_4 : "Ignore the \
550 line termination \
551 characters in \
552 this string.";
553 (%o4) Ignore the line termination characters in this string.
554 (%i5) stringdisp : false;
555 (%o5)                         false
556 (%i6) s_1;
557 (%o6)               This is a string.
558 (%i7) stringdisp : true;
559 (%o7)                         true
560 (%i8) s_1;
561 (%o8)              "This is a string."
562 @end example
571 @node Funciones y variables para las cadenas de texto, , Introducción a las cadenas de texto, Cadenas de texto
572 @subsection Funciones y variables para las cadenas de texto
576 @deffn {Función} concat (@var{arg_1}, @var{arg_2}, ...)
577 Concatena sus argumentos, que deben ser todos átomos.
578 El valor devuelto es un símbolo si el primer argumento es a su vez un símbolo, o una cadena en caso contrario.
580 La función @code{concat} evalúa sus argumentos.
581 El apátrofo  @code{'} evita la evaluación.
583 @example
584 (%i1) y: 7$
585 (%i2) z: 88$
586 (%i3) concat (y, z/2);
587 (%o3)                          744
588 (%i4) concat ('y, z/2);
589 (%o4)                          y44
590 @end example
592 A un símbolo construido por @code{concat} se le puede asignar un valor y ser utilizado posteriormente en expresiones.
593 La asignación con el operador @code{::} evalúa su expresión izquierda.
595 @example
596 (%i5) a: concat ('y, z/2);
597 (%o5)                          y44
598 (%i6) a:: 123;
599 (%o6)                          123
600 (%i7) y44;
601 (%o7)                          123
602 (%i8) b^a;
603                                y44
604 (%o8)                         b
605 (%i9) %, numer;
606                                123
607 (%o9)                         b
608 @end example
610 Nótese que aunque @code{concat (1, 2)} parezca un número, se trata de una cadena.
612 @example
613 (%i10) concat (1, 2) + 3;
614 (%o10)                       12 + 3
615 @end example
617 @end deffn
621 @deffn {Función} sconcat (@var{arg_1}, @var{arg_2}, ...)
623 Concatena sus argumentos para producir una cadena.
624 Al contrario que @code{concat}, sus argumentos @i{no} necesitan ser átomos.
626 El resultado es una cadena.
628 @example
629 (%i1) sconcat ("xx[", 3, "]:", expand ((x+y)^3));
630 (%o1)               xx[3]:y^3+3*x*y^2+3*x^2*y+x^3
631 @end example
632 @end deffn
636 @deffn {Función} string (@var{expr})
637 Convierte @code{expr} a la notación lineal de Maxima, tal como si fuese tecleada.
639 El valor que retorna la función @code{string} es una cadena, por lo que no puede ser utilizada en los cálculos.
641 @end deffn
644 @defvr {Variable opcional} stringdisp
645 Valor por defecto: @code{false}
647 Si @code{stringdisp} vale @code{true},
648 las cadenas alfanuméricas se muestran encerradas entre comillas dobles. En caso contrario, no se nuestran las comillas.
650 La variable @code{stringdisp} vale siempre @code{true} cuando se muestra la definición de una función.
653 Ejemplos:
655 @c ===beg===
656 @c stringdisp: false$
657 @c "This is an example string.";
658 @c foo () := 
659 @c       print ("This is a string in a function definition.");
660 @c stringdisp: true$
661 @c "This is an example string.";
662 @c ===end===
663 @example
664 (%i1) stringdisp: false$
665 (%i2) "This is an example string.";
666 (%o2)              This is an example string.
667 (%i3) foo () :=
668       print ("This is a string in a function definition.");
669 (%o3) foo() := 
670               print("This is a string in a function definition.")
671 (%i4) stringdisp: true$
672 (%i5) "This is an example string.";
673 (%o5)             "This is an example string."
674 @end example
676 @end defvr