0% encontró este documento útil (0 votos)
13 vistas

Tema1_IntroPython

Cargado por

dgg
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
13 vistas

Tema1_IntroPython

Cargado por

dgg
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 49

Fı́sica Computacional

Fundamentos de Python
Visual Python; gráficos avanzados y visualización
Referencias

Tema 1
Python

David Martı́n y Marero

Universidad Autónoma de Madrid


[email protected]

30 de enero de 2024

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
Fundamentos de Python
Visual Python; gráficos avanzados y visualización
Referencias

Resumen

1 Fı́sica Computacional
Definición y Necesidad
2 Fundamentos de Python
Motivación e Instalación
Versiones y Entornos de desarrollo
Programación Básica
3 Visual Python; gráficos avanzados y visualización
MatPlotLib - Gráficas
VPython - Visualización Tridimensional
VPython - Movimiento
4 Referencias

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
Fundamentos de Python
Definición y Necesidad
Visual Python; gráficos avanzados y visualización
Referencias

Fı́sica Computacional

Computación Avanzada ≡ Fı́sica Computacional

Definición
Fı́sica Computacional es el cálculo de las respuestas a los
problemas de la Fı́sica utilizando ordenadores.

Necesidad
El experimento no es realizable
No existe solución analı́tica
Comprensión de los resultados experimentales

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
Fundamentos de Python
Definición y Necesidad
Visual Python; gráficos avanzados y visualización
Referencias

La fı́sica hoy

Computacional

Experimental Teórica

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
Fundamentos de Python
Definición y Necesidad
Visual Python; gráficos avanzados y visualización
Referencias

Bibliografı́a Principal

http://www-personal.umich.edu/ mejn/computational-physics/

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
Fundamentos de Python
Definición y Necesidad
Visual Python; gráficos avanzados y visualización
Referencias

Bibliografı́a Principal

http://www.physics.purdue.edu/ hisao/book/
David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.
Fı́sica Computacional
Fundamentos de Python
Definición y Necesidad
Visual Python; gráficos avanzados y visualización
Referencias

Bibliografı́a Suplementaria

http://biblioteca.uam.es

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
Motivación e Instalación
Fundamentos de Python
Versiones y Entornos de desarrollo
Visual Python; gráficos avanzados y visualización
Programación Básica
Referencias

¿Por qué Python?

Apropiado para cálculos cientı́ficos


Lenguaje Intérprete: ciclo de escritura y prueba muy rápido
Estilo: sencillo, de fácil comprensión, lectura, escritura y
aprendizaje
Potencia: desde números enteros a tensores y conjuntos
Extenso: incluye funciones para evaluar una amplia gama de
funciones cientı́ficas y matemáticas avanzadas

Pragmatismo
Lenguajes distintos y lenguas diferentes para entornos distintos
¡Python es GRATIS! El lenguaje y los programas ,,

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
Motivación e Instalación
Fundamentos de Python
Versiones y Entornos de desarrollo
Visual Python; gráficos avanzados y visualización
Programación Básica
Referencias

Instalación - Anaconda

Opción 1
Anaconda - autoinstalable
pip install vpython - en terminal de Anaconda
conda install -c vpython vpython - alternativamente
VPython https://vpython.org - Web VPython
VPython - Jupyter - desde terminal de Anaconda

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
Motivación e Instalación
Fundamentos de Python
Versiones y Entornos de desarrollo
Visual Python; gráficos avanzados y visualización
Programación Básica
Referencias

Instalación Canónica

Opción 2
www.python.org - instalar versión 3.12
www.vpython.org - gráficos tridimensionales y animación
www.matplotlib.org - gráficas de calidad publicable
www.scipy.org - computación cientı́fica (Macintosh)

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
Motivación e Instalación
Fundamentos de Python
Versiones y Entornos de desarrollo
Visual Python; gráficos avanzados y visualización
Programación Básica
Referencias

