Introduction à la microéconomie

Présentation du cours

1. Objectifs du cours

Ce cours propose une introduction à la Microéconomie
Il vise à acquérir les outils nécessaires pour le cours de Microéconomie.

2. Description du cours

Ce cours est une introduction au cours de microéconomie dispensé au second semestre.
Il aborde les principes fondamentaux de la microéconomie : définition de la discipline et méthode de raisonnement, pré-requis mathématiques, programmes du consommateur et du producteur.

3. Plan du cours

  • • Introduction

  • Définitions et méthodologies, pré-requis mathématiques.

  • Chapitre 1 : le Marché

  • Offre, demande et équilibre, surplus, généralités sur les élasticités

  • Chapitre 2 : le Programme du consommateur

  • Préférences, contraintes, optimisation et TMS, demande individuelle,

  • type de biens et Slutsky.

  • • Chapitre 3 : le Programme du producteur

  • – Fonction de production, productivité du travail, profit et coûts de

  • production, isoquantes, TMST, rendements d’échelle, isocoûts et chemin

  • d’expansion, fonction d’offre individuelle

4. Compétences visées

  • Acquérir les intuitions, analyse graphique et formalisation pour l’étude des choix individuels

5. Modalités d’évaluation

Examen écrit sur table

6. Bibliographie

  • P.Krugman & R. Wells, « Microéconomie », 4e

  • édition, DeBoeck Supérieur.

  • R. Pyndick & D. Rubinfeld, « Microéconomie », 9e édition,

  • Pearson Education.

  • H. R. Varian, « Introduction à la microéconomie »,

  • 8e édition, DeBoeck Supérieur.

Qu’est-ce que la microéconomie ?

Le marché: Offre et Demande

La demande

Elle représente la relation entre la quantité de biens qu’un consommateur est disposé à acheter pour un certain prix \(Q_d=Q_d(P)\)

Show the code
# Paramètres
a_initial <- 100
b <- 2
a_income_rise <- 130

# Plage de quantités Q
Q <- seq(0, a_income_rise, by = 1)

# Inversion de la fonction de demande pour P = f(Q)
P_initial <- (a_initial - Q) / b
P_shifted <- (a_income_rise - Q) / b

# Tracé dans le plan (Q,P)
plot(
  Q, P_initial,
  type = "l", lwd = 2,
  xlab = "Quantité demandée (Q)",
  ylab = "Prix (P)",
  main = "Demande dans le plan (Q,P) et déplacement après hausse de revenu",
  ylim = c(0, max(P_initial, P_shifted))
)

lines(Q, P_shifted, col = "blue", lwd = 2)

text(30, (a_initial - 30)/b, "Demande initiale", pos = 3)
text(30, (a_income_rise - 30)/b, "Après hausse de revenu", pos = 1, col = "blue")

# Mention explicite de la pente négative
mtext("La pente est négative : dP/dQ < 0", side = 3, line = 0.5)

legend(
  "topright",
  legend = c("Demande initiale", "Après hausse de revenu"),
  col = c("black", "blue"),
  lwd = 2
)

L’offre

\(Q_s=Q_s(P)\)

L’équilibre de marché

Exercices

La demande d’un bien est donnée par :
\(Q_D = 80 - 2P\)
L’offre est donnée par :
\(Q_O = 10 + 3P\)

  1. Trouver le prix d’équilibre.
  2. En déduire la quantité échangée à l’équilibre.

Exercice 2 – Demande décroissante, offre proportionnelle

La fonction de demande est :

\(Q_D= 120-4P\)
La fonction d’offre est :

\(Q_O=2P\)

  1. Calculer le prix et la quantité d’équilibre.
  2. Vérifier que la quantité offerte et demandée sont égales à ce prix.

Exercice 3: Choc de demande

Dans une économie, on observe les fonctions suivantes :

Demande initiale : \(Q_D=200-5P\)

