• Aucun résultat trouvé

spline natural,not-a-knot,periodic InterpolatedUnivariateSpline UnivariateSpline inter.barycentric_interpolate inter.lagrange inter.barycentric_interpolate defaut(n) poly1d lagrange(x,w) x xi yi x barycentric_interpolate(xi,yi,x) Pythonetlesmath(n 3.) Mat

N/A
N/A
Protected

Academic year: 2022

Partager "spline natural,not-a-knot,periodic InterpolatedUnivariateSpline UnivariateSpline inter.barycentric_interpolate inter.lagrange inter.barycentric_interpolate defaut(n) poly1d lagrange(x,w) x xi yi x barycentric_interpolate(xi,yi,x) Pythonetlesmath(n 3.) Mat"

Copied!
2
0
0

Texte intégral

(1)

Université de Rouen M1 IBIOM

Année 2012-2013

Mathématiques Appliquées Python et les math (n

3.)

Pour bénéficier des routines d’interpolation (polynôme, spline, etc) de Scipy nous utiliserons

>>> from numpy import *

>>> import matplotlib . pyplot as p l t

>>> import scipy . i n t e r p o l a t e as i n t e r

1. INTERPOLATION POLYNOMIALE

La bibliothèque Scipy possède deux routines pour l’interpolation de Lagrange

barycentric_interpolate(xi, yi, x)

qui utilise un algorithme stable numériquement. On de- vine facilement le rôle de

xi

et

yi

,

x

est un tableau et la routine retourne les valeurs du polynôme d’interpolation de Lagrange en les valeurs de

x

.

lagrange(x,w)

numériquement instable (c’est la documentation de Scipy qui le dit), visiblement ne rien espérer au delà de 20 points même si ceux-ci sont bien choisis (comme ceux de Tchebychev) ! Cette routine retourne un polynôme, c.-à-d. un objet de type

poly1d

et qui accepte d’être évalué, etc.

Voici les deux routines en action.

>>> x=array ( [ 0 , 1 , 2 ] )

>>> w=array ( [ 4 ,2 , 4 . ] )

>>> p= i n t e r . lagrange ( x ,w)

>>> print p

>>> print p ( 0 ) , p ( 1 ) , p ( 2 )

>>> xpt=linspace (−1 ,3 ,40)

>>> p l t . pl o t ( xpt , p( xpt ) , ’ k ’ )

>>> w=w+1 # on décale l e s points y i v e r s l e haut

>>> p l t . pl o t ( xpt , i n t e r . b a r y c e n t r i c _ i n t e r p o l a t e ( x ,w, xpt ) )

Exercice 1. [mise en défaut de interpolate]Soit f(x)=cos(x) et soit pn le polynôme d’interpolation de Lagrange aux points équidistants de l’intervalle [1, 1]. Comme les dérivées successives de la fonction cos sont bornées, on démontre que la suite des polynômespn converge uniformément sur [1, 1] vers la fonc- tion cos(x). Écrire une routine Python

defaut(n)

qui prend en argumentn, calcule via les deux routines

inter.lagrange

et

inter.barycentric_interpolate

le polynômepn, trace les deux polynômes (théo- riquement semblables) et la fonction cos(x). Observez ce qui se passe à partir den=30.

Dorénavant pour toute interpolation de Lagrange nous utiliserons

inter.barycentric_interpolate

Exercice 2. [Facultatif ]Programmer les différences divisées de Newton, la méthode d’Hörner pour l’évalua- tion du polynôme d’interpolation de Lagrange. Tester cette méthode avec les deux autres.

Exercice 3. [Effet de Runge]Mettre en évidence l’effet de Runge annoncé en cours (f(x)=1/(1+x2) sur [5, 5] pour les points équidistants). Vérifier que le phénomène ne se produit pas pour les points de Tche- bychev.

Exercice 4. [Une autre fonction]Sur le même modèle que l’exercice précédent pour f(x)= |x|sur l’inter- valle [1, 1] tester l’interpolation aux points équidistants et aux points de Tchebychev.

2. SPLINES

Scipy contient des éléments évolués sur les splines (B-splines, 2D, etc) mais pas les splines naturelles, encastrées, «not-a-knot» ou périodique (c’est possible et même souhaitable mais il faut y consacrer du temps). Nous disposons tout de même de plusieurs solutions «splines» clés en main :

UnivariateSpline

qui fait du «fitting» de données ou de l’interpolation (en précisant un paramètre) –

InterpolatedUnivariateSpline

sous classe de la précédente dédiée à l’interpolation

spline

qui possède en théorie une option

natural, not-a-knot, periodic

mais en réalité non implémentée !

– splrep, splev, sproot, spint, spalde - an older wrapping of FITPACK

(2)

2

Nous nous contenterons de

InterpolatedUnivariateSpline

pour faire des tests sur les mêmes exemples que précédemment et en plus calculer une approximation de la dérivée, de l’intégrale. Voici un exemple

>>> x=linspace (3 ,3 ,10)

>>> y=exp(−x **2)

>>> s= i n t e r . InterpolatedUnivariateSpline ( x , y )

>>> s ( x)y

>>> xpt=linspace (3 ,3 ,100)

>>> p l t . pl o t ( xpt , exp(xpt * * 2 ) )

>>> p l t . pl o t ( xpt , s ( exp ) ) Devinez le rôle des fonctions

>>> s . d e r i v a t i v e s ( 1 )

>>> s . i n t e g r a l (3 ,3)

Exercice 5. Reprendre les tests de l’interpolation et vérifier qu’il n’y a pas d’effet de Runge.

Exercice 6. Pour la fonction sin vérifier expérimentalement les résultats annoncés en cours sur l’ordre d’approximation des dérivées successives. Pour cela on prendra l’intervalle [1, 1] etx=0 pour étudier le comportement des(0)1,s′′(0) ets′′′(0)+1 en fonction du pas de temps. Une bonne observation consiste à regarder pour plusieurs valeurs den (de 10 à 500 ou plus) le logarithme de la quantité à observer divisée par log(n).

Exercice 7. Pour la fonction cos et pour différentes valeurs den on créer un spline interpolant sur [0, 1]

pour lesn+1 points équidistantsi/n(0≤i≤n). Comparer la valeur retournée par

s.integral(0,pi)

et

π

0 cos(x)d x.

Références

Documents relatifs

If the two devices thus selected were reading opposite data; that is, device number one reading a HIGH and device number two reading a LOW, the output

Because the 2105 is an N-Channel device, a positive leading edge is required for both chip enable and addresses, as N-Channel devices are usually active high

[r]

Since every specification statement must include an explicit microprogram memory address assignment, specification statements may appear in any order in an XMAS

a segment using a less privileged level (greater priVilege number) than that applied to the segment.. Although no control register or mode bit is provided for turning

Integer constants used in expressions in the I/O list of a PRINT or WRITE statement have a length which is the minimum required to contain the variable. not

Bubbles following generation are propagated down an Input track. Bubbles are transferred to/from the in- put track from/to the 80 storage loops via series con- nected swap

The Intel SYSTEM 86/330 Microcomputer System is a comprehensive integrated, 16-bit hardware and soft, ware package designed to give the OEM the fastest path to high