Instalación - Anaconda Versión 5.0.1

Opción 3 - ¡Cuándo todo falla!


https://repo.anaconda.com/archive/
Escoger Anaconda 3 - Versión 5.0.1 del 2017-10-24 (64 bits)
conda install -c vpython vpython desde Anaconda Prompt

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
Motivación e Instalación
Fundamentos de Python
Versiones y Entornos de desarrollo
Visual Python; gráficos avanzados y visualización
Programación Básica
Referencias

Principales diferencias entre Python 2 y 3

Versión 2 Versión 3
1 División entre enteros: entero 1 División entre enteros:
truncado flotante
2 print es una declaración 2 print es una función
3 input evalúa algebraicamente 3 input convierte a cadena
4 range crea una lista pero xrange itera 4 range itera
5 map crea nueva lista 5 map itera
Asemejar comportamiento de Python 2 a Python 3
from future import division, print function

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
Motivación e Instalación
Fundamentos de Python
Versiones y Entornos de desarrollo
Visual Python; gráficos avanzados y visualización
Programación Básica
Referencias

Spyder: Desarrollo eficiente

Spyder
1 Spyder (“Scientific PYthon Development EnviRonment”)
como entorno de desarrollo predilecto
2 Instalar mediante “Launcher” (Macintosh)
3 spyder en una terminal o acceso directo instalado por
Anaconda
4 Otros entornos: BlackAdder, Eric, IDLE, Komodo, Spy-Dev,
Wing...
5 Archivos de un programa deben llevar la extensión “.py”

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
Motivación e Instalación
Fundamentos de Python
Versiones y Entornos de desarrollo
Visual Python; gráficos avanzados y visualización
Programación Básica
Referencias

Nombres de variables

A partir de #, todo lo escrito en la lı́nea lo ignora el programa


# Constituye un comentario
Imprescindible para colaboraciones y trabajo posterior
\\ indica que la lı́nea de código continúa en la siguiente

Variables
De cualquier extensión a partir de letras, números y “ ”
No pueden comenzar con números
Minúsculas y mayúsculas son distintas
No utilizar espacios antes de una sentencia (“statement”)

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
Motivación e Instalación
Fundamentos de Python
Versiones y Entornos de desarrollo
Visual Python; gráficos avanzados y visualización
Programación Básica
Referencias

Tipos de variables

Tipos
Entero: 1 int
Real: 1.0 o 1.0e0 float
Complejo: 1 + 2j o 1 + 2e0j complex
Cadena: “Yo soy una cadena ,” str

En Python el tipo es dinámico y lo determina el valor asignado


Importante: Utilizar el tipo adecuado a la cantidad

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
Motivación e Instalación
Fundamentos de Python
Versiones y Entornos de desarrollo
Visual Python; gráficos avanzados y visualización
Programación Básica
Referencias

Entrada / Salida

Entrada
input() o input(“Introduce un número: ”) y el programa
espera la entrada
Importante: Cualquier entrada es una “cadena”
x = int(input()), y = float(input()), z = complex(input())
convierte al tipo deseado

Salida
print(..., ..., ...) Puede tener varios argumentos separados por
“,”
print(..., ..., ..., sep = “x”) para indicar que se utilice el
separador “x” a la salida

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
Motivación e Instalación
Fundamentos de Python
Versiones y Entornos de desarrollo
Visual Python; gráficos avanzados y visualización
Programación Básica
Referencias

Aritmética

Operadores
+, -, *, /, **, //, %
// es la división entera y redondea al menor entero más
cercano
% no es válida para complejos
Precedencia: como en álgebra

El tipo resultante de una operación es siempre el más general


de los tipos participantes, excepto para “/” cuyo resultado es
siempre flotante o complejo

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
Motivación e Instalación
Fundamentos de Python
Versiones y Entornos de desarrollo
Visual Python; gráficos avanzados y visualización
Programación Básica
Referencias