Offre initiale : \(Q_0 = 20+P\)

  1. Déterminer l’équilibre initial (prix et quantité).
  2. La demande augmente et devient : \(Q_D' = 230 - 5P\)
    Calculer le nouvel équilibre.
  3. Faites une représentation graphique

Surplus

Show the code
library(ggplot2)

# Paramètres (linéaires)
a <- 100; b <- 2    # demande : P_d(Q) = (a - Q)/b
c <- 10;  d <- 2    # offre   : P_s(Q) = (Q - c)/d

# Fonctions prix en fonction de la quantité Q
P_d <- function(Q) (a - Q) / b
P_s <- function(Q) (Q - c) / d

# Équilibre initial
P_eq <- (a - c) / (b + d)
Q_eq <- a - b * P_eq

# Grille en Q (suffisamment fine pour l'approx intégrale)
Q_max <- max(Q_eq * 1.5, 100)
Q_all <- seq(0, Q_max, length.out = 2000)
df_all <- data.frame(Q = Q_all,
                     P_dem = P_d(Q_all),
                     P_off = P_s(Q_all))

# Partie utile pour les aires : de 0 à Q_eq
Q_shade <- seq(0, Q_eq, length.out = 1000)
df_shade <- data.frame(Q = Q_shade,
                       P_dem = P_d(Q_shade),
                       P_off = P_s(Q_shade))

# Calcul numérique (trapèze) du surplus consommateur : ∫_0^{Q*} (P_d(Q) - P_eq) dQ
dq <- diff(df_shade$Q)
y_cs <- df_shade$P_dem - P_eq
CS <- sum( (y_cs[-length(y_cs)] + y_cs[-1]) / 2 * dq )

# Surplus producteur : ∫_0^{Q*} (P_eq - P_s(Q)) dQ
y_ps <- P_eq - df_shade$P_off
PS <- sum( (y_ps[-length(y_ps)] + y_ps[-1]) / 2 * dq )

# Tracé
ggplot(df_all, aes(x = Q)) +
  geom_line(aes(y = P_dem), size = 1.1) +
  geom_line(aes(y = P_off), size = 1.1) +
  # Surplus consommateur : zone entre P_eq (ymin) et P_dem (ymax), pour Q∈[0,Q_eq]
  geom_ribbon(data = df_shade, aes(x = Q, ymin = P_eq, ymax = P_dem),
              fill = "blue", alpha = 0.25) +
  # Surplus producteur : zone entre P_off (ymin) et P_eq (ymax), pour Q∈[0,Q_eq]
  geom_ribbon(data = df_shade, aes(x = Q, ymin = P_off, ymax = P_eq),
              fill = "red", alpha = 0.25) +
  geom_hline(yintercept = P_eq, linetype = "dashed") +
  geom_point(aes(x = Q_eq, y = P_eq), size = 3) +
  annotate("text", x = Q_eq * 0.45, y = max(df_all$P_dem) * 0.9,
           label = paste0("Surplus consommateur (SC) ≈ ", round(CS, 2))) +
  annotate("text", x = Q_eq * 0.45, y = min(df_all$P_off) + (P_eq - min(df_all$P_off)) * 0.6,
           label = paste0("Surplus producteur (SP) ≈ ", round(PS, 2))) +
  labs(title = "Offre et Demande — Surplus",
       x = "Quantité (Q)", y = "Prix (P)") +
  coord_cartesian(xlim = c(0, Q_max),
                  ylim = c(min(df_all$P_off, na.rm = TRUE), max(df_all$P_dem, na.rm = TRUE))) +
  theme_minimal(base_size = 13)

Surplus : aire sous la demande au-dessus de P*
Exercices

On considère un marché où :

  • Fonction de demande : \(Q_D = 100 - 2P\)

  • Fonction d’offre : \(Q_O = 20 + 2P\)

  1. Déterminer le prix et la quantité d’équilibre.

  2. Quel est le prix de réserve des consommateurs ?

  3. En déduire le surplus du consommateur.

  4. Quel est le prix minimum de vente ?

  5. Calculer le surplus du producteur.

Le consommateur

La contrainte budgétaire

La droite de budget correspond à l’ensemble des paniers de biens \((x,y)\) qui coûtent exatement \(R\), le budget du consommateur. Soit:

\(R=p_x*x+p_y*y\) \(<=> y= R/p_y-p_x/p_y*x\)

c’est l’équation d’une droite de pente \(-p_x/p_y\), avec une ordonnée à l’origine égale à \(R/p_y\)

Exemple:

\(R=100\); \(p_x=10\); \(p_y=20\)

Show the code
library(ggplot2)

# Paramètres
R  <- 100   # revenu
px <- 10
py <- 20

# Intersections
x_max <- R / px   # R/px
y_max <- R / py   # R/py

# Points pour tracer la droite budgétaire
df_bc <- data.frame(
  x = c(0, x_max),
  y = c(y_max, 0)
)

ggplot(df_bc, aes(x = x, y = y)) +
  geom_line(linewidth = 1.2) +
  geom_point(aes(x = 0, y = y_max), size = 3) +
  geom_point(aes(x = x_max, y = 0), size = 3) +
  annotate(
    "text",
    x = x_max,
    y = 0,
    label = paste0("R/px = ", x_max),
    color = "red",
    vjust = -1
  ) +
  annotate(
    "text",
    x = 0,
    y = y_max,
    label = paste0("R/py = ", y_max),
    color = "red",
    hjust = -0.1
  ) +
  labs(
    title = "Contrainte budgétaire : px·x + py·y = R",
    subtitle = paste0(px, "·x + ", py, "·y = ", R),
    x = "Bien x",
    y = "Bien y"
  ) +
  coord_cartesian(xlim = c(0, x_max), ylim = c(0, y_max)) +
  theme_minimal(base_size = 13)

Contrainte budgétaire dans le plan (x,y)

Des préférences du consommateur à la fonction d’utilité

L’utilité est une façon de décrire les préférences du consommateur

une fonction d’utilité est une façon d’attribuer une valeur aux différents paniers de consommation de telle sorte que les paniers les plus désirables reçoivent des valeurs supérieures à ceux qui le sont moins .

\(u(x_1,x_2) \succ (y_1,y_2) \quad \text{si} U(x_1,x_2)>U(y_1,y_2)\)

Exercices

On considère un consommateur dont les préférences sur les paniers (x1,x2)(x_1,x_2) \((x_1,x_2)\) sont représentées par la fonction d’utilité :

\(U(x_1,x_2)=x_1^{0,5}* x_2^{0,5}\)

Compare les paniers suivants et détermine, à chaque fois, lequel est préféré (au sens de \(\succ\))

  • a) A=(4,1) et B=(2,2)

  • b) C=(3,3) et D=(2,5)

  • c) E=(1,9) et F=(3,2)

