# -*- coding: utf-8 -*-
"""
Created on Thu Nov 13 16:32:40 2025

@author: AKourgli
"""

import numpy as np
import matplotlib.pyplot as plt

# Paramètres
f = np.logspace(1, 5, 500)   # fréquences de 10 Hz à 100 kHz
f0 = 1000                    # fréquence de référence (1 kHz)
slope_db_per_decade = 20     # pente : +20 dB/décade ≈ +6 dB/octave

# Calcul du gain
H_db = slope_db_per_decade * np.log10(f / f0)
H = 10**(H_db / 20)          # module linéaire

# Tracés
plt.figure(figsize=(10, 6))

# Réponse en dB (axe log)
plt.subplot(2, 1, 1)
plt.semilogx(f, H_db, 'b', linewidth=2)
plt.title("Réponse fréquentielle H(f) d’un filtre à pente")
plt.ylabel("Gain (dB)")
plt.grid(True, which="both", ls="--")

# Réponse en amplitude (axe linéaire)
plt.subplot(2, 1, 2)
plt.plot(f, H, 'r', linewidth=2)
plt.xlabel("Fréquence (Hz)")
plt.ylabel("Gain (linéaire)")
plt.title("Réponse fréquentielle H(f) d’un filtre à pente")
plt.grid(True)

plt.tight_layout()
plt.show()
