Sei sulla pagina 1di 57

1 Tipos numricos en Matlab

En este captulo vamos a explorar cmo Matlab almacena varios tipos de nmeros. En primer
lugar,
vamos a investigar los diferentes tipos de enteros que Matlab ofrece. Despus de una minuciosa
discusin de almacenamiento entero, vamos a seguir adelante con el tema ms difcil de flotar
nmeros de punto, la tcnica utilizada para almacenar aproximaciones de nmeros reales en
Matlab.
Tabla de contenidos
1.1 Tipos enteros en Matlab. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Base Diez 3
Enteros Binarios 5
Enteros Hexedecimal 8
Enteros sin signo 9
Enteros con signo de 13
Ejercicios 18
Respuestas 19
1,2 decimales y fracciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Decimales en binario 21
Decimales en Hex 24
Ejercicios 26
Respuestas 27
1.3 Forma de punto flotante. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Nmeros de punto flotante 29
Formulario de punto flotante binario 32
Error 32
Propagacin del error 35
Ejercicios 36
Respuestas 37
1.4 Floating Point Arithmetic. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Ejercicios 46
2 Captulo 1 Tipos numricos en Matlab
Derechos de autor
Todas las partes de este libro de texto de programacin Matlab tienen derechos de autor en
nombre
del Departamento de Matemticas de la Universidad de las secoyas. No estn en
el dominio pblico. Sin embargo, se estn haciendo disponibles gratuitamente para su uso
en las instituciones educativas. Esta oferta no se aplica a cualquier aplicacin
que se hace con fines de lucro. Los usuarios que tienen este tipo de aplicaciones en mente debe
contacto David Arnold en david-arnold@redwoods.edu o Bruce Wagner en
bruce-wagner@redwoods.edu.
Este trabajo (incluyendo todos los textos, archivos de formato de documento porttil, y cualquier
otra
obras originales), salvo que se indique lo contrario, est bajo una licencia de Creative
Commons Reconocimiento-No comercial-Compartir bajo la misma licencia 2.5, y tiene derechos de
autor
C
2006, del Departamento de Matemticas de la Universidad de las secoyas. A
ver una copia de esta licencia, visite http://creativecommons.org/licenses/by-ncsa/
2,5 / o enviar una carta a Creative Commons, 543 Howard Street, 5th Floor,
San Francisco, California, 94105, EE.UU..
Seccin 1.1 Tipos de enteros en Matlab 3
1.1 Tipos enteros en Matlab
En esta seccin vamos a presentar los diferentes tipos de datos disponibles en Matlab
que se utilizan para almacenar nmeros enteros. Hay dos tipos distintos: uno para firmar
enteros, y una segunda para enteros con signo. Un tipo entero sin signo slo puede
de almacenar nmeros enteros positivos y (cero) en un rango bien definido. Entero sin signo
tipos se utilizan para almacenar nmeros enteros positivos y negativos y (cero) en un pozo
rango definido.
Cada tipo, firmado y sin firmar, tiene diferentes clases que se distinguen por
el nmero de bytes utilizados para el almacenamiento. Como veremos, uint8, UInt16, UInt32,
y el uso UInt64 8 bits, 16 bits, 32 bits y 64 bits para almacenar enteros sin signo,
respectivamente. Por otro lado, int8, int16, int32, int64 y utilizar 8 bits, 16
bits, 32 bits y 64 bits para almacenar enteros con signo, respectivamente.
Vamos a comenzar con una discusin sobre el sistema de base diez para la representacin de
nmeros enteros.
Base Diez
La mayora de nosotros estamos familiarizados con base diez aritmtica, simplemente porque esa
es la
sistema de numeracin que hemos estado utilizando durante toda nuestra vida. Por ejemplo, el
nmero
2345, cuando se expande en potencias de diez, se escribe de la siguiente manera.
2345 = 2000 + 300 + 40 + 5
= 2 1000 100 + 3 + 4 + 5 10
= 2 103 102 + 3 + 4 + 5 101 100
Existe un algoritmo antigua fahsioned que nos permite ampliar el nmero
2345 en potencias de diez. Se trata de dividir en varias ocasiones por 10 y la lista de la
restos, como se muestra en la Tabla 1.1.
10 2345
10 234 5
10 23 4
10 2 3
10 0 2
Tabla 1.1. La determinacin de los coeficientes
de las potencias de diez.
Si usted lee los residuos en el tercer Coloumn en orden inverso (de abajo a arriba),
permite capturar los coeficientes de la expansin en potencias de diez, es decir, el 2, 3, 4,
y 5 de 2 103 + 3 102 + 4 + 5 101 100.
1 material con derechos reservados. Ver: http://msenux.redwoods.edu/Math4Textbook/
4 Captulo 1 Tipos numricos en Matlab
En el caso de la base de diez, el algoritmo mostrado en la Tabla 1.1 es un poco de
exageracin. La mayora de las personas no van a tener problemas para escribir 8235 como 8 103
2 102 +
3 101 + 5 100. Sin embargo, nos encontramos con el algoritmo mostrado en la Tabla 1.1
muy til cuando queremos expresar nmeros decenas de bases en una base diferente.
El proceso es fcilmente reversible. Es decir, es una cuestin simple para expandir
un nmero que se experessed en potencias de diez para capturar la base original de diez
nmero entero.
2 103 102 + 3 + 4 + 5 101 100 = 2 1.000 + 3 + 4 100 10 + 5
= 2000 + 300 + 40 + 5
= 2345
Base Ten. Un entero puede ser expresado en base diez como
tn 10n + tn-1 10n-1 + + t2 t1 + 102 101 100 + t0,
donde cada uno de los coeficientes de tn, tn-1,. . . t1, t1 y t0 son "dgitos", es decir, una
de los nmeros 0, 1, 2, 3, 4, 5, 6, 7, 8, o 9. Tenga en cuenta que la ms alta posible
coeficiente es uno menos que la base.
Sin embargo, la base diez no es la nica posibilidad. De hecho, tenemos la libertad de utilizar
cualquier
base que queremos. Por ejemplo, podramos utilizar la base siete. Si lo hiciramos, entonces el
nmero (2316) 7 se interprete en el sentido de
(2316) 7 = 2 3 73 + 72 + 1 + 6 71 70.
Este se expande con facilidad y escrito en base diez.
(2316) 7 = 2 3 343 + 49 + 1 + 6 7 1
= 686 + 147 + 7 + 6
= 846
Base Seven. Un entero puede ser expresado en la base de siete como
sn 7n + sn-1 7n-1 + + s2 + s1 72 71 70 + s0,
donde cada uno de los coeficientes de SN, SN-1,. . . s1, s1, s0 y son uno de los
los nmeros 0, 1, 2, 3, 4, 5, o 6. Tenga en cuenta que el coeficiente ms alto es posible
uno menos que la base.
Seccin 1.1 Tipos de enteros en Matlab 5
Matlab tiene una utilidad llamada base2dec para convertir nmeros en diferentes
bases a base diez. Usted puede aprender ms sobre esta utilidad tecleando help base2dec
en el prompt de Matlab.
>> Ayuda base2dec
BASE2DEC Convertir base de cadena B de entero decimal.
BASE2DEC (S, B) convierte el nmero de secuencia S de la base B en
su equivalente decimal (base 10). B debe ser un nmero entero
entre 2 y 36. S debe representar un entero no negativo
valor.
Cadenas en Matlab se delimitan con apstrofes individuales. Por lo tanto, si queremos
utilice esta utilidad para cambiar la base de siete (2316) 7 de base diez, entramos en la siguiente
en el prompt de Matlab.
>> Base2dec ('2316 ', 7)
ans =
846
Tenga en cuenta que esto est de acuerdo con nuestros clculos mano por encima.
Esperamos que los lectores ya intuir que los enteros se pueden expresar en trminos de
una base aribitrary.
Base arbitraria. Un entero puede ser expresada en base B como
cn Bn + cn-1 Bn-1 + + c2 B2 + c1 B1 + c0 c0,
donde cada uno de los coeficientes cn, cn-1,. . . c1, c1, c0 y son uno de los nmeros
0, 1, 2,. . . , B-1. Tenga en cuenta que el coeficiente ms alto posible es uno menos que
la base.
Es importante tener en cuenta la restriccin de los coeficientes. Si expande un
nmero entero en potencias de 3, los coeficientes permitidos son 0, 1, y 2. Si expande
un nmero entero en potencias de 8, los coeficientes permitidos son 0, 1, 2, 3, 4, 5, 6, y 7.
Los enteros binarios
En el nivel ms bsico, la unidad de almacenamiento fundamental en un equipo se le llama
poco. Un bit tiene dos estados: o es "on" o que son los Estados "on" y "off".
"Fuera" se codifican con los nmeros enteros 1 y 0, respectivamente. Un byte se compone de ocho
6 Captulo 1 Tipos numricos en Matlab
bits, cada uno de los cuales tiene uno de dos estados: "en" (1) o "apagado" (0). Por consiguiente,
ordenadores naturalmente utilizan dos bases aritmtica.
Como un ejemplo, supongamos que tenemos un byte de almacenamiento y el estado de cada uno
bit se codifica como 10001011. El bit de ms alto orden es "on", los tres siguientes son "off",
el siguiente es "on", seguido de un "off", y, finalmente, los dos ltimos bits son "on".
Esto representa el nmero (10001011) 2, que se puede convertir a la base como diez
siguiente.
(10001011) 2 = 1 + 0 27 26 25 + 0 + 0 + 1 24 23 22 + 0 + 1 + 1 21 20
= 128 + 0 + 0 + 0 + 8 + 0 + 2 + 1
= 139
Esto se comprueba fcilmente con la utilidad base2dec de Matlab.
>> Base2dec ('10001011 ', 2)
ans =
139
Sin embargo, como base dos se utiliza comnmente cuando se trabaja con computadoras, Matlab
tiene un comando especial para el cambio de base de dos nmeros en la base de diez nmeros
llamada bin2dec.
>> Ayuda bin2dec
BIN2DEC Convierte una cadena binaria a un entero decimal.
X = BIN2DEC (B) interpreta la cadena binaria B y vuelve
X en el nmero decimal equivalente.
Podemos utilizar bin2dec revisar nuestra conversin de (10.001.011) 2 a una base de nmero diez.
>> Bin2dec ('10001011 ')
ans =
139
Este proceso es reversible. Podemos empezar con la base de diez 139 enteros y cambiar
a base dos extrayendo potencias de dos. Para empezar, la ms alta potencia de dos
contenida en 139 es 27 = 128. Resta 128 para dejar un resto de 11. El ms alto
potencia de dos contenida en 11 es 23 = 8. Resta 8 de 11 en dejar un resto
Seccin 1.1 Tipos de enteros en Matlab 7
de 3. El ms alto de potencia de dos contenida en 3 es 21 = 2. Reste 2 de 3 a
dejar un resto de 1. Por lo tanto,
139 = 128 + 8 + 2 + 1
= 1 27 26 + 0 + 0 + 0 25 24 23 + 1 + 0 22 + 1 + 1 21 20.
Por lo tanto, 139 = (10001011) 2.
Sin embargo, este proceso es algo tedioso, particularmente para los nmeros ms grandes.
Nosotros
puede utilizar el mtodo tabular (mostrado anteriormente para potencias de diez en la tabla 1.1),
dividiendo en varias ocasiones por 2 al mostrar nuestros restos en una tercera columna, como se
muestra
en la Tabla 1.2.
2 139
2 69 1
2 34 1
2 17 0
2 8 1
2 4 0
2 2 0
2 1 0
2 0 1
Tabla 1.2. La determinacin de los coeficientes
de las potencias de dos.
Si usted lee los restos en la tercera columna de la Tabla 1.2 en el orden inverso
(Abajo a arriba), que captura los coeficientes de la expansin en potencias de dos,
proporcionar (139) 10 = (10001011) 2.
Matlab proporciona una utilidad llamada dec2bin para cambiar la base diez enteros a
base dos.
>> Dec2bin (139)
ans =
10001011
Tenga en cuenta que esto concuerda muy bien con nuestro resultado tabular en la Tabla 1.2.
8 Captulo 1 Tipos numricos en Matlab
Enteros Hexedecimal
Como el nmero de bits utilizados para almacenar enteros se incrementa, se convierte en
doloroso para tratar
con todos los ceros y unos. Si usamos 16 bits, ms que resultar difcil
escribir correctamente un nmero binario como
(1110001000001111) 2.
Este nmero, cuando se expande en potencias de 2, se convierte en
1 215 214 + 1 + 1 + 0 213 212
+ 0 + 0 211 210 29 + 1 + 0 28
+ 0 + 0 27 26 25 + 0 + 0 24
23 + 1 + 1 + 1 22 21 + 1 20.
Esto se puede reescribir de la siguiente manera.
(1 23 22 + 1 + 1 + 0 21 20) 212
+ (0 + 0 23 22 21 + 1 + 0 20) 28
+ (0 + 0 23 22 21 + 0 + 0 20) 24
+ (1 + 1 23 22 21 + 1 + 1 20.)
(1,1)
Esto es equivalente a la siguiente expresin.
14 (24) 3 + 2 (24) 2 + 0 (24) 1 + 15 (24) 0
Por ltimo, vemos que nuestro nmero se puede ampliar en potencias de 16.
14 163 162 + 2 + 0 + 15 161 160. (1,2)
Tenemos que hacer dos observaciones:
1. Porque estamos ampliando en base 16, los coeficientes deben ser seleccionados de
los nmeros enteros 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, y 15, como lo son en
la expansin por encima de (los coeficientes son 14, 2, 0 y 15).
2. El coeffients 10, 11, 12, 13, 14, y 15 no son de un solo dgito.
Para cuidar el segundo punto, hacemos las siguientes tareas: a = 10,
B = 11, C = 12, D = 13, E = 14 y F = 15. Con estas assgignments, podemos
reescribir la expresin (1.2) como
E 2 163 + 162 + 161 + 0 F 160. (1,3)
En la prctica, esto est escrito en formato hexedecimal como (E20F) 16.
Seccin 1.1 Tipos de enteros en Matlab 9
Podemos comprobar nuestro resultado usando Matlab utilidades. En primer lugar, utilice bin2dec
cambiar
(1110001000001111) 2 en el formato decimal.
>> Bin2dec ('1110001000001111 ')
ans =
57871
Siga esto con la orden de Matlab dec2hex para encontrar la representacin hexedecimal.
>> Dec2hex (57871)
ans =
E20F
Tenga en cuenta que esto est de acuerdo con nuestros resultados hechos a mano (1.3).
En la prctica, el cambio de un nmero entero de binario a hexedecimal no es tan complicado
como podra parecer. En (1.1), observamos cmo empezamos rompiendo el
entero binario (1110001000001111) 2 en grupos de cuatro. Cada grupo de cuatro eventualmente
dado lugar a un coeficiente de una potencia de 16. Por lo tanto, para avanzar ms rpido, slo
tiene que bloquear la
nmero binario (1110001000001111) 2 en grupos de cuatro, empezando desde la derecha
final.
(1110001000001111) 2 = (desde 1110 hasta 0010 - 0000-1111) 2
Ahora, movindose de izquierda a derecha, E = 1110, 0010 = 2, 0000 = 0, y = 1,111 F, por lo
(1110 - 0010 - 0000 - 1111) 2 = (E20F) 16.
Pretty slick!
Enteros sin signo
Ahora vamos a hablar sobre los tipos numricos de Matlab para el almacenamiento de enteros sin
signo. No firmado
son nmeros enteros no negativos. Se excluyen los enteros negativos. Si est trabajando
en un proyecto que no requiere enteros negativos, entonces el entero sin signo
puede ahorrar espacio de almacenamiento.
Vamos a empezar con un espacio de almacenamiento de un byte (ocho bits), donde cada bit
puede
alcanzar uno de dos estados: "on" (1) o "apagado" (0). Una analoga til es pensar en el
odmetro en su coche. Antigua base moda diez odmetros (antes de digital) consistieron
de una secuencia de marca, teniendo cada uno de los dgitos 0, 1, 2, 3, 4, 5, 6, 7, 8, y 9 impreso
10 Captulo 1 Tipos numricos en Matlab
en ellos. Cuando el coche era nuevo, antes de que las ruedas incluso en avance
una pulgada, la esfera leera 00000000 (estamos suponiendo ocho cuadrantes aqu). A medida que
el
coche llev a la carretera, la lnea ms a la derecha sera rotar 1 milla
al 00000001, luego 2 km hasta 00.000.002, etc, hasta llegar a 9 millas y grabado
00000009. Ahora, cuando el coche se mueve a travs de la dcima milla, el volante a la derecha
gira y vuelve al dgito 0 y la segunda a la ltima rueda gira a la
dgitos 1, proporcionando el nmero 00000010 en el odmetro. Esto es simplemente la base diez
contando en la accin.
Ahora imagine una base de dos odmetro con ocho cuadrantes, cada uno con los dgitos
0 y 1 impresa en ellos. Al principio, el odmetro lee 00000000. Despus
viaje de 1 milla, el odmetro lee 00000001. Al final de 2 millas, el ltimo
rueda debe girar y volver a cero, y la segunda a la ltima gira de la rueda
en torno a 1, proporcionando 00000010. Al final de 3 millas, la ltima rueda gira de nuevo
1 a proporcionar 00000011. Al final de la milla 4, la ltima rueda debe girar de nuevo a
cero, la segunda a la ltima rueda debe girar ahora a cero, y la tercera a la ltima
rueda gira a 1, proporcionando 00000100. Esta es la base de dos recuento en accin.
La base de dos odoemter con ocho ruedas representa un byte, o de ocho bits.
El ms pequeo posible nmero entero que se puede almacenar en un byte (8 bits) es el nmero
entero
(00000000) 2, que es igual al nmero entero cero es la base diez. El ms grande posible
nmero entero que se puede almacenar es (11111111) 2, que se puede convertir a la base diez
con el siguiente clculo.
(11111111) 2 = 1 + 1 27 26 25 + 1 + 1 + 1 24 23 22 + 1 + 1 + 1 21 20
= 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1
= 255
Este ltimo clculo es un poco doloroso. Para convertir (11111111) 2 a la base diez, vamos a ser
un rollo odmetro poco ms creativo y dejar que a travs de 1 milla adicional, llegando
a (100000000) 2 (suponiendo que mgicamente aadimos una rueda ms). Este nmero es
fcilmente convertida en base diez, como (100000000) 2 = 28 = 256. Debido a que el nmero
(11111111) 2 es uno menos que (100,000,000) 2,
(11111111) 2 = 28 - 1 = 256-1 = 255,
que es idntico al resultado calculado anteriormente. De cuore, podemos usar Matlab para
visite nuestro resultado.
>> Bin2dec ('11111111 ')
ans =
255
Seccin 1.1 Tipos de enteros en Matlab 11
As, con 8 bits (1 byte) de memoria, podemos almacenar enteros sin signo
en el rango de 0 a 255. Matlab tiene un tipo de datos especial, uint8, diseado especficamente
para este propsito. Por ejemplo, supongamos que queremos almacenar 123 como un signo
Entero de 8 bits en la variable x.
>> X = uint8 (123)
x =
123
Podemos obtener informacin sobre la variable x con el comando de Matlab whos.
>> Whos ('x')
Nombre Tamao Bytes Class
x 1x1 1 uint8 array
Tenga en cuenta que el tamao es 1x1, lo que representa un uno por una matriz (fila uno por uno
columna), por lo que x debe ser un escalar. En segundo lugar, tenga en cuenta que la clase es uint8
array
como se esperaba. Por ltimo, tenga en cuenta que se necesita 1 byte para almacenar el nmero
123 en el
variable x.
Usted puede determinar los nmeros enteros mximos y mnimos que se pueden almacenar
utilizando el uint8 tipo de datos con los siguientes comandos.
>> IntMin ('uint8')
ans =
0
>> IntMax ('uint8')
ans =
255
Los nmeros fuera de este rango "saturan". Es decir, un nmero menor que 0 son
asigna a cero, nmeros mayores que 255 se asignan a 255.
12 Captulo 1 Tipos numricos en Matlab
>> Uint8 (273)
ans =
255
>> Uint8 (-13)
ans =
0
Si usted sabe de antemano que no ser necesario ningn enteros fuera del rango de uint8
[0, 255], entonces usted puede ahorrar un poco de espacio de almacenamiento mediante el tipo
de datos uint8
(Por ejemplo, en el procesamiento de imgenes en escala de grises). Sin embargo, si usted tiene
necesidad de mayor
enteros, entonces usted tendr que utilizar ms espacio de almacenamiento. Afortunadamente,
Matlab tiene
otros tres tipos sin signo enteros, uint16, uint32 y UInt64, que pueden ser
utilizado para almacenar grandes enteros sin signo.
Como se pueden imaginar, uint16 utiliza 16 bits (2 bytes) de memoria para almacenar un
entero sin signo. Una vez ms, el nmero entero ms pequeo posible que se puede almacenar
utilizando
este tipo es (0000000000000000) 2 = 0. En el extremo superior, el ms grande sin signo
nmero entero que se puede almacenar el uso de este tipo de datos es (1111111111111111) 2.
Una vez ms,
usted puede cambiar esto a base diez sealando que (1111111111111111) 2 es 1 menos que
el entero binario (10000000000000000) 2. Es decir,
(1111111111111111) 2 = (10000000000000000) - 1 = 216 - 1 = 65 535.
Una vez ms, se puede comprobar estos lmites de la gama de uint16 con la siguiente
comandos.
>> IntMin ('uint16')
ans =
0
>> IntMax ('uint16')
ans =
65535
Por lo tanto, cualquier nmero en el intervalo [0, 65.535] puede ser almacenado usando UInt16.
Por ejemplo, podemos guardar de nuevo el nmero 123 en x, pero esta vez como una
entero sin signo de 16 bits.
>> X = UInt16 (123)
x =
123
Seccin 1.1 Tipos de enteros en Matlab 13
A primera vista, no parece haber ninguna diferencia. Sin embargo, los whos
comando revela la diferencia.
>> Whos ('x')
Nombre Tamao Bytes Class
1x1 x 2 uint16 array
Tenga en cuenta que esta vez la clase uint16 array, pero lo ms importante, tenga en cuenta que
ahora toma dos bytes (16 bits) de memoria para almacenar el nmero 123 en la variable
x.
Los enteros fuera del rango [0, 65535] de nuevo se saturan. Los enteros menor que cero
se asignan a cero enteros de ms de 65.535 se asignan a 65.535.
>> UInt16 (-123)
ans =
0
>> UInt16 (123456)
ans =
65535
Existen otros dos tipos de datos de enteros sin signo, y UInt32 UInt64, que
utilizar 32 bits (4 bytes) y 64 bits (8 bytes) para almacenar enteros sin signo, respectivamente.
Enteros con signo
Usted probablemente ha notado la ausencia conspicua de los nmeros negativos en nuestra
discusin
de enteros sin signo y el Matlab tipos de datos uint8, UInt16, UInt32, y
UInt64. Vamos a corregir esta situacin en esta seccin.
En primer lugar, vamos a discutir con signo int8 tipo de datos de Matlab, que utiliza 8 bits
(Un byte) para almacenar enteros con signo. El bit ms a la izquierda se utiliza (bit ms
significativo)
para denotar el signo del entero. Si este primer bit es "en" (1), entonces el entero es
negativo, y si este primer bit es "off" (0), entonces el nmero entero es positivo. Por consiguiente,
la ms grande posible nmero entero positivo que se puede almacenar con esta estrategia es la
nmero binario (01111111) 2. Tenga en cuenta que este nmero es uno menos que el nmero
(10000000) 2 (recordar la analoga de la base de dos odmetro). Por lo tanto,
(01111111) 2 = (10000000) 2 - 1 = 27 - 1 = 127.
Esto se comprueba fcilmente con comandos de Matlab IntMax.
14 Captulo 1 Tipos numricos en Matlab
>> IntMax ('int8')
ans =
127
Para representar nmeros negativos con esta estrategia de almacenamiento, los ordenadores (y
Matlab) utilizan una tcnica llamada complemento a dos para determinar un entero negativo.
Por ejemplo, considere el nmero 7, escrito en binario.
7 = (00.000.111) 2
Para determinar cmo se almacena utilizando -7 firmado aritmtica de 8 bits, es "complemento"
cada poco, a continuacin, aadir 1. Cuando decimos que vamos a "complementar cada bit", nos
referimos
que vamos a sustituir los ceros por unos y los que est con ceros. Una vez ms, se complementan
cada bit 7 = (00000111) 2 a continuacin, aadir 1.
-7 = (11111000) 2 + (00000001) 2 = (11111001) 2.
Podemos verificar este resultado mediante la adicin de las representaciones binarias de 7 y -7.
10 10 10 10 10 11 11 1
+ 1 1 1 1 1 0 0 1
0 0 0 0 0 0 0 0
Esta "suma binaria" merece una explicacin. Primero uno y uno es dos,
corregir? En binario, (1) 2 y (1) es 2 (10) 2. En la adicin anterior, vamos a aadir
que hicimos en la escuela primaria. Empezamos en el extremo derecho, aadimos (1) y 2 (1) 2, que
es (10) 2. Escribimos el cero en el resultado y "llevar" la 1 a la siguiente columna. De
Por supuesto, esto significa que en la segunda a ltima columna ahora estamos aadiendo (0) 2,
(1) 2,
y el "llevado" (1) 2, que a su vez es (10) 2. As, se escribe el cero en el segundo
ltima columna de la respuesta, "llevar" la 1 a la siguiente columna. Procediendo de
esta manera, uno puede ver que todas las columnas "en cero". Cuando finalmente llegamos
a la primera columna, el "realizado" (1) y la 2 (1) 2 y (0) 2 suma de nuevo a (10) 2.
Escribimos el cero en el resultado, pero cuando tratamos de "llevar" el 1, que hace "Empujamos
off "en el extremo izquierdo, donde no hay espacio de almacenamiento adicional y (poof!)
desaparece.
Por lo tanto,
(00000111) 2 + (11111001) 2 = (00000000) 2.
Esto hace (11111001) 2 el negativo de (00000111) 2. Por lo tanto, (11111001) 2 = -7.
Si estuviramos usando almacenamiento sin firmar, (11111001) 2 sera igual a 249 en base diez,
pero
con el almacenamiento firmado, este espacio est reservado para los -7.
Seccin 1.1 Tipos de enteros en Matlab 15
Doses complemento (8 bits). Para determinar el negativo de un entero almacenado
como 8 bits con signo (un byte) entero, utilice "complemento a dos." Es decir, se complementan
cada bit (modificar ceros a unos y queridos a ceros), a continuacin, aada una.
Como segundo ejemplo, considere 127 = (01111111) 2. Para determinar cmo -127 es
almacena como un entero con signo de 8 bits, se complementan entre bits de 127 = (01111111) 2
y
aada una. Es decir,
-127 = (10000000) 2 + (00000001) 2 = (10000001) 2.
Tenga en cuenta que si estbamos usando sin signo de 8 bit de almacenamiento entero,
(10000001) 2 hara
representar el nmero siguiente despus de 128, a saber, 129. Sin embargo, en signo de 8 bits
entero
almacenamiento, (10000001) 2 representa -127. Como prueba, tenga en cuenta que al aadir el
binario
representaciones de 127 y -127 produce cero.
10 11 11 11 11 11 11 1
+ 1 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0
Con 8 bit de almacenamiento sin firmar, podemos representar los nmeros del 0 al 255, como
etiqueta en la parte superior de la lnea de nmeros en la Figura 1.1.
0 1 127 128 129 255
0 1 127 -128 -127 -1
Figura 1.1. Enteros sin signo en la parte superior se asignan a nmeros enteros con signo en el
parte inferior.
Con el almacenamiento firmado, cuando el odmetro binaria se da la vuelta de 127 = (01111111)
2
a (10000000) 2, el bit inicial est ahora "en", por lo que todos los nmeros de este punto se
representar enteros negativos, como se muestra debajo de la lnea de nmeros en la Figura 1.1.
El mapeo de los enteros sin signo 129-255 a los nmeros enteros con signo
-127--1 en la recta numrica en la Figura 1.1 es el ms representado si colocamos
los enteros con signo y sin signo en un crculo, como se muestra en la Figura 1.2.
Por lo tanto, el uso de signo de 8 bits con almacenamiento entero, podemos representar cualquier
entero
entre -128 y 127, incluyendo -128 y 127.
Tal vez un argumento sencillo para la gama de enteros de 8 bits se puede hacer
sealando que 8 bits ofrece espacio para 28 = 256 enteros. Si contamos los nmeros enteros
entre 0 y 127 inclusive, encontramos que hay 128 enteros. Restando de 256
nos dice que tenemos espacio para un adicional de 128 enteros. Tenga en cuenta que la negativa
16 Captulo 1 Tipos numricos en Matlab
254
-2
255
-1
0
0
1
1
2
2
...
...
126
126
127
127
128
-128
-127
129
-126
130
Figura 1.2. Enteros sin signo en el contorno exterior son
asignado a enteros con signo en el borde interior.
enteros, a partir de -1 y termina en -128, son 128 en nmero. Estos mxima
y los valores mnimos se verifican fcilmente usando Matlab.
>> IntMin ('int8')
ans =
-128
>> IntMax ('int8')
ans =
127
A modo de ejemplo, podemos almacenar -123 en la variable x con signo de 8 bits entero
almacenamiento.
>> X = int8 (-123)
x =
-123
El comando whos revela la clase de la variable x y la cantidad de memoria
necesario para almacenar -123 en la variable x.
Seccin 1.1 Tipos de enteros en Matlab 17
>> Whos ('x')
Nombre Tamao Bytes Class
x 1x1 1 int8 array
Tenga en cuenta que la clase es int8 matriz y se requiere un byte para almacenar el nmero entero
-123 En x.
Existen otros tres tipos de datos para enteros con signo, int16, int32 y int64.
Se asignan 16, 32, y 64 bits para el almacenamiento entero con signo, respectivamente.
18 Captulo 1 Tipos numricos en Matlab
1.1 Ejercicios
En los ejercicios 1-4, use clculos manuales
(Y una calculadora) para cambiar cada
de los nmeros en la base dada a
base diez. Utilice el comando de Matlab base2dec
para comprobar su respuesta.
1. (3565) 7
2. (2102) 3
3. (11111111) 2
4. (111011011) 2
En los ejercicios 5-9, utilice la tcnica de tabla
para cambiar cada uno de la base dada
diez nmeros enteros a base de dos. Revise su
resultados con los comandos de Matlab dec2bin.
5. 127
6. 67
7. 255
8. 256
En los ejercicios 9-12, use clculos manuales
para colocar cada uno de los binaria dada
nmeros en formato hexedecimal. Utilizar
Comandos dec2hex bin2dec y de Matlab
para comprobar su trabajo.
9. (11110101) 2
10. (1110011101011001) 2
11. (11111101101010010101111110101100) 2
12. (11101101101010010101111110111100) 2
En los ejercicios 13-16, Usar la tabla
mtodo mostrado en la Tabla 1.2
para colocar cada una de las bases dadas diez enteros
en formato binario. A continuacin, coloque
el resultado en formato hexadecimal. Comprobar
sus resultados con dec2bin de Matlab
y comandos dec2hex.
13. 143
14. 509
15. 1007
16. 12315
17. Usando clculos manuales, determinar
la gama de la entero sin signo
tipos de datos uint32 y UInt64. Utilizar
Comandos IntMax IntMin y de Matlab
para verificar sus soluciones. Almacenar
el nmero 123 en x, el uso de cada tipo de datos,
a continuacin, utilice el comando whos para determinar
los requisitos de almacenamiento de clase y
para la variable x.
18. Usando clculos manuales, determinar
la gama de la entero con signo
tipo int16, int32 y int64. Utilizar
Comandos IntMax IntMin y de Matlab
para ver sus resultados. Guarde el
nmero -123 en x, utilizando cada tipo de datos,
a continuacin, utilice el comando whos para determinar
los requisitos de almacenamiento de clase y
para la variable x.
Seccin 1.1 Tipos de enteros en Matlab 19
1.1 Respuestas
1. 1321
3. 255
5. (1111111) 2
7. (11111111) 2
9. (F5) 16
11. (FDA95FAC) 16
13. (10001111) 2
15. (1111101111) 2
17. Rango de uin32 es [0, 4294967295].
Rango de UInt64 es [0, 18446744073709551615].
20 Captulo 1 Tipos numricos en Matlab
Seccin 1.2 decimales y fracciones 21
1,2 decimales y fracciones
En esta seccin vamos a continuar nuestra exploracin de los nmeros en formato binario.
La tarea especfica de esta seccin es determinar cmo se representa decimales y
fracciones en formato binario y hexadecimal, una habilidad que tenemos que dominar antes
aprender cmo almacenar nmeros reales en formato de coma flotante en las computadoras.
Decimales en binario
Recordemos que el decimal 0,1485 se puede ampliar en potencias de 10, como se indica a
continuacin.
0,1485 = 1 10-1 10-2 + 4 + 8 + 5 10-3 10-4
De manera similar, podemos ampliar un decimal binario en potencias de 2.
(0.1101) 2 = 1 2-1 2-2 + 1 + 0 + 1 2-3 2-4
= 1
2 + 1
4 08
+ 1
16
= 13
16
En base diez, multiplicando por 10 se mover el decimal un lugar a la derecha.
0,1485 10 = (1 + 4 10-1 10-2 10-3 + 8 + 5 10-4) 10
= 1 100 + 4 10-1 10-2 + 8 + 5 10-3
= 1.485
Este hecho nos da un algoritmo para determinar los coeficientes de un decimal
expansin en potencias de 10.
En la Tabla 1.3, empiece por poner 0.1485 en la tercera columna de la primera fila.
Multiplicar por 10 y colocar el resultado en la segunda columna de la segunda fila. Pele
los dgitos a la izquierda del punto decimal en el resultado y lo coloca en el cuarto
columna de la segunda fila. Colocar el resto en la tercera columna de la segunda
fila. Iterar hasta que ya no existen ms dgitos a la derecha del punto decimal.
10 0,1485
10 1.485 0.485 1
10 4,85 0,85 4
10 8,5 0,5 8
10 5. 0. 5
Tabla 1.3. Multiplicacin repetida por
10 desplaza los coeficientes a la izquierda de la
punto decimal, uno por uno.
2 material con derechos reservados. Ver: http://msenux.redwoods.edu/Math4Textbook/
22 Captulo 1 Tipos numricos en Matlab
Por ltimo, los dgitos en la cuarta columna, se leen de arriba a abajo, ser la
coeficientes de la expansin en potencias de 10.
Este proceso podra no terminar. Por ejemplo, se sigue el mismo procedimiento
para encontrar los coeficientes de la expansin decimal de 1/7, en potencias de diez en
Tabla 1.4.
10 sptimo
10 10/7 = 1 + 3/7 3/7 1
10 30/7 = 4 + 2/7 2/7 4
10 20/7 = 2 + 6/7 6/7 2
10 60/7 = 8 + 4/7 4/7 8
10 40/7 = 5 + 5/7 5/7 5
10 50/7 = 7 + 1/7 1/7 7
10 10/7 = 1 + 3/7 3/7 1
Tabla 1.4. A veces, el proceso produce una repeticin
decimal.
Tenga en cuenta que en la ltima fila de la Tabla 1.4, tenemos entradas idnticas a la segunda
fila. Por lo tanto, el patrn 1/7 = 0,142857142857. . . repite indefinidamente.
En base dos, multiplicando por 2 se mover el decimal un lugar a la derecha.
(0.1101) 2 2 = (1 + 1 2-1 2-2 + 2-3 + 0 1 2-4) 2
= 1 20 + 1 + 0 2-1 2-2 + 1 2-3
= (1.101) 2
Esto significa que el algoritmo mostrado en las Tablas 1.3 y 1.4 funcionar
igualmente bien para la base de dos. Simplemente multiplicamos varias ocasiones por dos en lugar
de diez.
I Ejemplo 1. Encontrar la representacin binaria de la base diez decimal 0.875.
Coloca 0.875 en la tercera columna de la fila uno en la Tabla 1.5. Multiplique por 2 y
colocar el resultado en la segunda columna de la segunda fila. Pele el dgito de la izquierda
del punto de este resultado decimal y colocarlo en la cuarta columna de la segunda fila.
Colocar el resto en la tercera columna de la segunda fila. Iterar.
Tenga en cuenta que una mayor multiplicacin por 2 producir solamente ceros, que podemos
ignorar. Por lo tanto, = 0,875 (0,111) 2.
El resultado se comprueba fcilmente en expansin en potencias de dos.
Seccin 1.2 decimales y fracciones 23
2 0.875
2 1.75 0.75 1
2 1,5 0,5 1
2 1. 0. 1
Tabla 1.5. Multiplicacin repetida por
2 desplaza los coeficientes a la izquierda de la
punto decimal, uno por uno.
(0.111) 2 = 1 2 a 1 + 1 + 1 2-2 2-3
= 1
2 14
18
= 7
8
Si divides 7 por 8 (o repetir el algoritmo de base diez de la Tabla 1.3), ver
que 7/8 = 0,875. Por supuesto, tambin se puede comprobar en Matlab.
>> 7/8
ans =
0.8750
Al igual que con base diez, algunos tienen expansiones decimales binarios que se repetirn.
I Ejemplo 2. Encuentra una expansin binaria para el decimal 0.1.
En la Tabla 1.6. Despus de multiplicar varias veces por 2, emerge un patrn.
2 0.1
2 0,2 0,2 0
2 0,4 0,4 0
2 0,8 0,8 0
2 1,6 0,6 1
2 1,2 0,2 1
2 0,4 0,4 0
2 0,8 0,8 0
2 1,6 0,6 1
Tabla 1.6. A veces, el proceso produce
un decimal peridico.
24 Captulo 1 Tipos numricos en Matlab
Por lo tanto,
0.1 = (0.00011001100110011001 ...) 2.
Tenga en cuenta, adems, que debido a su naturaleza infinita repeticin, no es posible
guardar el nmero binario (0.0001100110011001 ...) 2 exactamente en un equipo que
utiliza la base finita dos de almacenamiento.
Decimales en Hex
Podemos ampliar un hexadecimal en potencias de 16. Recordemos que el trabajo con la base 16,
A = 10, B = 11, C = 12, D = 13, E = 14 y F = 15. As, por ejemplo,
(0.2A8F) 16 = 2 16-1 + A 16-2 16-3 + 8 + F 16-4
= 2
16 + 10
162 + 8
163 + 15
164
= 2 10 163 + 162 + 8 16 + 15
164
= 10895
65536.
En los siguientes ejemplos, convertimos decimales binarios en hexadecimal.
I Ejemplo 3. Convertir el decimal binario (0.111011110011) 2 en hexadecimal
formato.
Podemos ampliar el binario decimal (0.111011110011) 2 en potencias de 2.
1 2-1 2-2 + 1 + 1 + 0 2-3 2-4
+ 1 + 1 2-5 2-6 2-7 + 1 + 1 2-8
+ 0 + 0 2-9 2-10 2-11 + 1 + 1 2-12
Esto se puede reescribir de la siguiente manera.
(1 23 22 + 1 + 1 + 0 21 20) 2-4
+ (1 + 1 23 22 21 + 1 + 1 20) 2-8
+ (0 + 0 23 22 21 + 1 + 1 20) 2-12
Esto es equivalente a la siguiente expresin.
13 (2-4) 1 + 15 (2-4) 2 + 3 (2-4) 3
Sin embargo, 2-4 = (24) -1 = 16-1, por lo que esta ltima expresin se puede escribir como
Seccin 1.2 decimales y fracciones 25
13 (16-1) 1 + 15 (16-1) 2 + 3 (16-1) 3,
que es equivalente a
13 16-1 16-2 + 15 + 3 16-3.
Por ltimo, D = 13 y F = 15 en hexadecimal, por lo
(0.111011110011) 2 = (0.DF3) 16.
En la prctica, no tenemos que trabajar tan duro. Simplemente podemos agrupar los dgitos
binarios
en grupos de cuatro, a continuacin, utilizar las asignaciones de la Tabla 1.7.
Binary Binary Hex Hex
0 0 1.000 8
01 1 1001 9
10 2 1010 A
11 3 1011 B
100 4 1100 C
101 5 1101 D
110 6 1110 E
111 7 1111 F
Tabla 1.7. Binary-Hex
conversiones.
Por lo tanto,
(0,111011110011) 2 = (0,1110 - 1111-0011) 2 = (0.DF3) 16.
Veamos otro ejemplo.
I Ejemplo 4. En el ejemplo 2, encontramos un decimal binario para la base diez
decimal 0.1. Convertir esa expansin a hexadecimal.
En el Ejemplo 2, encontramos
0.1 = (0.00011001100110011001 ...) 2.
Podemos agrupar los dgitos binarios en grupos de cuatro,
(0,0001-1001 - 1001-1001 - 1001 - ...) 2,
a continuacin, utilizar las conversiones de la Tabla 1.7 para hacer el cambio a hexadecimal.
(0,19999 ) 16
26 Captulo 1 Tipos numricos en Matlab
1.2 Ejercicios
Para cada una de las bases diez decimales en
Ejercicios 1-4, utilizan clculos manuales
encontrar un decimal binario equivalente.
Revise su resultado mediante la ampliacin de los poderes
de dos y simplificacin, a continuacin, utilizar
Matlab para comprobar que su fraccional
resultado es equivalente al decimal originales.
1. 0.3125
2. 0.53125
3. 0.6171875
4. 0.232421875
En los ejercicios 5-8, use clculos manuales
encontrar una expansin binaria repitiendo
de la base dada diez decimal.
5. 0.3
6. 0.9
7. 0.05
8. 0.15
En los ejercicios 9-14, use clculos manuales
para colocar el decimal binario dado
en formato hexadecimal.
9. (0.10110111) 2
10. (0.111110110011) 2
11. (0.0111011111101101) 2
12. (0.0111011111001111) 2
13. (0.0111011101110111 ...) 2
14. (0.001101100000011000000110 ...) 2
En los ejercicios 15 a 18, use clculos manuales
para colocar la base dada diez decimal
en formato hexadecimal.
15. 0.259765625
16. 0.88671875
17. 0.8
18. Tercera
Seccin 1.2 decimales y fracciones 27
1.2 Respuestas
1. (0.0101) 2
3. (0.1001111) 2
5. (0.0100110011001 ...) 2
7. (0.0000110011001100 ...) 2
9. (0.B7) 16
11. (0.77ED) 16
12. (0,7777 ...) 16
14. (0.428) 16
16. (0,110011001100 ...) 16
28 Captulo 1 Tipos numricos en Matlab
Seccin 1.3 Forma de punto flotante de 29
1.3 Forma de punto flotante
Nmeros de punto flotante son usados por las computadoras para nmeros reales aproximados.
En la superficie, la pregunta es simple. Hay un nmero infinito de
nmeros reales, pero un ordenador es una mquina finita por lo que slo puede representar a un
nmero finito
nmero de nmeros reales. Es decir, no todos los nmeros reales pueden ser almacenados
exactamente.
Ah radica el problema.
Si el equipo slo puede almacenar una aproximacin de un nmero real, entonces es
esencial que hay una discusin del error involucrado.
En esta seccin vamos a tratar cada uno de estos temas.
Nmeros de punto flotante
Cada uno de los siguientes nmeros es igual a 123.4567 en base diez:
12.345,67 10-2 1.234567 102, y 0.01234567 104.
En el primer caso, multiplicar por 10-2 mueve el punto decimal dos lugares a
la izquierda, por lo 12,345.67 10-2 = 123,4567.
En el segundo caso, multplying por 102 mueve el punto decimal dos lugares a
la derecha, de modo 1.234567 102 = 123,4567.
En el tercer caso, multiplicando por 104 mueve el punto decimal cuatro lugares para
la derecha, de modo 0.01234567 104 = 123,4567.
Los equipos utilizan una forma de notacin cientfica para guardar aproximaciones de bienes
nmeros en forma de punto flotante de n dgitos.
Formulario de punto flotante n dgitos. Un punto flotante n dgitos tiene la forma
d1.d2d3. . . dn bm.
Tenga en cuenta que la seal se produce primero (ms o menos), seguido por un nmero de n
dgitos
d1.d2d3. . . dn llaman matissa. El nmero b se llama la base y m es
llamado el exponente. Cada di dgitos de la mantisa es un nmero entero tal que
0 di <b, para i = 2, 3,. . . , N. El primer dgito debe satisfacer 0 <d1 <b menos
el nmero de punto flotante es cero.
Por ejemplo, en base diez, el nmero 2,3854 10-13 est en punto flotante 5 dgitos
formato, pero los nmeros de 238,54 10-12 0,0023854 y 1012 no son.
3 material con derechos reservados. Ver: http://msenux.redwoods.edu/Math4Textbook/
30 Captulo 1 Tipos numricos en Matlab
En el primer caso, 238.54 10-12 tiene ms de un dgito a la izquierda de la
punto decimal. Podemos poner este nmero en forma de punto flotante de 5 dgitos por
posicionar el punto decimal y ajustando el exponente. Es decir,
238.54 10-12 = 2.3854 10-10.
En el segundo caso, el primer dgito a la izquierda del punto decimal en el nmero
0.0023854 1012 es cero, pero 0,0023854 1012 no es cero. Una vez ms, podemos colocar
este nmero en forma de punto flotante de reposicionamiento de la coma decimal y
ajustando el exponente. Es decir,
0.0023854 1,012 = 2,3854 109.
En los ejemplos que siguen, vamos a suponer que estamos trabajando sobre una base de diez
mquina que almacena nmeros en formato de coma flotante de 5 dgitos.
I Ejemplo 1. Cambiar el nmero 888.341983765 en la base 5 dgitos diez flotante
formato de coma.
En primer lugar, cambiar la posicin del punto decimal de modo que no es exactamente un dgito
distinto de cero
a la izquierda del punto decimal.
888.341983765 = 8,88341983765 102
La mquina que estamos trabajando slo puede manejar la forma de punto flotante de 5 dgitos.
Lo
no puede almacenar todos los dgitos de la mantisa anteriormente. Por lo tanto, hay que
determinar la
nmero ms cercano 5 dgitos con coma flotante disponible y usar eso como una aproximacin
para obtener el nmero. Tenga en cuenta que el nmero se encuentra entre el punto flotante de
dos 5 dgitos
nmeros
8,8834 102 <8,88341983765 102 <8,8835 102,
pero es ms cerca de 8,8834 102. Por lo tanto, en forma de punto flotante de 5 dgitos,
888.341983765 8,8834 102.
Tenga en cuenta que doblamos hacia cero en este ejemplo. Debido a que el siguiente dgito
el 4 en 8,88341983765 102 es un 1, el cual es menor que 5, el nmero truncamos
a 8,8834 102.
Veamos otro ejemplo.
I Ejemplo 2. Cambiar el nmero 0,00075493671278 en la base 5 dgitos diez
flotando forma de punto.
Seccin 1.3 Forma de punto flotante de 31
En primer lugar, cambiar la posicin del punto decimal de modo que no es exactamente un dgito
distinto de cero
a la izquierda del punto decimal.
0.00075493671278 = 7,5493671278 10-4
Una vez ms, nuestro equipo slo puede manejar mantisas 5 dgitos. Nuestro nmero se
encuentra entre
los nmeros de punto flotante dos siguientes 5 dgitos
7,5493 10-4 <7,5493671278 10-4 <7,5494 10-4,
pero es ms cerca de el nmero 7,5494 10-4. Por lo tanto, en forma de punto flotante de 5
dgitos,
0,00075493671278 = 7,5494 10-4.
Tenga en cuenta que doblamos lejos de cero en este ejemplo. Debido a que el siguiente dgito
el 3 de 7,5493671278 10-4 es un 6, que es 5 o mayor, agregamos 1 a la anterior
lugar antes de truncar para obtener 7,5494 10-4.
Veamos otro ejemplo.
I Ejemplo 3. Supongamos que la base diez representacin de punto flotante de 5 dgitos
de un nmero real x es x * = 2,3086 10-4. Encuentre el rango de valores posibles para el
nmero real x.
En los ejemplos 1 y 2, vimos que el equipo en algn momento rondas hacia
cero veces Ronda y otras lejos de cero, dependiendo del valor de la
sexto dgito en formato de coma flotante de 5 dgitos. En este ejemplo, se nos da la 5 dgitos
base diez forma de punto flotante de la serie, es decir,
x * = 2,3086 10-4.
El muy pequeo que x podra ser es x = 2,30855 10-4. Cualquier menor, tales
cuando x = 2.30854999. . . 10-4, yx se habra redondeado hacia cero a
x * = 2,3085 10-4.
El muy grande que x podra ser es x = 2.30864999. . . 10-4. Cualquier ms grande,
como x = 2,30865 10-4, yx se habra redondeado lejos de cero a
x * = 2,3087 10-4.
Por lo tanto, x puede ser cualquier nmero en el intervalo
2,30855 10-4 <x <2,30864999. . . 10-4.
32 Captulo 1 Tipos numricos en Matlab
Formulario de punto flotante binario
En binario (base dos), las cosas funcionan ms o menos lo mismo. Tenga en cuenta que el nmero
1,0011 2-3 est en la base de dos forma de punto flotante de 5 dgitos, pero los nmeros 1101.1
2-4
y 0.00011001 25 no lo son.
En el primer caso, 1.101,1 2-4 tiene ms de un dgito a la izquierda del decimal
punto. Podemos poner este nmero en forma de punto flotante de reposicionamiento de la
punto decimal y el ajuste del exponente.
1101.1 2-4 = 1.1011 2-1
En el segundo caso, el primer dgito a la izquierda del punto decimal en el nmero
0.00011001 25 no es cero, pero de nuevo puede cambiar la posicin del punto decimal y
ajustar el exponente.
0.00011001 25 = 1.1001 21
Error
En esta seccin se discute el error cometido al almacenar un nmero real en n-dgitos
forma de punto flotante en un ordenador.
Vamos a discutir dos importantes tipos de error: (1) error absoluto, y (2)
error relativo.
En la discusin que sigue, vamos a dejar que x representa el nmero real x *
representar a la aproximacin de punto flotante de n dgitos de x.
Error absoluto y relativo. Sea x * es la representacin de punto flotante de n dgitos
del nmero real x. A continuacin, el error absoluto y relativo en
aproximando x con x * viene dado por la frmula
Error absoluto = | x * - x |
y
Error relativo = | x * - x |
| X |
.
Veamos un ejemplo.
I Ejemplo 4. Calcular tanto el error absoluto y relativo en el verdadero
nmero x 938 = 756 se almacena en forma de punto flotante de 3 dgitos de base diez.
Seccin 1.3 Forma de punto flotante de 33
En primer lugar, cambiar la posicin del punto decimal de manera que hay un dgito distinto de
cero a la
la izquierda del punto decimal.
x = 938 756 = 9,38756 105
Slo podemos utilizar 3 dgitos en la mantisa. El siguiente dgito a la derecha del 8 es un 7,
que es mayor que 5, por lo que redondear al alza (lejos de cero) para
9,38756 105 = 9.39 105.
El resultado x * = 9,39 105 se encuentra en forma de punto flotante de 3 dgitos de base diez.
Calculamos
el error absoluto con el siguiente clculo.
| X * - x | =