Biens complémentaires

Show the code
library(ggplot2)

df_comp <- data.frame(
  x1 = rep(seq(0, 10, by = 1), each = 11),
  x2 = rep(seq(0, 10, by = 1), times = 11)
)
df_comp$U <- pmin(df_comp$x1, df_comp$x2)

ggplot(df_comp, aes(x = x1, y = x2, z = U)) +
  geom_contour(breaks = c(1, 2, 3, 4, 5)) +
  labs(title = "Compléments parfaits (U = min(x1, x2))",
       x = "Bien 1", y = "Bien 2")

Biens substituables

Show the code
df_subs <- data.frame(
  x1 = rep(seq(0, 10, by = 0.5), each = 21),
  x2 = rep(seq(0, 10, by = 0.5), times = 21)
)
df_subs$U <- df_subs$x1 + df_subs$x2  # Par exemple U(x1,x2)=x1 + x2

ggplot(df_subs, aes(x = x1, y = x2, z = U)) +
  geom_contour(breaks = c(4, 6, 8, 10, 12)) +
  labs(title = "Substituts parfaits (U = x1 + x2)",
       x = "Bien 1", y = "Bien 2")

Bien indésirable

Show the code
df_bad <- data.frame(
  x1 = rep(seq(0, 10, by = 0.5), each = 21),
  x2 = rep(seq(0, 10, by = 0.5), times = 21)
)
df_bad$U <- df_bad$x1 - df_bad$x2

ggplot(df_bad, aes(x = x1, y = x2, z = U)) +
  geom_contour(breaks = c(-5, -2, 0, 2, 4, 6)) +
  labs(title = "Bien indésirable (U = x1 - x2)",
       x = "Bien désirable (x1)", y = "Bien indésirable (x2)")

Exercices

Sam adore manger des frites… mais uniquement s’il a exactement une dose de ketchup par frite.

Représentez 4 courbes d’indifférence pour des niveaux d’utilité différents de Sam, où \(x_1\) représentent les portions de frites et \(x_2\) les sachets de ketchup

Le taux marginal de substitution

La pente de la courbe d’indifférence en un point porte un nom: Le taux Marginal de Substitution (TMS)

Il mesure le taux auquel le consommateur est disposé à substituer un bien à un autre.

Il mesure la quantité de bien 2 que vous êtes disposés à payer pour une augmentation marginale de bien 1.

\(TMS=\Delta X_2/\Delta X_1=-Um_1/Um_2\)

\(U_m\) correspond à l’utilité marginale, c’est à dire la variation de l’utilité entraînée par la consommation d’une unité supplémentaire du bien .

Show the code
library(ggplot2)

# Paramètres Cobb-Douglas
alpha <- 0.5
beta  <- 0.5
u0 <- 5   # niveau d'utilité