Asignación y Modificadores

Asignación
“=” Operador asignación, el valor de la derecha se calcula y
asigna a la variable de la izquierda; x = a + 5
En Python es posible la múltiple asignación: x, y = 2, a + b
Caso importante, intercambio de valores: x, y = y, x

Modificadores
+=, -=, *=, /=, //=
x /= 10∗y equivale a x = x / (10∗y)

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
Motivación e Instalación
Fundamentos de Python
Versiones y Entornos de desarrollo
Visual Python; gráficos avanzados y visualización
Programación Básica
Referencias

Paquetes y módulos

Paquetes
Colección de funciones y constantes
from math import log, pi Carga la función logaritmo natural y
la constante “pi” en la memoria
from cmath import * Carga todas las funciones de un paquete
¡y asegura problemas posteriormente!

Módulos
Subconjunto de un paquete extenso dividido por conveniencia
from numpy.linalg import inv Carga la función inv del módulo
de álgebra lineal

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
Motivación e Instalación
Fundamentos de Python
Versiones y Entornos de desarrollo
Visual Python; gráficos avanzados y visualización
Programación Básica
Referencias

Colecciones

Listas
[1, 2, 3, ...] conjunto ordenado de elementos
[1, ..., 1 +2j, ..., “cadena”, [1, 2, 3] ] admite cualquier tipo
r = [x, y, z, ...] válido si x, y, z, ... ya tienen valores
r = [x+y, 2*y, sqrt(z), ...] definibles mediante operaciones
r[0], r[1], r[2], ..., r[m][n] identificación de los elementos
r[2] = 3+5j individualmente asignables
r = [ ] pueden crearse vacı́as

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
Motivación e Instalación
Fundamentos de Python
Versiones y Entornos de desarrollo
Visual Python; gráficos avanzados y visualización
Programación Básica
Referencias

Colecciones

Funciones y métodos principales para listas


sum[r], min[r], max[r], len[r] funciones para listas en Python
map(log,r) operación simultánea mediante map
logr = list(map(log,r)) generación de la nueva lista con list
r.append(5) agrega “5” en posición r[n+1] con .append
r.pop() elimina el último elemento con .pop

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
Motivación e Instalación
Fundamentos de Python
Versiones y Entornos de desarrollo
Visual Python; gráficos avanzados y visualización
Programación Básica
Referencias

Colecciones

Tablas
[1 2 3] número fijo de elementos
[1+2j 2+3j 3+4j] un solo tipo
r = [[a b c ] [d e f] [g h i]] cualquier dimensión
r = 2 ∗ [1 2 3] + [4 5 6] admite operaciones aritméticas
c = 16 ∗ b crea una tabla a partir de la tabla “b”
r[0], r[1], r[2], ..., r[m, n] identificación de los elementos

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
Motivación e Instalación
Fundamentos de Python
Versiones y Entornos de desarrollo
Visual Python; gráficos avanzados y visualización
Programación Básica
Referencias

Colecciones

Funciones principales para tablas; disponibles en numpy


a = empty(m, float), a = zeros([m,n], float),
a = ones(n, float) crean e inicializan tablas
b = array([[1, 2], [3, 4]], int) crea una tabla directamente
c = array(map(sqrt, b), float) crea una tabla a partir de map
y array
d = loadtxt(“values.txt”, float) crea una tabla a partir de los
valores en el fichero de texto “values.txt”
c = dot(a, b) producto de matrices o escalar de vectores
b = dot(a, v) o c = dot(v, a) producto de vectores y matrices

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
Motivación e Instalación
Fundamentos de Python
Versiones y Entornos de desarrollo
Visual Python; gráficos avanzados y visualización
Programación Básica
Referencias

Subconjuntos de listas y tablas


