Analyse numérique
Différentiation, intégration et théorie de la mesure, avec des calculs dont les approximations, les erreurs et les invariants restent visibles côté Catnip.
Pourquoi cette catégorie
Une dérivée calculée sur des mesures dépend du choix de variable, du lissage et du pas numérique. Une intégrale demande de préciser la classe de fonctions, le passage à la limite et ce que les partitions peuvent détecter. Catnip garde ces choix dans le même flux que les oracles qui contrôlent le résultat ; SciPy et Matplotlib calculent et rendent les objets numériques.
La mesure est un fait. Sa dérivée ouvre une seconde procédure.
Exemples
| Fichier | Modules | Description |
|---|---|---|
airfoil_spectral_sensitivity.cat |
numpy, scipy, matplotlib | Pente et pics de quatre spectres acoustiques NASA |
riemann_lebesgue.cat |
matplotlib | Cantor ordinaire et gras à la frontière Riemann–Lebesgue |
curve_fit_calibration.cat |
numpy, scipy, matplotlib | Calibration de sonde, covariance et analyse des résidus |
ode_solve_ivp.cat |
numpy, scipy, matplotlib | Lotka-Volterra intégré, invariant conservé et portrait de phase |
Exécution
catnip codex/numerical-analysis/airfoil_spectral_sensitivity.cat
catnip codex/numerical-analysis/airfoil_spectral_sensitivity.cat --no-browser
catnip codex/numerical-analysis/riemann_lebesgue.cat
catnip codex/numerical-analysis/riemann_lebesgue.cat --no-browser
catnip codex/numerical-analysis/curve_fit_calibration.cat
catnip codex/numerical-analysis/curve_fit_calibration.cat --no-browser
catnip codex/numerical-analysis/ode_solve_ivp.cat
catnip codex/numerical-analysis/ode_solve_ivp.cat --no-browser
Pente spectrale sur des mesures NASA
Le jeu Airfoil Self-Noise rassemble 1 503 mesures de
profils NACA 0012 en soufflerie anéchoïque. L'exemple isole quatre spectres obtenus avec le même angle d'attaque
(7,3°) et la même corde (0,2286 m), aux vitesses 31,7, 39,6, 55,5 et 71,3 m/s. Les 16 fréquences de chaque
spectre vont de 200 à 6 300 Hz.
La variable indépendante est u = log₂(f). Une variation de 1 sur cet axe double la fréquence : la dérivée dL/du du
niveau acoustique L s'exprime donc en dB/octave. Cette unité permet de comparer une pente à 250 Hz et à 4 000 Hz
avec la même variation relative de fréquence.
Les différences calculées directement entre mesures changent fortement d'un point au suivant. Une spline cubique lissée
reconstruit donc chaque spectre ; SciPy choisit le paramètre de régularisation par validation croisée généralisée
(documentation make_smoothing_spline).
scipy.differentiate.derivative traite ensuite cette spline comme une boîte noire et affine son pas par différences
finies (documentation).
La dérivée exacte de la B-spline fournit un oracle indépendant. Le programme vérifie l'écart sur toute la grille, confronte la position de chaque pic aux zéros de cette dérivée et refuse le résultat si l'un des quatre calculs ne converge pas. La figure superpose les mesures, les splines, les différences brutes et les pentes contrôlées.
Les données sont conservées dans data/airfoil_self_noise.dat. Leur provenance, leur
licence CC BY 4.0 et les six colonnes sont détaillées dans data/README.md.
Riemann et Lebesgue à la frontière
Sans --no-browser, chaque exemple embarque sa figure dans une page HTML, ouvre le navigateur et la sert avec
http.serve(). Le serveur choisit un port local libre, répond à une requête puis s'arrête. --no-browser produit
uniquement le PNG pour les environnements headless. Dans les deux cas, la console affiche son emplacement.
Le programme construit en parallèle deux suites décroissantes de réunions finies d'intervalles fermés. L'indicatrice de chaque étape est Riemann-intégrable et son intégrale est la longueur totale des intervalles :
| Construction | Couverture à l'étape (n) | Mesure de la limite |
|---|---|---|
| Cantor ternaire | (2/3)^n |
0 |
| Smith–Volterra–Cantor | 1/2 + 2^{-(n+1)} |
1/2 |
Les deux ensembles limites sont fermés et d'intérieur vide. Toute somme inférieure de Darboux de leur indicatrice vaut
donc zéro. Pour le Cantor ternaire, les couvertures supérieures tendent aussi vers zéro : l'indicatrice est
Riemann-intégrable. Pour le Smith–Volterra–Cantor, elles tendent vers 1/2 : l'écart de Darboux persiste, tandis que
l'intégrale de Lebesgue vaut directement la mesure de l'ensemble, soit 1/2.
Le critère utilisé est celui de Lebesgue : une fonction bornée sur un intervalle compact est Riemann-intégrable si et seulement si son ensemble de discontinuités a une mesure nulle. Le critère et le cas du Cantor gras sont présentés dans les notes de théorie de la mesure de Princeton. La construction du Smith–Volterra–Cantor et le calcul de sa mesure sont détaillés dans cette étude des ensembles de Cantor.
La figure est écrite dans codex/numerical-analysis/output/ avec un backend Matplotlib sans interface graphique.