Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los...

Preview:

Citation preview

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