s = r[m: n] crea el subconjunto que va del elemento “m” al
“n-1”
t = r[m:] del elemento “m” al último de “r”
u = r[:n] desde el inicio de “r” hasta el elemento “n-1”
v = r[:] incluye la lista completa
w = r[i, k:l] columna “k” a “l-1” de la fila “i”
x = q[i:j, k:l] matriz a partir de la fila “i” a “j-1” y de las
columnas “k” a “l-1”
y = q[i, :] toda la fila “i”
z = q[:, j] toda la columna “j”

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
Motivación e Instalación
Fundamentos de Python
Versiones y Entornos de desarrollo
Visual Python; gráficos avanzados y visualización
Programación Básica
Referencias

Secuencias de control

Condiciones
==, >, >=, <, <=, ! =
if x == 10:
Usar and u or para más de una condición

La sangrı́a delimita lo que pertenece a la sentencia de control

if
if x > 10: atención a los dos puntos
print(“x es mayor que 10”) ¡atención a la sangrı́a!
print(“x es menor o igual a 10”)

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
Motivación e Instalación
Fundamentos de Python
Versiones y Entornos de desarrollo
Visual Python; gráficos avanzados y visualización
Programación Básica
Referencias

Secuencias de control

if, elif, else


x = int(input(“Introduce un entero menor o igual a 10”))
if x > 10:
print(“x es mayor que 10”)
elif x == 9: dos puntos y sin sangrı́a; elimina excesivas sangrı́as
print(“bien, pero muy cercano a 10”) sangrı́a
else: dos puntos nuevamente y sin sangrı́a Opcional
print(“¡Por fin lo haces bien!”) sangrı́a, orden vertical

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
Motivación e Instalación
Fundamentos de Python
Versiones y Entornos de desarrollo
Visual Python; gráficos avanzados y visualización
Programación Básica
Referencias

Secuencias de control

while
x = int(input(“Introduce un entero menor o igual a 10”))
while x > 10: dos puntos
print(“Tu número es mayor que 10.”) sangrı́a
x=int( input(“Inténtalo nuevamente. ¡Tú puedes!”))
print(“¡Por fin lo haces bien!”) no hay sangrı́a

else: si no se cumple la condición. Opcional


break expulsa del lazo while
continue evita el resto del lazo while y vuelve a comenzarlo

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
Motivación e Instalación
Fundamentos de Python
Versiones y Entornos de desarrollo
Visual Python; gráficos avanzados y visualización
Programación Básica
Referencias

Secuencias de control

for, range
r = [1, 3, 5]
for n in r: dos puntos
print(n) sangrı́a
for n in range(5): dos puntos
print(2 ∗ n) sangrı́a

for recorre los valores de una lista o tabla


puede incluir break y continue
range(2, 10) itera de 2 a 9
range(2, 20, 3) itera de 2 a 17 de 3 en 3
range(20, 2, -3) itera de 20 a 5 de -3 en -3

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
Motivación e Instalación
Fundamentos de Python
Versiones y Entornos de desarrollo
Visual Python; gráficos avanzados y visualización
Programación Básica
Referencias

Secuencias de control

Otras funciones para for; disponibles en numpy


for n in arange(2.0, 2.8, 0.2):
print(n)
for n in linspace(2.0, 2.8, 5):
print(n)

arange crea una tabla y admite argumentos reales y enteros


En arange, el tercer argumento da el incremento
linspace crea una tabla de reales a partir de reales o enteros
linspace incluye el último elemento
En linspace, el tercer argumento da el número de elementos

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
Motivación e Instalación
Fundamentos de Python
Versiones y Entornos de desarrollo
Visual Python; gráficos avanzados y visualización
Programación Básica
Referencias

Definición de funciones

