Entramos en la fase donde Python realmente brilla para la ingeniería: el análisis numérico y la visualización gráfica.
A partir de esta semana, los estudiantes dejarán de procesar datos uno por uno y aprenderán a manejar bloques masivos de información de forma instantánea. He diseñado este cuaderno para que sirva de puente entre la lógica básica (bucles y funciones) y las aplicaciones de cálculo avanzado que verán en sus respectivas ramas (Estática y Procesos de Secado).
Aquí tienes el cuaderno de la Semana 9 completamente limpio y estructurado para Google Colab:
# SEMANA 9: Análisis Numérico y Visualización Gráfica
**Asignatura:** Programación de Computadores con Python
**Programas:** Ingeniería Agrícola, Civil y Agroindustrial
Bienvenidos a la segunda mitad del curso. Hasta ahora hemos procesado datos uno por uno usando variables simples. Sin embargo, en la ingeniería real manejamos cientos o miles de datos al mismo tiempo: lecturas de sensores por minuto, fuerzas a lo largo de una viga, o registros de temperatura en un secador solar.
Esta semana aprenderemos a utilizar dos de las herramientas (librerías) más potentes del mundo científico: **NumPy** (para cálculos matemáticos masivos) y **Matplotlib** (para graficar esos resultados).
**Objetivos de Aprendizaje:**
* Importar y utilizar librerías externas en Python.
* Crear y manipular arreglos numéricos (vectores) con NumPy.
* Realizar operaciones matemáticas masivas sin usar bucles `for` (Vectorización).
* Generar gráficos de ingeniería profesionales (curvas, dispersión) con Matplotlib.
## SESIÓN 1: La Potencia Numérica de NumPy
**¿Por qué necesitamos NumPy?**
Imagina que tienes una lista con 1000 mediciones de temperatura en grados Celsius y necesitas convertirlas a Kelvin (sumando 273.15). Con lo que sabíamos hasta hoy, tendríamos que usar un bucle `for` para sumar el valor dato por dato.
**NumPy** (Numerical Python) nos permite crear "arreglos" (arrays), que son como listas superpoderosas. NumPy puede sumar, multiplicar o aplicar fórmulas complejas a miles de datos de forma simultánea en una fracción de segundo. A esto se le llama **vectorización**.
Primero, debemos importar la librería a nuestro cuaderno. Por convención mundial, NumPy siempre se importa con el apodo `np`.
# Importamos la librería
import numpy as np
# Creamos un arreglo numérico (vector) simulando mediciones de campo
temperaturas_celsius = np.array([25.5, 28.0, 31.2, 35.5, 40.0])
# Imprimimos el arreglo
print("Datos originales en Celsius:", temperaturas_celsius)
### Operaciones Matemáticas Masivas (Vectorización)
Mira lo fácil que es aplicar una fórmula a todos los datos a la vez, sin usar un solo ciclo `for`. Vamos a convertir las temperaturas a Kelvin y a calcular la presión hidrostática a diferentes profundidades de un tanque.
# 1. Operación masiva de suma (Agroindustrial / Agrícola)
temperaturas_kelvin = temperaturas_celsius + 273.15
print("Temperaturas convertidas a Kelvin:", temperaturas_kelvin)
print("\n---")
# 2. Aplicar una fórmula de ingeniería a un vector (Civil / Agrícola)
# Fórmula de presión hidrostática: P = densidad * gravedad * altura
densidad_agua = 1000 # kg/m^3
gravedad = 9.81 # m/s^2
profundidades = np.array([1.0, 2.5, 5.0, 10.0]) # metros
# Multiplicación masiva en una sola línea
presiones_pa = densidad_agua * gravedad * profundidades
print("Presiones calculadas a diferentes profundidades (Pa):")
print(presiones_pa)
---
## SESIÓN 2: Visualización de Datos con Matplotlib
Un ingeniero no solo calcula; necesita mostrar sus resultados de forma gráfica para tomar decisiones. **Matplotlib** es la librería estándar de Python para crear gráficos en 2D.
El submódulo que más utilizaremos es `pyplot`, el cual se importa universalmente con el apodo `plt`.
### Creando nuestro primer gráfico de ingeniería
Vamos a graficar el perfil de secado de un producto agrícola (cómo cambia la humedad a lo largo de las horas).
# Importamos la librería gráfica
import matplotlib.pyplot as plt
# Datos para graficar (Eje X: Tiempo, Eje Y: Humedad)
horas = np.array([0, 2, 4, 6, 8, 10])
humedad_porcentaje = np.array([85.0, 70.5, 50.0, 35.2, 20.1, 12.0])
# Creamos el gráfico de línea
plt.plot(horas, humedad_porcentaje)
# Mostramos el gráfico en pantalla
plt.show()
### Dándole formato profesional al gráfico
Un gráfico sin etiquetas no sirve en un informe técnico. Matplotlib nos permite personalizar absolutamente todo: títulos, nombres de ejes, cuadrículas y colores. Vamos a mejorar el gráfico anterior y agregarle "puntos" para marcar dónde se tomó exactamente la medición.
# Mismos datos, pero con un diseño digno de un informe de ingeniería
# 'marker' pone un punto en cada dato, 'color' cambia el color de la línea
plt.plot(horas, humedad_porcentaje, marker='o', color='red', linestyle='--')
# Agregamos títulos y etiquetas
plt.title("Curva de Secado Teórica")
plt.xlabel("Tiempo de secado (Horas)")
plt.ylabel("Contenido de Humedad (%)")
# Agregamos una cuadrícula para facilitar la lectura
plt.grid(True)
# Mostramos el resultado
plt.show()
---
### Interacción con el Tutor IA 🤖
Estas dos librerías son inmensas. Usemos nuestro asistente para explorar más capacidades:
> **PROMPT DE APRENDIZAJE - SEMANA 9:**
> Actúa como un Científico de Datos experto en ingeniería. Estoy empezando a usar NumPy y Matplotlib en Python.
> 1) Explícame la diferencia principal entre una lista normal de Python y un arreglo de NumPy (ndarray). ¿Por qué NumPy es más rápido?
> 2) ¿Qué significa el término "vectorización" en NumPy?
> 3) En Matplotlib, además del gráfico de líneas (plot), explícame para qué sirven y en qué casos de ingeniería usaría: `plt.scatter()` (dispersión) y `plt.bar()` (barras).
> 4) Escribe un código de ejemplo breve usando NumPy y Matplotlib donde se grafique la función de una parábola (y = x^2), útil para diseño de canales o puentes.
> Después hazme 2 preguntas para verificar si comprendí los conceptos básicos de NumPy y Matplotlib.
---
## ACTIVIDAD FINAL: Hoja "Estudia y Aprende"
Genera el resumen de esta semana para consolidar estas nuevas herramientas:
> **PROMPT GLOBAL DE CIERRE:**
> Actúa como tutor experto en Programación Científica con Python. Elabora un RESUMEN BREVE que cumpla estas condiciones:
> 1. Debe caber en UNA SOLA HOJA escrita a mano.
> 2. Lenguaje claro, técnico y aplicado a la ingeniería.
> 3. Debe incluir: El concepto de arreglo y vectorización (NumPy), la importancia de visualizar datos (Matplotlib), y las instrucciones básicas para crear un gráfico con título y etiquetas de ejes.
> 4. Pensado para que yo lo escriba comprendiendo lo esencial.
> Al final agrega una frase de reflexión sobre cómo la visualización de datos cambia la manera en que un ingeniero analiza un problema.
**Instrucción para el estudiante:** En el reverso de tu hoja, dibuja a mano el código necesario para crear dos arreglos de NumPy (`x` e `y`) y las cuatro líneas de código de Matplotlib necesarias para graficarlos con su título, etiqueta X y etiqueta Y.
Con esto, los estudiantes de la Universidad de Sucre tendrán la base matemática y visual perfectamente cubierta. Al dominar los arreglos (arrays), estarán completamente listos para la Semana 10, donde aprenderán a importar tablas de datos enteras desde Excel o CSV utilizando Pandas.