# Courbe d'indifférence
x1 <- seq(0.1, 10, length.out = 300)
x2 <- (u0 / (x1^alpha))^(1/beta)
df <- data.frame(x1, x2)

# ---- Point où tracer la tangente (plus haut sur la courbe) ----
x1_0 <- 2   # <-- point choisi plus à gauche donc plus haut visuellement
x2_0 <- (u0 / (x1_0^alpha))^(1/beta)

# TMS au point (pente de la tangente)
TMS <- - (alpha / beta) * (x2_0 / x1_0)

# Droite tangente
x_tan <- seq(x1_0 - 2, x1_0 + 2, length.out = 80)
y_tan <- x2_0 + TMS * (x_tan - x1_0)
df_tan <- data.frame(x_tan, y_tan)

# ---- Graphique ----
ggplot() +
  geom_line(data = df, aes(x = x1, y = x2), size = 1.2, colour = "blue") +
  geom_point(aes(x = x1_0, y = x2_0), size = 4, colour = "red") +
  geom_line(data = df_tan, aes(x = x_tan, y = y_tan), linetype = "dashed") +
  annotate(
    "text",
    x = x1_0 + 2, y = x2_0 + 3,     # <-- position centrale et visible
    label = "paste(frac(Delta * x[2], Delta * x[1]), '   =   -', frac(UM[1], UM[2]))",
    parse = TRUE,
    size = 5
  ) +
  labs(
    title = "Courbe d'indifférence (Cobb-Douglas) et tangente (TMS)",
    x = expression(x[1]),
    y = expression(x[2])
  ) +
  theme_minimal(base_size = 14)

Exercices

Fonction d’utilité \(U(x,y) = x^{0.4} y^{0.6}\)

Questions :
1. Calcule \(U_x\) et \(U_y\)
2. Calcule le TMS .
3. Évalue le TMS au point ((x,y) = (2,3))

Le panier Optimal

Show the code
library(ggplot2)

# Fonction d'utilité Cobb-Douglas U(x,y)=sqrt(xy)
U  <- function(x, y) sqrt(x*y)

# Niveau d'utilité de la courbe (modifiable)
U0 <- 6   # alors xy = U0^2 = 36  => y = 36/x

# Point illustratif sur la courbe (modifiable, doit vérifier x0*y0=36)
x0 <- 4
y0 <- (U0^2)/x0  # 9

# TMS au point (x0,y0) : -MUx/MUy = -y/x
TMS <- - y0/x0   # -2.25

# Données pour la courbe d'indifférence U=U0  (hyperbole y=36/x)
xs  <- seq(1.5, 20, length.out = 400)
ys  <- (U0^2) / xs
indif <- data.frame(x = xs, y = ys)

# Droite tangente en (x0,y0): y = y0 + TMS*(x - x0)
xt  <- seq(1.5, 20, length.out = 200)
yt  <- y0 + TMS * (xt - x0)
tangent <- data.frame(x = xt, y = yt)

# Petite flèche montrant la pente (TMS)
# On prend un court segment autour de x0
seg_dx <- 1
seg <- data.frame(
  x  = c(x0, x0 + seg_dx),
  y  = c(y0, y0 + TMS*seg_dx)
)

ggplot() +
  # Courbe d'indifférence
  geom_line(data = indif, aes(x, y), linewidth = 1.1) +
  # Tangente au point choisi
  geom_line(data = tangent, aes(x, y), linetype = "dashed") +
  # Point (x0,y0)
  geom_point(aes(x0, y0), size = 3) +
  # Segment/flèche pour la pente (TMS)
  geom_segment(data = seg, aes(x = x[1], y = y[1], xend = x[2], yend = y[2]),
               arrow = arrow(length = unit(6, "pt"))) +
  # Annotations
  annotate("label", x = x0, y = y0 + 2,
           label = paste0("Point (x0=", x0, ", y0=", round(y0,2), ")")) +
  annotate("label", x = x0 + 4, y = y0 - 2,
           label = paste0("Tangente : pente = TMS = -y0/x0 = ", round(TMS, 2))) +
  labs(x = "Bien x", y = "Bien y",
       title = "Taux marginal de substitution (TMS)",
       subtitle = expression(paste("Courbe d'indifférence  ", U(x,y)==sqrt(xy),
                                   "  avec  ", U==U[0], "  et  TMS== -y/x"))) +
  coord_cartesian(ylim = c(0, max(ys, yt, na.rm = TRUE))) +
  theme_minimal(base_size = 13)

TMS = pente de la tangente à la courbe d’indifférence