Funciones
from math import pi, sqrt, sin, cos
def cilindricas cartesianas(r, theta, z): dos puntos
x = r ∗ cos(theta) sangrı́a
y = r ∗ sin(theta) sangrı́a
d = sqrt(x∗∗2 + y∗∗2 + z∗∗2) sangrı́a
cartesianas = array([x, y, z], float) sangrı́a
return d, cartesianas sangrı́a
distancia, coordenadas = cilindricas cartesianas(1, pi/4, 2)
print(“distancia = ”, distancia)
print(“coordenadas cartesianas = ”, coordenadas)

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
Motivación e Instalación
Fundamentos de Python
Versiones y Entornos de desarrollo
Visual Python; gráficos avanzados y visualización
Programación Básica
Referencias

Definición de funciones

Funciones sin retorno


def imprime vector(r):
print(“(”, r[0], r[1], ..., r[9], “)”)
r = array(range(10), float)
imprime vector(r)

Las funciones pueden definirse en un fichero distinto, como


misfunciones.py
from misfunciones import imprime vector
Práctica: Ejemplo 2.1 [Newman, 2012]
Práctica: Ejercicio 2.5 [Newman, 2012]
Práctica: Ejercicio 2.7 [Newman, 2012]

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
MatPlotLib - Gráficas
Fundamentos de Python
VPython - Visualización Tridimensional
Visual Python; gráficos avanzados y visualización
VPython - Movimiento
Referencias

Gráficas lineales

Newman 3C.py
David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.
Fı́sica Computacional
MatPlotLib - Gráficas
Fundamentos de Python
VPython - Visualización Tridimensional
Visual Python; gráficos avanzados y visualización
VPython - Movimiento
Referencias

Gráficas lineales

plot y show; disponibles en pylab


from pylab import plot, show, ylim, xlabel, ylabel, legend, title
from numpy import linspace, sin, exp, pi
x1, x2 = linspace(0.0, 2.0, 20), linspace(0.0, 2.0, 200)
y1, y2, y3 = exp(-x1), exp(-x2), sin(2 * pi * x2)
y4 = y2 * y3
l1, l3, l4 = plot(x1, y1, “bD–”), plot(x2, y3, “go-”), plot(x2, y4, “rs-”)
ylim(-1.1, 1.1)
xlabel(“Segundos”)
ylabel(“Voltios”)
legend( (l3[0], l4[0]), (“Oscilatorio”, “Amortiguado”), shadow = True )
title(“Movimiento Oscilatorio Amortiguado”)
show()

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
MatPlotLib - Gráficas
Fundamentos de Python
VPython - Visualización Tridimensional
Visual Python; gráficos avanzados y visualización
VPython - Movimiento
Referencias

Gráficas lineales

plot(y) crea gráfica de la lista y en la memoria del ordenador


plot(x, y) crea gráfica de las listas [x, y]
plot(x, y, “...”) tercer argumento indica el estilo de la curva
Opcional
show() representa gráficas en pantalla y bloquea el programa
xlim, ylim, xlabel, legend, title Opcionales
www.matplotlib.org para ejemplos y personalización con pylab

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
MatPlotLib - Gráficas
Fundamentos de Python
VPython - Visualización Tridimensional
Visual Python; gráficos avanzados y visualización
VPython - Movimiento
Referencias

Diagramas de dispersión

Newman 3D.py
David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.
Fı́sica Computacional
MatPlotLib - Gráficas
Fundamentos de Python
VPython - Visualización Tridimensional
Visual Python; gráficos avanzados y visualización
VPython - Movimiento
Referencias

Diagramas de dispersión

scatter y loadtxt; disponibles en pylab y numpy respectivamente


from pylab import scatter, xlabel, ylabel, xlim, ylim, title, show, text
from numpy import loadtxt
datos = loadtxt(“stars.txt”, float)
x, y = datos[: , 0], datos[: , 1]
scatter(x, y, c = x, cmap = “hsv”, s = 75)
xlabel(“Temperatura”)
ylabel(“Magnitud”)
xlim(13000, 0)
ylim(20, -5)
text(4500, 4.5, “Secuencia Principal”, fontsize = 14, style = “italic”)
text(11000, 15, “Enanas Blancas”, fontsize = 14, style = “italic”)
title(“Diagrama Hertzsprung-Russell”)
show()

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
MatPlotLib - Gráficas
Fundamentos de Python
VPython - Visualización Tridimensional
Visual Python; gráficos avanzados y visualización
VPython - Movimiento
Referencias