9,39 105 a 938 756

= 244
Eso parece ser un gran error! Pero en una segunda mirada, tenga en cuenta lo que la relacin
revela error.
| X * - x |
| X |
=

9,39 105 a 938 756

| 938 756 |
2,6 10-4
Una calculadora se utiliz para determinar la aproximacin. Tenga en cuenta que el nmero
x = 9,38756 105 y su aproximacin x * = 9,39 105 estn de acuerdo en unos 3 lugares
y el exponente en el error relativo de 2,6 10-4 es -4.
Veremos que el error relativo es ms til. Veamos otro ejemplo.
I Ejemplo 5. Calcular tanto el error absoluto y relativo en el verdadero
nmero 0.000005823417658 se almacena en forma de punto flotante de 5 dgitos de base diez.
Volver a colocar el punto decimal de manera que hay un dgito distinto de cero a la izquierda de la
el punto decimal.
x = 0.000005823417658 = 5.823417658 10-6
La mantisa se permite 5 dgitos. Tenga en cuenta que el siguiente dgito despus de que el 4 es un
1, que
es inferior a 5, lo redondeamos hacia abajo (hacia cero) truncando.
5.823417658 10-6 = 5,8234 10-6
El resultado x * = 5,8234 10-6 est en forma de punto flotante de 5 dgitos de base diez. La
error absoluto es
| X * - x | =

