Pour les données bruyantes ou à structure fine, existe-t-il de meilleures quadratures que la règle médiane?

12

Seules les deux premières sections de cette longue question sont essentielles. Les autres sont juste à titre d'illustration.

Contexte

Des quadratures avancées telles que Newton – Cotes composites de degré supérieur, Gauß – Legendre et Romberg semblent être principalement destinées aux cas où l'on peut finement échantillonner la fonction sans l'intégrer analytiquement. Cependant, pour les fonctions avec des structures plus fines que l'intervalle d'échantillonnage (voir l'exemple A) ou le bruit de mesure, elles ne peuvent pas rivaliser avec des approches simples telles que la règle médiane ou trapézoïdale (voir l'annexe B pour une démonstration).

Ceci est quelque peu intuitif car, par exemple, la règle composite de Simpson «élimine» essentiellement un quart des informations en lui attribuant un poids inférieur. La seule raison pour laquelle ces quadratures sont meilleures pour des fonctions suffisamment ennuyeuses est que la gestion correcte des effets de bordure l'emporte sur l'effet des informations rejetées. D'un autre point de vue, il est intuitivement clair pour moi que pour les fonctions à structure fine ou à bruit, les échantillons éloignés des frontières du domaine d'intégration doivent être quasiment équidistants et avoir presque le même poids (pour un nombre élevé d'échantillons) ). En revanche, la quadrature de ces fonctions peut bénéficier d'une meilleure gestion des effets de frontière (que pour la méthode du point médian).

Question

Supposons que je souhaite intégrer numériquement des données unidimensionnelles bruyantes ou à structure fine.

Le nombre de points d'échantillonnage est fixe (en raison de l'évaluation coûteuse des fonctions), mais je peux les placer librement. Cependant, I (ou la méthode) ne peut pas placer les points d'échantillonnage de manière interactive, c'est-à-dire sur la base des résultats d'autres points d'échantillonnage. Je ne connais pas non plus au préalable les régions à problèmes potentiels. Donc, quelque chose comme Gauß – Legendre (points d'échantillonnage non équidistants) est correct; la quadrature adaptative ne l'est pas car elle nécessite des points d'échantillonnage placés de manière interactive.

  • Des méthodes allant au-delà de la méthode du point médian ont-elles été suggérées pour un tel cas?

  • Ou: Existe-t-il une preuve que la méthode du point médian est la meilleure dans de telles conditions?

  • Plus généralement: existe-t-il des travaux sur ce problème?

Annexe A: Exemple spécifique d'une fonction à structure fine

Je souhaite estimer pour: avec et . Une fonction typique ressemble à ceci:01f(t)dtφi[0,2π]logωi[1,1000]

f(t)=i=1ksin(ωitφi)ωi,
φi[0,2π]logωi[1,1000]

sinus superposés

J'ai choisi cette fonction pour les propriétés suivantes:

  • Il peut être intégré analytiquement pour un résultat de contrôle.
  • Il a une structure fine à un niveau qui rend impossible de capturer tout cela avec le nombre d'échantillons que j'utilise ( ).<102
  • Il n'est pas dominé par sa structure fine.

Annexe B: Benchmark

Pour être complet, voici une référence en Python:

import numpy as np
from numpy.random import uniform
from scipy.integrate import simps, trapz, romb, fixed_quad

begin = 0
end   = 1

def generate_f(k,low_freq,high_freq):
    ω = 2**uniform(np.log2(low_freq),np.log2(high_freq),k)
    φ = uniform(0,2*np.pi,k)
    g = lambda t,ω,φ: np.sin(ω*t-φ)/ω
    G = lambda t,ω,φ: np.cos(ω*t-φ)/ω**2
    f = lambda t: sum( g(t,ω[i],φ[i]) for i in range(k) )
    control = sum( G(begin,ω[i],φ[i])-G(end,ω[i],φ[i]) for i in range(k) )
    return control,f

def midpoint(f,n):
    midpoints = np.linspace(begin,end,2*n+1)[1::2]
    assert len(midpoints)==n
    return np.mean(f(midpoints))*(n-1)

def evaluate(n,control,f):
    """
    returns the relative errors when integrating f with n evaluations
    for several numerical integration methods.
    """
    times = np.linspace(begin,end,n)
    values = f(times)
    results = [
            midpoint(f,n),
            trapz(values),
            simps(values),
            romb (values),
            fixed_quad(f,begin,end,n=n)[0]*(n-1),
        ]

    return [
            abs((result/(n-1)-control)/control)
            for result in results
        ]

method_names = ["midpoint","trapezoid","Simpson","Romberg","Gauß–Legendre"]

def med(data):
    medians = np.median(np.vstack(data),axis=0)
    for median,name in zip(medians,method_names):
        print(f"{median:.3e}   {name}")

print("superimposed sines")
med(evaluate(33,*generate_f(10,1,1000)) for _ in range(100000))

print("superimposed low-frequency sines (control)")
med(evaluate(33,*generate_f(10,0.5,1.5)) for _ in range(100000))

(J'utilise ici la médiane pour réduire l'influence des valeurs aberrantes en raison de fonctions qui n'ont qu'un contenu haute fréquence. Pour la moyenne, les résultats sont similaires.)

Les médianes des erreurs d'intégration relatives sont:

superimposed sines
6.301e-04   midpoint
8.984e-04   trapezoid
1.158e-03   Simpson
1.537e-03   Romberg
1.862e-03   Gauß–Legendre

superimposed low-frequency sines (control)
2.790e-05   midpoint
5.933e-05   trapezoid
5.107e-09   Simpson
3.573e-16   Romberg
3.659e-16   Gauß–Legendre

Remarque: Après deux mois et une prime sans résultat, j'ai posté ceci sur MathOverflow .

Wrzlprmft
la source
Est-ce le genre de problème qui vous intéresse vraiment ? Dans 1D, vous pouvez probablement obtenir de bons résultats assez rapidement avec la plupart des méthodes.
David Ketcheson
"J'ai un nombre fixe de points d'échantillonnage et je peux les placer librement. Cependant, je ne peux pas placer les points d'échantillonnage de manière interactive, c'est-à-dire sur la base des résultats d'autres points d'échantillonnage." Cette restriction n'est pas claire pour moi. Suis-je autorisé à placer les nœuds là où un algorithme adaptatif les placerait, tant que je suis vraiment intelligent (au lieu d'utiliser réellement l'algorithme adaptatif)? Si je ne suis pas autorisé à être "vraiment intelligent" à ce sujet, alors quel type de placement de nœuds est réellement autorisé?
David Ketcheson
@DavidKetcheson: Est-ce le genre de problème qui vous intéresse vraiment ? - Oui, je suis vraiment intéressé par 1D. - Dans 1D, vous pouvez probablement obtenir de bons résultats assez rapidement avec la plupart des méthodes. - N'oubliez pas que l'évaluation des fonctions peut être coûteuse. - alors quel type de placement de nœuds est réellement autorisé? - J'ai édité ma question dans l'espoir de la rendre plus claire.
Wrzlprmft
Merci qui aide. Pour moi, la question semble encore vague. Je pense qu'il y a une question simple et plus précise à laquelle il serait plus facile de répondre. Cela nécessiterait de définir un ensemble de fonctions (qui pourraient dépendre du nombre autorisé de nœuds de quadrature) et une métrique. Ensuite, vous pouvez vous demander si la méthode du point médian est optimale dans cette métrique sur cet ensemble de fonctions (où le même ensemble de nœuds doit probablement être utilisé pour quadrature toutes les fonctions).
David Ketcheson
1
@DavidKetcheson: Cela nécessiterait de définir un ensemble de fonctions (qui pourraient dépendre du nombre autorisé de nœuds en quadrature) et une métrique. - Étant donné que je n'ai jusqu'à présent rien trouvé d'utile à ce sujet, je ne vois aucune raison d'imposer de telles restrictions. Au contraire, avec de telles restrictions, je risquerais d'exclure certains travaux existants (ou preuves faciles) pour des conditions ou des hypothèses légèrement différentes. S'il existe des moyens de capturer le scénario représenté dans les définitions et similaires pour lesquels il existe un ouvrage de référence ou une preuve facile, j'en suis heureux.
Wrzlprmft

Réponses:

1

Tout d'abord, je pense que vous comprenez mal le concept de quadrature adaptative. La quadrature adaptative n'implique pas de "placer interactivement des points d'échantillonnage". L'idée derrière la quadrature adaptative est de concevoir un schéma qui intégrera une certaine fonction à une certaine erreur absolue ou relative (estimée) avec aussi peu d'évaluations de fonction que possible.

Une deuxième remarque: vous écrivez "Le nombre de points d'échantillonnage est fixe (car l'évaluation des fonctions est coûteuse), mais je peux les placer librement". Je pense que l'idée devrait être que le nombre de points d'échantillonnage (ou d'évaluations de fonction dans la terminologie en quadrature) soit aussi petit que possible (c'est-à-dire non fixe).

Alors, quelle est l'idée derrière la quadrature adaptative implémentée dans QUADPACK par exemple?

  1. L'ingrédient de base est une règle de quadrature «imbriquée»: il s'agit d'une combinaison de deux règles de quadrature où l'une a un ordre (ou une précision) supérieur à l'autre. Pourquoi? En fonction de la différence entre ces règles, l'algorithme peut estimer l'erreur de quadrature (bien sûr, l'algorithme utilisera la plus précise comme résultat de référence). Des exemples pourraient être la règle trapézoïdale avec nœuds et nœuds. Dans le cas de QUADPACK, les règles sont des règles de Gauss-Kronrod. Ce sont des règles de quadrature interpolatoires qui utilisent une règle de quadrature de Gauss-Legendre d'un certain ordre 2 n + 1 N N 2 N - 12n2n+1Net une extension optimale de cette règle. Cela signifie qu'un ordre de quadrature supérieur peut être obtenu en réutilisant les nœuds de Gauss-Legendre (c'est-à-dire les évaluations de fonctions coûteuses) avec des poids différents et en ajoutant un certain nombre de nœuds supplémentaires. En d'autres termes, la règle d'origine Gauss-Legendre d'ordre intégrera tous les polynômes de degré exactement tandis que la règle de Gauss-Kronrod étendue intégrera exactement certains polynômes d'ordre supérieur. Une règle classique est le G7K15 (Gauss-Legendre du 7e ordre avec Gauss-Kronrod du 15e ordre). La magie est que les 7 nœuds du Gauss-Legendre sont un sous-ensemble des 15 nœuds du Gauss-Kronrod donc avec 15 évaluations de fonction, j'ai une évaluation en quadrature avec une estimation d'erreur!N2N1

  2. L'ingrédient suivant est une stratégie de «diviser pour mieux régner». Supposons que vous lâchiez ce G7K15 sur votre intégrande et que vous observiez une erreur de quadrature trop importante selon votre goût. QUADPACK subdivise ensuite l'intervalle d'origine en deux sous-intervalles également espacés. Et puis il réévaluera les deux sous-intégrales en utilisant la règle de base, G7K15. Maintenant, l'algorithme a une estimation d'erreur globale (qui devrait être, espérons-le, inférieure à la première) mais également deux estimations d'erreur locales. Il sélectionne l'intervalle avec l'erreur la plus importante et divise celle-ci en deux. Deux nouvelles intégrales sont estimées et l'erreur globale est mise à jour. Et ainsi de suite jusqu'à ce que l'erreur globale soit inférieure à votre cible demandée ou que le nombre maximum de subdivisions soit dépassé.

Je vous mets donc au défi de mettre à jour votre code ci-dessus en utilisant la scipy.quadméthode. Peut-être que dans le cas d'un integrand avec beaucoup de "structure fine", vous devrez peut-être augmenter le nombre maximum de subdivisions (l' limitoption). Vous pouvez également jouer avec les paramètres epsabset / ou epsrel.

