Guía 1 — SymPy en Streamlit con GitHub Codespaces + Copilot

Objetivo

Crear una app multipágina en Streamlit que resuelva tres situaciones por ingeniería (Agrícola, Agroindustrial, Civil) usando SymPy para modelación simbólica y cálculo analítico. El repositorio incluirá .md teóricos generados con Copilot y scripts .py para cada página.

Estructura del repositorio

sympy_app/
├─ .devcontainer/            # (opcional)
├─ .vscode/                  # settings y recomendaciones
├─ requirements.txt
├─ README.md
├─ docs/
│  ├─ 00_teoria_sympy.md
│  ├─ 01_agricola.md
│  ├─ 02_agroindustrial.md
│  └─ 03_civil.md
└─ app/
   ├─ Home.py
   ├─ Agricola.py
   ├─ Agroindustrial.py
   └─ Civil.py

Flujo de trabajo en Codespaces

  1. Instalar extensión de Python VS Code → Extensions → “Python” (Microsoft).

  2. Crear y activar entorno virtual

    • Terminal:

      • python -m venv .venv

      • Activar:

        • Linux/Mac: source .venv/bin/activate
        • Windows: .venv\Scripts\activate
  3. Instalar módulos requeridos

    • pip install streamlit sympy numpy matplotlib pandas
  4. Crear requirements.txt

    • pip freeze > requirements.txt
  5. Pedir a Copilot el README.md Use los prompts de la sección “Prompts globales”.

  6. Pedir a Copilot los .md teóricos y los .py de las páginas Use los prompts por disciplina.

  7. Ejecutar la app

    • streamlit run app/Home.py

Prompts globales (Copilot)

README.md

Prompt (README.md): “Escribe un README.md para un proyecto educativo en Streamlit llamado ‘SymPy en Ingeniería’. Incluye: objetivos del curso, descripción breve de SymPy, estructura de carpetas, instrucciones para clonar, crear venv, instalar dependencias, ejecutar streamlit run app/Home.py, guía de evaluación y referencias. Redacta en español, claro y conciso.”

requirements.txt (si no se generó por pip freeze)

Prompt (requirements.txt): “Genera el contenido mínimo de requirements.txt para una app de Streamlit con SymPy, NumPy, Matplotlib y Pandas. Usa versiones estables y compatibles. No repitas dependencias transitivas.”

Teoría general de SymPy

Prompt (docs/00_teoria_sympy.md): “Redacta un documento docs/00_teoria_sympy.md con: visión general de SymPy, álgebra simbólica, cálculo (derivadas, integrales), ecuaciones algebraicas y diferenciales, matrices, unidades y constantes, buenas prácticas, y ejemplos de uso conceptuales para Streamlit. Sin código ejecutable; solo pseudo-bloques ilustrativos. Español, tono académico breve.”


App multipágina en Streamlit

Pestañas/páginas:

  • app/Home.py → portada, menú, notas de uso.
  • app/Agricola.py → tres situaciones.
  • app/Agroindustrial.py → tres situaciones.
  • app/Civil.py → tres situaciones.

Cada página debe:

  • Presentar modelo simbólico con SymPy.
  • Mostrar pasos analíticos y resultado.
  • Incluir parámetros de entrada con widgets.
  • Graficar funciones o resultados cuando aplique (con Matplotlib embebido en Streamlit).
  • Explicar supuestos y límites.

AGRÍCOLA — tres situaciones y prompts

A1. Balance hídrico diario en parcela

  • Meta: Resolver simbólicamente el balance: ΔS = P - ETc - D - R, con ETc = Kc·ETo. Aislar incógnitas y evaluar escenarios.

  • Teoría (docs/01_agricola.md):

    “Añade una sección ‘Balance hídrico en parcela’: define variables, ecuaciones, supuestos y sensibilidad a Kc y ETo. Incluye guía para usar parámetros interactivos en Streamlit.”

  • Script (app/Agricola.py):

    “Crea la sección ‘A1 — Balance hídrico’. Construye símbolos, plantea ecuaciones, resuelve para la variable seleccionada por el usuario (p. ej., Kc o ETc). Muestra el desarrollo simbólico (pretty/latex) y un gráfico simple de sensibilidad. Widgets: P, ETo, Kc, D, R.”

A2. Cinética de crecimiento logístico de cultivo

  • Meta: Resolver ODE logística dN/dt = r N (1 - N/K) simbólicamente; comparar tiempos para alcanzar fracción de K.

  • Teoría (docs/01_agricola.md):

    “Agrega ‘Crecimiento logístico’: derivación de solución cerrada, interpretación de r y K.”

  • Script (app/Agricola.py):

    “Crea la sección ‘A2 — Crecimiento logístico’. Resuelve la ODE con SymPy (dsolve), controla N0, r, K. Grafica N(t) y calcula tiempo t* para N=αK. Mostrar expresiones simbólicas.”

A3. Trasmisión de calor en suelo 1D (estado estacionario)

  • Meta: Resolver simbólicamente conducción 1D con condiciones de borde fijas; flujo y gradiente.

  • Teoría (docs/01_agricola.md):

    “Incluye ‘Conducción 1D en suelo’: ecuación, condiciones de borde, solución lineal, implicaciones agronómicas.”

  • Script (app/Agricola.py):

    “Sección ‘A3 — Conducción 1D’. Plantea y resuelve la EDO, muestra perfil T(x), flujo q = -k dT/dx. Widgets: T0, TL, L, k.”


AGROINDUSTRIAL — tres situaciones y prompts