5,8234 10-6 - 0.000005823417658

= 1,7658 10-11,
que a primera vista, parece muy pequeo. Pero, de nuevo, lo pequeo es el error
en relacin con los nmeros implicados? El error relativo revela la respuesta.
34 Captulo 1 Tipos numricos de Matlab
| X * - x |
| X |
=

5,8234 10-6 - 0.000005823417658

| 0.000005823417658 |
3,0 10-6 (1.4)
Una calculadora se utiliza para encontrar una aproximacin para el error relativo. Tenga en cuenta
que
este error es mucho ms grande que el error absoluto.
Adems, tenga en cuenta que x = 5.823417658 10-6 y x * = 5,8234 10-6 coinciden en
aproximadamente
5 dgitos y el exponente en el error relativo es 3,0 10-6 -6.
En efecto, hay una definicin tcnica para el nmero de dgitos significativos.
Dgitos significativos. El nmero x * se dice que x aproximadas a n significativa
dgitos, si n es el mayor entero no negativo para el cual
| X * - x |
| X |
<5 10-n.
As, por ejemplo, en el Ejemplo 4, nos aproximamos = 938 x 756 con x * =
9,39 105 y encontr que el error relativo fue
| X * - x |
| X |
2,6 10-4,
por lo que el error relativo es menor que 5 10-4. Por lo tanto, por la definicin, decimos que
x * = 9,39 105 = x se aproxima a 938 756 a 4 dgitos significativos. Sin embargo, tenga en cuenta
que slo los dos primeros dgitos iniciales son los mismos.
En el Ejemplo 5, nos aproximamos x = 5,823417658 10-6 con x * = 5,8234
10-6 y se encontr que el error relativo fue
| X * - x |
| X |
3,0 10-6,
por lo que el error relativo es menor que 5 10-6. Por lo tanto, por la definicin, decimos que
x * = 5,8234 10-6 aproxima a x = 5.823417658 10-6 a 6 dgitos significativos.
Ntese, sin embargo, que slo los primeros 5 dgitos iniciales son los mismos.
Es importante darse cuenta de que el concepto de cifras significativas y la
nmero de dgitos de acuerdo entre un nmero y su forma de punto flotante son
relacionado, pero no exactamente lo mismo. Por ejemplo, en forma de punto flotante de 5 dgitos,
aproximacin de x = 7.899966666 103 con con su forma pont flotante 5 dgitos
x * = 7,9000 103 proporciona un error relativo
| X * - x |
| X |
4,2 10-6,
Seccin 1.3 Forma de punto flotante de 35
que es inferior a 5 10-6. Por lo tanto, x * x se aproxima a 6 dgitos significativos.
Sin embargo, los nmeros x = 7.89996666 103 x * y = 7,9000 103 tienen slo el
que lleva el primer dgito en comn. An as, en el sentido del error relativo, no es
difcil imaginar la cercana de los dgitos en x * = 7,9000 10-6 para los primeros 6
dgitos de 7.89996666 10-6.
Formulario de punto flotante n dgitos y dgitos significativos. Lo ms
es importante entender el hecho de que existe una relacin definida entre
la el nmero de dgitos utilizados para almacenar la mantisa, el error relativo,
y el nmero de dgitos significativos.
Propagacin del error
Cada vez que guardamos una forma de punto flotante n dgitos de un nmero real, estamos
haciendo
un error. Este error tiene un nombre especial.
Error de redondeo. El error se incurre cuando almacenamos un nmero real n dgitos
forma de punto Flooting se llama error de redondeo.
Con las computadoras de hoy en da, podemos almacenar nmeros de modo que la primera
error de redondeo es bastante insignificante. La dificultad radica en el hecho de que los
ordenadores
puede hacer literalmente miles de millones de clculos muy rpidamente, por lo que no es raro
ver a
el original propagacin del vector error de redondeo a travs de una serie de clculos, divergiendo
rpidamente con el fin de hacer que el resultado final sin sentido.
En la siguiente seccin estudiaremos algunas formas de mantener esta propagacin del error
bajo control.
36 Captulo 1 Tipos numricos en Matlab
1.3 Ejercicios
En los ejercicios 1-8, coloque el nmero dado
en base diez en punto flotante de 4 dgitos
formulario. En cada caso, el clculo de la absoluta
e hizo error relativo.
1. 1 885 934
2. 12 345 612
3. 0,0001234567
4. 0,0085188342
5. 888.456123
6. 1 765.33458
7. 0,0002312316
8. 0.00000556781245
En los ejercicios 9-12, una base de 4 dgitos de diez
aproximacin de punto flotante x * de un
se da nmero real x. Determine un
gama de posibles valores para x.
9. 2,446 10-12
10. 4,453 108
11. 5,684 105
12. 1,104 10-6
En los ejercicios 13-16, Coloque el dado
nmero en formato de coma flotante dgitos n
para el valor dado de n, calcular
el error relativer, a continuacin, utilizar el resultado
para determinar el nmero de la significativa
dgitos en la aproximacin.
13. 1 789,23456, n = 5
14. 0,008456174 10-6, n = 3
15. 0,0000456712345 10-11, n = 6
16. 18.9123456 106, n = 4
Seccin 1.3 Forma de punto flotante de 37
1.3 Respuestas
1. 1,886 106
3. 1,235 10-4
5. 8,885 102
7. 2,312 10-4
9. Rango de 2,4455 10-12 a 2,4464999. . .
10-12.
11. Rango de 5,6835 105-5,6844999. . .
105.
13. 1,7892 103, error relativo es aproximadamente
1,9 10-5, 5 significativa
dgitos.
15. 4,56712 10-16, error relativo de aproximadamente
7,6 10-7, 6 significativa
dgitos.
38 Captulo 1 Tipos numricos en Matlab
Seccin 1.4 Floating Point Arithmetic 39
1.4 Floating Point Arithmetic
Computadoras modernas de hoy en da, los ordenadores personales, incluso en casa, por lo
general se pueden almacenar
suficientes dgitos para que el error de redondeo no es demasiado de un problema, por lo menos
en
el nivel de almacenamiento. Sin embargo, las computadoras pueden literalmente hacer millones o
miles de millones de
clculos en un proceso numrico, por lo que el error de redondeo inicial pueden propagar
durante todo el clculo, haciendo que la respuesta final de sentido.
En esta seccin nos fijamos en aritmtica de punto flotante y discutir algunas numrica
efectos que pueden tener resultados desastrosos en caclulations.
Comencemos con un ejemplo que demuestra la cancelacin catastrfica
dgitos y la prdida de precisin.
I Ejemplo 1. Calcular 9876 -
9875 usando aritmtica de punto flotante de 5 dgitos.
En primer lugar, vamos a examinar el error relativo en el almacenamiento 9876 en punto
flotante de 5 dgitos
formulario. Vamos a utilizar Caja de herramientas Simblico de Matlab, una interfaz para el
ordenador
sistema (CAS) Maple lgebra. Los clculos se realizan en Maple simblica y
son exactas. As, en lugar de convertir un resultado numrico, una expresin exacta
devuelto.
>> Sym ('sqrt (9876)')
ans =
sqrt (9876)
La caja de herramientas Simblico tiene un comando que devolver una aproximacin numrica
de un objeto simblico, corregir a tantos lugares de exactitud que el usuario necesita.
El comando VPA hace el trabajo.
>> Ayuda VPA
VPA aritmtica de precisin variable.
R = VPA (S) evala numricamente cada elemento de la
doble matriz S con precisin variable de coma flotante
aritmtica con D exactitud dgito decimal, donde D es
la configuracin actual de dgitos. El R resultante es una SYM.
VPA (S, D) utiliza D dgitos, en lugar de la configuracin actual
de dgitos. D es un nmero entero o la representacin de SYM
un nmero.
4 material con derechos reservados. Ver: http://msenux.redwoods.edu/Math4Textbook/
40 Captulo 1 Tipos numricos en Matlab
Vamos a utilizar el ltimo prrafo del mensaje de ayuda a la aproximacin de 9876, correcta
20 dgitos. Tenga en cuenta que el objeto simblico debe introducirse como una cadena
(delimitado
por apstrofes individuales (garrapatas)).
>> VPA ('sqrt (9876)', 20)
ans =
99.378065990438755368
Use este resultado para almacenar 9876 en formato de coma flotante 5 dgitos.

