Bienvenido a la guía educativa de Hegemony Linear.
Este proyecto fue creado como una entrega académica para la materia de Análisis Numérico en la Universidad Pontificia Bolivariana (UPB). Su objetivo principal es demostrar que un método numérico no tiene que vivir aislado en una calculadora: también puede integrarse dentro de una experiencia interactiva, visual y cercana a un escenario de toma de decisiones.
En este caso, el método seleccionado fue Newton-Raphson, aplicado al cálculo del ingreso mínimo que necesita la Clase Trabajadora para alcanzar una meta de prosperidad dentro de una simulación económica inspirada en dinámicas de economía política.
La pregunta central del proyecto fue:
¿Cómo usar un método numérico real dentro de una experiencia de juego sin que el usuario sienta que está usando una calculadora tradicional?
Para responderla, el proyecto combina tres capas:
- Experiencia de juego: un tablero hotseat con clases sociales, salarios, impuestos y bienes.
- Modelo matemático: una función de bienestar que depende del ingreso disponible.
- Motor numérico: Newton-Raphson para encontrar la raíz de la ecuación.
El backend resuelve la ecuación:
f(I) = W(I) - S*
Donde:
Ies el ingreso bruto de la Clase Trabajadora.W(I)es la función de bienestar calculada a partir de comida, salud, educación y ocio.S*es la meta de prosperidad definida para la ronda.
El objetivo es encontrar el valor de I que hace que:
f(I) = 0
En otras palabras: encontrar el ingreso mínimo que permite que el bienestar calculado iguale la meta de prosperidad.
El primer paso fue construir el motor en Python sin depender directamente de FastAPI ni de React.
La lógica principal vive en:
hegemony_calculator/
├── core/ # Modelos, bienestar y métodos numéricos
├── engine/ # Reglas de simulación económica
├── services/ # Servicios de cálculo y validación
└── data/ # Datos base del tablero
Esta separación permite probar el modelo matemático sin levantar el servidor web y sin abrir el navegador.
Aprendizaje clave: antes de construir una interfaz, conviene aislar la lógica que realmente define el comportamiento del sistema.
Newton-Raphson aproxima una raíz usando la fórmula:
I(n+1) = I(n) - f(I(n)) / f'(I(n))
En el proyecto, cada iteración guarda:
- Número de iteración.
- Estimación actual.
- Valor de la función.
- Error relativo.
- Valor de la derivada.
Esto permite que el resultado no sea una caja negra: el Modo profesor puede mostrar cómo converge el método paso a paso.
Aprendizaje clave: un buen proyecto académico no solo entrega el resultado, también permite explicar cómo se obtuvo.
El jugador no ve inicialmente la fórmula f(I) = W(I) - S*. En cambio, interactúa con:
- Salarios ofrecidos.
- Impuestos.
- Precios de salud y educación.
- Comida disponible.
- Meta de prosperidad.
- Asignación de obreros.
Cuando ejecuta el cálculo, la aplicación transforma el resultado numérico en una consecuencia narrativa:
La Clase Trabajadora necesita al menos 407.96V para cubrir comida, impuestos y alcanzar su meta de prosperidad.
Aprendizaje clave: la misma matemática puede presentarse de forma técnica para el profesor y de forma narrativa para el usuario.
El backend se implementó con FastAPI para convertir el motor numérico en una API REST.
Endpoint principal:
POST /api/calculate-incomeEste endpoint recibe el estado económico del tablero y responde con:
I_star: raíz calculada.required_income: ingreso mínimo requerido.converged: estado de convergencia.iterations: número de iteraciones.final_error: error final.history: historial de iteraciones.narrative: explicación lista para la interfaz.
Aprendizaje clave: una API bien diseñada permite que el frontend consuma matemática compleja sin duplicar reglas de negocio.
El frontend fue construido con React + Vite + Tailwind CSS.
La interfaz incluye:
- Tablero hotseat.
- Selector de clases.
- Panel de estado económico.
- Asignación de trabajadores.
- Modal narrativo de resultados.
- Panel docente con gráfica de convergencia.
Para visualizar las iteraciones se usó Recharts, permitiendo que el método Newton-Raphson sea entendible de forma visual.
Aprendizaje clave: una buena interfaz puede convertir resultados numéricos en decisiones comprensibles.
El proyecto incluye pruebas automatizadas con Pytest para validar:
- Método de bisección.
- Método de Newton-Raphson.
- Modelo de bienestar.
- Cálculo de impuestos.
- Validación de parámetros.
- Integración del motor de juego.
Comando de verificación:
python -m pytestAprendizaje clave: los métodos numéricos deben probarse con casos controlados, porque pequeños errores pueden cambiar por completo el resultado.
El proyecto se separó en dos servicios:
| Servicio | Plataforma | URL |
|---|---|---|
| Frontend | Vercel | https://hegemony-linear.vercel.app/ |
| Backend | Render | https://hegemony-fastapi-backend.onrender.com/ |
Esta separación evita mezclar responsabilidades:
- Vercel sirve la aplicación React.
- Render ejecuta la API FastAPI.
- El frontend se comunica con el backend usando
VITE_API_URL.
Aprendizaje clave: separar frontend y backend facilita el despliegue, la depuración y la escalabilidad.
Este proyecto es útil para estudiar:
- Aplicación real de Newton-Raphson.
- Diseño de funciones de bienestar.
- Separación entre dominio, API e interfaz.
- Validación de datos con Pydantic.
- Consumo de APIs desde React.
- Visualización de convergencia numérica.
- Pruebas unitarias e integración.
- Despliegue moderno con Vercel y Render.
Si quieres extender el proyecto, intenta:
- Agregar comparación visual entre Newton-Raphson, bisección y secante.
- Crear un endpoint para simular varios escenarios de impuestos.
- Añadir una gráfica de sensibilidad entre salario, impuestos y prosperidad.
- Implementar una dificultad por ronda que cambie la meta
S*. - Crear pruebas para casos donde Newton-Raphson no converge.
- Agregar una explicación paso a paso dentro del Modo profesor.
Construir Hegemony Linear demostró que los métodos numéricos pueden enseñarse más allá de ejercicios aislados. Al integrarlos en una simulación interactiva, el estudiante no solo calcula una raíz: entiende por qué esa raíz importa dentro de un sistema económico.
La lección principal es que la ingeniería de software puede convertir teoría matemática en experiencias comprensibles, verificables y desplegadas para usuarios reales.
Welcome to the educational guide for Hegemony Linear.
This project was created as an academic deliverable for the Numerical Analysis course at Universidad Pontificia Bolivariana (UPB). Its main goal is to show that a numerical method does not need to live inside an isolated calculator: it can be integrated into an interactive, visual and decision-oriented experience.
The selected method was Newton-Raphson, applied to calculate the minimum income required for the Working Class to reach a prosperity target inside a political economy simulation.
The central question was:
How can a real numerical method be used inside a game experience without making the user feel like they are using a traditional calculator?
The answer combines three layers:
- Game experience: a hotseat board with social classes, wages, taxes and goods.
- Mathematical model: a welfare function based on disposable income.
- Numerical engine: Newton-Raphson to find the root of the equation.
The backend solves:
f(I) = W(I) - S*
Where:
Iis the gross income of the Working Class.W(I)is the welfare function calculated from food, health, education and leisure.S*is the prosperity target for the round.
The goal is to find the value of I where:
f(I) = 0
That means finding the minimum income that makes calculated welfare match the prosperity target.
The numerical engine was built in Python without depending directly on FastAPI or React.
Core logic lives in:
hegemony_calculator/
├── core/ # Models, welfare and numerical methods
├── engine/ # Economic simulation rules
├── services/ # Calculation and validation services
└── data/ # Base board data
This separation makes it possible to test the mathematical model without starting the web server or opening the browser.
Key takeaway: before building an interface, isolate the logic that truly defines system behavior.
Newton-Raphson approximates a root with:
I(n+1) = I(n) - f(I(n)) / f'(I(n))
Each iteration stores:
- Iteration number.
- Current estimate.
- Function value.
- Relative error.
- Derivative value.
This makes the result explainable: Teacher mode can show how the method converges step by step.
Key takeaway: a strong academic project should not only return the answer, it should explain how the answer was obtained.
The player does not initially see f(I) = W(I) - S*. Instead, the player interacts with:
- Offered wages.
- Taxes.
- Health and education prices.
- Available food.
- Prosperity target.
- Worker allocation.
When the calculation runs, the application transforms the numerical result into a narrative consequence.
Key takeaway: the same mathematics can be presented technically for the teacher and narratively for the user.
The backend uses FastAPI to expose the numerical engine as a REST API.
Main endpoint:
POST /api/calculate-incomeThe endpoint receives the board's economic state and responds with the calculated root, convergence state, iteration count, final error, history and narrative explanation.
Key takeaway: a well-designed API lets the frontend consume complex mathematics without duplicating business rules.
The frontend was built with React + Vite + Tailwind CSS.
The interface includes:
- Hotseat board.
- Class selector.
- Economic state panel.
- Worker allocation.
- Narrative result modal.
- Teacher panel with convergence chart.
Recharts is used to visualize iterations, making Newton-Raphson easier to understand.
Key takeaway: a good interface can turn numerical outputs into understandable decisions.
The project includes Pytest coverage for:
- Bisection method.
- Newton-Raphson method.
- Welfare model.
- Tax calculation.
- Parameter validation.
- Game engine integration.
Verification command:
python -m pytestKey takeaway: numerical methods need controlled tests because small mistakes can completely change the result.
The project is deployed as two services:
| Service | Platform | URL |
|---|---|---|
| Frontend | Vercel | https://hegemony-linear.vercel.app/ |
| Backend | Render | https://hegemony-fastapi-backend.onrender.com/ |
This separation keeps responsibilities clear:
- Vercel serves the React application.
- Render runs the FastAPI backend.
- The frontend communicates with the backend through
VITE_API_URL.
This project is useful for studying:
- Real Newton-Raphson application.
- Welfare function design.
- Domain/API/UI separation.
- Data validation with Pydantic.
- API consumption from React.
- Numerical convergence visualization.
- Unit and integration testing.
- Modern deployment with Vercel and Render.
Try extending the project by:
- Adding a visual comparison between Newton-Raphson, bisection and secant.
- Creating an endpoint for multiple tax scenarios.
- Adding a sensitivity chart between wage, taxes and prosperity.
- Implementing round difficulty by changing the target
S*. - Creating tests for non-convergence cases.
- Adding a step-by-step explanation inside Teacher mode.
Building Hegemony Linear showed that numerical methods can be taught beyond isolated exercises. By integrating them into an interactive simulation, students do not just calculate a root: they understand why that root matters inside an economic system.
The main lesson is that software engineering can turn mathematical theory into understandable, verifiable and deployed experiences for real users.