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

38
Introducción a la Física Computacional Tema 1 Introducción Universidad de Oviedo Grado en Física Curso 2014-15

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

Page 1: Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje

Introducción a la Física Computacional

Tema 1Introducción

Universidad de OviedoGrado en FísicaCurso 2014-15

Page 2: Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje

Tema 1. Introducción

● Qué es un ordenador● Sistemas operativos● Representación de la información● Modelos físico-matemáticos

Page 3: Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje

Tema 1. Introducción

● Qué es un ordenador● Sistemas operativos● Representación de la información● Modelos físico-matemáticos

Page 4: Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje

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).

Page 5: Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje

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

Page 6: Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje

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).

Page 7: Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje

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.

Page 8: Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje

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.

Page 9: Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje

Tema 1. Introducción

● Qué es un ordenador● Sistemas operativos● Representación de la información● Modelos físico-matemáticos

Page 10: Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje

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.

Page 11: Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje

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)

Page 12: Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje

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>

Page 13: Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje

Tema 1. Introducción

● Qué es un ordenador● Sistemas operativos● Representación de la información● Modelos físico-matemáticos

Page 14: Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje

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.

Page 15: Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje

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.

Page 16: Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje

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).

Page 17: Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje

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)

Page 18: Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje

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.

Page 19: Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje

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.

Page 20: Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje

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).

Page 21: Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje

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

Page 22: Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje

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).

Page 23: Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje

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).

Page 24: Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje

Tema 1. Introducción

● Qué es un ordenador● Sistemas operativos● Representación de la información● Modelos físico-matemáticos

Page 25: Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje

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).

Page 26: Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje

Modelos físico-matemáticos

● Modelo físico● Modelo matemático● Algoritmo informático● Programa de ordenador

Page 27: Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje

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.

Page 28: Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje

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.

Page 29: Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje

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).

Page 30: Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje

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.

Page 31: Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje

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.

Page 32: Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje

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.

Page 33: Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje

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.

Page 34: Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje

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.

Page 35: Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje

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

Page 36: Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje

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

Page 37: Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje

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))

Page 38: Introducción a la Física Computacional · combinan de acuerdo a reglas gramaticales. Los programas han de estar en el interior del ordenador en lenguaje de máquina (un lenguaje

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