Diagramas de dispersión

scatter(x, y) crea diagrama de dispersión de la lista [x, y]


scatter(x, y, “...”) el tercer argumento agrega atributos al
diagrama de dispersión: c indica el color,
cmap el mapa de colores y s el tamaño; Opcional
text y sus parámetros fontsize y style son Opcionales
Importante loadtxt de numpy para lectura de fichero de datos
datos = loadtxt(“valores.dat”, float)
x, y = datos[ : , 0], datos[ : , 1]
scatter(x, y)
show()

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
MatPlotLib - Gráficas
Fundamentos de Python
VPython - Visualización Tridimensional
Visual Python; gráficos avanzados y visualización
VPython - Movimiento
Referencias

Gráficas de contorno

Newman 3E.py
David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.
Fı́sica Computacional
MatPlotLib - Gráficas
Fundamentos de Python
VPython - Visualización Tridimensional
Visual Python; gráficos avanzados y visualización
VPython - Movimiento
Referencias

Gráficas de contorno

imshow, colorbar; disponibles en pylab


from pylab import imshow, show, jet, colorbar
from numpy import loadtxt
datos = loadtxt(“circular.txt”, float)
imshow(datos), jet(), colorbar()
show()

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
MatPlotLib - Gráficas
Fundamentos de Python
VPython - Visualización Tridimensional
Visual Python; gráficos avanzados y visualización
VPython - Movimiento
Referencias

Gráficas de contorno

imshow(datos) crea una gráfica de contorno de la matriz datos


los ejes son ı́ndices de las filas y columnas de la matriz datos
el eje y representa las filas i; el eje x representa las columnas j
imshow(datos, origin =“lower”) para origen habitual
los mapas de colores son funciones persistentes de pylab
Ejemplos: gray(), hsv(), hot(), spectral(), jet() (por defecto)
colorbar() para proporcionar valores cuantitativos
extent[xi , xf , yi , yf ] para escala de los ejes
aspect = r para cambio de razón vertical a horizontal
xlim, ylim escogen el rango de valores a representar

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
MatPlotLib - Gráficas
Fundamentos de Python
VPython - Visualización Tridimensional
Visual Python; gráficos avanzados y visualización
VPython - Movimiento
Referencias

Gráficos tridimensionales

Newman 3F.py

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
MatPlotLib - Gráficas
Fundamentos de Python
VPython - Visualización Tridimensional
Visual Python; gráficos avanzados y visualización
VPython - Movimiento
Referencias

Gráficos tridimensionales

sphere, color, vector; disponibles en vpython


from vpython import sphere, color, vector
L, M, N = 5, 4, 3
RNa, RCl = 0.5, 0.4
colNa, colCl = color.green, color.magenta
...
...
...
for i in range(-L, L+1, 2):
sphere(pos = vector(i, j, k), radius = RNa, color =
colNa)
for i in range(-L+1, L+1, 2):
sphere(pos = vector(i, j, k), radius = RCl, color =
colCl)
...
David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.
Fı́sica Computacional
MatPlotLib - Gráficas
Fundamentos de Python
VPython - Visualización Tridimensional
Visual Python; gráficos avanzados y visualización
VPython - Movimiento
Referencias

for k in range(-N, N+1, 2):


