# -*- coding: utf-8 -*-
# Chapitre 9 — Atténuation géométrique du son (VERSION CORRIGÉE)
# Une enceinte de puissance acoustique P = 1,0 W est posée au sol.
# Modèle simplifié : source ponctuelle en champ libre, sans réflexion sur le sol.
# On calcule le niveau sonore L à la distance r, et on cherche à partir
# de quelle distance L passe sous le seuil de risque auditif (85 dB).

import math
import matplotlib.pyplot as plt

P = 1.0        # puissance acoustique de la source (W)
I0 = 1.0e-12   # seuil d'audibilité (W/m2)
SEUIL = 85.0   # seuil de risque auditif (dB)

distances = []   # liste des distances r (m)
niveaux = []     # liste des niveaux sonores L (dB)

r = 1.0
while r <= 100.0:
    I = P / (4 * math.pi * r**2)          # intensité sonore à la distance r
    L = 10 * math.log10(I / I0)           # niveau sonore  # À COMPLÉTER
    distances.append(r)
    niveaux.append(L)
    r = r + 0.5

# recherche de la première distance où L passe sous le seuil
r_limite = 0.0
i = 0
trouve = False
while trouve == False:
    if niveaux[i] < SEUIL:
        r_limite = distances[i]
        trouve = True
    else:
        i = i + 1

print("À r =", r_limite, "m, le niveau sonore passe sous", SEUIL, "dB.")

plt.plot(distances, niveaux)
plt.axhline(SEUIL, linestyle="--")
plt.xlabel("distance r (m)")
plt.ylabel("niveau sonore L (dB)")
plt.grid(True)
plt.show()
