Exemple d'une fonction continue difficile à approximer avec des polynômes


16

À des fins d'enseignement, j'aurais besoin d'une fonction continue d'une seule variable qui est "difficile" à approximer avec des polynômes, c'est-à-dire qu'il faudrait des puissances très élevées dans une série de puissances pour "bien" s'adapter à cette fonction. J'ai l'intention de montrer à mes élèves les "limites" de ce qui peut être réalisé avec les séries de puissance.

J'ai pensé à concocter quelque chose de "bruyant", mais au lieu de lancer le mien, je me demande simplement s'il existe une sorte de "fonction difficile" standard que les gens utilisent pour tester des algorithmes d'approximation / interpolation, un peu de la même manière que ces fonctions de test d'optimisation qui ont de nombreuses minima locaux où les algorithmes naïfs se coincent facilement.

Toutes mes excuses si cette question n'est pas bien formulée; veuillez avoir pitié d'un non-mathématicien.

Réponses:


14

Pourquoi ne pas simplement afficher la fonction de valeur absolue?

L'approximation avec par exemple l'expansion polynomiale de Legendre fonctionne, mais assez mal :

Approximation séquentielle de la fonction de valeur absolue par des polynômes

L'expansion de Taylor est bien sûr complètement inutile ici, ne donnant toujours qu'une fonction linéaire, toujours décroissante ou toujours croissante (selon que le point autour duquel vous vous développez est négatif ou positif).


Vous pouvez interpoler | x | en utilisant l'interpolation Chebyshev, voir nbviewer.jupyter.org/github/cpraveen/na/blob/master/… qui converge assez rapidement. Par exemple, vous pouvez changer N = 2 * i dans le code en N = 15 + i et tester un degré plus élevé. Ce n'est pas une méthode d'expansion mais toujours basée sur des polynômes.
cfdlab

@PraveenChandrashekar Chebyshev fonctionne «mieux» car il met plus de poids sur les parties externes de l'intervalle, où la fonction est fluide. Ainsi, l'oscillation excessive est évitée, mais dire qu'elle se rapproche mieux de la fonction est douteux - elle capture en particulier le virage serré à encore pire que les points discrets uniformes ou la minimisation L 2 . Si votre objectif est d'éviter les composants haute fréquence, mieux vaut utiliser une transformation intégrale qui amortit correctement ces composants. x=0L2
leftaroundabout

Il est parfaitement bien d'avoir des points non uniformes comme dans l'interpolation de Chebyshev. Avec un degré d'environ 20, cela donne une approximation beaucoup plus précise que Legendre que vous montrez dans votre message. Mesurez les erreurs pour être plus quantitatif. Vous pouvez également faire une approximation de la série Chebyshev de | x | ce qui est plus précis que l'extension Legendre.
cfdlab

@PraveenChandrashekar le fait est que les polynômes ne sont en principe pas capables d'approximer une fonction comme correctement. Il existe différentes méthodes dont chacune échoue de façon plus ou moins spectaculaire, mais aucune ne fonctionne bien dans le sens où «seuls quelques termes donnent quelque chose qui pourrait être confondu avec la fonction d'origine». Si vous devez utiliser des polynômes, vous devez considérer quels types d'erreur sont plus problématiques, Legendre et Chebyshev ont tous deux leurs cas d'utilisation, mais il n'y a pas de solution miracle. En fin de compte, une approche avec par exemple des splines est généralement plus efficace. x|x|
leftaroundabout

Nous savons qu'il n'y a pas de méthode parfaite. La question est de savoir quelles fonctions sont difficiles à approximer pour les polynômes. Il faut donc voir toutes les méthodes possibles impliquant des polynômes pour conclure qu'aucune d'entre elles ne fait du bon travail. Le Legendre n'est pas le meilleur moyen d'approcher | x | et donc il donne une impression plutôt fausse que les polynômes sont trop mauvais pour | x |. Avec Chebyshev, vous avez une convergence et des approximations bien meilleures que Legendre, elles n'oscillent pas aussi mal que Legendre, bien qu'elles convergent lentement près de x = 0, où la fonction n'est pas assez lisse.
cfdlab


6

L'approximation n'est pas seulement rendue difficile par la fonction à approximer, mais par l'intervalle dans lequel l'approximation doit être un "bon ajustement". Et vous devez définir la mesure d'un "bon ajustement", c'est-à-dire quelle est l'erreur maximale (absolue ou relative) que vous souhaitez tolérer?

exp(x)[0,10]sin(x)[0,2π]entrez la description de l'image icientrez la description de l'image ici


Je montre de tels exemples dans mon cours pour montrer que l'expansion de Taylor n'est pas une bonne méthode pour approximer des fonctions.
cfdlab

6

Les polynômes sont étonnamment efficaces pour l'approximation des fonctions [1]. Si vous avez au moins la continuité de Lipschitz, alors les approximations de Chebyshev convergeront. Bien sûr, la convergence peut être lente, et c'est le prix à payer pour traiter une fonction non lisse.

Aujourd'hui, les ordinateurs sont beaucoup plus rapides que l'époque à laquelle de nombreux livres d'analyse numérique ont été écrits, et des algorithmes intelligents ont encore augmenté la vitesse, de sorte que devoir utiliser plus de termes n'est peut-être pas aussi mauvais qu'auparavant.

Les exemples pathologiques comme la fonction de monstre de Weierstrass sont intéressants d'un point de vue théorique, mais ils ne sont pas représentatifs de la plupart des contextes d'application réels.

|x|x=0

Il est important d'enseigner les difficultés d'approximation avec les polynômes, mais il est également important de dire aux élèves que nous pouvons construire des estimations d'erreur et des algorithmes adaptatifs qui peuvent traiter ces problèmes.

[1] https://people.maths.ox.ac.uk/trefethen/mythspaper.pdf

[2] http://www.chebfun.org


+1 pour avoir lié le "document mythique" de Lloyd Trefethen, une très bonne enquête sur le sujet de l'OMI, merci.
Laryx Decidua

2

f(x)=1x2+1

1x2+1=1x2+x4x6+x8x10+x12

1<x<1x=0x=2


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.