Diferencia entre revisiones de «Métodos numéricos»

De MateWiki
Saltar a: navegación, buscar
(Números enteros)
(Números enteros)
Línea 75: Línea 75:
 
>> log(intmax('int64'))/log(2)ans =  63|lang="matlab"}}
 
>> log(intmax('int64'))/log(2)ans =  63|lang="matlab"}}
 
Podemos comprobar que el valor ''intmax('int64')'' es más pequeño que ''intmax('uint64')''.
 
Podemos comprobar que el valor ''intmax('int64')'' es más pequeño que ''intmax('uint64')''.
 +
=== Números con parte decimal ===
  
 
== Ejemplo de método numérico ==
 
== Ejemplo de método numérico ==

Revisión del 14:04 19 ago 2013

Warning.png Este artículo está en versión beta. El autor de este artículo no lo ha terminado todavía, por favor no lo edites hasta que elimine este mensaje.

La mayoría de los métodos matemáticos empleados en ingeniería utilizan variables continuas. Cuando queremos trasladar estos métodos al ordenador, para facilitar su resolución, nos encontramos con que en un ordenador no es posible realizar cálculos en variable continua de manera eficiente. El ordenador trabaja con una representación de información discreta. Los métodos numéricos se encargan de adaptar métodos matemáticos en variable continua a un sistema de representación de información discreto. En ocasiones, también se emplean métodos numéricos cuando no es posible obtener una solución analítica de un problema.

1 Representación de información en un ordenador

1.1 Números naturales

Los dispositivos electrónicos que forman parte del ordenador están fabricados usando transistores. Un transistor es un elemento electrónico biestable que es capaz de representar dos estados. Mediante impulsos eléctricos es posible leer el estado de un transistor, y cambiarlo. Debido a esta característica, en la actualidad todos los ordenadores funcionan con un sistema de representación numérica binario. En este sistema, solo existen dos cifras diferentes: 0 y 1. Por ejemplo, el sistema decimal, usado habitualmente por las personas, tiene diez cifras diferentes: 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9.

Toda la información que se guarda y procesa en el ordenador se transforma al sistema de representación numérica binario. El caso más sencillo de entender es el de los números naturales (aunque en los ejemplos incluiremos el cero también). Tradicionalmente, representamos los números naturales usando el sistema decimal de representación. Pero se pueden representar en cualquier otro sistema, de manera sencilla. En la siguiente tabla se muestran algunos ejemplos:

Decimal Binario
0 0
1 1
2 10
3 11
4 100
5 101
6 110
7 111
8 1001

El sistema parece bastante ineficiente. Por ejemplo, para representar el número 8 se necesitan cuatro cifras (1001). Sin embargo, cada una de las cifras del número en binario se representa en el ordenador por un transistor. En el sistema de representación de información, cada una de las cifras recibe el nombre de bit. Cuando un número contiene 8 bits, recibe el nombre de byte[1].

Los transistores actuales son microscópicos, por lo que un ordenador puede contener cientos de millones de transistores, lo que posibilita la representación de números muy grandes. Por ejemplo, los procesadores Intel Core i5 pueden contener hasta 700 millones de transistores[2]. En estos procesadores, teóricamente sería posible entonces representar números naturales con hasta [math]2^{700\cdot 10^6}[/math] cifras en sistema decimal. En la realidad, la representación de números naturales no puede alcanzar números con esa enormidad de cifras. En primer lugar, muchas operaciones requieren al menos dos números, lo que reduciría la cantidad de cifras para cada número a la mitad. Además, algunos bits se dedican a controlar el formato de los números, su posición en la memoria del ordenador, a representar la operación que se realizará con esos números, etc. En la práctica, las arquitecturas modernas funcionan con números de 64 bits.

Si usamos 64 bits para representar un número natural en sistema decimal, el número más grande que podremos representar es [math]2^{64}-1\approx = 1.84\cdot 10^{19}[/math] (restamos 1 para contar el cero también, aunque no sea un número natural). Podemos comprobarlo con Octave UPM. Si estamos usando un ordenador con arquitectura de 64 bits, podemos escribir el siguiente comando para comprobar el número natural más grande que podemos representar:

>> intmax('uint64')
ans = 18446744073709551615

El tipo uint64 se usa para representar enteros sin signo de 64 bits. Un entero sin signo incluye los numeros naturales y el número cero. Podemos comprobar que es un número de 64 bits, calculando su logaritmo en base 2:

>> log(intmax('uint64'))/log(2)
ans =  64

Existen también otros tipos de enteros más cortos:

Tipo intmax Bits
uint8 255 8
uint16 65535 16
uint32 4294967295 32

1.2 Números enteros

Para representar los números enteros tenemos que tener en cuenta que es necesario también incluir el signo. Como solo tenemos dos signos posibles (positivo o negativo), es posible representar el signo con un bit. Como en Octave UPM la longitud máxima de un número es 64 bits, esto deja solo 63 bits disponibles para la representación numérica. Podemos comprobar cuáles son los números más grande y pequeño que podemos representar y su longitud en bits:

>> intmax('int64')
ans = 9223372036854775807
>> intmin('int64')
ans = -9223372036854775808
>> log(intmax('int64'))/log(2)ans =  63

Podemos comprobar que el valor intmax('int64') es más pequeño que intmax('uint64').

1.3 Números con parte decimal

2 Ejemplo de método numérico

3 Análisis numérico de algoritmos

4 Aŕeas del cálculo numérico

5 Referencias

  1. Este sistema tiene su origen en los primeros microprocesadores, que eran capaces de manejar números de 8 bits. En la actualidad, las arquitecturas de los ordenadores personales trabajan con números de 64 bits. Véase Byte (Wikipedia ES).
  2. List of Intel Core i5 microprocessors (Wikipedia EN)