Guía 1 — SymPy en Streamlit con GitHub Codespaces + Copilot
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.
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
Instalar extensión de Python VS Code → Extensions → “Python” (Microsoft).
Crear y activar entorno virtual
Terminal:
python -m venv .venv
Activar:
source .venv/bin/activate.venv\Scripts\activateInstalar módulos requeridos
pip install streamlit sympy numpy matplotlib pandasCrear requirements.txt
pip freeze > requirements.txtPedir a Copilot el README.md Use
los prompts de la sección “Prompts globales”.
Pedir a Copilot los .md teóricos y los
.py de las páginas Use los prompts por
disciplina.
Ejecutar la app
streamlit run app/Home.pyPrompt (README.md): “Escribe un
README.mdpara 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, ejecutarstreamlit 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.txtpara una app de Streamlit con SymPy, NumPy, Matplotlib y Pandas. Usa versiones estables y compatibles. No repitas dependencias transitivas.”
Prompt (
docs/00_teoria_sympy.md): “Redacta un documentodocs/00_teoria_sympy.mdcon: 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.”
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:
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
KcyETo. 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.,
KcoETc). Muestra el desarrollo simbólico (pretty/latex) y un gráfico simple de sensibilidad. Widgets:P,ETo,Kc,D,R.”
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
ryK.”
Script (app/Agricola.py):
“Crea la sección ‘A2 — Crecimiento logístico’. Resuelve la ODE con SymPy (
dsolve), controlaN0,r,K. GraficaN(t)y calcula tiempot*paraN=αK. Mostrar expresiones simbólicas.”
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), flujoq = -k dT/dx. Widgets:T0,TL,L,k.”
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ónk(T), sliders paraE_a,R,T. Muestra derivaciones y gráfica deC(t).”
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.”
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.”
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 paray(x)conEIconstante, aplica C.C. Widgets:q,L,E,I. GraficaM(x)yy(x).”
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.”
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
sy muestra cómo varía conEyν. Gráfico paramétrico.”
.mdPara cada archivo en docs/:
Estructura sugerida de cada
.md:
- Contexto ingenieril y problema.
- Formulación simbólica con definiciones de variables.
- Derivaciones clave en texto.
- Supuestos y límites.
- Parámetros de entrada sugeridos para la UI.
- Validación y unidades.
- Preguntas de reflexión y extensión.
Prompt genérico (
docs/01_agricola.md,02_agroindustrial.md,03_civil.md): “Redactadocs/<NOMBRE>.mdcon 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.”
.py de
páginasPlantilla de prompt por página (
app/Agricola.py, etc.): “Generaapp/<Pagina>.pypara 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
latexopretty.- 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: “Creaapp/Home.pycomo 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).”
La app corre localmente con
streamlit run app/Home.py.
Cada página muestra tres situaciones con:
docs/ contiene teoría clara, vinculada a cada
situación.
README.md permite a un tercero reproducir la
app.
.md completa en docs/.