1 @c English version 2013-04-04
13 @node Números, Cadenas de texto, Tipos de datos y estructuras, Tipos de datos y estructuras
17 * Introducción a los números::
18 * Funciones y variables para los números::
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
43 (%o2) 9332621544394415268169923885626670049071596826438162146859\
44 2963895217599993229915608941463976156518286253697920827223758251\
45 185210916864000000000000000000000000
52 Funciones disponibles para los números enteros y racionales:
55 integerp numberp nonnegintegerp
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
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]
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.
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:
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]
105 Funciones y variables disponibles para números decimales:
109 bfloat bfloatp fpprec
110 float2bf bftorat ratepsilon
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
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:
134 realpart imagpart rectform polarform
135 cabs carg conjugate csign
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.
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}.
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").
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}.
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.
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}.
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.
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}.
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}.
218 @defvr {Variable optativa} fpprintprec
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.
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.
255 (%i3) integerp (-17);
257 (%i4) integerp (0.0);
259 (%i5) integerp (1.0);
261 (%i6) integerp (%pi);
265 (%i8) declare (n, integer);
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
284 (-1)^(1/4): (-1)^(1/4)
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
295 @deffn {Función} nonnegintegerp (@var{n})
297 Devuelve @code{true} si y solo si @code{@var{n} >= 0}, siendo @var{n} un entero.
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).
314 (%i2) numberp (-13/19);
316 (%i3) numberp (3.14159);
318 (%i4) numberp (-1729b-4);
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);
325 (%i7) map (numberp, [a, b, c, d, e, f, g, h]);
326 (%o7) [false, false, false, false, false, false, false, false]
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}.
346 @c [sqrt(2), sin(1), 1/(1+sqrt(3))];
347 @c [sqrt(2), sin(1), 1/(1+sqrt(3))],numer;
350 (%i1) [sqrt(2), sin(1), 1/(1+sqrt(3))];
352 (%o1) [sqrt(2), sin(1), -----------]
354 (%i2) [sqrt(2), sin(1), 1/(1+sqrt(3))],numer;
355 (%o2) [1.414213562373095, .8414709848078965, .3660254037844387]
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
376 @c (-2)^0.75,numer_pbranch:true;
379 @c (-2)^(3/4),numer,numer_pbranch:true;
385 (%i2) (-2)^0.75,numer_pbranch:true;
386 (%o2) 1.189207115002721*%i-1.189207115002721
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
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.
410 @deffn {Función} oddp (@var{expr})
411 Devuelve @code{true} si @var{expr} es un entero impar y @code{false} en caso contrario.
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
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.
431 @c rationalize (0.5);
432 @c rationalize (0.1);
434 @c rationalize (0.1b0);
436 @c rationalize (0.1b0);
437 @c rationalize (sin (0.1*x + 5.6));
440 (%i1) rationalize (0.5);
444 (%i2) rationalize (0.1);
449 (%i4) rationalize (0.1b0);
454 (%i6) rationalize (0.1b0);
455 236118324143482260685
456 (%o6) ----------------------
457 2361183241434822606848
458 (%i7) rationalize (sin (0.1*x + 5.6));
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}.
480 @node Cadenas de texto, Constantes, Números, Tipos de datos y estructuras
481 @section Cadenas de texto
485 * Introducción a las cadenas de texto::
486 * Funciones y variables para las cadenas de texto::
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á
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.
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
531 @c s_4 : "Ignore the \
532 @c line termination \
535 @c stringdisp : false;
537 @c stringdisp : true;
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
547 (%o3) Embedded line termination
549 (%i4) s_4 : "Ignore the \
553 (%o4) Ignore the line termination characters in this string.
554 (%i5) stringdisp : false;
557 (%o6) This is a string.
558 (%i7) stringdisp : true;
561 (%o8) "This is a string."
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.
586 (%i3) concat (y, z/2);
588 (%i4) concat ('y, z/2);
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.
596 (%i5) a: concat ('y, z/2);
610 Nótese que aunque @code{concat (1, 2)} parezca un número, se trata de una cadena.
613 (%i10) concat (1, 2) + 3;
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.
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
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.
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.
656 @c stringdisp: false$
657 @c "This is an example string.";
659 @c print ("This is a string in a function definition.");
661 @c "This is an example string.";
664 (%i1) stringdisp: false$
665 (%i2) "This is an example string.";
666 (%o2) This is an example string.
668 print ("This is a string in a function definition.");
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."