9876 = 9,9378 101.
Se calcula el error relativo con
| X * - x |
| X |
= | 9,9378 101 -
9876 |
|
9876 |
. (1,5)
Para encontrar un valor aproximado del error relativo, volveremos a girar a la
Herramientas simblico. En primer lugar, vamos a almacenar el cmputo necesaria como una
cadena en el
variable de rel (usar cualquier nombre de variable que desee).
>> Rel = 'abs (9.9378e1-sqrt (9876)) / abs (sqrt (9876))'
rel =
abs (9.9378e1-sqrt (9876)) / abs (sqrt (9876))
Ahora usaremos el comando VPA para aproximar a 20 dgitos de precisin.
>> VPA (rel, 20)
ans =
0.66403424234193683981 e-6
Por lo tanto, el error relativo en el almacenamiento de x = 9876 en formato de coma flotante de
5 dgitos x * =
9,9378 101 es de aproximadamente 6,6 10-7.
Recuerde la definicin de dgitos significativos.
Dgitos significativos. El nmero x * se dice que x aproximadas a n significativa
dgitos, si n es el mayor entero no negativo para el cual
| X * - x |
| X |
<5 10-n.
Seccin 1.4 Floating Point Arithmetic 41
Debido a que el error relativo es menor que 5 10-6, sabemos que x * = 9,9378 101
se aproxima a x -
9876-6 dgitos significativos.
De forma similar, se puede utilizar la caja de herramientas Simblico para aproximar 9875
y encontrar el error relativo en el almacenamiento de este nmero en forma de punto flotante de
5 dgitos.
En primer lugar, una aproximacin de 9875.
>> VPA ('sqrt (9875)', 20)
ans =
99.373034571758952600
Por lo tanto, el almacenamiento de punto flotante de 5 dgitos de x = 9875 es x * = 9,9373 101.
La
error relativo en el almacenamiento 9875 es el siguiente.
>> Rel = 'abs (9.9373e1-sqrt (9875)) / abs (sqrt (9875))'
rel =
ABS (9.9373e1-sqrt (9875)) / abs (sqrt (9875))
>> VPA (rel, 20)
ans =
,34789879469399867106 E-6
Por lo tanto, el error relativo es de aproximadamente 3,4 10-7, que es aproximadamente la
misma que
el error relativo en el almacenamiento 9876 en formato de coma flotante de 5 dgitos. Debido a
que el
error relativo es menor que 5 10-7, sabemos que x * = 9,9373 101 se aproxima
x -
9875-7 dgitos significativos.
Ahora, vamos a restar los nmeros de formularios de punto flotante de 5 dgitos almacenados y
ver
lo que pasa.
9,9378 101 a 9,9373 101 = 0,0005 101
Tenga en cuenta que todos los dgitos de la mantisa se han ido excepto uno. Adems, tenga en
cuenta que
no hay ms dgitos a la derecha del 5 de 0,00005 101, as que cuando nos ajustamos
el exponente para colocar este resultado en forma de punto flotante de 5 dgitos, como en
5,0000 10-3,
los dgitos a la derecha del punto decimal en 5,0000 10-3 no tienen sentido. En efecto,
el equipo muy posiblemente podra meter en algunos dgitos de la memoria que no sean
ceros, slo para rellenar el nmero.
Ahora, vamos a ver el error relativo en la aproximacin x = 9876 -
9875
con este resultado.
42 Captulo 1 Tipos numricos en Matlab
>> Rel =
'Abs (5.0E-3-(sqrt (9876)-sqrt (9875))) / abs (sqrt (9876)-sqrt (9875))'
rel =
abs (5.0E-3-(sqrt (9876)-sqrt (9875))) / abs (sqrt (9876)-sqrt (9875))
>> VPA (rel, 20)
ans =
0.62444971890114329880 e-2
El error relativo es de aproximadamente 6,2 10-3. Recordemos que el error relativo en
aproximacin de 9876 y 9875 con los nmeros de punto flotante de 5 dgitos era del
orden de 10-7, por lo que en trminos generales, el error relativo hecho restando, que
es del orden de 10-3, es de aproximadamente 10-3/10-7 = 104 o 10 000 veces ms grande!
Adems,
debido a que el error relativo de la resta es inferior a 5 10-2, slo 2 significativa
cifras siguen siendo!
Este fenmeno se llama cancelllation catastrfica de dgitos y se produce
cada vez que se intenta restar dos nmeros que estn muy cerca entre s.
El programador tiene que ser consciente de este fenmeno y evitar la sustraccin de dos
casi el mismo nmero. En este caso, podemos cambiar la sustraccin en adicin
racionalizando el numerador con este clculo.

