Tema1_IntroPython
Tema1_IntroPython
Fundamentos de Python
Visual Python; gráficos avanzados y visualización
Referencias
Tema 1
Python
30 de enero de 2024
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
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
La fı́sica hoy
Computacional
Experimental Teórica
Bibliografı́a Principal
http://www-personal.umich.edu/ mejn/computational-physics/
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
Pragmatismo
Lenguajes distintos y lenguas diferentes para entornos distintos
¡Python es GRATIS! El lenguaje y los programas ,,
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
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)
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
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”
Nombres de variables
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”)
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
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
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
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)
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
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
Colecciones
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
Colecciones
Secuencias de control
Condiciones
==, >, >=, <, <=, ! =
if x == 10:
Usar and u or para más de una condición
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”)
Secuencias de control
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
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
Secuencias de control
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)
Definición de funciones
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
Gráficas lineales
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
Diagramas de dispersión
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
Gráficas de contorno
Gráficos tridimensionales
Newman 3F.py
Gráficos tridimensionales
Gráficos tridimensionales
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
Movimiento
Referencias
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