Python en Ciencia

🎯 Objetivos del capítulo

1. 🔬 Física

Simulación de Movimiento

En este ejercicio, vamos a simular el movimiento de un objeto bajo la influencia de la gravedad y visualizar la trayectoria usando la biblioteca matplotlib. Este ejercicio es excelente para practicar el uso de bibliotecas de visualización y operaciones matemáticas en Python.

Contexto

La simulación de movimientos es una aplicación común en física y matemáticas. En este ejercicio, simularemos la trayectoria de un proyectil lanzado con una velocidad inicial y un ángulo de lanzamiento específicos. Usaremos las ecuaciones del movimiento para calcular la posición del proyectil en diferentes momentos y visualizaremos la trayectoria usando matplotlib.

Objetivos del Ejercicio

Desafío:

El objetivo de este ejercicio es escribir una función en Python que simule el movimiento de un proyectil bajo la influencia de la gravedad, visualizando la trayectoria con matplotlib.

  1. Definir los parámetros de la simulación: Establecer valores para la gravedad, el tiempo, la velocidad inicial y el ángulo de lanzamiento.
  2. Calcular la trayectoria del proyectil: Usar las ecuaciones del movimiento para determinar las posiciones x y y del proyectil en función del tiempo.
  3. Visualizar la trayectoria: Crear una gráfica que muestre la trayectoria del proyectil, añadiendo efectos visuales para mejorar la presentación.
  4. Probar la simulación: Ajustar los parámetros para ver cómo afectan la trayectoria del proyectil.

Código para la Simulación de Movimiento

Explicación del Código

Este código define la simulación de movimiento de un proyectil y realiza lo siguiente:

  1. Parámetros de Entrada:
    • g: Aceleración debido a la gravedad (m/s²).
    • t: Tiempo en segundos, generando 100 puntos entre 0 y 5 segundos.
    • v0: Velocidad inicial del proyectil (m/s).
    • theta: Ángulo de lanzamiento convertido a radianes.
  2. Componentes de la Velocidad Inicial:
    • vx: Componente horizontal de la velocidad inicial.
    • vy: Componente vertical de la velocidad inicial.
  3. Trayectoria:
    • x: Posición horizontal en función del tiempo.
    • y: Posición vertical en función del tiempo considerando la gravedad.
  4. Punto Más Alto:
    • Calcula y anota el punto más alto de la trayectoria del proyectil.
  5. Visualización:
    • Configura la visualización de la trayectoria usando matplotlib, añadiendo efectos visuales como un color degradado, un fondo personalizado, y un sol con rayos.

Ejemplo de Uso

El código de ejemplo muestra cómo usar los parámetros definidos para simular la trayectoria de un proyectil con una velocidad inicial de 20 m/s y un ángulo de lanzamiento de 45 grados.

Prueba y Modificación

Para hacer el ejemplo más entretenido, los estudiantes pueden cambiar los siguientes parámetros y observar cómo afectan la trayectoria del proyectil:

  1. Velocidad Inicial (v0):
    • Cambiar v0 a diferentes valores como 10, 30 o 50 m/s para ver cómo la velocidad inicial afecta la distancia y altura máxima alcanzada.
  2. Ángulo de Lanzamiento (theta):
    • Cambiar theta a diferentes ángulos como 30, 60 o 75 grados para ver cómo el ángulo de lanzamiento afecta la trayectoria.
  3. Tiempo (t):
    • Cambiar el rango de tiempo y la cantidad de puntos en el tiempo para observar trayectorias más largas o más cortas.

Estos cambios permiten a los estudiantes experimentar con diferentes escenarios y entender mejor cómo las variables iniciales afectan el movimiento de un proyectil, haciendo el ejercicio más interactivo y entretenido.

Simulación de Movimiento Armónico Simple

En este ejercicio, vamos a simular el movimiento de un oscilador armónico simple y visualizar la posición del oscilador en función del tiempo usando la biblioteca matplotlib. Este ejercicio es excelente para practicar el uso de bibliotecas de visualización y operaciones matemáticas en Python.

Contexto

El movimiento armónico simple es un tipo de oscilación que se describe con la ecuación diferencial de un resorte ideal sin fricción. La posición del oscilador en función del tiempo se puede describir usando la función coseno. Este tipo de movimiento es común en sistemas físicos como péndulos y resortes.

Objetivos del Ejercicio

Desafío:

