introducción a la física computacional · combinan de acuerdo a reglas gramaticales. los...
TRANSCRIPT
Introducción a la Física Computacional
Tema 1Introducción
Universidad de OviedoGrado en FísicaCurso 2014-15
Tema 1. Introducción
● Qué es un ordenador● Sistemas operativos● Representación de la información● Modelos físico-matemáticos
Tema 1. Introducción
● Qué es un ordenador● Sistemas operativos● Representación de la información● Modelos físico-matemáticos
Qué es un ordenador (computadora)
● Es un dispositivo electrónico (hardware) capaz de procesar información recibida a través de dispositivos de entrada (input), obtener ciertos resultados que serán mostrados en dispositivos de salida (output), gracias a programas (software).
● Todos los ordenadores poseen una memoria para almacenar los datos y los programas.
● Los sistemas de comunicación con el mundo exterior de los ordenadores se denominan periféricos y también dispositivos de entrada/salida (E/S, o en inglés, I/O).
Estructura de un ordenadorPERIFÉRICOS
Dispositivos de Entrada
● Teclado● Ratón● Micrófono● Escáner
● Monitor● Impresora● Altavoces● Plóter
PERIFÉRICOSDispositivos de
SalidaCPU
ALU*
UC!
Memoria RAM#
(volátil)
Memoria externa(persistente)
● ROM$
● Disco Duro● CD-ROM● DVD● Memoria Flash
* ALU: unidad aritmético-lógica
! UC: unidad de control
# RAM: memoria de acceso aleatorio
$ ROM: memoria de sólo lectura
Arquitectura de un ordenador
● Los ordenadores modernos tienen lo que se denomina arquitectura de von Neumann: tanto las instrucciones de programa como los datos a procesar se almacenan en la memoria.
● Ello permite una gran generalidad, ya que se pueden tratar a los programas como datos y viceversa.
● No obstante, esto también da lugar a problemas por fallos en la programación (en general no intencionados, pero a veces a propósito—como en los virus informáticos).
Qué lenguajes conocen los ordenadores
● Un lenguaje es un sistema de codificación de información, con un conjunto de símbolos que se combinan de acuerdo a reglas gramaticales.
● Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje de muy bajo nivel) que depende de la CPU.
● Como es muy difícil programar en lenguaje de máquina, se diseñan programas en otros lenguajes, que se deben traducir a lenguaje de máquina.
El software
● Un ordenador necesita un programa funcionando (software). Cuando se arranca, se ejecuta un programa (bastante corto) almacenado en la ROM.
● Ese programa de la ROM carga luego otro programa más largo del sector de arranque de alguno de los dispositivos de almacenamiento permanente (disco duro, por ejemplo).
● Ese segundo programa carga en memoria el sistema operativo (SO).
● El sistema operativo lanza otros programas o/y espera que nosotros interaccionemos con él.
Tema 1. Introducción
● Qué es un ordenador● Sistemas operativos● Representación de la información● Modelos físico-matemáticos
Sistemas operativos
● El sistema operativo (SO) es la capa del software más cercana al hardware. Trabaja directamente con el hardware, siendo la interface entre el ordenador y el resto del software que en él se ejecuta.
● Gestiona los recursos del sistema y los reparte entre los distintos programas que se estén ejecutando.
● El SO permite interactuar con el ordenador estableciendo un lenguaje de comunicación entre el usuario y el ordenador a través de un intérprete de comandos.
Clasificación de los sistemas operativos➢ En función del número de usuarios:
● Monousuario (un solo usuario utilizando el sistema): MSDOS, Windows XP.
● Multiusuario (múltiples usuarios utilizando el sistema): Unix, Linux, Windows 7.
➢ En función del número de tareas:● Monotarea (sólo admiten un programa en ejecución a la vez):
MSDOS.● Multitarea (admiten múltiples programas en ejecución a la
vez): Windows, Unix, Linux.
➢ En función del número de procesadores:● Uniproceso (un único procesador)● Multiproceso (varios procesadores)
El intérprete de comandos● El intérprete de comandos es el interface del SO con el
usuario. Puede ser en modo gráfico o en modo texto.● A lo largo del curso iremos interaccionando con el SO
(Linux Ubuntu) e iremos aprendiendo su manejo básico.
● En modo gráfico usaremos Gnome y en modo texto Bash. En Unix (Linux) el intérprete de comandos en modo texto se denomina shell (caparazón).
● La shell espera órdenes nuestras indicándonoslo con $. Las órdenes son de la forma:
$ orden argumento1 argumento2 ... <entrar>
Tema 1. Introducción
● Qué es un ordenador● Sistemas operativos● Representación de la información● Modelos físico-matemáticos
Representación de la información
● Los datos y programas se almacenan en memoria en celdas (posiciones de memoria) numeradas con una dirección unívoca a través de la cual se accede a cada una de ellas.
● La longitud de las celdas usadas se mide en número de bits: un bit (b) es la unidad mínima de información que se puede almacenar: 0 ó 1.
● El byte (B) son 8 bits: número de bits necesarios para almacenar un carácter simple.
Las celdas de memoria
● Las celdas de memoria tienen un tamaño que depende del bus de datos (que se usa para intercambiar datos de unos puntos a otros de la memoria y de la CPU). Los ordenadores modernos tiene un bus de datos de 32 ó 64 bits. Se dice que usan palabras de 32 ó 64 bits.
● El número total de direcciones de memoria depende de la anchura del denominado bus de direcciones: 32 bits permiten 23 2 (≈ 4x109 ) direcciones.
Múltiplos del byte
● La capacidad total de la memoria se mide en bytes, aunque se usan casi siempre múltiplos:
1 Kilobyte (KB) = 210 bytes = 1024 bytes ≈ 103 bytes
1 Megabyte (MB) = 210 KBytes = 220 bytes ≈ 106 bytes
1 Gigabyte (GB) = 210 MByte = 230 bytes ≈ 109 bytes
1 Terabyte (TB) = 210 GByte = 240 bytes ≈ 1012 bytes.
● Estos múltiplos son diferentes a los del SI, y además Kilo se pone K (en mayúsculas).
Tipos de datos
● Los datos básicos son los siguientes:✗ Datos lógicos (booleanos)✗ Las tiras de caracteres✗ Los números enteros✗ Los números reales
● Existen agrupaciones homogéneas y no homogéneas de los anteriores:✗ Vectores y matrices (homogéneas)✗ Listas, diccionarios y otras (heterogéneas)
Datos lógicos
● Los datos lógicos o booleanos pueden tomar dos valores: verdadero o falso (true, false).
● Se necesita 1 bit para codificar un dato booleano, aunque se suele usar el tamaño mínimo de palabra (32 ó 64 bits) por comodidad.
● Algunos lenguajes utilizan un número entero 0 para indicar falso y un número entero diferente de 0 (por ejemplo, 1) para indicar verdadero.
Tiras de caracteres
● Los caracteres usados en los alfabetos occidentales suelen necesitar 8 bits para codificarse, aunque los alfabetos orientales necesitan muchos más bits.
● En el primer caso una palabra necesita tantos bytes como caracteres tiene.
● Normalmente la información textual necesita del tipo de dato tira de caracteres (string en inglés), que incluye en ocasiones información sobre la longitud de la tira.
Números enteros
● Los números enteros se codifican de acuerdo al sistema binario, con algunas modificaciones.
● Algunos lenguajes permiten números naturales (enteros sin signo).
● En general una CPU maneja muy rápido los números enteros, y admite obviamente de cada vez un tamaño de número correspondiente a la palabra (32 ó 64 bits).
● 32 bits permiten números enteros entre aproximadamente -231 y 231 (±2x1010).
Números reales
● Los números reales suelen codificarse (norma IEEE 754) utilizando coma flotante de la forma:
s 1,abcd x 2wyz
de tal manera que un bit (s) codifica el signo, un grupo de bits codifica el exponente de 2 (wyz) y otro grupo (abcd) codifica la mantisa. En la mantisa el 1 antes de la coma está implícito y no se guarda.
● Con 8 bytes ó 64 bits (lo normal, denominado por cuestiones históricas doble precisión), en IEEE 754, se usan 11 bits para el exponente y 52 para la mantisa, lo que permite números entre:
±2,225x10− 3 0 8
y ±1,798×103 0 8
Vectores y matrices
● Los vectores y matrices son agrupaciones homogéneas de datos (normalmente números). En inglés se denominan genéricamente arrays.
● Ocupan tanto como el total de números usados (un vector real de dimensión 3 ocupará 24 bytes).
● El acceso a los elementos de un vector o una matriz es directo (o sea se puede obtener el valor del 5º elemento sin necesidad de pasar por los anteriores). Se denomina acceso aleatorio.
● Existen en muchos lenguajes operaciones especiales para manejo de estas agrupaciones (tan importantes en el cálculo científico).
Listas y diccionarios
● Los informáticos usan en multitud de ocasiones otras agrupaciones de datos (heterogéneas muchas veces).
● En las listas cada elemento se asocia a una posición (se parecen a los vectores, pero éstos son homogéneos).
● En los diccionarios (llamados en ocasiones arrays asociativos) se asocia un valor a una clave (que puede tener en general cualquier valor, entero, real, tira de caracteres, etc., aunque no siempre).
Tema 1. Introducción
● Qué es un ordenador● Sistemas operativos● Representación de la información● Modelos físico-matemáticos
Modelos físico-matemáticos
● Resolver un problema del mundo real usando un ordenador conlleva diversos pasos a efectuar en una secuencia ordenada.
● Cada uno de esos pasos tiene una estructura diferente de los demás.
● Esos pasos a veces son desarrollados por diferentes personas (científicos, ingenieros, programadores).
Modelos físico-matemáticos
● Modelo físico● Modelo matemático● Algoritmo informático● Programa de ordenador
Modelo físico
➢ Se plantea el problema desde el punto de vista físico (o químico, biológico, sociológico, etc., dependiendo de la disciplina de que se trate).
➢ Se aplica la teoría correspondiente, teniendo en cuenta sus limitaciones y realizando las simplificaciones pertinentes.
Modelo matemático
➢ Se debe plantear el problema usando la matemática adecuada (por ejemplo, la física cuántica necesita el uso de números complejos, pero la dinámica clásica usa números reales).
➢ Se plantean las fórmulas algebraicas necesarias, si hay que resolver sistemas de ecuaciones, si se necesitan integrales, etc.
Algoritmo informático
➢ Un algoritmo es un conjunto de instrucciones a aplicar a unos datos de entrada, y que termina en un número finito de pasos, proporcionándonos resultados.
➢ La forma básica de un algoritmo es secuencial: una instrucción se ejecuta cuando acaba la anterior, y así sucesivamente hasta finalizar.
➢ Existen maneras de alterar el orden de las instrucciones del algoritmo mediante estructuras condicionales y estructuras iterativas (también llamadas repetitivas).
Componentes de los algoritmos
➢ Existe una traducción (a veces más de una) del modelo matemático al algoritmo informático.
➢ Los algoritmos deben manejar datos:● constantes y variables;● simples (como un número) y agrupados (como
un vector);➢ Lo normal es que el algoritmo sea diseñado por
partes (rutinas): para realizar una integral concreta podemos usar una rutina previamente diseñada para realizar cualquier integral.
Programa de ordenador
➢ Consiste en la traducción del algoritmo a un lenguaje concreto de programación.
➢ Luego se debe convertir el programa a lenguaje de máquina mediante:➢ un compilador, el cual traduce de una vez nuestro
programa a lenguaje de máquina (eso da rapidez de ejecución pero el desarrollo del programa es lento);
➢ un intérprete, el cual traduce nuestro programa instrucción por instrucción a lenguaje de máquina (eso permite desarrollos más rápidos pero ejecuciones lentas).
La traducción depende del procesador usado en el ordenador.
Qué lenguaje usar
➢ Existen miles de lenguajes de programación, cada uno apropiado a una tarea concreta (generalmente), aunque existen lenguajes de propósito general como Python que usaremos nosotros.
➢ El uso del lenguaje adecuado a cada problema es relevante: en una disciplina los algoritmos necesarios son muy diferentes a los de otra disciplina y es probable que las rutinas pertinentes estén pre-programadas en un lenguaje y no en el otro.
Problema ejemplo
Se deja caer una piedra desde el brocal de un pozo y queremos conocer la distancia al brocal de la piedra según cae para diferentes instantes de tiempo.
Modelo físico
➢ La piedra sufre una caída libre (aproximadamente). ➢ La caída libre es el movimiento de un cuerpo bajo la
acción de la gravedad. ➢ Existen simplificaciones físicas:
● en las cercanías de la superficie terrestre se puede suponer la intensidad del campo gravitatorio, g, constante;
● se desprecia el rozamiento del aire;● se supone el cuerpo puntual.
Modelo matemático
Definición de algunas variables:● profundidad respecto a la superficie terrestre, y;● tiempo, t;● intensidad del campo gravitatorio (aceleración de la
gravedad), g.
Tomando y = 0, cuando t = 0, se tiene
y = ½ g t2
Algoritmo informático
Se toma como instante inicial ti = 0, y como instante final tf con n pasos temporales.
inicio
leer g, tf, n
asignar t = 0, dt = tf/n
para i = 1 hasta n hacer
asignar t = t+dt
asignar y = ½ g t2
imprimir t, y
fin_para
fin
Programa de ordenador (en Python)
g = input('g ? ')
tf = input('tf ? ')
n = input('n ? ')
dt = tf/float(n)
t = 0
for i in range(n):
t = t+dt
y = 0.5*g*t**2
print('t = %10.5f y = %10.5f' % (t, y))
Salida del programa (por pantalla)
g ? 9.8
tf ? 2
n ? 10
t = 0.20000 y = 0.19600
t = 0.40000 y = 0.78400
t = 0.60000 y = 1.76400
t = 0.80000 y = 3.13600
t = 1.00000 y = 4.90000
t = 1.20000 y = 7.05600
t = 1.40000 y = 9.60400
t = 1.60000 y = 12.54400
t = 1.80000 y = 15.87600
t = 2.00000 y = 19.60000