9876 -

9875 = 9.876 hasta 9875
9876 + 9875
= 1
9876 + 9875
Si sumamos las representaciones de punto flotante de 9876 y 9875, se obtiene
9,9378 101 + 9,9373 101 = 19,8751 102,
que cuando se almacena en forma de punto flotante de 5 dgitos es 1,9875 102. A continuacin,
realizamos
la divisin,
1,0000 100
1,9875 102 = 0.50314465408805 10-2,
que cuando se almacena en forma flotante 5 dgitos se x * = 5,0314 10-3. El error relativo
al aproximar x = 9876 -
9875 con x * = 5,0314 10-3 es
| X * - x |
| X |
=

5,0314 10-3 - ( 9876 -
9875)


9876 -
9875

.
Podemos utilizar la Caja de herramientas Simblico para ayudar con este clculo.
Seccin 1.4 Floating Point Arithmetic 43
>> Rel =
'Abs (5.0313e-3-(sqrt (9876)-sqrt (9875))) / abs (sqrt (9876)-sqrt (9875))'
rel =
abs (5.0313e-3-(sqrt (9876)-sqrt (9875))) / abs (sqrt (9876)-sqrt (9875))
>> VPA (rel, 20)
ans =
0.23587741414644558543 e-4
Por lo tanto, el error relativo al aproximar x = 9876 -
9875 con x * =
5,0314 10-3 es de aproximadamente 2,3 10-5, que es menor que 5 10-5, as que esta vez
hemos mantenido a 5 dgitos significativos, que es mucho mejor que los 2 dgitos significativos
del clculo anterior.
Veamos otro ejemplo.
I Ejemplo 2. Resolver la ecuacin cuadrtica x2-1634x 2 = 0 con 10 dgitos
aritmtica de punto flotante.
Utilizando la frmula cuadrtica para resolver x2 - 1634x + 2 = 0, obtenemos
x = 1,634
p
16342-4 (1) (2)
2 (1) = 817

