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\activate
Instalar módulos requeridos
pip install streamlit sympy numpy matplotlib pandas
Crear requirements.txt
pip freeze > requirements.txt
Pedir 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.py
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, 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.txt
para 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.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.”
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
Kc
yETo
. 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
oETc
). 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
r
yK
.”
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)
conEI
constante, 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
s
y muestra cómo varía conE
yν
. Gráfico paramétrico.”
.md
Para 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>.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.”
.py
de
páginasPlantilla de prompt por página (
app/Agricola.py
, etc.): “Generaapp/<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
opretty
.- 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.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).”
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/
.