turns-00053.parquet:33198
35be2b17068c92afbebeb2b0
turn 7/8gpt-4o-mini-2024-07-18SpanishSpain604 words
degenerate_repetitionAbsentFinal dense release
USER
corrige la curva de la oferta de la demanda que esta mal
ASSISTANT
Para corregir la curva de la oferta y la demanda en tu código, necesitamos asegurarnos de que las funciones utilizadas para calcular la demanda y la oferta se grafican adecuadamente en función de la cantidad de trabajo, no del salario. En el contexto de la economía, la curva de **demanda laboral** normalmente se representa con la cantidad de trabajo (eje X) en relación con el **salario** (eje Y), mientras que la curva de **oferta laboral** se representaría similarmente.
Aquí está el código corregido, prestando atención a cómo se grafican las curvas de oferta y demanda:
```python
import tkinter as tk
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
def calcular_equilibrio():
"""
Calcula el equilibrio de mercado competitivo y monopsonio
basado en los datos ingresados por el usuario.
"""
try:
demanda_elastica = float(demanda_entry.get())
oferta_elastica = float(oferta_entry.get())
salario_minimo = float(salario_minimo_entry.get())
except ValueError:
resultado_label.config(text="Por favor ingrese valores numéricos válidos.")
return
# Parámetros del modelo (ajusta según la región)
productividad_marginal = 20 # Valor de la producción adicional por trabajador
# Funciones de oferta y demanda (simplificadas para la demostración)
def demanda_laboral(w):
return demanda_elastica / w
def oferta_laboral(w):
return oferta_elastica * w
# Cálculo del equilibrio competitivo
w_competitivo = productividad_marginal
l_competitivo = demanda_laboral(w_competitivo)
# Cálculo del equilibrio monopsonio
w_monopsonio = productividad_marginal / (1 + (1 / oferta_elastica))
l_monopsonio = oferta_laboral(w_monopsonio)
# Impacto del salario mínimo
if salario_minimo > w_monopsonio:
w_monopsonio = salario_minimo
l_monopsonio = oferta_laboral(salario_minimo)
# Mostrar resultados
resultado_label.config(
text=f"Equilibrio Competitivo: Salario = {w_competitivo:.2f}, Empleo = {l_competitivo:.2f}\n"
f"Equilibrio Monopsonio: Salario = {w_monopsonio:.2f}, Empleo = {l_monopsonio:.2f}"
)
# Graficar resultados
fig, ax = plt.subplots()
# Definir un rango de salarios como lista de números
w_vals = list(range(1, int(w_competitivo * 1.5)))
# Calcular la demanda y la oferta para los valores de salario
demanda_vals = [demanda_laboral(w) for w in w_vals] # Aquí se obtiene la cantidad de trabajo a cada salario
oferta_vals = [oferta_laboral(w) for w in w_vals] # Aquí se obtiene la cantidad de trabajo a cada salario
# Graficar demanda y oferta
ax.plot(demanda_vals, w_vals, label="Demanda Laboral")
ax.plot(oferta_vals, w_vals, label="Oferta Laboral")
ax.plot(l_competitivo, w_competitivo, "ro", label="Equilibrio Competitivo")
ax.plot(l_monopsonio, w_monopsonio, "bo", label="Equilibrio Monopsonio")
ax.set_xlabel("Cantidad de Trabajo")
ax.set_ylabel("Salario")
ax.legend()
canvas = FigureCanvasTkAgg(fig, master=grafica_frame)
canvas.draw()
canvas.get_tk_widget().pack()
# --- Interfaz gráfica ---
ventana = tk.Tk()
ventana.title("Simulación de Monopsonio")
# Parámetros
parametros_frame = tk.LabelFrame(ventana, text="Parámetros")
parametros_frame.pack(padx=10, pady=10)
demanda_label = tk.Label(parametros_frame, text="Elasticidad de la demanda:")
demanda_label.grid(row=0, column=0)
demanda_entry = tk.Entry(parametros_frame)
demanda_entry.grid(row=0, column=1)
oferta_label = tk.Label(parametros_frame, text="Elasticidad de la oferta:")
oferta_label.grid(row=1, column=0)
oferta_entry = tk.Entry(parametros_frame)
oferta_entry.grid(row=1, column=1)
salario_minimo_label = tk.Label(parametros_frame, text="Salario mínimo:")
salario_minimo_label.grid(row=2, column=0)
salario_minimo_entry = tk.Entry(parametros_frame)
salario_minimo_entry.grid(row=2, column=1)
# Botón para calcular
calcular_button = tk.Button(ventana, text="Calcular", command=calcular_equilibrio)
calcular_button.pack(pady=10)
# Resultados
resultado_label = tk.Label(ventana, text="")
resultado_label.pack()
# Gráfica
grafica_frame = tk.Frame(ventana)
grafica_frame.pack()
ventana.mainloop()
```
### Correcciones realizadas:
1. **Rango de salarios (`w_vals`)**: He cambiado el rango de salarios para que empiece desde 1. Esto evita problemas al calcular `demanda_laboral(w)` porque la demanda laboral no puede calcularse cuando `w` es cero.
2. **Cálculo de cantidades**: "demanda_vals" y "oferta_vals" ahora obtienen la cantidad de trabajo en función de los salarios, usando las funciones de demanda y oferta correctamente.
3. **Gráficas**: La gráfica ahora mostrará correctamente las curvas de la demanda y la oferta trazadas con la cantidad de trabajo en el eje X y el salario en el eje Y.
### Resumen
Con estos cambios, las curvas de oferta y demanda deberían ser representadas correctamente basadas en los parámetros que ingreses. Las curvas deben cruzarse en el punto de equilibrio, donde la cantidad demandada iguala a la cantidad ofrecida de trabajo a un cierto nivel salarial. Si tienes alguna otra duda o necesitas más ajustes, ¡hazmelo saber!