for j in range(-M, M+1, 2):
for i in range(-L, L+1, 2):
sphere(pos = vector(i, j, k), radius = RNa, color = colNa)
for i in range(-L+1, L+1, 2):
sphere(pos = vector(i, j, k), radius = RCl, color = colCl)
for j in range(-M+1, M+1, 2):
for i in range(-L, L+1, 2):
sphere(pos = vector(i, j, k), radius = RCl, color = colCl)
for i in range(-L+1, L+1, 2):
sphere(pos = vector(i, j, k), radius = RNa, color = colNa)
for k in range(-N+1, N+1, 2):
for j in range(-M, M+1, 2):
for i in range(-L, L+1, 2):
sphere(pos = vector(i, j, k), radius = RCl, color = colCl)
for i in range(-L+1, L+1, 2):
sphere(pos = vector(i, j, k), radius = RNa, color = colNa)
for j in range(-M+1, M+1, 2):
for i in range(-L, L+1, 2):
sphere(pos = vector(i, j, k), radius = RNa, color = colNa)
for i in range(-L+1, L+1, 2):
sphere(pos = vector(i, j, k), radius = RCl, color = colCl)

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
MatPlotLib - Gráficas
Fundamentos de Python
VPython - Visualización Tridimensional
Visual Python; gráficos avanzados y visualización
VPython - Movimiento
Referencias

Gráficos tridimensionales

sphere() crea una esfera


sphere(pos = vector(x, y, z), radius = R, color = color.red)
crea esfera roja de radio R en (x, y, z)
s = sphere() crea variable s tipo sphere
s.radius = R, s.color = color.red, s.pos = vector(x, y, z)
permiten cambiar caracterı́sticas en vivo
box, cone, cylinder, pyramid, arrow para otros objetos, con sus
propios parámetros Opcionales
www.vpython.org es la referencia básica

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
MatPlotLib - Gráficas
Fundamentos de Python
VPython - Visualización Tridimensional
Visual Python; gráficos avanzados y visualización
VPython - Movimiento
Referencias

Movimiento

Newman 3G.py
David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.
Fı́sica Computacional
MatPlotLib - Gráficas
Fundamentos de Python
VPython - Visualización Tridimensional
Visual Python; gráficos avanzados y visualización
VPython - Movimiento
Referencias

Movimiento

canvas, rate; disponibles en vpython


from vpython import canvas, color, rate, sphere, vector
from math import cos, sin, pi
from numpy import arange
canvas(x = 500, y = 200, width = 500, height = 500, center = [0,0,1], \
forward = [0, 0, -1], background = color.blue, foreground = [1,1,0])
s=[]
s.append(sphere(pos=vector(1, 0, 0), radius = 0.25, color = color.yellow)
for theta in arange(0, 10*pi, 0.1):
rate(30)
x = cos(theta)
y = sin(theta)
s[0].pos = vector(x, y, 0)

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
MatPlotLib - Gráficas
Fundamentos de Python
VPython - Visualización Tridimensional
Visual Python; gráficos avanzados y visualización
VPython - Movimiento
Referencias

Movimiento

rate(x) fuerza un intervalo de 1/x de segundo desde último


rate
canvas permite cambiar las caracterı́sticas de la pantalla de
proyección y el punto de observación
d = canvas() crea variable s tipo canvas
d.background = color.blue, etc. permite cambiar
caracterı́sticas de la pantalla posteriormente
d.autoscale = False elimina el cambio automático de pantalla
Práctica: Ejercicio 3.1 [Newman, 2012]

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.


Fı́sica Computacional
Fundamentos de Python
Visual Python; gráficos avanzados y visualización
Referencias

Referencias

Mark Newman (2012)


Computational Physics

www.python.org
Python

www.scipy.org
SciPy y Numpy

www.matplotlib.org
Matplotlib

www.vpython.org
Visual Python

www.stackoverflow.org
Stackoverflow
David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.
Fı́sica Computacional
Fundamentos de Python
Visual Python; gráficos avanzados y visualización
Referencias

Fin del Tema 1

David Martı́n y Marero U. Autónoma de Madrid. Computación Avanzada. Tema 1.

También podría gustarte