Cependant, si vous ne disposez que de données expérimentales, je vois deux possibilités.

  1. Si vous avez la possibilité de sélectionner les points de mesure, c'est-à-dire les valeurs de , je les sélectionnerais équidistamment et de préférence comme une puissance de afin que vous puissiez appliquer une règle trapézoïdale imbriquée (et bénéficier de l'extrapolation de Romberg).t2
  2. Si vous n'avez aucun moyen de choisir les nœuds, c'est-à-dire que les mesures viennent à des moments aléatoires, la meilleure option à mon avis est toujours la règle trapézoïdale.
GertVdE
la source
Je pense que vous comprenez mal le concept de quadrature adaptative. - Votre message est entièrement d'accord avec ma compréhension précédente de la quadrature adaptative et il correspond clairement à la façon dont j'ai défini de manière interactive le placement des points d'échantillonnage (que ce soit une phrase appropriée ou non). - vous écrivez […]. Je pense que l'idée devrait être que le nombre de points d'échantillonnage […] soit aussi petit que possible (c'est-à-dire non fixe). - Si vous avez ce luxe, bien sûr, mais les contraintes expérimentales ne sont peut-être pas si bénignes. Par exemple, supposons que vous deviez mesurer quelque chose simultanément avec un nombre fixe de capteurs coûteux.
Wrzlprmft
Mes excuses. J'ai mal interprété "interactivement" dans votre question. À ma connaissance, "interactivement" signifie une intervention de l'utilisateur et non d'un algorithme. J'ai ajouté un paragraphe dans ma réponse sur les données expérimentales. Une autre approche consisterait à "filtrer" les informations de structure fine, c'est-à-dire à appliquer une transformée de Fourier et à supprimer les fréquences d'ordre élevé avec de petites amplitudes. Serait-ce une option?
GertVdE
Si vous avez la possibilité de sélectionner les points de mesure […] - Les points équidistants sont ce dont j'ai besoin pour le point médian, le trapèze uni, etc. de toute façon, c'est donc exactement ce que j'ai fait dans mon benchmark. Ici, l'extrapolation de Romberg ne donne aucun avantage.
Wrzlprmft
Une autre approche consisterait à «filtrer» les informations sur la structure fine […] Serait-ce une option? - Dans mon exemple, je suppose que la structure fine fait partie de ce que je veux mesurer, je n'arrive pas à avoir suffisamment d'échantillons pour le capturer complètement. Quant au bruit réel, aucune contrainte technique ne m'empêche de filtrer. Cependant, l'intégrale sur l'ensemble du domaine est déjà le filtre passe-bas ultime, je suis donc sceptique quant à l'amélioration de ce dernier sans bruit avec des propriétés spécifiques, bénignes et connues.
Wrzlprmft
Est-ce vraiment stochastique? Il doit y avoir quelques dérivés qui sont des approximations intégrales stochastiques d'ordre supérieur.
Chris Rackauckas
0