El objetivo de este ejercicio es escribir una función en Python que simule el movimiento de un oscilador armónico simple y visualice la posición del oscilador en función del tiempo usando matplotlib.

  1. Importar bibliotecas: Usaremos numpy para las operaciones matemáticas y matplotlib para la visualización.
  2. Definir parámetros del oscilador: Estableceremos los parámetros como la masa del oscilador, la constante del resorte, la frecuencia angular y la amplitud.
  3. Calcular la posición: Usaremos la fórmula del movimiento armónico simple para calcular la posición del oscilador en diferentes momentos.
  4. Visualizar la posición: Crearemos una gráfica de la posición del oscilador en función del tiempo utilizando matplotlib.

Código para la Simulación de Movimiento Armónico Simple

Explicación del Código

Este código define la simulación del movimiento de un oscilador armónico simple y realiza lo siguiente:

  1. Parámetros de Entrada:
    • m: Masa del oscilador (kg).
    • k: Constante del resorte (N/m).
    • omega: Frecuencia angular (rad/s), calculada a partir de m y k.
    • A: Amplitud del movimiento (m).
    • t: Tiempo en segundos, generando 500 puntos entre 0 y 10 segundos.
  2. Posición como Función del Tiempo:
    • x: Posición del oscilador en función del tiempo usando la fórmula del movimiento armónico simple ( x = A (t) ).
  3. Visualización:
    • Configura la visualización de la posición del oscilador usando matplotlib, añadiendo efectos visuales como un color degradado y un fondo personalizado.
    • Anota puntos de interés como la amplitud máxima.

Ejemplo de Uso

El código de ejemplo muestra cómo usar los parámetros definidos para simular la posición de un oscilador con una masa de 5 kg, una constante del resorte de 10 N/m, una amplitud de 25 m y una frecuencia angular calculada.

Prueba y Modificación

Para hacer el ejemplo más entretenido, los estudiantes pueden cambiar los siguientes parámetros y observar cómo afectan la posición del oscilador:

  1. Masa del Oscilador (m):
    • Cambiar m a diferentes valores como 2.0, 8.0 o 10.0 kg para ver cómo la masa afecta la frecuencia angular y el movimiento.
  2. Constante del Resorte (k):
    • Cambiar k a diferentes valores como 5.0, 20.0 o 50.0 N/m para ver cómo la constante del resorte afecta la frecuencia angular y el movimiento.
  3. Amplitud (A):
    • Cambiar A a diferentes valores como 10, 50 o 75 m para ver cómo la amplitud afecta la posición del oscilador.
  4. Tiempo (t):
    • Cambiar el rango de tiempo y la cantidad de puntos en el tiempo para observar oscilaciones más largas o más cortas.

Estos cambios permiten a los estudiantes experimentar con diferentes escenarios y entender mejor cómo las variables iniciales afectan el movimiento del oscilador armónico simple, haciendo el ejercicio más interactivo y entretenido.

2. 📈 Estadística y Probabilidad

Lanzamiento de Moneda

En este ejercicio, vamos a simular el lanzamiento de una moneda y calcular la probabilidad de obtener cara o cruz. Este ejercicio es excelente para practicar el uso de arrays y funciones estadísticas en Python con la biblioteca numpy.

Contexto

El lanzamiento de una moneda es un experimento clásico en probabilidad. En cada lanzamiento, hay una probabilidad del 50% de obtener cara y una probabilidad del 50% de obtener cruz. Simulando múltiples lanzamientos, podemos estimar las probabilidades experimentales y compararlas con las probabilidades teóricas.

Objetivos del Ejercicio

Desafío:

El objetivo de este ejercicio es escribir un programa en Python que simule el lanzamiento de una moneda, cuente las ocurrencias de cara y cruz, y calcule las probabilidades de cada resultado.

  1. Importar bibliotecas: Usaremos numpy para generar los lanzamientos de la moneda y calcular las frecuencias.
  2. Simular lanzamientos: Generaremos un número específico de lanzamientos de la moneda utilizando numpy.random.choice.
  3. Calcular frecuencias: Contaremos las ocurrencias de cara y cruz.
  4. Calcular probabilidades: Calcularemos las probabilidades de obtener cara y cruz basadas en las frecuencias.
  5. Mostrar los resultados: Imprimiremos las frecuencias y probabilidades calculadas.

Código para el Lanzamiento de Moneda

Explicación del Código

