• Aucun résultat trouvé

2009-2010 Introduction`aMapleet`al’analysenum´erique Universit´edeStrasbourg L2MPC/PSI

N/A
N/A
Protected

Academic year: 2022

Partager "2009-2010 Introduction`aMapleet`al’analysenum´erique Universit´edeStrasbourg L2MPC/PSI"

Copied!
55
0
0

Texte intégral

(1)

Universit´e de Strasbourg L2 MPC/PSI

Introduction ` a Maple et ` a l’analyse num´erique

2009-2010

(2)

2

(3)

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)

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

(5)

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)

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

(7)

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)

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);

(9)

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)

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 :

(11)

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)

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 :

(13)

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)

14 CHAPITRE 1. INTRODUCTION `A MAPLE

(15)

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)

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.

(17)

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)

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.

(19)

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)

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.

(21)

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)

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).

(23)

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)

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](α).

(25)

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)

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);

(27)

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)

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.

(29)

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)

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

(31)

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)

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]0fk1fk+1 Si f est une constante, on obtient ω01 = 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−10fk1fk+1 Sif est une constante, on obtient ω−101 = 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)21(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−10fk1fk+12fk+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).

(33)

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−1fk+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]0fk1fk+12fk+2.

Sif(x) =x−xk, on obtient 1 =ω1h+ω22h. Sif(x) = (x−xk)2, on obtient 0 =ω1h224h2, ce qui donne

ω1=−4ω2

(34)

34 CHAPITRE 3. D ´ERIVATION NUM ´ERIQUE donc ω2=−2h1 , puisω1= h20=−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 .

(35)

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)

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).

(37)

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)

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”|.

Références

Documents relatifs

[r]

En d´eduire que pour tout entier n la valeur approch´ee obtenue par la m´ethode des trap`ezes est sup´erieure ou ´egale `a ln(2) (on pourra commencer par faire un dessin), puis que

Note finale: les 10 premiers points comptent en totalit´e, les suivants pour moiti´e.. Par exemple, pour un total de 16 sur 30, la note sera 10 + 6/2 = 13

2- Maintenant lorsqu’au voisinage d’un point particulier (sp´ecial) (a, b), la fonction f n’est pas d´efinie par une seule formule (valable pour le point et pour tous ses

[r]

Il sera tenu compte dans la correction de la pr´ esentation et de la r´ edaction correcte des d´ emonstrations..

Il sera tenu compte dans la correction de la pr´ esentation et de la r´ edaction correcte des d´ emonstrations..

[r]