Je ne suis pas convaincu que votre code démontre quoi que ce soit de fondamental concernant les différentes règles de quadrature et leur efficacité contre le bruit et la structure fine, et je pense qu'il est probable que si vous choisissez différentes structures d'amendes différentes, vous trouverez quelque chose de différent. Voici le théorème:

Aucune méthode en quadrature ne peut donner une faible erreur absolue ou relative par rapport à une fonction à variation totale illimitée. Dans un système à virgule flottante avec arrondi unitaire , nous avons l'estimationμ où est la somme en quadrature agissant sur l'implémentation numérique de .

|abfdxQ^[f^]||abfdxQ[f]|+μ[4ab|f|dx+ab|xf|dx]
Q^f^f

Preuve: que les nœuds de quadrature soient et que les poids de quadrature (non négatifs) soient et désignent leurs approximations à virgule flottante par et . Supposons que satisfait où où est l'arrondi d'unité. alors {xi}i=0n1{wi}i=0n1w^ix^if^f^(x)=f(x)(1+2δ)|δ|μμ

Q^[f^]=i=0n1w^if^(x^i)=i=0n1wi(1+δiw)f(xi+δixxi)(1+2δif)(1+δi)i=0n1wi[f(xi)+δixxif(xi)](1+δiw+2δif+δi)i=0n1wif(xi)+i=0n1δixwixif(xi)+wif(xi)(δiw+2δif+δi)
pour que Cela suppose que la somme est calculée sans erreur; multipliez par pour supprimer cette hypothèse.
|Q^[f^]Q[f]|μi=0n1wi(|xif(xi)|+4|f(xi)|)4μ|f|dx+μ|xf|dx
n

