Universit´e de Strasbourg L2 MPC/PSI
Introduction ` a Maple et ` a l’analyse num´erique
2009-2010
2
Table des mati` eres
1 Introduction `a Maple 5
1.1 Introduction . . . 5
1.2 Instruction(s), ex´ecution(s) et r´esultat(s) . . . 5
1.3 Op´erations de bases . . . 5
1.4 Les variables . . . 6
1.5 Boucles et instructions conditionnelles . . . 6
1.5.1 Boucles . . . 6
1.5.2 Tests if/while . . . 6
1.5.3 Op´erateurs logiques . . . 6
1.6 Les fonctions . . . 7
1.6.1 Fonctions et expressions . . . 7
1.6.2 Proc´edures . . . 7
1.7 Les tableaux . . . 8
1.7.1 La commande array . . . 8
1.7.2 Les listes . . . 9
1.8 Graphiques . . . 9
1.8.1 Des fonctions . . . 9
1.8.2 Un ensemble de points . . . 10
1.8.3 Faire une animation . . . 10
1.9 R´esolution d’´equations diff´erentielles . . . 10
1.10 Pour s’´evaluer . . . 12
1.10.1 Enonc´e . . . 12
1.10.2 Correction . . . 12
2 Interpolation 15 2.1 Introduction . . . 15
2.2 Interpolation lin´eaire . . . 15
2.2.1 D´efinition . . . 15
2.2.2 Algorithme . . . 16
2.2.3 Estimation de l’erreur . . . 16
2.2.4 R´esultats num´eriques . . . 16
2.3 Interpolation d’ordre plus ´elev´e . . . 21
2.3.1 Interpolation quadratique . . . 21
2.3.2 Interpolation cubique . . . 22
2.4 Etude plus d´etaill´ee de l’interpolation cubique . . . 23
2.4.1 Unicit´e . . . 23 3
4 TABLE DES MATI `ERES
2.4.2 La construction de Lagrange . . . 23
2.4.3 La construction d’Aitken . . . 24
2.4.4 Cas d’un intervalle quelconque . . . 24
2.4.5 Le bord du domaine . . . 24
2.4.6 Algorithme . . . 25
2.4.7 Expression de l’erreur . . . 25
2.4.8 R´esultats num´eriques . . . 25
3 D´erivation num´erique 31 3.1 Introduction . . . 31
3.2 Ordre et polynˆome . . . 31
3.3 Obtention des formules . . . 32
3.4 Expression de l’erreur . . . 33
3.5 Bord de l’intervalle . . . 33
3.6 Changement d’intervalle . . . 34
4 Int´egration num´erique 35 4.1 Introduction . . . 35
4.2 Ordre et polynˆome . . . 35
4.3 Obtention des formules . . . 36
4.4 Expression de l’erreur . . . 37
4.5 Changement d’intervalle . . . 38
5 Recherche de z´eros 39 5.1 Une premi`ere localisation . . . 39
5.2 La m´ethode de la bisection . . . 39
5.3 Corde, S´ecante et Newton . . . 41
5.3.1 la m´ethode de la corde . . . 41
5.3.2 La m´ethode de la s´ecante . . . 42
5.3.3 Impl´ementation . . . 43
5.3.4 R´esultats num´eriques . . . 44
5.3.5 La m´ethode de Newton . . . 44
5.3.6 Autres m´ethodes . . . 45
6 Evaluation 51 6.1 Interpolation (6pts) . . . 51
6.1.1 Interpolation lin´eaire (2pts) . . . 51
6.1.2 Interpolation d’ordre ´elev´e (4pts) . . . 51
6.2 D´erivation (2pts) . . . 51
6.3 Int´egration (3pts) . . . 51
6.4 Recherche de z´eros (5pts) . . . 52
6.5 Correction . . . 52
6.5.1 Interpolation (6pts) . . . 52
6.5.2 Int´egration (3pts) . . . 53
6.5.3 Recherche de z´eros (5pts) . . . 53
Chapitre 1
Introduction ` a Maple
1.1 Introduction
Maple est un logiciel (payant). Il est install´e sur un syst`eme (linux, mac, windows). Il y a plusieurs versions ; actuellement la version 11 existe. Sur Univ-R (avez vous un compte ent ?), il y a (normalement) 2 versions : 7 et 9.5. On pr´ef`erera la version 7 qui est moins lourde. On y acc`ede en cliquant surApplication p´edagogique puis Mathematiques et enfinMaple 7 (s’il y a ´ecritMapple 7, c’est une erreur d’orthographe : Maple vient du Canada et veut dire ´erable, dont la feuille est d’ailleurs l’emblˆeme de ce pays ; rien-`a-voir avec une pomme, donc ; cliquez quand mˆeme sur l’icˆone, mais ne faites pas la faute d’orthographe !).
1.2 Instruction(s), ex´ ecution(s) et r´ esultat(s)
Apr`es un certain temps, vous voyez apparaˆıtre une interface graphique avec un fichier nomm´e Untitled(1) et un curseur qui attend que vous tapiez votre premi`ere instruction : 2+2;
N’oubliez pas le;, car il signifie la fin de l’instruction et que le r´esultat sera affich´e. Ne rajouter par l’invite de commande >: il est d´ej`a ´ecrit et correspond `a un bloc d’instructions qui est ex´ecut´e d`es que l’on appuie sur la toucheEntr´ee.
A la place du;, on peut aussi utiliser le :. Dans ce cas l’instruction sera ex´ecut´ee, mais non affich´ee. Cela peut ˆetre pratique si l’on ne veut pas que l’ordinateur affiche plein de r´esultats interm´ediaires qui ne sont pas utiles.
Lorsque l’on appuie sur la toucheShift+Entr´ee, on va `a la ligne sans ex´ecuter. Cela permet d’´ecrire un bloc d’instructions de mani`ere plus claire et ´evite de devoir appuyer de nombreuses fois sur la toucheEntr´ee pour arriver au r´esultat final.
1.3 Op´ erations de bases
Voici queqlues exemples d’utilisation de Maple comme calculatrice : sqrt(2+3*7/5);
abs(1-2**5);
cos(Pi/2);exp(1);ln(1);
5
6 CHAPITRE 1. INTRODUCTION `A MAPLE De mani`ere g´en´erale pour avoir l’aide sur une commande, on peut ´ecrire?suivi du nom de la commande
?int
?plot
?solve
1.4 Les variables
Contrairement `a d’autres langages de programmation, comme le C ou le Fortran, les variables ne sont pas d´eclar´ees `a l’avance et l’utilisateur n’a pas besoin de pr´eciser le type (r´eel,entier,caract`ere, pointeur...).
Il existe des variables pr´ed´efinies : Pi,Digits,I;
I est le nombre complexei(on a i2=−1). Certaines de ces variables peuvent ˆetre modifi´ees (commeDigits) et d’autres non (commeIetPi).
Les autres variables sont d´efinies `a partir du moment o`u elles sont affect´ees. L’affectation d’une variable se fait par l’instruction :=.
a:=1:a;
La valeur 1 est mise dans la variable a. Il peut parfois ˆetre int´eressant de lib´erer une variable, c’est-`a-dire d’enlever la valeur qu’elle contenait. Cela se fait `a l’aide de la fonction unassign.
a:=1:a;unassign(’a’):a;
Ainsi, dans cet exemple,aredevient une variable formelle.
Pour r´einitialiser toutes les variables et tout ce qui a ´et´e fait auparavant, on utilise la com- mande
restart;
1.5 Boucles et instructions conditionnelles
1.5.1 Boucles
a:=0:for i from 0 to 10 do a:=a+1:od:a;
Par d´efaut c’est from 1.
1.5.2 Tests if/while
if (..) then .. else .. fi:
while (..) do .. od:
1.5.3 Op´erateurs logiques and,or,<>,=,not
1.6. LES FONCTIONS 7
1.6 Les fonctions
1.6.1 Fonctions et expressions
Supposons que l’on veuille d´efinir la fonction f(x) =x2+ 1, afin de calculer par exemple son int´egrale. Pour cela, il y a deux mani`eres de faire : soit on ´ecrit
f:=x->x^2+1:
et dans ce cas, pour ´evaluer la fonction en un point, par exemple pour x= 0.1, on ´ecrit f(0.1):
soit, on consid`ere l’expression f:=x^2+1:
et dans ce cas, pour ´evaluer l’expression en x= 0.1, on ´ecrit subs(x=0.1,f);
Remarquons que l’on peut passer d’une forme `a l’autre : f:=x^2+1:f:=unapply(f,x);
f:=x->x^2+1:f:=f(x);
Notons que dans le cas d’une fonction la variable estmuette; on peut la changer sans chan- ger la d´efinition (on aurait pu ´ecrire par exemple f :=y->y^ 2 ;). Ceci n’est pas vrai pour une expression o`u il faut faire attention que la variable utilis´ee soit libre (on peut toujours lib´erer une variable avecunassign, comme nous l’avons d´ej`a vu). En g´en´eral, on pr´ef`erera les expressions qui sont des objets plus simples.
1.6.2 Proc´edures
Lorsque l’on veut faire plusieurs calculs avec des param`etres diff´erents, il peut ˆetre int´eressant d’englober le calcul dans uneproc´edure. Cet objet se pr´esente de la mani`ere suivante :
toto:=proc(f,N) local i,tmp;
tmp:=0.;
for i to N do tmp:=tmp+evalf(subs(x=i/N,f)):od:
tmp/N;
end proc:
f:=x^2:N:=10:toto(f,N);N:=20:toto(f,N);f:=exp(-x^2):toto(f,N);N:=40:toto(f,N);
Pour le premier>, on d´efinit la fonction ;totoest le nom, f,Nsont des variables param`etres qui sont utilis´ees dans la proc´edure, i et tmp sont des variables locales c’est-`a-dire qu’elles n’existent qu’ `a l’int´erieur de la proc´edure. Le dernier r´esultat avant la fin de la proc´edure (mat´erialis´e par end proc :) est ce qui sera renvoy´e par la proc´edure lors de l’appel.
Pour le deuxi`eme >, on appelle la fonction avec diff´erents param`etres.
8 CHAPITRE 1. INTRODUCTION `A MAPLE
1.7 Les tableaux
Consid´erons maintenant la suite d´efinie de la mani`ere suivante : c1 = 1
7, 5k+ 9 6 ck=
k−1
X
j=1
jcjck−j+1 3 −
k−1
X
j=1
cj, k≥2.
Nous voyons que pour calculer le ki`eme terme ck, nous avons besoin de tous les termes pr´ec´edents ck−1, . . . , c1. Nous avons donc besoin de stocker ces valeurs une fois qu’elles sont calcul´ees.
1.7.1 La commande array
Pour cela, nous pouvons utiliser un tableau par la commande N:=100:c:=array(1..N):
Cela veut dire que l’on a r´eserv´e des variablesc1, . . . , cN que l’on pourra affecter par la suite.
On peut ´ecrire ainsi : c[6]:=1:
Notons que les variables peuvent ˆetre de n’importe quel type ; en particulier, l’espace occup´e par les variables non encore affect´ees n’est pas allou´e, mais sera allou´e lors de l’affectation.
Remarque 1. Lorsque l’on connait la taille des objects, on peut parfois r´eserver `a l’avance la place m´emoire. Cela peut augmenter les performances pour le temps d’acc`es au tableau.
N´eanmoins, on ne connait pas toujours la place occup´ee par les variables (par exemple, cer- tains entiers peuvent ˆetre tr`es grands et n´ecessiteront donc beaucoup de stockage). Le lecteur int´eress´e pourra consulter l’aide sur la commande rtable.
Un int´erˆet de la commandearrayest que l’on peut faire commencer et terminer les indices o`u l’on souhaite. Ainsi, on peut ´ecrire
deb:=-10:fin:=15:c:=array(deb..fin):
On peut ´egalement indicer les tableaux en plusieurs dimensions N:=10:M:=12:L:=array(1..N,1..M):
L’acc`es se fait alors parL[i,j]. Pour calculer la suite pr´ec´edente, on peut donc ´ecrire.
N:=30:L:=array(1..N):L[1]:=1/7:
for k from 2 to N do
S:=add(L[j],j=1..k-1):T:=add(j*L[j]*L[k-j],j=1..k-1):
L[k]:=(6/(5*k+9))*(T-S+1/3);
od:evalf(L[N]);
On a utilis´e ici la commande add qui fait la somme des ´el´ements de la liste (on aurait aussi pu utiliser la commande for) et on a utilis´e from, pour faire commencer k par 2 et non la valeur 1 par d´efaut.
Pour afficher tous les ´el´ements du tableau, on peut ´ecrire eval(L);
1.8. GRAPHIQUES 9 1.7.2 Les listes
On peut aussi d´efinir des tableaux par des listes de la mani`ere suivante : L:=[1,4,7];
Un int´erˆet est la d´eclaration qui est plus simple. On peut aussi acc´eder au nombre d’´el´ements
`
a l’aide de la commandenops nops(L);
La fonctionnops compte le nombre d’op´erandes de l’ objetL et les op´erandes sont donn´ees par la fonctionop. L’affichage de toute la liste se fait tout simplement en ´ecrivant
L;
Attention, dans une liste, les indices commencent par 1 : L:=[3,6,7]:L[1];op(1,L);
La valeur 3 est ici affich´ee, puisque c’est le premier ´el´ement de la liste, qui est aussi la premi`ere op´erande deL.
Notons aussi qu’une liste est unes´equence entre crochets et pour g´en´erer une s´equence, il est commode d’utiliser la commandeseq
L:=[seq(i*i,i=1..5)];
De mani`ere g´en´erale, on pr´eferera utiliserarray pour des grands tableaux et des listes pour des petits tableaux (qui peuvent ˆetre une liste de param`etres `a tester, que l’on mettra de pr´ef´erence au d´ebut du programme ).
Remarquons aussi la commandemapqui applique une fonction `a une liste (ou un array) : N:=10:L:=[seq(k/N,k=0..N)]:f:=x->exp(x):fL:=map(f,L):
1.8 Graphiques
1.8.1 Des fonctions
On peut visualiser des fonctions par : f:=sin(4*x):plot(f,x=0..2*Pi);
f:=x->sin(4*x):plot(f,0..2*Pi);
Dans le premier cas, on utilise la formeexpression tandis que dans le deuxi`eme cas, il s’agit de la formefonction. On peut aussi visualiser plusieurs graphiques en mˆeme temps ; cela peut ˆetre extrˆemement utile lorsque l’on veut faire une comparaison. Pour cela, on utilise
plot([sin,cos],0..Pi,color=[red,blue],legend=["sin","cos"]);
Remarquez les options utilis´ees pour bien distinguer les courbes, grˆace aux couleurs et `a la l´egende.
Exercice 1. A l’aide de la fonction plot, localiser le 5i`eme z´ero strictement positif de la fonctionx−tan(x), `a 10−2 pr`es ; v´erifier le r´esultat avec fsolve.
10 CHAPITRE 1. INTRODUCTION `A MAPLE Un autre moyen de dessiner deux courbes en mˆeme temps est d’utilise la fonctiondisplay qui fait partie de la libraireplots. Pour cela, on charge d’abord la librairie en ´ecrivant with(plots):
Puis, on d´efinit les deux graphiques de chaque courbe avant de cr´eer la graphique qui contien- dra les deux courbes.
G1:=plot(sin,0..Pi,color=red,legend="sin"):G2:=plot(cos,0..Pi,color=blue,legend="cos"):
display(G1,G2);
1.8.2 Un ensemble de points
On peut aussi dessiner un ensemble de points, ce qui peut ˆetre utilis´e si on connait la fonction cherch´ee seulement en un nombre fini de points. Pour cela, la commande est la suivante
plot([[0,0.5],[1,0.2]]);
Ainsi les points (0,0.5) et (1,0.2) sont reli´es par un segment (on peut ne tracer que les points en rajoutant l’optionstyle=point). On peut ´egalement tracer des courbes param´etr´ees de la forme (x(t), y(t)) ; par exemple, pour dessiner le cercle de centre (0,0) et de rayon 1, on ´ecrit plot([cos(t),sin(t),t=0..2*Pi],scaling=constrained);
L’option est mise pour que les axes soient les mˆemes (sinon, on aurait une ellipse !).
1.8.3 Faire une animation
Il peut ˆetre int´eressant de vouloir dessiner l’´evolution d’un graphique ; cela s’obtient fa- cilement avec la fonctiondisplay, en rajoutant l’option insequence=true : on d´efinit tout d’abord la liste d’images et on appelle ensuite la fonction display que l’on applique `a cette suite. En cliquant sur l’image, on voit ensuite apparaˆıtre des boutons play, pause,. . . qui permettent de contrˆoler l’animation.
1.9 R´ esolution d’´ equations diff´ erentielles
On souhaite simuler le d´eplacementx(t) d’une masse accroch´ee `a un ressort. Par applica- tion du th´eor`eme de Newton, on obtient l’´equation diff´erentielle :
md2
dt2x(t) +αd
dtx(t) +kx(t) = 0
Maple poss`ede diff´erents outils permettant la r´esolution d’´equations diff´erentielles, comme la commande dsolve ou encore la fonction odeplot pour la visualisation des solutions (voir l’aide sur ces deux fonctionnalit´es).
Dans un premier temps, on d´efinit l’´equation diff´erentielle. Il existe plusieurs mani`eres de d´efinir une d´eriv´ee. On utilisera de pr´ef´erence les commandes D ou diff. La d´eriv´ee d’une fonction f(x) est alors :diff(f,x) ou D(f). La d´eriv´ee de f en x=0 estD(f)(0). La d´eriv´ee seconde s’´ecrit par exemple diff(f(f,x,x) ou encore diff(f,x$2) (d’autres formulations sont donn´ees dans l’aide).
L’´equation diff´erentielle est donn´ee ainsi :
1.9. R ´ESOLUTION D’ ´EQUATIONS DIFF ´ERENTIELLES 11 ressort:={m*diff(x(t),t,t)+alpha*diff(x(t),t)+k*x(t)=0};
Puis les diff´erents param`etres sont fix´es : la masse m, le coefficient de frottement α et la raideur du ressortk :
m:=2:alpha:=0.5:k:=5:
On d´efinit ´egalement les conditions initiales. A l’instant initial, le ressort a une longueur l (soitx(0) = l) et une vitesse nulle (soit dx(0)dt = 0). De mani`ere `a changer plus facilement les conditions initiales, on peut d´efinir une fonction CI telle que :
CI:=(a,b)->{x(0)=a, D(x)(0)=b};
On constatera que l’´equation diff´erentielle et ses conditions initiales sont d´efinies comme des ensembles (entour´es de{}), la commande dsolven´ecessitant cette syntaxe.
Enfin on peut r´esoudre l’´equation diff´erentielle :
sol:=dsolve(ressort union CI(0.5,0), x(t), numeric);
L’option numeric indique que la solution de l’´equation est approch´ee par une m´ethode num´erique
Grˆace `a la commande odeplot, on peut repr´esenter le mouvement du ressort dans le temps : odeplot(sol, [t, x(t)], 0..10, numpoints=400);
et aussi mod´eliser l’´etat du syst`eme dans l’espace des phases : odeplot(sol, [x(t), diff(x(t),t)], 0..10, numpoints=400);
Exercice 2 (Le pendule simple rigide). On souhaite simuler le mouvement d’un pendule simple. On rappelle que l’´equation diff´erentielle r´egissant le mouvement est :
d2
dt2θ(t) + 2f d
dtθ(t) +w02sin(θ(t)) = 0
o`uw0 est la pulsation propre du pendule etf le coefficient de frottement (on donneraw0 = 1 etf = 0.1).
De plus on suppose qu’`a l’instant initial, le pendule est forme un angle de 1.5rad avec l’axe vertical et que la vitesse angulaire vaut2.
Comme pr´ec´edemment, r´esoudre l’´equation diff´erentielle et donner une repr´esentation gra- phique de la trajectoire et de l’´etat du syst`eme dans l’espace des phases.
Exercice 3 (Attracteurs de Lorenz). On consid`ere un fluide chauff´e (par exemple, de l’air au dessus d’un radiateur). L’air chaud ´etant moins dense que l’air froid, il monte. En mon- tant, il se refroidit et redescend. Le mouvement du fluide s’organise autour de rouleaux dits de convection. D’apr`es le mod`ele de Lorenz, ces rouleaux sont parall`eles et tournent en sens inverse l’un de l’autre.
La position (x(t), y(t), z(t)) d’un ´el´ement du fluide est d´ecrite par le syst`eme diff´erentiel sui- vant :
d
dtx(t) =s(y(t)−x(t))
d
dty(t) =rx(t)−y(t)−x(t)z(t)
d
dtz(t) =x(t)y(t)−bz(t)
12 CHAPITRE 1. INTRODUCTION `A MAPLE o`u s, r et b d´ependent du volume chauff´e et du mode de chauffage (on choisits= 10, r= 28, b= 83).
On souhaite visualiser la trajectoire d’un ´el´ement. Pour ce faire :
1. Utiliser le package DEtools, qui offre plus de fonctionnalit´es quant `a la manipulation d’´equations diff´erentielles
2. D´efinir le syst`eme d’´equations diff´erentielles (comme une suite, et non plus comme un ensemble, i. e., on ne met pas les accolades) et stocker cette suite dans la variableLorenz 3. D´efinir les conditions initiales (´egalement comme une suite) en posant x(0) = y(0) =
z(0) = 1 et stocker cette suite dans la variableCI
4. Utiliser la fonction DEplot3dpour repr´esenter la trajectoire :
DEplot3d({Lorenz},[x(t), y(t), z(t)], t=0..100, stepsize=0.01, [[CI]], orientation=[-35,75], linecolor=t, thickness=1);
1.10 Pour s’´ evaluer
1.10.1 Enonc´e
1.Comment aller `a la ligne sans ex´ecuter ? 2.π avec 20 chiffres significatifs.
3.Commandes Maple pour affecter 2 `a une variablea, puis lib´erer la variable a; commande pour r´einitialiser toutes les variables.
4.D´efinir la fonctionf(x) = sin(2x) sous forme d’une fonction et sous forme d’une expression.
Evaluer dans les 2 casf enx= 0.3 et x= 0.5.
5.D´efinir une proc´edure somme qui additionne 2 nombres. Appeler cette somme pour calculer 3 + 5.
6.Proc´edure pour calculerPN k=11
k et l’appeler pour N = 10.
7.D´efinir la liste des nombresa+k(b−a)/N,k= 0, . . . , N avec a= 15, b= 20 etN = 50.
8. Appliquer la fonctionf :x→cos(πx) `a la liste pr´ec´edente.
9. On d´efinit la suitec0 = 1,cn+1 =Pn
k=0(k+ 1)ck,n= 0, . . . Calculer c100.
10. Ecrire une fonction qui prend une liste en param`etre et renvoie le nombre d’´el´ements strictement positifs de la suite.
1.10.2 Correction
1.On appuye sur les touchesShift etEntr´ee.
2.>Digits :=20 :evalf(Pi) ;
3.>a :=2 :unassign(’a’) :restart :
4.Sous forme de fonction :>f :=x->sin(2*x) :f(0.3),f(0.5) ;
Sous forme d’expression :>f :=sin(2*x) :subs(x=0.3,f),subs(x=0.5,f) ; 5.>somme :=proc(x,y) x+y ;end proc :
1.10. POUR S’ ´EVALUER 13
>somme(3,5) :
6.>toto :=proc(N) local k,tmp ;
tmp :=0 :for k to N do tmp :=tmp+1/k :od : tmp ;end proc :
>toto(10) ;
7.>a :=15 :b :=20 :N :=50 :L :=[seq(a+k*(b-a)/N,k=0..N)] ; 8.>f :=x->cos(Pi*x) :map(f,L) ;
9.>n :=100 :c :=array(0..n) :c[0] :=1 :
for k to n do c[k] :=add((j+1)*c[j],j=0..k-1) :od :c[n] ; 10.>toto :=proc(L) local k,tmp ;tmp :=0 :
for k to nops(L) do if(L[k]>0) then tmp :=tmp+1 :fi : :od : tmp ;end proc :
14 CHAPITRE 1. INTRODUCTION `A MAPLE
Chapitre 2
Interpolation
2.1 Introduction
Soitf : [0,1]→Rune fonction. On souhaite repr´esenter cette fonction qu’avec un nombre fini de valeurs. SoitN ∈N∗, souvent une puissance de 2. On divise l’intervalle [0,1] enN sous intervalles de mˆeme longueur
[xk, xk+1], k= 0, . . . , N−1, xk=k/N, k= 0, . . . , N.
On dit quexk, k= 0, . . . , Nest lagrille uniformede l’intervalle [0,1] depas de discr´etisation
∆x= 1/N. On dit aussi quexkest unpoint de la grille. On suppose connuesN+ 1 valeurs f0, . . . , fN−1, fN,
qui sont sens´ees ˆetre des approximations de la fonction f en les points xk : fk 'f(xk).
Soit maintenant x ∈ [0,1], on cherche `a trouver une valeur approch´ee de f(x) `a partir de f0, f1, . . . , fN etx. Cela se traduit d’un point de vue informatique par choisir une proc´edure
interpol([f0, . . . , fN], x),
qui prend la liste de r´eels f0, . . . , fN et le r´eel x en param`etres. Cette proc´edure est sens´ee renvoyer un r´eel qui approchef(x). On va d´efinir ici plusieurs possibilit´es pour cette proc´edure interpol, qui doit satisfaire les conditions d’interpolation
interpol([f0, . . . , fN], k/N) =fk, k= 0, . . . , N.
2.2 Interpolation lin´ eaire
2.2.1 D´efinition
L’interpolation la plus simple est de relier les points (xk, fk) par un segment de droite. La formule est donn´ee par
interpolin([f0, . . . , fN], x) =fk+fk+1−fk
h (x−xk), xk≤x < xk+1. 15
16 CHAPITRE 2. INTERPOLATION 2.2.2 Algorithme
D’un point de vue algorithmique, on doit d’abord chercher l’indice k, comme x est dans un unique intervalle [xk, xk+1]. Pour cela, on prend la partie enti`ere dex∗N et la position `a l’int´erieur de la maille est donn´ee par x−xhk qui se simplifiex∗N−k. Voici `a titre d’indication une impl´ementation en Maple de cette proc´edure.
interpolin:=proc(fX,x) N:=nops(fX)-1:
if(x=1)then return evalf(fX[N+1]);fi:
k:=floor(x*N):
alpha:=x*N-k;
evalf(fX[k+1]+alpha*(fX[k+2]-fX[k+1]));
end proc:
2.2.3 Estimation de l’erreur
Sous certaines conditions de r´egularit´e def, on peut ´ecrire pour 0≤α <1 f(xk+αh) =f(xk) +αhf0(xk) +α2h2
2 f”(ξk), xk≤ξk≤xk+1. L’interpolation lin´eaire est donn´ee par
f(xk) +α(f(xk+1)−f(xk)) =f(xk) +α(hf0(xk) +h2
2 f”(ηk)), xk≤ηk≤xk+1. Donc l’erreur entre la fonction et son interpol´ee lin´eaire est donn´ee par
α2h2
2 f”(ξk)−h2
2 f”(ηk)α
≤h2 max
[xk,xk+1]
|f”|. En poussant le d´eveloppement de Taylor plus loin, on a mˆeme
h2
2 α(α−1)f”(xk) +O(h3).
On peut montrer qu’il existeξ∈[xk, xk+1] tel que l’erreur s’´ecrive sous la forme h2
2 α(α−1)f”(ξ). (2.1)
2.2.4 R´esultats num´eriques
Pour une fonction donn´ee, on peut repr´esenter sur un mˆeme graphique la fonction et son interpol´ee. On peut aussi visualiser l’erreur commise en repr´esentant la diff´erence entre la fonction et son interpol´ee. Sur l’exemple de la Figure 2.4, on voit que l’erreur est inf´erieure
`
a 5h2 et peut ˆetre sup´erieure `a 4h2 et se compare bien `a l’erreur th´eorique donn´ee par (2.1).
Dans le cas de la Figure 2.5, l’erreur th´eorique est d’abord sur-estim´ee, puis le comportement est le mˆeme : l’erreur peut alors aller jusqu’`a 25h2. Pour la Figure 2.6, la fonction n’est pas assez r´eguli`ere ; n´eanmoins l’erreur, qui reste de l’ordre de 1 se concentre aux endroits de discontinuit´e.
2.2. INTERPOLATION LIN ´EAIRE 17
Figure2.1 – Interpolation lin´eaire de la fonction f(x) = sin(2πx) pourN = 8 (`a gauche) et N = 16 (`a droite)
.
Figure 2.2 – Interpolation lin´eaire de la fonction f(x) = exp(−100(x−1/2)2) pourN = 8 (`a gauche) etN = 16 (`a droite)
.
Figure 2.3 – Interpolation lin´eaire de la fonction f(x) = 1 si 0.2 < x < 0.7 et f(x) = 0, sinon, pourN = 8 (`a gauche) etN = 16 (`a droite)
.
18 CHAPITRE 2. INTERPOLATION
Figure 2.4 – Erreur multipli´ee par N2 pour l’interpolation lin´eaire de la fonction f(x) = sin(2πx) avec N = 8,16,32,64,128,256 ainsi que la fonction−f”(x)/8.
2.2. INTERPOLATION LIN ´EAIRE 19
Figure 2.5 – Erreur multipli´ee par N2 pour l’interpolation lin´eaire de la fonction f(x) = exp(−100(x−1/2)2) avec N = 8,16,32,64,128,256 ainsi que la fonction−f”(x)/8.
20 CHAPITRE 2. INTERPOLATION
Figure2.6 – Erreur pour l’interpolation lin´eaire de la fonction f(x) = 1 si 0.2< x <0.7 et f(x) = 0, sinon, avec N = 8,16,32,64.
2.3. INTERPOLATION D’ORDRE PLUS ´ELEV ´E 21 Voici des bouts de code Maple qui ont permis de g´en´erer les figures pr´ec´edentes.
plotpoint:=proc(fX) N:=nops(fX)-1:
plot([seq([k/N,fX[k+1]],k=0..N)],thickness=2,style=point,color=blue);
end proc:
f:=x->sin(2*Pi*x):
#f:=x->exp(-100.*(x-0.5)**2):
#f:=x->piecewise(x>0.2 and x<0.7,1,0);
df:=diff(f(x),x,x):G2:=plot(-df/8,x=0..1,color=black):
N:=8:X:=[seq(k/N,k=0..N)]:fX:=map(f,X):
display(plotpoint(fX),plot(interpolin(fX,x),x=0..1));
G1:=plot(N*N*(f(x)-interpolin(fX,x)),x=0..1):display(G1,G2);
2.3 Interpolation d’ordre plus ´ elev´ e
2.3.1 Interpolation quadratique
Pla¸cons nous sur un intervalle [xk−1, xk+1] (on suppose que l’on n’est pas au bord de l’intervalle [0,1]). L’interpolation lin´eaire nous fournit `a droite de xk une valeur fk[0,1](α) ' f(xk+αh) et `a gauche de xk une valeur fk[−1,0](α) ' f(xk+αh) qui sont donn´ees par les formules
fk[0,1](α) =f(xk) +α(f(xk+1)−f(xk)) =f(xk) +αhf0(xk) +αh2
2 f”(xk) +O(h3), et
fk[−1,0](α) =f(xk−1) + (α+ 1)(f(xk)−f(xk−1)) = (α+ 1)f(xk)−αf(xk−1)
= (α+1)f(xk)−α(f(xk)−hf0(xk)+h2
2 f”(xk))+O(h3) =f(xk)+αhf0(xk)−αh2
2 f”(xk)+O(h3) D’autre part, on a
f(xk+αh) =f(xk) +αhf0(xk) +α2h2
2 f”(xk) +O(h3).
On dispose donc sur l’intervalle [xk−1, xk+1] de 2 approximations `a l’ordre 2 de la fonction f.
Pour l’approximation lin´eaire, on utilisefk[−1,0](α) sur [xk−1, xk] etfk[0,1](α) sur [xk, xk+1].
Remarquons que toute combinaison lin´eaire convexe
λfk[0,1](α) + (1−λ)fk[−1,0](α),
avec 0≤λ≤1, reste une approximation d’ordre≥2 def. On peut de plus choisirλde telle sorte que le terme d’ordre 3 dans le DL saute. Pour cela, il suffit d’avoir
λ−(1−λ) =α, et on obtient donc
fk[−1,1](α) := 1 +α
2 fk[0,1](α) +1−α
2 fk[−1,0](α) =f(xk+αh) +O(h3).
22 CHAPITRE 2. INTERPOLATION Remarquons quefk[−1,1](α) est en fait l’unique polynˆome de degr´e ≤2 v´erifiant
fk[−1,1](−1) =fk−1, fk[−1,1](0) =fk, fk[−1,1](1) =fk+1.
On parle ici d’interpolation de Lagrange de degr´e ≤2, ou interpolation de Lagrange quadra- tique.
Notons que sur l’intervalle [xk, xk+1], 2 approximations sont possibles : l’interpolation de La- grange utilisant les points xk−1, xk, xk+1 qui est donn´ee par fk[−1,1](α) et celle utilisant les points xk, xk+1, xk+2 donn´ee parfk[0,2](α) =fk+1[−1,1](α−1).
2.3.2 Interpolation cubique
Sur l’intervalle [xk, xk+1], nous avons vu que l’on a le choix entre 2 approximations. On peut alors it´erer le processus pr´ec´edent en prenant une combinaison convexe des 2 approxi- mations et en choisissant la combinaison pour que les termes d’ordre 3 se simplifient.
Pour cela, on pousse le DL plus loin. On a d’abord :
fk[0,1](α) =f(xk)+α(f(xk+1)−f(xk)) =f(xk)+αhf0(xk)+αh2
2 f”(xk)+αh3
6 f000(xk)+O(h4), fk[−1,0](α) = (α+ 1)f(xk)−αf(xk−1)
= (α+ 1)f(xk)−α(f(xk)−hf0(xk) +h2
2 f”(xk)−h3
6 f000(xk)) +O(h4)
=f(xk) +αhf0(xk)−αh2
2 f”(xk) +αh3
6 f000(xk) +O(h4), et donc
f(xk+αh)−fk[−1,1](α) =α3h3
6 f000(xk)−1 +α 2 αh3
6 f000(xk)−1−α 2 αh3
6 f000(xk) +O(h4)
=α(α−1)(α+ 1)h3
6 f000(xk) +O(h4).
On obtient aussi
f(xk+αh)−fk[0,2](α) =f(xk+1+(α−1)h)−fk+1[−1,1](α−1) = (α−2)(α−1)αh3
6 f000(xk+1)+O(h4)
= (α−2)(α−1)αh3
6 f000(xk) +O(h4).
On cherche une combinaison convexe
λfk[0,2](α) + (1−λ)fk[−1,1](α), de telle sorte que les termes d’ordre 3 s’en aillent. Il suffit donc que
λ(α−2) + (1−λ)(α+ 1) = 0, ce qui donne
fk[−1,2](α) := 1 +α
3 fk[0,2](α) +2−α
3 fk[−1,1](α) =f(xk+αh) +O(h4).
2.4. ETUDE PLUS D ´ETAILL ´EE DE L’INTERPOLATION CUBIQUE 23 Remarquons quefk[−1,2](α) est en fait l’unique polynˆome de degr´e ≤3 v´erifiant
fk[−1,2](−1) =fk−1, fk[−1,2](0) =fk, fk[−1,2](1) =fk+1, fk[−1,2](2) =fk+2. (2.2)
2.4 Etude plus d´ etaill´ ee de l’interpolation cubique
Dans cette partie, on va voir diff´erentes mani`eres d’obtenir le polynˆome d’interpolation de Lagrange. On prend ici l’exemple defk[−1,2](α), mais la technique s’adapte pour les autres polynˆomes.
2.4.1 Unicit´e
Supposons que l’on ait 2 fonctions fk[−1,2](α) et ˜fk[−1,2](α) qui v´erifient (2.3.2). Alors la diff´erence des 2 fonctions est un polynˆome de degr´e≤3 qui s’annulent en les points−1,0,1,2.
Ce polynˆome est donc le polynˆome nul. Ceci donne donc l’unicit´e du polynˆome.
2.4.2 La construction de Lagrange
On ´ecrit
fk[−1,2](α) =fk−1w−1(α) +fkw0(α) +fk+1w1(α) +fk+2w2(α) Le polynˆome de Lagrange ´el´ementairew−1(α) v´erifie alors
w−1(−1) = 1, w−1(0) = 0, w−1(1) = 0, w−1(2) = 0, il est donn´e facilement de mani`ere explicite par
w−1(α) = α(α−1)(α−2)
−1(−1−1)(−1−2) =−α(1−α)(2−α) 6
De mani`ere similaire, on a
w0(α) = (α+ 1)(α−1)(α−2)
1(−1)(−2) = (α+ 1)(1−α)(2−α)
2 ,
w1(α) = (α+ 1)α(α−2)
(1 + 1)(1)(1−2)= (α+ 1)α(2−α)
2 ,
w2(α) = (α+ 1)α(α−1)
(2 + 1)(2)(2−1) =−(α+ 1)α(1−α)
6 .
24 CHAPITRE 2. INTERPOLATION 2.4.3 La construction d’Aitken
On d´efinit d’abord
fk[0,1](α) = (1−α)fk+αfk+1, fk[−1,0](α) =fk−1[0,1](α+ 1).
On forme ensuite
fk[−1,1](α) = (1−λ)fk[−1,0](α) +λfk[0,1](α), le r´eel λ´etant choisi de telle sorte que
fk[−1,1](−1) =fk[−1,0](−1), fk[−1,1](1) =fk[0,1](1), donc λ= 1+α2 . On a aussi
fk[0,2](α) =fk+1[−1,1](α−1).
On ´ecrit ensuite
fk[−1,2](α) = (1−λ)fk[−1,1](α) +λfk[0,2](α), le r´eel λ´etant choisi cette fois-ci de telle sorte que
fk[−1,2](−1) =fk[−1,1](−1), fk[−1,2](2) =fk[0,2](2),
doncλ= 1+α3 . On retrouve la construction trouv´ee avec le DL, mais ici il n’est plus n´ecessaire de faire le DL pour trouver le coefficientλ.
2.4.4 Cas d’un intervalle quelconque
Soit g une fonction d´efinie sur un intervalle [a, b]. On peut alors d´efinir f sur l’intervalle [0,1] par
f(t) =g(a+t(b−a)).
Pour connaˆıtreg en un pointx∈[a, b], on calcule f en un pointt= x−ab−a ∈[0,1].
2.4.5 Le bord du domaine
L’interpolation cubique n´ecessite de donner une valeur `a f−1.
Condition limite p´eriodique. Si la fonction est p´eriodique de p´eriode 1, on prendf−1= fN−1.
Condition limite nulle. Si la fonction est suppos´ee nulle en dehors de l’intervalle [0,1], on prendf−1= 0.
Reconstruction d´ecentr´ee. Si on n’a pas d’information suppl´ementaire de la fonction en dehors de l’intervalle [0,1], on peut consid´erer une reconstruction d´ecentr´ee qui ne fait pas intervenir le pointf−1. Pour cela, pourx∈[x0, x1], on utilisef0[0,3](α), au lieu de f0[−1,2](α).
2.4. ETUDE PLUS D ´ETAILL ´EE DE L’INTERPOLATION CUBIQUE 25 2.4.6 Algorithme
Voici `a titre d’indication une impl´ementation Maple de la proc´edure d’interpolation cu- bique. On suppose la connaissance de [f−1, f0, . . . , fN, fN+1] qui est stock´ee dans un tableau fX.
interpolcub:=proc(fX,x) N:=nops(fX)-3:
if(x=1)then return evalf(fX[N+3]);fi:
k:=floor(x*N):
a:=x*N-k;
s:=(a+1)*(2-a)/2*((1-a)*fX[k+2]+a*fX[k+3]);
s:=s-a*(1-a)/6*((2-a)*fX[k+1]+(a+1)*fX[k+4]);
evalf(s);
end proc:
2.4.7 Expression de l’erreur
On a vu grˆace aux DL que l’erreur th´eorique est en O(h4) pour l’interpolation cubique.
On peut montrer plus pr´ecis´ement qu’il existe ξ ∈[xk, xk+1] tel que l’erreur s’´ecrive sous la forme
h4
4!α(1−α)(2−α)(1 +α)f(4)(ξ). (2.3) Notons que
max
[0,1] α(1−α)(2−α)(1 +α) = 9 16, ce qui donne la majoration de l’erreur
3h4 128 max
[xi,xi+1]
|f(4)|.
2.4.8 R´esultats num´eriques
Sur l’exemple de la Figure 2.10, on voit que l’erreur est de l’ordre de 40h4 et se compare bien `a l’erreur th´eorique donn´ee par (2.1). Cette erreur est plus petite que l’erreur obtenue par l’interpolation lin´eaire, mˆeme pourN = 8. Dans le cas de la Figure 2.11, l’erreur th´eorique est d’abord sur-estim´ee, puis le comportement est le mˆeme : l’erreur peut alors aller jusqu’`a 2800h4. Remarquons aussi que l’on voit apparaˆıtre des valeurs n´egatives sur la fonction re- construite pourN = 8. Pour la Figure 2.12, la fonction n’est pas assez r´eguli`ere ; n´eanmoins l’erreur, qui reste de l’ordre de 1 se concentre aux endroits de discontinuit´e, mais de mani`ere moins localis´ee que dans le cas de l’interpolation lin´eaire. On voit aussi apparaˆıtre des valeurs n´egatives et des ”overshoot”. Remarquons enfin le changement de comportement de l’erreur lorsque l’on s’approche de l’erreur machine.
26 CHAPITRE 2. INTERPOLATION Voici des bouts de code Maple pour g´en´erer les figures des r´esultats num´eriques.
plotpoint:=proc(fX) N:=nops(fX)-3:
plot([seq([k/N,fX[k+2]],k=-1..N+1)],thickness=2,style=point,color=blue);
end proc:
f:=x->sin(2*Pi*x):
#f:=x->exp(-100.*(x-0.5)**2):
#f:=x->piecewise(x>0.2 and x<0.7,1,0);
df:=diff(f(x),x,x,x,x):
G2:=plot(3*df/128,x=0..1,color=black):
N:=8:X:=[seq(k/N,k=-1..N+1)]:fX:=map(f,X):
display(plotpoint(fX),plot(interpolcub(fX,x),x=0..1));
G1:=plot(N**4*(f(x)-interpolcub(fX,x)),x=0..1):display(G1,G2);
2.4. ETUDE PLUS D ´ETAILL ´EE DE L’INTERPOLATION CUBIQUE 27
Figure2.7 – Interpolation cubique de la fonctionf(x) = sin(2πx) pourN = 8 (`a gauche) et N = 16 (`a droite)
.
Figure2.8 – Interpolation cubique de la fonction f(x) = exp(−100(x−1/2)2) pour N = 8 (`a gauche) etN = 16 (`a droite)
.
Figure 2.9 – Interpolation cubique de la fonction f(x) = 1 si 0.2 < x < 0.7 et f(x) = 0, sinon, pourN = 8 (`a gauche) etN = 16 (`a droite)
.
28 CHAPITRE 2. INTERPOLATION
Figure 2.10 – Erreur multipli´ee par N4 pour l’interpolation cubique de la fonction f(x) = sin(2πx) avec N = 8,16,32,64,128,256 ainsi que la fonction−3f(4)(x)/128.
2.4. ETUDE PLUS D ´ETAILL ´EE DE L’INTERPOLATION CUBIQUE 29
Figure 2.11 – Erreur multipli´ee par N4 pour l’interpolation cubique de la fonction f(x) = exp(−100(x−1/2)2) avec N = 8,16,32,64,128,256 ainsi que la fonction−3f(4)(x)/128.
30 CHAPITRE 2. INTERPOLATION
Figure 2.12 – Erreur pour l’interpolation cubique de la fonction f(x) = 1 si 0.2 < x <0.7 et f(x) = 0, sinon, avec N = 8,16,32,64.
Figure 2.13 – Erreur multipli´ee par N4 pour l’interpolation cubique de la fonction f(x) = f(x) = sin(2πx) avec N = 512 ainsi que la fonction −3f(4)(x)/128, pour Digits=10 et Digits=20
Chapitre 3
D´ erivation num´ erique
3.1 Introduction
Soit f : [0,1] → R une fonction. On cherche cette fois-ci une approximation de f0 aux points de la grille. SoitN ∈N∗. On suppose `a nouveau connues des valeurs
fk'f(xk), xk=kh, h= 1/N, k= 0, . . . , N,
et on cherche une approximation fk0 de f0(xk) pourk= 0, . . . , N de la forme X
j
ωjfk+j.
3.2 Ordre et polynˆ ome
On peut ´ecrire un DL :
f(xk+j) =f(xk) +jhf0(xk) +(jh)2
2 f”(xk) +· · ·+ (jh)n
n! f(n)(xk) +O(hn+1) Supposons que
f0(xk) =X
j
ωjfk+j,
pour toutf polynˆome de degr´e≤n, avec nun entier ≥1. Alors pourf fonction suffisament r´eguli`ere, on d´efinit
P(x) =f(xk) + (x−xk)f0(xk) +(x−xk)2
2 f”(xk) +· · ·+(x−xk)n
n! f(n)(xk) f0(xk) =f0(xk)−P0(xk) +P0(xk) =X
j
ωjP(xk+j) =X
j
ωj(P(xk+j)−fk+j) +X
j
ωjfk+j,
et donc
f0(xk) =X
j
ωjfk+j+X
j
ωjO(hn+1).
31
32 CHAPITRE 3. D ´ERIVATION NUM ´ERIQUE
3.3 Obtention des formules
On va maintenant chercher des formules en faisant varier le stencil. On va utiliser la notation (fk0)[p,q] pour dire que l’on cherche une approximation vraie pour les polynˆomes de degr´e le plus ´elev´e possible et utilisant les pointsfk+j pour j=p, . . . , q.
Formule d’ordre 1 On cherche
(fk0)[0,1]=ω0fk+ω1fk+1 Si f est une constante, on obtient ω0+ω1 = 0.
Si f(x) =x, on obtient 1 =ω1(xk+1−xk), donc ω1= 1/het on a (fk0)[0,1]= fk+1−fk
h =f0(xk) + 1
hO(h2) =f0(xk) +O(h)
Sif(x) = (x−xk)2, on a (fk0)[0,1]=h etf0(xk) = 0. Donc la formule est bien d’ordre 1.
Formule d’ordre 2 On cherche
(fk0)[−1,1]=ω−1fk−1+ω0fk+ω1fk+1 Sif est une constante, on obtient ω−1+ω0+ω1 = 0.
Sif(x) =x−xk, on obtient 1 =ω−1(xk−1−xk) +ω1(xk+1−xk), ce qui donne ω1−ω−1 = 1/h.
Sif(x) = (x−xk)2, on obtient 0 =ω−1(xk−1−xk)2+ω1(xk+1−xk)2, ce qui donne ω−1=−ω1
doncω1= 2h1 , puis ω1=−2h1 etω0 = 0. On a alors (fk0)[−1,1]= fk+1−fk−1
2h =f0(xk) + 1
hO(h3) =f0(xk) +O(h2) Formule d’ordre 4 On cherche
(fk0)[−2,2]=ω−2fk−2+ω−1fk−1+ω0fk+ω1fk+1+ω2fk+2. Afin de simplifier les calculs, on peut chercher
(fk0)[−2,2]=λfk+1−fk−1
2h + (1−λ)fk+2−fk−2
4h ,
en prenantλde telle sorte que la formule soit vraie pourf(x) = (x−xk)3, ce qui donne 0 =λ2h3
2h + (1−λ)16h3
4h , λ= 4 3, puis
(fk0)[−2,2]= 2fk+1−fk−1
3h −fk+2−fk−2
12h ,
et on v´erifie que cette formule reste vraie pour tous les polynˆomes de degr´e ≤4, et donc (fk0)[−2,2]=f0(xk) +O(h4).
3.4. EXPRESSION DE L’ERREUR 33
3.4 Expression de l’erreur
On a vu que l’erreur d’une formule d’ordre d est en O(hd). Pour avoir une information suppl´ementaire, on cherche l’erreur sous la forme
Chdf(d+1)(ξ),
et on ´evalue C en rempla¸cant f par un polynˆome de degr´e d+ 1 (la formule ne doit pas ˆetre vraie pour un polynˆome de degr´ed+ 1, de telle sorte que la constanteK n’est pas nulle). On n’entreprend pas ici la justification math´ematique que l’erreur peut bien s’´ecrire sous cette forme.
Formule d’ordre 1 On a (fk0)[0,1] = fk+1h−fk = f0(xk) +Chf”(ξ). En prenant f(x) = (x−xk)2, on obtient
0 = h2
h + 2Ch, C =−1 2, et donc
(fk0)[0,1] = fk+1−fk
h =f0(xk)−h 2f”(ξ).
Formule d’ordre 2 On a (fk0)[−1,1]= fk+12h−fk−1 =f0(xk) +Ch2f(3)(ξ). En prenantf(x) = (x−xk)3, on obtient
0 = h3+h3
2h + 6Ch2, C =−1 6, et donc
(fk0)[−1,1] = fk+1−fk−1
2h =f0(xk)− h2
6 f(3)(ξ).
Formule d’ordre 4 On a (fk0)[−2,2] = 2fk+13h−fk−1 − fk+212h−fk−2 = f0(xk) +Cf(5)(ξ). En prenantf(x) =x5, on obtient
0 = 2h4 3 2−h4
1226+ 24Ch4, C = 1 96, et donc
(fk0)[−2,2]= 2fk+1−fk−1
3h −fk+2−fk−2
12h =f0(xk) +h4
96f(5)(ξ).
3.5 Bord de l’intervalle
Pour le bord de l’intervalle, il est possible que l’on n’ait pas acc`es aux points. On peut alors utiliser une formule d´ecentr´ee.
Formule d’ordre 2 On cherche ainsi
(fk0)[0,2]=ω0fk+ω1fk+1+ω2fk+2.
Sif(x) =x−xk, on obtient 1 =ω1h+ω22h. Sif(x) = (x−xk)2, on obtient 0 =ω1h2+ω24h2, ce qui donne
ω1=−4ω2
34 CHAPITRE 3. D ´ERIVATION NUM ´ERIQUE donc ω2=−2h1 , puisω1= h2,ω0=−2h3, puis
(fk0)[0,2]=− 3
2hfk+2
hfk+1− 1 2hfk+2. En particulier, on a
(f00)[0,2]=− 3
2hf0+ 2
hf1− 1 2hf2. En rempla¸cant f par (x−xk)3, on a
− 3
2hfk+2
hfk+1− 1
2hfk+2= 2−16= 0 =f0(xk), et donc
(fk0)[0,2]=− 3
2hfk+2
hfk+1− 1
2hfk+2 =f0(xk) +Cf(3)(ξ)h2, C 6= 0.
On peut expliciter la constanteC, comme on l’a fait pr´ec´edemment.
3.6 Changement d’intervalle
Si maintenant, on a une fonction g: [a, b]→R. On d´efinit alors f(t) =g(a+t(b−a)), ce qui donneg(x) =f(x−ab−a), puis
g0(a+k(b−a)
N ) = 1
b−af0(k N).
On obtient ainsi par exemple pour une formule d’ordre 2 g0(a+k(b−a)h)' f((k+ 1)h)−f((k−1)h)
2(b−a)h = g(a+ (k+ 1)(b−a)h)−g(a+ (k−1)(b−a)h)
2(b−a)h .
Chapitre 4
Int´ egration num´ erique
4.1 Introduction
Soitf : [0,1]→Rune fonction. On cherche cette fois-ci une approximation deR1
0 f(x)dx.
SoitN ∈N∗. On suppose `a nouveau connues des valeurs
fk'f(xk), xk=kh, h= 1/N, k= 0, . . . , N, et on cherche une approximation deRxk+1
xk f(x)dx, k= 0, . . . , N−1 sous la forme X
j
ωjfk+j.
Notons que l’on a alors l’approximation de l’int´egrale sur l’intervalle [0,1] par la formule Z 1
0
f(x)dx=
N−1
X
k=0
Z xk+1
xk
f(x)dx.
4.2 Ordre et polynˆ ome
On peut ´ecrire un DL :
f(xk+j) =f(xk) +jhf0(xk) +(jh)2
2 f”(xk) +· · ·+ (jh)n
n! f(n)(xk) +O(hn+1) Supposons que
Z xk+1
xk
f(x)dx=X
j
ωjfk+j,
pour toutf polynˆome de degr´e≤n, avec nun entier ≥1. Alors pourf fonction suffisament r´eguli`ere, on d´efinit
P(x) =f(xk) + (x−xk)f0(xk) +(x−xk)2
2 f”(xk) +· · ·+(x−xk)n
n! f(n)(xk) 35
36 CHAPITRE 4. INT ´EGRATION NUM ´ERIQUE Z xk+1
xk
f(x)dx= Z xk+1
xk
f(x)−P(x)dx+ Z xk+1
xk
P(x)dx
= Z xk+1
xk
O(hn+1)dx+X
j
ωjP(xk+j) =O(hn+2) +X
j
ωj(P(xk+j)−fk+j) +X
j
ωjfk+j
=X
j
ωjfk+j+O(hn+2) +X
j
ωjO(hn+1), et donc
Z 1 0
f(x)dx=
N−1
X
k=0
X
j
ωjfk+j+
N−1
X
k=0
O(hn+2) +X
j
ωjO(hn+1)
.
4.3 Obtention des formules
Formule des rectangles Pour la formule des rectangles `a gauche, on prend Z xk+1
xk
f(x)dx'hfk, tandis que pour la formule des rectangles `a droite, on prend
Z xk+1
xk
f(x)dx'hfk+1, ce qui donne respectivement les formules
Z 1 0
f(x)dx'h
N−1
X
k=0
fk,
et
Z 1
0
f(x)dx'h
N
X
k=1
fk.
La formule des rectangles est vraie pourf polynˆome constant, mais ne reste plus vraie pour un polynˆome de degr´e 1. On a donc
h
N−1
X
k=0
fk= Z 1
0
f(x)dx+O(h), h
N
X
k=1
fk= Z 1
0
f(x)dx+O(h).
Formule des trap`ezes On prend cette fois-ci Z xk+1
xk
f(x)dx'hfk+fk+1
2 ,
ce qui donne
Z 1 0
f(x)dx'hf0+fN
2 +h
N−1
X
k=0
fk.
La formule des trap`ezes reste vraie pour f polynˆome de degr´e ≤1, mais ne reste plus vraie pour un polynˆome de degr´e 2. On a donc
hf0+fN
2 +h
N−1
X
k=0
fk= Z 1
0
f(x)dx+O(h2).
4.4. EXPRESSION DE L’ERREUR 37 Formule de Simpson On suppose que N est un multiple de 2. On ´ecrit alors
Z 1 0
f(x)dx=
N/2−1
X
k=0
Z x2k+2
x2k
f(x)dx,
et on cherche `a approcher Z x2k+2
x2k
f(x)dx'λ2hf2k+1+ (1−λ)h(f2k+f2k+2),
en choisissantλde telle sorte que l’approximation soit vraie pourf polynˆome de de degr´e les plus grand possible. On v´erifie d´ej`a que l’approximation point milieuRx2k+2
x2k f(x)dx'2hf2k+1 et l’approximation trap`eze Rx2k+2
x2k f(x)dx 'h(f2k+f2k+2) sont vraies pour f polynˆome de degr´e ≤1.
Pour f(x) = (x−x2k+1)2, on a Z x2k+2
x2k
f(x)dx= 2
3h3, λ2hf2k+1+ (1−λ)hf2k+f2k+2
2 = (1−λ)h3, et donc on prendλ= 23. Ainsi, on a
Z x2k+2
x2k
f(x)dx' 4
3hf2k+1+hf2k+f2k+2
3 ,
ce qui donne
Z 1 0
f(x)dx'hf0+fN
3 +2h
3
N/2−1
X
k=1
f2k+ 4h 3
N/2−1
X
k=0
f2k+1.
Regardons maintenant l’erreur que l’on commet. Pour f(x) = (x−x2k+1)3, on a Z x2k+2
x2k
f(x)dx= 0 = 4
3hf2k+1+hf2k+f2k+2
3 ,
donc la formule de Simpson est exacte pour tous les polynˆomes de degr´e≤3. Par contre pour f(x) = (x−x2k+1)4, on a
Z x2k+2
x2k
f(x)dx= 2h5 5 6= 4
3hf2k+1+hf2k+f2k+2
3 = 2h5
3 . On a donc
hf0+fN
3 +2h
3
N/2−1
X
k=1
f2k+4h 3
N/2−1
X
k=0
f2k+1 = Z 1
0
f(x)dx+O(h4).
4.4 Expression de l’erreur
Formule des rectangles Pour la formule des rectangles `a gauche, on suppose que l’erreur s’´ecrit sous la forme (on ne donne pas de justification math´ematique ici)
hfk= Z xk+1
xk
f(x)dx+Cf0(ξ)h2.
38 CHAPITRE 4. INT ´EGRATION NUM ´ERIQUE La constanteC est ´evalu´ee en prenant f(x) = (x−xk), ce qui donne
0 = h2
2 +Ch2, C =−1 2. On a donc
hfk= Z xk+1
xk
f(x)dx− f0(ξ)h2
2 ,
puis
Z 1 0
f(x)dx−h
N−1
X
k=0
fk
≤ h 2max
[0,1]
f0 . Pour la formule des rectangles `a droite, on obtient
hfk+1= Z xk+1
xk
f(x)dx+f0(ξ)h2
2 ,
ce qui donne le mˆeme r´esultat pour l’estimation globale.
Formule des trap`ezes On ´ecrit cette fois-ci hfk+fk+1
2 =
Z xk+1
xk
f(x)dx+Cf”(ξ)h3.
La constanteC est ´evalu´ee en prenant f(x) = (x−(k+ 1/2)h)2, ce qui donne h3
4 = 2 3
h 2
3
+ 2Ch3, C = 1 12. On a donc
hfk+fk+1
2 =
Z xk+1 xk
f(x)dx+f”(ξ)h3 12 , puis
Z 1 0
f(x)dx−hf0+fN
2 −h
N−1
X
k=0
fk
≤ h2 12max
[0,1] |f”|. Le mˆeme raisonnement peut ˆetre fait pour la formule de Simpson.
4.5 Changement d’intervalle
Si on veut calculerRb
ag(x)dx, on d´efinit f(t) =g(a+t(b−a)). On a alors Z b
a
g(x)dx= (b−a) Z 1
0
g(a+t(b−a))dt.
Pour la formule des trap`ezes, on a alors par exemple
Z b
a
g(x)dx−(b−a)h g0+gN
2 +
N−1
X
k=0
gk
!
≤(b−a)3h2 12max
[a,b]
|g”|.