G1. Cinética de primer orden en tratamiento térmico

  • Meta: Vida útil: C(t) = C0 e^{-kt}. Hallar t para C(t)=C_lim y análisis de sensibilidad en k(T) (Arrhenius simbólico).

  • Teoría (docs/02_agroindustrial.md):

    “Sección ‘Cinética de degradación’: modelos de orden 1, Arrhenius, seguridad alimentaria.”

  • Script (app/Agroindustrial.py):

    “Sección ‘G1 — Degradación’: símbolos, despejes para t, expresión k(T), sliders para E_a, R, T. Muestra derivaciones y gráfica de C(t).”

G2. Balance de masa en mezcla de jugos

  • Meta: Sistema lineal simbólico para mezclar dos corrientes con concentraciones distintas y cumplir una especificación.

  • Teoría (docs/02_agroindustrial.md):

    “Balance de masa en mezclas: variables, ecuaciones, factibilidad.”

  • Script (app/Agroindustrial.py):

    “Sección ‘G2 — Mezclas’: define ecuaciones, resuelve caudales o fracciones simbólicamente, muestra condiciones de factibilidad y gráfico simple.”

G3. Optimización simbólica de rendimiento con restricción de recursos

  • Meta: Función de rendimiento simple y restricción lineal de recursos; multiplicadores de Lagrange.

  • Teoría (docs/02_agroindustrial.md):

    “Optimización con Lagrange: planteamiento y solución.”

  • Script (app/Agroindustrial.py):

    “Sección ‘G3 — Optimización’: construye Lagrangiano, resuelve FOCs con SymPy, reporta punto óptimo y verificación de segunda orden.”


CIVIL — tres situaciones y prompts

C1. Viga simplemente apoyada con carga distribuida

  • Meta: Reacciones, V(x), M(x), deflexión y(x) simbólicas.

  • Teoría (docs/03_civil.md):

    “Flexión elemental: ecuaciones diferenciales de vigas, condiciones de borde, solución simbólica.”

  • Script (app/Civil.py):

    “Sección ‘C1 — Viga UDL’: deriva V, M, integra para y(x) con EI constante, aplica C.C. Widgets: q, L, E, I. Grafica M(x) y y(x).”

C2. Flujo uniforme en canal (Manning) con despeje simbólico

  • Meta: Despejar S, Q o n simbólicamente y analizar sensibilidad.

  • Teoría (docs/03_civil.md):

    “Ecuación de Manning: geometrías simples, supuestos.”

  • Script (app/Civil.py):

    “Sección ‘C2 — Manning’: formula en símbolos y permite elegir incógnita para resolver. Widgets: n, R, A, S, Q. Tabla de sensibilidad.”

C3. Asentamiento elástico inmediato bajo zapata circular

  • Meta: Expresión simbólica simplificada de s en función de q, ν, E, factores de influencia.

  • Teoría (docs/03_civil.md):

    “Asentamientos: hipótesis elásticas y límites de validez.”

  • Script (app/Civil.py):

    “Sección ‘C3 — Asentamiento’: construye fórmula simbólica, calcula s y muestra cómo varía con E y ν. Gráfico paramétrico.”


Prompts específicos para Copilot — documentos .md

Para cada archivo en docs/:

Estructura sugerida de cada .md:

  1. Contexto ingenieril y problema.
  2. Formulación simbólica con definiciones de variables.
  3. Derivaciones clave en texto.
  4. Supuestos y límites.
  5. Parámetros de entrada sugeridos para la UI.
  6. Validación y unidades.
  7. Preguntas de reflexión y extensión.

Prompt genérico (docs/01_agricola.md, 02_agroindustrial.md, 03_civil.md): “Redacta docs/<NOMBRE>.md con la estructura indicada. Usa ejemplos sin código ejecutable, pero con fórmulas en notación matemática. Añade breve bibliografía sugerida y glosario. Español, estilo docente, preciso.”


Prompts específicos para Copilot — scripts .py de páginas

Plantilla de prompt por página (app/Agricola.py, etc.): “Genera app/<Pagina>.py para Streamlit como página de una app multipágina. Incluye:

  • Encabezado y descripción breve.

  • Sidebar con selección de situación (tres).

  • Por cada situación:

    • Construcción simbólica con SymPy.
    • Resolución o despeje de la incógnita.
    • Render de la expresión en latex o pretty.
    • Widgets para parámetros.
    • Cálculos numéricos derivados a partir de la expresión simbólica.
    • Gráfico con Matplotlib embebido cuando aplique.
    • Bloque ‘Supuestos y validación’.
  • Manejo básico de errores de entrada.

  • Sección final ‘Referencias’. No insertes datos reales. Estructura limpia y modular. Comentarios claros.”

Prompt app/Home.py: “Crea app/Home.py como portada. Muestra título del proyecto, objetivos, guía de uso, navegación a páginas ‘Agrícola’, ‘Agroindustrial’, ‘Civil’, y verificación de entorno (versión de SymPy, Streamlit).”


Verificación y criterios de aceptación

  • La app corre localmente con streamlit run app/Home.py.

  • Cada página muestra tres situaciones con:

    • Modelo simbólico correcto.
    • Parámetros ajustables.
    • Resultado simbólico y numérico.
    • Al menos un gráfico.
  • docs/ contiene teoría clara, vinculada a cada situación.

  • README.md permite a un tercero reproducir la app.

Entregables

  • Repositorio GitHub con estructura indicada.
  • App operativa en Codespaces.
  • Documentación .md completa en docs/.