Mutatis mutandis, vous pouvez également montrer que le résultat est valable en arithmétique à virgule fixe.

user14717
la source
Merci pour votre réponse. J'ai un peu de mal à comprendre le scénario que vous envisagez et son lien avec ma question. Qu'entendez-vous par variation totale illimitée en virgule flottante? Sauf erreur de ma part, tous mes résultats de calcul (à l'exception du cas témoin avec Romberg et Gauß – Legendre) sont loin d'être influencés par des inexactitudes de l'implémentation arithmétique (virgule flottante ou virgule fixe). Le bruit que je considère n'est pas non plus de nature numérique, mais expérimental.
Wrzlprmft
@Wrzlprmft: Le point flottant est le résultat que j'ai pu prouver. Je peux également le prouver en virgule fixe, ce qui indique alors que le résultat est valable pour les données expérimentales. Je pense que c'est vrai pour toute source d'erreur dans les nœuds en quadrature. J'ai édité pour clarifier.
user14717
Pour les données expérimentales, le résultat est beaucoup plus convaincant car en général les données expérimentales ne sont pas différenciables et donc la variation totale est infinie.
user14717
Je suis désolé, mais je n'arrive toujours pas à vous suivre. Votre résultat semble concerner l'erreur commise lors de la mise en œuvre numérique de la quadrature, et non l'erreur de la quadrature elle-même. Le problème que je rencontre concerne ce dernier et en particulier je ne vois aucune raison de croire qu'il ne se manifesterait pas pour . μ=0
Wrzlprmft
L'idée principale ici vient du numéro de condition de l'évaluation de la fonction. Vos évaluations sont mal conditionnées car elles sont bruyantes.
user14717