Este código simula el lanzamiento de una moneda y realiza lo siguiente:

  1. Número de Lanzamientos:
    • n_lanzamientos: Define el número de lanzamientos a simular.
  2. Simulación de Lanzamientos:
    • lanzamientos: Utiliza np.random.choice para generar una secuencia de ‘Cara’ y ‘Cruz’.
  3. Cálculo de Frecuencias:
    • caras: Cuenta el número de veces que aparece ‘Cara’.
    • cruces: Cuenta el número de veces que aparece ‘Cruz’.
  4. Cálculo de Probabilidades:
    • prob_cara: Calcula la probabilidad de obtener ‘Cara’.
    • prob_cruz: Calcula la probabilidad de obtener ‘Cruz’.
  5. Visualización:
    • Gráfico de barras para mostrar la frecuencia de cada resultado.
    • Gráfico de líneas para mostrar las probabilidades acumuladas de cada resultado a lo largo de los lanzamientos.

Ejemplo de Uso

El código de ejemplo muestra cómo simular 100 lanzamientos de una moneda y calcular las probabilidades de obtener cara o cruz. Los resultados se muestran en gráficos para facilitar la visualización.

Prueba y Modificación

Para hacer el ejemplo más entretenido, los estudiantes pueden cambiar los siguientes parámetros y observar cómo afectan los resultados:

  1. Número de Lanzamientos (n_lanzamientos):
    • Cambiar n_lanzamientos a diferentes valores como 200, 500 o 1000 para ver cómo el número de lanzamientos afecta la precisión de las probabilidades calculadas.

Estos cambios permiten a los estudiantes experimentar con diferentes escenarios y entender mejor cómo las variables iniciales afectan los resultados de la simulación, haciendo el ejercicio más interactivo y entretenido.

Lanzamiento de Dados

En este ejercicio, vamos a simular el lanzamiento de dos dados y calcular la frecuencia de cada suma posible. Este ejercicio es excelente para practicar el uso de arrays, funciones estadísticas y diccionarios en Python con la biblioteca numpy.

Contexto

El lanzamiento de dos dados es un experimento clásico en probabilidad. Cada dado tiene seis caras, numeradas del 1 al 6. Cuando se lanzan dos dados, las sumas posibles de los números en las caras superiores van desde 2 hasta 12. Simulando múltiples lanzamientos, podemos calcular la frecuencia de cada suma y analizar la distribución de los resultados.

Objetivos del Ejercicio

Desafío:

El objetivo de este ejercicio es escribir un programa en Python que simule el lanzamiento de dos dados, calcule la frecuencia de cada suma posible y muestre los resultados.

  1. Importar bibliotecas: Usaremos numpy para generar los lanzamientos de los dados y calcular las frecuencias.
  2. Simular lanzamientos: Generaremos un número específico de lanzamientos de dos dados utilizando numpy.random.randint.
  3. Calcular sumas: Calcularemos las sumas de los resultados de los dos dados.
  4. Calcular frecuencias: Contaremos las ocurrencias de cada suma posible usando un diccionario.
  5. Mostrar los resultados: Imprimiremos la frecuencia de cada suma calculada y visualizaremos los resultados con gráficos.

Código para el Lanzamiento de Dados

Explicación del Código

Este código simula el lanzamiento de dos dados y realiza lo siguiente:

  1. Número de Lanzamientos:
    • n_lanzamientos: Define el número de lanzamientos a simular.
  2. Simulación de Lanzamientos:
    • dado1 y dado2: Utiliza np.random.randint para generar los resultados de los lanzamientos de los dos dados.
    • sumas: Calcula las sumas de los resultados de los dos dados.
  3. Cálculo de Frecuencias:
    • frecuencias: Cuenta las ocurrencias de cada suma posible usando un diccionario.
  4. Visualización:
    • Gráfico de barras para mostrar la frecuencia de cada suma.
    • Gráfico de líneas para mostrar la frecuencia acumulada de las sumas.
    • Histograma para mostrar la distribución de las sumas.

Ejemplo de Uso

El código de ejemplo muestra cómo simular 100 lanzamientos de dos dados y calcular la frecuencia de cada suma posible. Los resultados se muestran en gráficos para facilitar la visualización.

Prueba y Modificación

Para hacer el ejemplo más entretenido, los estudiantes pueden cambiar los siguientes parámetros y observar cómo afectan los resultados:

  1. Número de Lanzamientos (n_lanzamientos):
    • Cambiar n_lanzamientos a diferentes valores como 200, 500 o 1000 para ver cómo el número de lanzamientos afecta la precisión de las frecuencias calculadas.

Estos cambios permiten a los estudiantes experimentar con diferentes escenarios y entender mejor cómo las variables iniciales afectan los resultados de la simulación, haciendo el ejercicio más interactivo y entretenido.