667 487.
Podemos utilizar la Caja de herramientas Simblico para aproximar 667 487.
>> VPA ('sqrt (667487)', 20)
ans =
816,99877600887505858
Por lo tanto, en forma de punto flotante de 10 dgitos, 667 487 8.169987760 102. Por lo
tanto, uno
solucin de la ecuacin cuadrtica es
x *
1 = 8,170000000 8,169987760 + 102 102 102 = 16.339987760,
o x * 1 = 1,633998776 103 en forma de punto flotante de 10 dgitos. Podemos utilizar el
simblico
Caja de herramientas para calcular el error relativo en la aproximacin x1 = 817 + 667 487 con
Este nmero de punto flotante de 10 dgitos.
44 Captulo 1 Tipos numricos en Matlab
>> Rel =
'Abs (1.633998776e3-(817 + \ sqrt (667487))) / abs (817 + sqrt (667487))'
rel =
abs (1.633998776e3-(817 + \ sqrt (667487))) / abs (817 + sqrt (667487))
>> VPA (rel, 20)
ans =
,54314964676275835537 E-11
Por lo tanto, el error relativo es de aproximadamente 5,4 10-12, que es menor que 5 10-11,
por lo que estamos aproximando 817 + 667 487-11 dgitos significativos.
El segundo es la raz
x *
2 = 8,170000000 102-8,169987760 102 = 0,000012240 102,
o x2 = 1.224000000 10-3, en forma de punto flotante de 10 dgitos. Tenga en cuenta la
catastrfica
cancelacin de dgitos. Los ltimos 5 ceros de 1,224000000 son completamente sin sentido
y en algunos casos el equipo se rellenar estos lugares con dgitos distintos de cero que
pasar a ser por ah en la memoria.
Podemos utilizar la Caja de herramientas Simblico para calcular el error relativo al hecho
aproximando x2 = 817 -
667 487 con el nmero de punto flotante de 10 dgitos
x * 2 = 1,224000000 10-3.
>> Rel =
'Abs (1.224000000e-3-(817 - \ sqrt (667487))) / abs (817-sqrt (667487))'
rel =
abs (1.224000000e-3-(817 - \ sqrt (667487))) / abs (817-sqrt (667487))
>> VPA (rel, 20)
ans =
,72509174283635093702 E-5
Por lo tanto, el error relativo es de aproximadamente 7,3 10-6, que es menor que 5 10-5, por lo
x * 2 = 1.224000000 10-3 se va aproximando x2 = 817 -
667 487 a slo 5 significativa
los dgitos!
Los programadores tienen que ser conscientes de cancelacin catastrfica de dgitos cualquier
momento
nmeros a los que se restan son casi iguales en valor. El programador
tiene que buscar un algoritmo que evita la sustraccin.
En este caso, considerar la idea de que si x1 y x2 son races de la ecuacin cuadrtica
ecuacin x2-1634x 2 = 0, entonces el cuadrtica cuadrtica x2-1634x 2 puede haber
Seccin 1.4 Floating Point Arithmetic 45
factorizar como (x-x1) (x-x2). Si ampliamos y comparar a la cuadrtica original,
entonces
x2 - 1634x + 2 = (x - x1) (x - x2)
= X2 - (x1 + x2) x + x1x2.
La comparacin de los trminos constantes, X1X2 = 2, o de forma equivalente,
x2 = 1
x1
.
Este ltimo resultado permitir evitar la sustraccin en el clculo de la segunda raz x2.
x *
2 = 2
x * 1
= 2,000000000
1.633998776
100
103
= 1,2239911369332985296 10-3
= 1.223991137 10-3
W e puede usar Matlab para calcular el error relativo en la aproximacin x2 = 817 a 667 487 el
nmero de punto flotante de 10 dgitos * x2 = 1.223991137 10-3.
>> Rel =
'Abs (1.223991137e-3-(817 - \ sqrt (667487))) / abs (817-sqrt (667487))'
rel =
abs (1.223991137e-3-(817 - \ sqrt (667487))) / abs (817-sqrt (667487))
>> VPA (rel, 20)
ans =
,98518524802025190487 E-8
Por lo tanto, el error relativo es de aproximadamente 9,9 10-9, que es menor que 5 10-8, por lo
esta vez nos las hemos arreglado para aferrarse a 8 dgitos significativos.
46 Captulo 1 Tipos numricos en Matlab
1.4 Ejercicios
En los ejercicios 1-4, lleve a cabo cada uno de los
las siguientes tareas para el nmero dado.
i. Utilice el comando de Matlab VPA para aproximar
el nmero dado a 20
dgitos.
ii. Coloque el resultado del comando VPA
en formato de coma flotante de n dgitos
para el valor dado de n.
iii. Utilice el comando VPA para determinar
el error relativo.
iv. Utilice la definicin de dgitos significativos
para determinar el nmero de significativa
dgitos de su flotante n dgitos
punto de aproximacin.
1. 14 385, n = 5
2. 23 888, n = 5
3. ln888 475, n = 10
4. En 1 234 555, n = 10
En los ejercicios 5-8, lleve a cabo cada uno de los
las siguientes tareas para la expresin dada.
i. Utilice el comando VPA de lo simblico
Caja de herramientas para ayudar en la bsqueda de
aproximaciones de punto flotante de n dgitos
de cada raz para el valor dado
de n. Calcular el error relativo
para cada estado y el nmero de
dgitos significativos para cada uno.
ii. Utilizar los resultados de la parte anterior
entregar calcular una variable n dgitos
aproximacin puntos para la propuesta
expresin.
iii. Utilice el comando de Matlab VPA para encontrar
el error relativo en la aproximacin
la expresin dada con la ndigit
nmero de punto flotante de la parte (ii).
iv. Utilice la definicin de dgitos significativos
para determinar el nmero de significativa
dgitos en la aproximacin
de la parte (ii).
5. 8355 -
8.354, n = 5
6. 7565 -
7.564, n = 5
7. 45619 -
45617, n = 10
8. 387159 -
387.156, n = 10
En los ejercicios 9-12, lleve a cabo cada uno de
las siguientes tareas para la cuadrtica dada
ecuacin.
i. Resolver la ecuacin cuadrtica dada por mano.
Coloque la solucin en radical sencilla
formulario.
ii. Utilice el comando de Matlab VPA para aproximar
el resto de la solucin
20 dgitos y haga la
resultado en formato de coma flotante de 10 dgitos.
iii. Utilice clculos manuales para determinar
la solucin que no causa catastrfica
cancelacin de dgitos en
Forma de punto flotante de 10 dgitos. Utilizar
el comando VPA para determinar la
error relativo y el nmero de
dgitos significativos de este resultado.
iv. Seguir el ejemplo del ejemplo 2 en
la narrativa para obtener un 10 dgitos
aproximacin de punto flotante del
segunda solucin. A continuacin, utilice el VPA
comando para determinar el relaSection
1.4 Floating Point Arithmetic 47
tiva de error y el nmero de significativa
dgitos.
9. x2 - 4744x + 2 = 0
10. x2 - 5666x + 4 = 0
11. x2 - 388x + 2 = 0
12. x2 - 644x + 1 = 0

Potrebbero piacerti anche