MT94 Introduction aux mathématiques appliquées Cahier d ...

63

Transcript of MT94 Introduction aux mathématiques appliquées Cahier d ...

Page 1: MT94 Introduction aux mathématiques appliquées Cahier d ...

MT94 � Introduction aux mathématiques

appliquées

Cahier d'intégration

CHABOT Simon

Printemps 2011

Publié sous licence Creative Commons-by-sa

Page 2: MT94 Introduction aux mathématiques appliquées Cahier d ...

ii

Ce présent document est di�usé sous licence Creative Commons-by-sa.

Autrement dit vous pouvez librement le modi�er et le partager tant que l'auteurest cité clairement et que vous distribuez votre création sous un contrat identique

ou similaire à celui-ci.Étant donné le fait que ce document est le fruit de recherches, je publie cedocument sous licence libre pour que d'autres personnes puissent à leur tour

utiliser mes recherches.

La version électronique de ce document est disponible à l'adresse suivante :http://wwwetu.utc.fr/~chabotsi/MT94/cahier.pdf

L'ensemble des codes sources produits en TD est disponible à l'adresse suivante :http://git.chabotsi.fr/?p=MT94.git

Page 3: MT94 Introduction aux mathématiques appliquées Cahier d ...

Sommaire

1 Les fractales 1

1.1 Analyse du triangle de Sierpi«ski . . . . . . . . . . . . . . . . . . . 11.1.1 Dimension du triangle de Sierpi«ski . . . . . . . . . . . . . . 1

1.2 Partie machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2.1 Premiers codes . . . . . . . . . . . . . . . . . . . . . . . . . 21.2.2 Système de fonctions itérées . . . . . . . . . . . . . . . . . . 31.2.3 IFS aléatoire . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2 Problèmes non linénaires 7

2.1 Prise en main . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.1.1 La dichotomie . . . . . . . . . . . . . . . . . . . . . . . . . . 72.1.2 Méthode de point �xe . . . . . . . . . . . . . . . . . . . . . 82.1.3 Méthode de Newton . . . . . . . . . . . . . . . . . . . . . . 92.1.4 Méthode de la sécante . . . . . . . . . . . . . . . . . . . . . 9

2.2 Comparaisons des di�érentes méthodes itératives . . . . . . . . . . 102.2.1 Expérimentalement . . . . . . . . . . . . . . . . . . . . . . . 102.2.2 Théoriquement . . . . . . . . . . . . . . . . . . . . . . . . . 122.2.3 Application . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3 Système d'équations di�érentielles 18

3.1 Présentation des di�érentes méthodes . . . . . . . . . . . . . . . . . 183.1.1 La méthode d'Euler . . . . . . . . . . . . . . . . . . . . . . . 183.1.2 Le schéma prédicteur-correcteur d'Euler-Cauchy . . . . . . . 193.1.3 Méthode de Runge et Kutta . . . . . . . . . . . . . . . . . . 20

3.2 Les méthodes de résolutions utilisées en pratique . . . . . . . . . . . 20

iii

Page 4: MT94 Introduction aux mathématiques appliquées Cahier d ...

iv

3.2.1 Ordre de l'erreur . . . . . . . . . . . . . . . . . . . . . . . . 213.2.2 Tableaux comparatifs . . . . . . . . . . . . . . . . . . . . . . 23

4 Interpolation 25

4.1 Matrice de Vandermonde . . . . . . . . . . . . . . . . . . . . . . . . 254.2 Le polynôme d'interpolation de Lagrange . . . . . . . . . . . . . . . 254.3 Les splines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

4.3.1 Les splines paramétrées . . . . . . . . . . . . . . . . . . . . . 27

5 Approximation des opérateurs di�érentiels 30

5.1 Dérivées partielles d'ordre 1 . . . . . . . . . . . . . . . . . . . . . . 305.2 Dérivées partielles d'ordre 2 . . . . . . . . . . . . . . . . . . . . . . 315.3 Application à l'équation des ondes . . . . . . . . . . . . . . . . . . . 315.4 Modélisation des vagues . . . . . . . . . . . . . . . . . . . . . . . . 32

6 Valeurs propres 36

6.1 Calcul de valeurs propres . . . . . . . . . . . . . . . . . . . . . . . . 366.1.1 Méthode de la puissance itérée . . . . . . . . . . . . . . . . . 366.1.2 Méthode de la puissance itérée inverse . . . . . . . . . . . . 37

6.2 Et. . . les autres valeurs propres ? . . . . . . . . . . . . . . . . . . . . 396.2.1 Par construction d'une nouvelle matrice . . . . . . . . . . . 396.2.2 Par itération sur un sous-espace propre . . . . . . . . . . . . 396.2.3 Calcul des valeurs propres d'une matrice quelconque . . . . . 39

6.3 Calcul pratique des racines d'un polynôme de degré élevé . . . . . . 41

7 Séries de Fourier 43

7.1 Dé�nitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437.2 Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

7.2.1 Fonction créneaux . . . . . . . . . . . . . . . . . . . . . . . 447.2.2 Depuis un signal audio . . . . . . . . . . . . . . . . . . . . . 47

A Codes sources 51

A.1 Fractales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51A.1.1 Courbe de Koch . . . . . . . . . . . . . . . . . . . . . . . . . 51

A.2 Approximation des opérateurs di�érentiels . . . . . . . . . . . . . . 52A.2.1 Équation des ondes . . . . . . . . . . . . . . . . . . . . . . . 52A.2.2 Modélisation d'une vague . . . . . . . . . . . . . . . . . . . 53

A.3 Séries de Fourier . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

Page 5: MT94 Introduction aux mathématiques appliquées Cahier d ...

Introduction

Ce rapport est le fruit de ce que j'ai appris au cours du semestre en suivant l'UVMT94 et de mes recherche. Ainsi, il contient pour chaque chapitre des démonstra-tions, des expériences que j'ai faîtes moi-même ou bien en TD. Ce rapport est àmoi ce que le blues est à Johnny Hallyday : il contient mes joies et mes peines. Ouplutôt devrai je dire mes frustrations, car j'aurai bien aimé, pour certaines parties,pouvoir aller plus loin, mener la démonstration à bout.

Tout ce que j'ai appris n'y est pas. J'ai dû faire une sélection1. Je me suisprincipalement servis des outils que nous avons vus et des TD comme une basepour faire quelques expériences personnelles (comme la modélisation d'une vague,ou bien le calcul des coe�cients de Fourier d'un signal audio).

Depuis plusieurs années, je me demande comment une machine peut calculercertaines expressions, comme les dérivées, les intégrales etc. Le cours et la créationde ce cahier m'ont permis d'apporter quelques éléments de réponses et de mieuxcomprendre ce qui était possible numériquement ou pas. J'ai essayé, à traversce cahier, de montrer les éléments de réponses que j'ai eu, tout en m'appuyantfortement sur le cours.

1Sinon, il m'aurait fallu 2 semestres pour tout rédiger . . .

v

Page 6: MT94 Introduction aux mathématiques appliquées Cahier d ...

1Les fractales

1.1 Analyse du triangle de Sierpi«ski

Le triangle de Sierpi«ski est un triangle constitué lui-même d'une in�nité de tri-angles. On pourra en trouver une approximation sur la �gure 1.3 page 3.

Le processus de construction est simple. On prend un triangle équilatéral K0.La �gure K1 s'obtient en divisant chaque côté en deux, et en ne conservant que lestriangles ayant un côté en commun avec le triangle initial. On itère alors le procédésur les triangles ainsi obtenus. Wikipédia nous donne cette image de constructionqui est très parlante :

Figure 1.1: Construction du triangle de Sierpi«ski

La limite de Kn quand n tend vers l'in�ni est le triangle de Sierpi«ski.

1.1.1 Dimension du triangle de Sierpi«ski

Dé�nissons d'une manière intuitive la dimension d'un objet. La dimension d'unobjet peut être vue intuitivement comme le nombre D tel que si la taille de l'objetest multiplié par n, la mesure de l'objet est multipliée par nD. Par exemple, lamesure d'un segment � de dimension 1 � sera deux fois plus grande si l'objetdouble de taille, de même l'aire d'un disque � de dimension 2 � sera quatre foisplus grande si la taille du cercle double, etc.

1

Page 7: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 1. LES FRACTALES 2

Dans le cas d'homothéties, on a D = lnNln 1

r

où N est le nombre d'homothéties et

r le rapport.À chaque itération, le triangle obtenu est une union de trois copies de lui même

réduite d'un facteur 12. Autrement dit, la dimension du triangle de Sierpi«ski est

D =ln 3

ln 2

1.2 Partie machine

1.2.1 Premiers codes

Courbe de Koch

La première �gure fractale que j'ai réussie à faire sur machine est la courbe deKoch. Mes premiers algorithmes 1 sont entièrement déterministes. De ce fait, ilfaut attendre assez longtemps dès que l'on demande un nombre d'itérations assezimportant. Par assez important, j'entends 6 ou 7 itérations, après aucune imagen'apparaît en un temps raisonnable. Par exemple pour 6 itérations, j'obtiens la�gure 1.2 page 2.

L'algorithme est récursif. On donne en paramètre à la fonction les deuxextrémités du segment initial et le nombre N d'itérations que l'on souhaite. Puison créé une première branche sur laquelle on rappelle la fonction avec N − 1 itéra-tions. On fait de même pour les trois autres branches. Si le nombre N reçu parla fonction est inférieur à 1, on a�che le segment. Au �nal, on obtient une courbequi s'approche de la courbe de Koch. L'inconvénient de cet algorithme est qu'ilest extrêmement récursif. En ce sens si on appelle la fonction avec 6 itérations, onva faire 46 appels, soit 4096.

Figure 1.2: Courbe de Koch, après 6 itérations

1Code source disponible en annexe A.1, p. 51

Page 8: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 1. LES FRACTALES 3

Pour 6 itérations, on fait donc 4096 appels de fonctions. C'est aussi le nombrede segments qu'il faut tracer pour obtenir la �gure2.A�n d'accélérer le processus,on peut appeler la fonction drawlater avant de calculer la courbe puis la fonctiondrawnow lorsque le calcul est terminé. Le processus est ainsi beaucoup plus rapide,en e�et le temps d'a�chage est relativement long.

Triangle de Sierpi«ski

Sur le même principe, j'ai pu faire le triangle de Sierpi«ski. Un algorithme en-tièrement déterministe, qui a�che une approximation du triangle de Sierpi«ski.Pour avoir un rendu plus �exotique�, les triangles sont a�chés avec des couleursaléatoires, puis j'ai appliqué une carte des couleurs. Par exemple, j'ai pu obtenirla �gure 1.3 donnée en page 3.

Figure 1.3: Triangle de Sierpi«ski, après 6 itérations

1.2.2 Système de fonctions itérées

Un système de fonctions itérées (ou IFS, pour Iterated Functions System) est unecollection �nie de transformations a�nes contractantes. On dit qu'une transfor-mation a�ne du plan est contractante si l'image d'un segment par cette transfor-mation est un segment de longueur inférieure.

2Au delà de 9 itérations, il faudrait tracer plus d'un million de segments !

Page 9: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 1. LES FRACTALES 4

Pour chaque fractale vue précédemment, il est possible de construire l'IFScorrespondant3.

Par exemple, pour le triangle de Sierpi«ski, l'IFS correspondant est un ensemblede homothéties de rapport 1

2de centre (0; 0), et de trois translations. Ainsi, on a :

A1,2,3 =

(0.5 00 0.5

)b1 =

(0 0

)Tb2 =

(0.5 0

)Tb3 =

(0.5 cos(π

3) 0.5 sin(π

3))T

On dé�nit wi(E) = Ai(E) + bi et En+1 =⋃3i=1wi(En), avec E0 les sommets

initiaux A, B et C du triangle.L'attracteur K (ici, le triangle de Sierpi«ski) est la limite de (En). Ainsi on a

K =3⋃i=1

wi(K)

1.2.3 IFS aléatoire

Un IFS aléatoire est un IFS où chaque transformation a�ne wi est pondérée parune probabilité 0 < pi < 1, telle que

∑Ni=1 pi = 1.

On se donne un point (x0; y0), on choisit au hasard et avec une probabilité pkla transformation wk et on construit (x1; y1) = wk (x0; y0). Et on recommence.Les itérations successives conduisent au même attracteur K obtenu avec l'IFSdéterministe.

3Barnsley a démontré, avec le Théorème du collage, que tout ensemble de points peut être

approximé par un IFS.

Page 10: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 1. LES FRACTALES 5

Construction d'une fougère avec un IFS aléatoire

Barnsley propose, pour dessiner une fougère, l'IFS suivant :

A1 =

(0.85 0.04−0.04 0.85

)b1 =

(0 0.16

)TA2 =

(0.2 −0.260.23 0.22

)b2 = b1

A3 =

(−0.15 0.280.26 0.24

)b3 =

(0 0.44

)TA4 =

(0 00 0.16

)b4 =

(0 0

)TOù wi(x, y) = Ai

(x y

)T+ bi, avec les probabilités suivantes :

p1 = 0.85

p2 = 0.07

p3 = 0.07

p4 = 0.01

Un code Scilab associé peut être le suivant :

0 plotlibmode

s = 4;

N = 100000;

5 A(:,:,1) = [0.85 0.04 ; -0.04 0.85];

b(:,1) = [0 ; 1.6];

A(:,:,2) = [0.2 -0.26 ; 0.23 0.22];

b(:,2) = [0 ; 1.6];

10

A(:,:,3) = [ -0.15 0.28 ; 0.26 0.24];

b(:,3) = [0 ; 0.44]

A(:,:,4) = [0 0 ; 0 0.16];

15 b(:,4) = [0 ; 0];

p = [ 0.85 ; 0.07 ; 0.07 ; 0.01 ]

20

x=zeros(2,1,N);

clf();

Page 11: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 1. LES FRACTALES 6

for i = 1:N-1

U = rand(1,1, 'def');

25

if(U <= 0.01) then

x(:,i+1) = A(:,:,4)*x(:,i) + b(:,4);

elseif (U <= 0.07) then

if(rand(1,1, 'def') < 0.5) then

30 x(:,i+1) = A(:,:,3)*x(:,i) + b(:,3);

else

x(:,i+1) = A(:,:,2)*x(:,i) + b(:,2);

end

else

35 x(:,i+1) = A(:,:,1)*x(:,i) + b(:,1);

end;

end;

x = x/10;

plot(x(1,:), x(2,:), '.g','markersize ',1, 'markerEdgeColor '

,[0 ,118/255 ,1/255]);

40 axis equal

Figure 1.4: Fougère obtenue avec un IFS aléatoire

Page 12: MT94 Introduction aux mathématiques appliquées Cahier d ...

2Problèmes non linénaires

La fonction fsolve ne m'était pas entièrement inconnue. Du moins, je savais com-ment lui fournir un vecteur d'entrée et la fonction à annuler. Nous nous en étionsservis en TN06 pour calculer des angles. Mais c'est tout ce que je savais faire. Etlorsque que nous avions réussi à avoir tous les angles que nous voulions, je me suisdis que c'était un outil puissant et interrogé sur la manière dont il pouvait bienfonctionner. Puisse ce chapitre apporter quelques éléments de réponse.

2.1 Prise en main

Soit f : R 7→ R. Dans la suite de cette section, nous essaierons de trouver unx ∈ R tel que f(x) = 0.

2.1.1 La dichotomie

C'est la méthode la plus simple, et sans doute la plus instinctive. On suppose fcontinue, a, b ∈ R, avec a < b, f(a)f(b) < 0. D'après le théorème de la valeurintermédiaire, il existe x ∈ ]a; b[ tel que f(x) = 0. Le but est donc de diminuerl'intervalle ]a; b[, tout en conservant les propriétés que nous avons vues, a�n depouvoir encadrer notre x. L'algorithme est donné en page 8.

Comme nous le verrons par la suite, l'ordre de convergence de cette méthodeest linéaire.

7

Page 13: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 2. PROBLÈMES NON LINÉNAIRES 8

Algorithm 1 Dichotomiek ← 0ak ← abk ← brepeat

xk ← ak+bk2

if f(xk)f(ak) < 0 thenbk+1 ← xk

else

ak+1 ← xkend if

k ← k + 1until |f(xk)| 6 ε

2.1.2 Méthode de point �xe

Cette méthode consiste à choisir une fonction g, g(x) ∈ ]a; b[, telle que f(x) =0 ⇔ g(x) = x. D'où le nom de méthode de point �xe. On construit donc la suitesuivante : {

x0 donné

xk+1 = g(xk)

Peut-on toujours trouver une telle fonction g ?

Oui, il existe toujours une fonction g telle que f(x) = 0⇔ g(x) = x.

Preuve. Dé�nissons l'application h : ]a; b[ 7→ R par h(x) = x− g(x). On a

h(a) = a− g(a) 6 0

eth(b) = b− g(b) > 0

car ∀x, g(x) ∈ ]a; b[. Donc, d'après le théorème des valeurs intermédiaires, il existex ∈ ]a; b[ tel que h(x) = 0, soit g(x) = x.

Y a - t - il toujours convergence ?

Théorème 2.1.1. Il y a convergence de la suite si et seulement |g′(x)| < 1.

Page 14: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 2. PROBLÈMES NON LINÉNAIRES 9

Preuve. Si x est la solution exacte, on dé�nit l'erreur à l'étape n par en = xn−x.Il y a donc convergence si et seulement limn→∞ en = 0. On peut donc faire undéveloppement limité de xn+1 en x à l'ordre 2. Nous avons donc :

xn+1 = g(xn)

= g(x+ en)

= g(x) + eng′(x) + e2

nε(en)

= x+ eng′(x) + e2

nε(en)

en+1 = eng′(x) + e2

nε(en)

En négligeant, ce qui peut être justi�é pour un n �grand�, le reste, on remarqueque l'erreur peut être mise sous la forme en ≈ e0 (g

′(x))n.Ainsi, on a limn→∞ en = 0 si et seulement si |g′(x)| < 1.

2.1.3 Méthode de Newton

Cette méthode consiste à approximer la fonction que l'on cherche à annuler parsa tangente. Lorsque l'on aura l'équation de cette tangente, on pourra facilementl'annuler et ainsi trouver une première approximation du zéro de la fonction f . Oncalcule ensuite la tangente de la fonction en ce point, et on itère ainsi le processusjusqu'à ce que l'on ait |f(xk)| 6 ε, où ε est la précision voulue.

Pour estimer la tangente, la fonction f doit être dérivable. De plus, pourtrouver le zéro de cette tangente il est nécessaire que cette tangente ne soit pasnulle aux points considérés.

Si f est dérivable, alors l'équation de sa tangente en x0 est y = f(x0) + (x −x0)f

′(x0). Cette tangente s'annule en x1 = x0 − f(x0)f ′(x0)

.On dé�ni donc la suite suivante :{

x0 donné

xk+1 = xk − f(xk)f ′(xk)

(2.1)

2.1.4 Méthode de la sécante

Si la fonction f à annuler est un peu �compliquée�, le calcul de la dérivée peuts'avérer long et fastidieux pour appliquer la méthode de Newton. La méthodede la sécante consiste à remplacer la dérivée au point considéré par le taux devariation de la fonction en ce point. La suite à considérer est donc :{

x0, x1 donnés

xn+1 = xn − f(xn)×(xn−xn−1)f(xn)−f(xn−1)

(2.2)

Page 15: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 2. PROBLÈMES NON LINÉNAIRES 10

Figure 2.1: Illustration de la méthode de Newton

2.2 Comparaisons des di�érentes méthodes itéra-

tives

Comme nous l'avons vu précédemment, chaque méthode o�re une approximationde la solution avec un nombre d'itérations di�érent. Bien évidemment, plus cenombre d'itérations est petit, plus la méthode est intéressante.

Dé�nition 2.2.1 (Ordre de convergence). L'ordre de convergence α > 1 d'une

méthode est dé�ni par

limk→∞

|xk+1 − x||xk − x|α

= q > 0

Dans un premier temps nous allons essayer de trouver l'ordre de convergencedes méthodes précédentes expérimentalement puis dans un second nous essayeronsde formaliser ce qui aura été trouvé.

2.2.1 Expérimentalement

Il est possible de retrouver expérimentalement l'ordre de convergence d'un méthodeà l'aide d'une courbe. On peut en e�et tracer la courbe |xk+1 − x| = f(|xk − x|).Compte tenu de la dé�nition 2.2.1, nous avons ln |xk+1 − x| = ln q + α ln |xk − x|.De fait, l'ordre de convergence sera obtenu par lecture du coe�cient directeur dela courbe obtenue.

J'ai donc tracé cette courbe pour chaque méthode avec comme paramètres :

• x0 = 1.5

• ε = 10−10

• f(x) = x2 − 21

1ou g(x) = x+2x+1 dans le cas de la méthode de point �xe.

Page 16: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 2. PROBLÈMES NON LINÉNAIRES 11

Figure 2.2: Ordre de convergence

Le coe�cient directeur n'est pas très lisible, notamment pour la méthode dedichotomie où la courbe est quelque peu chahutée. Grâce à la fonction regress ilest possible d'obtenir un vecteur à deux lignes tel que ~c = (a; b) et où Y = a+ bX.De fait, il su�t d'appliquer cette fonction aux points ayant permis de tracer lescourbes précédentes pour obtenir l'ordre de convergence de la méthode associée.Voici ce que j'obtiens :

0 Dichotomie : 1.414214 , en 29 iterations

L'ordre de convergence de cette methode est de : 0.988251

Point fixe : 1.414214 , en 14 iterations

L'ordre de convergence de cette methode est de : 0.999426

Newton : 1.414214 , en 4 iterations

5 L'ordre de convergence de cette methode est de : 1.995205

Secante : 1.414214 , en 6 iterations

L'ordre de convergence de cette methode est de : 1.623221

Page 17: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 2. PROBLÈMES NON LINÉNAIRES 12

On retrouve ainsi les résultats attendus, soit environ 1 pour les méthodes dedichotomie et de point �xe, environ ϕ pour la méthode de la sécante et 2 pour laméthode de Newton.

2.2.2 Théoriquement

Méthode de point �xe

Théorème 2.2.1. Soit g la fonction dé�nie telle que f(x) = 0⇔ g(x) = x, n fois

continument dérivable sur ]a; b[. Si les k premières dérivées de g sont nulles en c,k + 1 < n, alors la méthode de point �xe de d'ordre k + 1.

Preuve. Soit le développement limité à l'ordre k + 1 de la fonction g :

xi+1 = g(xi)

= g(ei + x)

= g(x) + g′(x)ei +g′′(x)

2e2i + . . .+

g(k)(x)

k!eki +

g(k+1)(x)

(k + 1)!ek+1i + ek+1

i ε(ei)

= x+g(k+1)(x)

(k + 1)!ek+1i + ek+1

i ε(ei)

On a ei+1 = xi+1 − xD'où

limi→∞

|xi+1 − x||xi − x|α

= limi→∞

|ei+1||ei|α

= limi→∞

∣∣∣g(k+1)(x)(k+1)!

ek+1i + ek+1

i ε(ei)∣∣∣

|ei|α

En prenant α = k + 1, on trouve

limi→∞

|xi+1 − x||xi − x|α

=

∣∣∣∣g(k+1)(x)

(k + 1)!

∣∣∣∣ > 0

car limi→∞ ε(ei) = 0

Dans notre cas, nous avons g(x) = x+2x+1

, la dérivée première g′(x) = 3(x+1)2

ne

s'annule pas en x =√2. Par conséquent, l'ordre de convergence théorique est

α = 0 + 1 = 1, ce qui est en accord avec le résultat expérimental.

Méthode de Newton

Proposition 2.2.1. L'ordre de convergence de la méthode de Newton est au moins

2.

Page 18: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 2. PROBLÈMES NON LINÉNAIRES 13

Preuve. La méthode de Newton est un cas particulier de la méthode de point�xe. On a g(x) = x− f(x)

f ′(x).

La dérivée première de g est nulle en x, en e�et, on a :

g′(x) = 1− f ′2(x)− f(x)f ′′(x)

f ′2(x)

=f(x)f ′′(x)

f ′(x)

g′(x) =f(x)f ′′(x)

f ′(x)

= 0 car f(x) = 0

En vertu du théorème 2.2.1, la méthode de Newton est de convergence quadra-tique, au moins.

2.2.3 Application

Nous allons faire une petite application Scilab dont le but sera d'animer un brasarticulé, a�n que l'extrémité de ce bras, la main, suive un polygone ouvert dé�nipar l'utilisateur. Au �nal, nous devrions avoir un rendu similaire à l'image 2.3.

Figure 2.3: Le bras de robot

où le bras de robot apparait en bleu, et le polygone suivit apparait en rouge.D'après la �gure 2.4, donnée en page p. 17, l'extrémité du bras a pour coor-

données :

M(θ) =

(l1 cos θ1 + l2 cos(θ1 + θ2)l1 sin θ1 + l2 sin(θ1 + θ2)

)

Page 19: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 2. PROBLÈMES NON LINÉNAIRES 14

Soit x = (xg; yg) le point à atteindre. La fonction f que nous cherchons àannuler est alors

f(θ, x) =

(l1 cos θ1 + l2 cos(θ1 + θ2)− xgl1 sin θ1 + l2 sin(θ1 + θ2)− yg

)Nous trouverons le zéro de la fonction grâce à la fonction fsolve de Scilab. La

procédure que nous suivrons est la suivante :

1. Tracer le cercle limite que peut atteindre le bras. C'est un cercle centré enl'origine et de rayon l1 + l2.

2. L'utilisateur doit dessiner le polygone dans le cercle à l'aide de sa souris :

a. Un polygone ouvert sera dé�ni par deux vecteurs xp et yp, contenantchacun les abscisses et les ordonnées des sommets du polygone. Lesdeux vecteurs sont initialisés à vide.

b. À chaque clic de l'utilisateur, on ajoute les coordonnées du clic (x; y)aux vecteurs xp et yp. {

xp ← [xp;x]

yp ← [yp; y]

3. Puis pour chaque segment du polygone :

a. On le discrétise en N points

b. Pour chacun des points x = (xg; yg) de ce segment, on cherche θ tel quela fonction f s'annule.

c. On place alors le robot dans la bonne position, grâce à θ.

Le code Commençons par dé�nir en Scilab, les fonctions Y=f(T) et robot_limits

() qui sont respectivement la fonction à annuler et la fonction qui dessine le cerclelimite.

0 function Y=f(T)

A = l1*cos(T(1))+l2*cos(T(1)+T(2))-xg;

B = l1*sin(T(1))+l2*sin(T(1)+T(2))-yg;

Y = [A;B];

5 endfunction

function robot_limits ()

t = linspace(0, 2*%pi , 1001);

x=(l1+l2)*cos(t);

10 y=(l1+l2)*sin(t);

plot2d(x,y);

endfunction

Page 20: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 2. PROBLÈMES NON LINÉNAIRES 15

On peut ensuite dé�nir la fonction robot(T), qui a�che, en fonction de T �vecteur contenant θ1 et θ2 � le bras de robot.

0 function robot(T)

xset("color", 1); //Pour marquer la difference

x = [ 0 ; l1*cos(T(1)) ];

y = [ 0 ; l1*sin(T(1)) ];

xfpolys(x,y);

5

x = [ l1*cos(T(1)) ; l1*cos(T(1)) + l2*cos(T(1) + T(2))];

y = [ l1*sin(T(1)) ; l1*sin(T(1)) + l2*sin(T(1) + T(2))];

xfpoly(x,y);

endfunction

Et en�n, les fonctions polygone() et drawpoly(xp, yp), qui permettront de saisiret d'a�cher le polygone.

0 function drawpoly(xp , yp)

xset("color", 3);

for i = 1: length(yp)-1

xfpoly ([xp(i) ; xp(i+1)] , [yp(i) ; yp(i+1) ]);

end;

5 endfunction

function polygone ()

xset("color", 3);

global xp;

10 global yp;

while 1

[ibutton ,x,y]= xclick ();

if (ibutton <> 3) //Clic droit , on quitte

15 break;

end;

//Sinon , on ajoute le point ,

//et met à jour le dessin du polygone

xp = [ xp ; x ];

20 yp = [ yp ; y ];

drawpoly(xp , yp);

end;

xset("color", 1);

endfunction

Nous n'avons plus qu'à coder la partie principale du programme qui utiliseraces di�érentes fonctions :

0 axis on;

axis equal;

axis origin;

//On dessine les limites a ne pas depasser

Page 21: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 2. PROBLÈMES NON LINÉNAIRES 16

5 robot_limits;

//On saisit le polygone

polygone;

10 g = gcf() // handle figure courante

g.pixmap='on' // demarre le mode pixmap

//Pour chaque segment

for i = 1: length(xp) - 1

15 tx = linspace(xp(i), xp(i+1) , 100);

ty = linspace(yp(i), yp(i+1) , 100);

for j = 1:100

clf()// efface le buffer

axis on;

20 axis equal;

axis origin;

//On change les coordonnees du point a atteindre

xg = tx(j);

yg = ty(j);

25 //On stocke la valeur de T, pour converger rapidement la

prochaine fois

T = fsolve(T, f);

robot_limits;

drawpoly(xp , yp);

robot(T);

30 show_pixmap ()// affichage du contenu du buffer dans la fenetre

end;

end;

g.pixmap='off'// arrete le mode pixmap

Pour que le tout fonctionne, il n'y a plus qu'à dé�nir les variables globales2 :

0 l1 = 1;

l2 = 1;

T = [0 ; 0];

5 global xp;

global yp;

xp = [];

yp = [];

Il n'y a plus qu'à tracer le polygone en cliquant dans le cercle (clic gauche) puisquitter le mode édition par un clic droit pour voir l'animation s'exécuter.

2à mettre au début de code source

Page 22: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 2. PROBLÈMES NON LINÉNAIRES 17

θ1

θ2

Figure 2.4: Représentation géométrique du bras

Page 23: MT94 Introduction aux mathématiques appliquées Cahier d ...

3Système d'équations di�érentielles

Nous allons voir dans ce chapitre quelques méthodes d'approximation de solutionsd'équations di�érentielles. On traitera notamment la méthode d'Euler, la méthodede Runge et Kutta d'ordre 4. Le but de ces méthodes, est de partir d'une premièreestimation � les conditions initiales � de la solution, puis d'itérer pour avoir uneapproximation pour calculer une seconde approximation, etc.

Dans toute la suite de ce chapitre, nous chercherons à approximer y′(t) =f (t, y(t)). On notera yk l'approximation de y(tk).

3.1 Présentation des di�érentes méthodes

3.1.1 La méthode d'Euler

Le schéma est le suivant :{y0 donné

yk+1 = yk + (tk+1 − tk) f (tk, yk)(3.1)

Cette relation peut être trouvée grâce à un développement de Taylor en tk àl'ordre 2 comme suit :

y (tk + (tk+1 − tk)) = y (tk) + y′ (tk) (tk+1 − tk) + y′′ (ε) (tk+1 − tk)2 avec ε ∈ ]tk; tk+1[

y (tk+1) ≈ y (tk) + f (tk, y (yk)) (tk+1 − tk)yk+1 = yk + f (tk, yk) (tk+1 − tk) D'où le schéma d'Euler.

L'erreur commise au point tk est donc |yk − y(tk)| = (tk+1 − tk)2 |y′′ (ε)|. Doncsi la dérivée seconde peut être majorée par un réel C, on a |yk − y(tk)| 6 C × h2,où h est le pas.

18

Page 24: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 3. SYSTÈME D'ÉQUATIONS DIFFÉRENTIELLES 19

tk tk+1

f (tk, yk)

Figure 3.1: Représentation de la méthode d'Euler

3.1.2 Le schéma prédicteur-correcteur d'Euler-Cauchy

Le schéma d'Euler rétrograde

Soit le développement de Taylor de y (tk) à l'ordre 2 suivant :

y (tk+1 − (tk+1 − tk)) = y (tk+1)− y′ (tk+1) (tk+1 − tk) + y′′ (ε) (tk+1 − tk)2

y (tk+1) = y (tk) + f (tk+1, y (tk+1)) (tk+1 − tk) + y′′ (tk+1 − tk)2

yk+1 = yk + f (tk, yk+1) (tk+1 − tk) (3.2)

Ce qui conduit au schéma rétrograde d'Euler. La di�érence entre ce schéma etle précédent (3.1), est qu'ici nous n'obtenons pas yk+1 directement. Nous devonsrésoudre une équation (ou un système) qui est, dans la plupart des cas non linéaire.

Le schéma prédicteur - correcteur

Ce schéma est une composition des schémas 3.2 est 3.1. Il est dé�ni comme suit :{zk+1 = zk + f (tk, zk) (tk+1 − tk) prédiction

zk+1 = zk + f (tk, zk+1) (tk+1 − tk) correction(3.3)

Page 25: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 3. SYSTÈME D'ÉQUATIONS DIFFÉRENTIELLES 20

3.1.3 Méthode de Runge et Kutta

La méthode de Runge-Kutta est une généralisation de la méthode d'Euler-Cauchy.Elle est dé�nie comme suit :{

y0 donné

yk+1 = yk + hφ (tk, yk)(3.4)

On remarque que pour φ = f , on retrouve la méthode d'Euler-Cauchy, d'oùl'expression �généralisation�. La fonction φ est de la forme φ =

∑qi=1 γiki. Dans le

cours de MT94, nous avons utilisé la méthode de Runge-Kutta à l'ordre 4 ( ie. :q = 4). Et nous avons les valeurs suivantes :

k1 = f (tn, yn)

k2 = f(tn + hn

2 , yn + hn2 k1

)k3 = f

(tn + hn

2 , yn + hn2 k2

)k4 = f (tn + hn, yn + hnk3)

et les coe�cients γi dé�nis par γ1 = 16 , γ2 = 1

3 , γ3 = 13 , γ4 = 1

6 .

3.2 Les méthodes de résolutions utilisées en pra-

tique

Nous allons comparer les trois schémas que nous avons vus sur un exemple.Considérons l'équation di�érentielle suivante :

y′′ + 4π2y = 0, t ∈ [0; 1] (3.5)

avec y(0) = 1 et y′(0) = 0.La solution exacte de cette équation di�érentielle est y = cos (2πt). Regardons,

pour commencer les di�érentes solutions obtenues avec les di�érents schémas (Figure 3.2,p. 21).

Quelles sont les remarques que l'on peut faire en voyant ce graphique ?

• On remarque tout d'abord que pour un t petit, les trois méthodes sont à peude chose près équivalentes, ce qui est dû au fait que les méthodes fassent desapproximations d'approximations. D'une façon générale, l'erreur |y(ti)− yi| croîtavec i.

• Visiblement, la solution exacte � tracée en pointillés jaunes � et la solution ap-prochée par la méthode RK4 � tracée en vert � se chevauchent sur tout legraphique. Nous comparerons les trois méthodes dans un tableau (3.3, p. 24).

Page 26: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 3. SYSTÈME D'ÉQUATIONS DIFFÉRENTIELLES 21

EulerECRRG4Solut ion exacte

-1.5

-1.0

-0.5

0.0

0.5

1.0

1.5

0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0

Figure 3.2: Di�érentes solutions obtenues

3.2.1 Ordre de l'erreur

Une fonction d'erreur est dé�nie comme suit :

E(h) = maxn=0...N

|y(tn)− yk|

avec h qui varie de 10−3 à 10−2. Le code Scilab pour cette fonction est le suivant :

0 function [E1, E2, E3]= erreur ()

for i=1:N

h=hi(i);

e = euler ([1 ; 0]);

e1 = eulerCauchyRetro ([1 ; 0]);

Page 27: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 3. SYSTÈME D'ÉQUATIONS DIFFÉRENTIELLES 22

5 e2 = rg2 ([1 ; 0]);

t = zeros(1, N);

for j = 0:N-1

t(j+1) = j*h;

10 end;

E1(i) = max(abs(cos(2*%pi*t)-e(1,:)))

E2(i) = max(abs(cos(2*%pi*t)-e1(1,:)))

E3(i) = max(abs(cos(2*%pi*t)-e2(1,:)))

15 end;

endfunction;

Où hi est dé�ni par hi = linspace(10^-3, 10^-2, N);. Pour une lecture plus aisée,nous traçons log(hi) = f(log(Ek)), avec k variant de 1 à 3.

EulerECRRG4

-30

-25

-20

-15

-10

-5

-0

-7.0 -6.5 -6.0 -5.5 -5.0 -4.5

Figure 3.3: Courbe représentation des fonctions d'erreurs pour les trois méthodes

Puis, pour déterminer l'ordre d'erreur, on e�ectue une régression linéaire sur chacunedes courbes avec Scilab pour en déterminer la pente. On trouve :

0 L'ordre de convergence de la methode d'Euler est de : 2.303804

L'ordre de convergence de la methode d'Euler -Cauchy retrograde est

de : 2.225394

Page 28: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 3. SYSTÈME D'ÉQUATIONS DIFFÉRENTIELLES 23

L'ordre de convergence de la methode RK4 est de : 5.014902

3.2.2 Tableaux comparatifs

Les courbes précédentes nous permettaient une représentation visuelle de l'erreur com-mise. Les tableaux comparatifs présentés ci-après permettent de chi�rer l'erreur. Commenous l'avons constaté avant, les méthodes d'Euler et d'Euler-Cauchy rétrograde sont peuprécises, bien que simple à mettre en place pour un calcul approximatif, face à la méthodede Runge - Kutta.

Page 29: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 3. SYSTÈME D'ÉQUATIONS DIFFÉRENTIELLES 24

ti y(ti) yi |y(ti)− yi|0. 1. 1. 0.

0.1010101 0.8052703 0.8221335 0.01686330.2020202 0.2969204 0.3107891 0.01386870.3030303 -0.3270680 -0.3448355 0.01776760.4040404 -0.8236766 -0.8905387 0.06686220.5050505 -0.9994965 - 1.1053036 0.10580700.6060606 -0.7860531 -0.8903474 0.10429430.7070707 -0.2664738 -0.3133280 0.04685420.8080808 0.3568862 0.4116728 0.05478650.9090909 0.8412535 1.00308 0.1618265

Table 3.1: Méthode d'Euler

ti y(ti) yi |y(ti)− yi|0. 1. 1. 0.

0.1010101 0.8052703 0.7882538 0.01701640.2020202 0.2969204 0.2820893 0.01483100.3030303 -0.3270680 -0.3124797 0.01458830.4040404 -0.8236766 -0.7636013 0.06007530.5050505 -0.9994965 -0.9036556 0.09584090.6060606 -0.7860531 -0.6911055 0.09494760.7070707 -0.2664738 -0.2214826 0.04499130.8080808 0.3568862 0.3147062 0.04218000.9090909 0.8412535 0.7088926 0.1323610

Table 3.2: Méthode d'Euler - Cauchy rétrograde

ti y(ti) yi |y(ti)− yi|0. 1. 1. 0.

0.1010101 0.8052703 0.8052703 4.715D-080.2020202 0.2969204 0.2969205 0.00000020.3030303 -0.3270680 -0.3270677 0.00000020.4040404 -0.8236766 -0.8236764 0.00000020.5050505 -0.9994965 -0.9994965 9.076D-090.6060606 -0.7860531 -0.7860534 0.00000030.7070707 -0.2664738 -0.2664744 0.00000060.8080808 0.3568862 0.3568856 0.00000070.9090909 0.8412535 0.8412531 0.0000005

Table 3.3: Méthode de Runge et Kunta 4

Page 30: MT94 Introduction aux mathématiques appliquées Cahier d ...

4Interpolation

Étant donnés n+1 points : (xi; f(xi)), i = 0 . . . n, nous cherchons une fonction qui passeexactement par tous ces points. Il en existe une in�nité. Si nous nous intéressons plusparticulièrement aux polynômes de degré inférieur ou égal à n, il n'en existe qu'en seul.

4.1 Matrice de Vandermonde

Si on cherche le polynôme p, tel que p(xi) = f(xi), nous avons :

a0 + a1xi + a2x2i + . . . anx

ni = f(xi)

d'où le système matriciel suivant :1 x0 x2

0 · · · xn01 x1 x2

1 · · · xn1...

......

. . ....

1 xn x2n · · · xnn

×a0

a1...an

=

f(x0)f(x1)...

f(xn)

Si les abscisses sont di�érentes deux à deux, la matrice est inversible, ce qui nous

assure de l'existence du polynôme p. Cela dit, d'après ce que j'ai lu, notamment dans[Fortin(2008)], il s'avère que cette matrice est très mal conditionnée, et donc peu utiliséeen pratique.

4.2 Le polynôme d'interpolation de Lagrange

Dé�nition 4.2.1. On appelle polynôme de Lagrange le polynôme Li(x) associé à (xi; f(xi)),de degré n le polynôme dé�ni par

Li(xj) =

{1 si i = j

0 sinon

25

Page 31: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 4. INTERPOLATION 26

On peut montrer que

Li(x) =n∏

k=0,k 6=i

x− xkxi − xk

Dé�nition 4.2.2. Le polynôme d'interpolation de Lagrange est alors dé�nie par :

p(x) =n∑i=0

Li(x)f(xi)

Théorème 4.2.1. Soit f , soient (xi)i=0...n avec xi 6= xj pour i 6= j. Soit pn le polynômed'interpolation de degré inférieur ou égal à n tel que pn(xi) = f(xi). Soit l'erreur, dé�niepar en = f(x)− pn(x). On a alors :

∀n,∃ξ ∈ [min(xi); max(xi)] , en =f (n+1)(ξ)

(n+ 1)!

n∏i=0

(x− xi)

Corollaire 4.2.1. Si le nombre de points n tend vers l'in�ni et que les points sontéquidistants, alors l'erreur tend aussi vers l'in�ni. C'est ce que l'on appelle le phénomènede Runge.

Figure 4.1: Phénomène de Runge, pour f(x) = 11+25x2

4.3 Les splines

Comme nous l'avons vu dans la sous-section précédente, l'utilisation d'un polynômed'interpolation ne nous permet pas d'obtenir la courbe la plus naturelle qu'il soit, no-tamment à cause du phénomène de Runge. Pour avoir une courbe plus naturelle, nousallons utiliser des splines.

Page 32: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 4. INTERPOLATION 27

Dé�nition 4.3.1 (Spline). Une spline est une fonction dé�nie par morceaux par despolynômes [Wikipedia(2011b)].

Dans la pratique, les polynômes dé�nissant une spline sont de degré 3. On a alorsp(x) = pi(x) si x ∈ [xi;xi+1]. Et on impose quelques conditions :

1. pi(xi) = pi+1(xi) = f(xi), c'est à dire que deux morceaux consécutifs de la splinedoivent passer par le point (xi; f(xi)).

2. p′i(xi) = p′i+1(xi), c'est à dire que deux morceaux consécutifs de la spline doiventavoir la même tangente.

3. p′′i (xi) = p′′i (xi), c'est à dire que deux morceaux consécutifs de la spline doiventavoir la même courbure.

Par exemple :

bbb

b

b b

b

b

b

b

b

bbb

b

b

b

b

b

b b

b

bbb

p0

p1

p2

p3 p4

p5

p6

p7

Figure 4.2: Interpolation par des splines cubiques, avec neuf points

Sur la �gure 4.2, on peut voir en rouge la fonction f(x) = 11+25x2

et en noir soninterpolation par spline cubique, et en bleu les tangentes aux points de jonction. Onconstate que le phénomène de Runge a disparu, l'erreur est visiblement moindre que parrapport à celle par l'interpolation polynomiale.

4.3.1 Les splines paramétrées

Jusqu'à maintenant, nous nous sommes intéressés aux courbes du type y = f(x). Cetteforme d'équation nous empêche de travailler, par exemple, avec des courbes qui secoupent, ou bien sur un dessin. Et pourtant, il est courant de vouloir faire passer une

Page 33: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 4. INTERPOLATION 28

courbe à l'endroit où l'utilisateur clique, pour faire du design ou autre. Et rien n'empêcheun dessinateur d'aligner deux points verticalement !

Pour répondre à cette problématique1, nous allons maintenant nous intéresser auxcourbes de la forme

~γ(t) = (x(t); y(t)) (4.1)

L'interpolation de courbes paramétrées di�ère peu de l'interpolation des courbes ex-plicites. Dans le cas d'une expression comme 4.1, il nous su�t de faire deux interpolations:

• l'interpolation de x = f(t)

• et de y = f(t)

Une fois cela fait, nous n'aurons plus qu'à tracer l'ensemble des points (xi; yi) pourobtenir notre courbe paramétrée.

Il faut tout d'abord créer un vecteur temps, tel que

~γ(ti) = (xi; yi)

Pour la construction de ce vecteur, nous suivrons le choix fait dans [Fortin(2008)], àsavoir : {

t0 = 0

ti = ti−1 +∥∥~ri − ~ri−1

∥∥où ~ri est le vecteur dé�ni par ~ri = t

(xi yi

).

On note ensuite tmax la coordonnée maximale de ~t. Par construction, tmax = tn.Maintenant, on peut discrétiser [0; tmax] avec beaucoup de points (généralement, onprendra 10 fois plus de points qu'il y en a dans ~t pour assurer un lissage minimal). Puis,de la même manière que dans la section 4.3 on calcule les splines x = f(t) et y = f(t).

Les splines paramétrées avec Scilab Le code scilab pour calculer une splinecubique paramétrique, devant passer par les points de coordonnées (xi; yi) est le suivant:

0 function draw(x, y)

if(length(x) <> length(y))

return;

end;

5

n = length(x);

t(1) = 0;

for i = 2:n

1et surement doute d'autres !

Page 34: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 4. INTERPOLATION 29

10 t(i) = t(i-1) + norm( [x(i) ; y(i)] - [x(i-1) ; y(i-1)] );

end;

tmax = t(n);

15 tt = linspace(0, tmax , 100*n)';

d1 = splin(t, x);

d2 = splin(t, y);

20 s1 = interp(tt , t, x, d1);

s2 = interp(tt , t, y, d2);

plot(s1 , s2 , '-', x, y, 'or');

endfunction;

Il est possible de faire dessiner l'utilisateur, en reprenant un code similaire à la fonc-tion drawpoly() que nous avons vue lors de la création du robot (2.2.3).

-10

-8

-6

-4

-2

0

2

4

6

8

-10 -5 0 5 10 15 20

Figure 4.3: Interpolation paramétrique

Page 35: MT94 Introduction aux mathématiques appliquées Cahier d ...

5Approximation des opérateurs di�érentiels

En analyse numérique, l'approximation des opérateurs di�érentiels porte le nom de� méthode des di�érences �nies �. Le but est d'approcher numériquement les solutionsd'un problème aux dérivées partielles. Dans ce chapitre, nous approximerons les dérivéespartielles d'ordre 1 et 2.

Nous supposerons l'existence d'un axe régulièrement discrétisé par un pas h. Onposera xi = ih, et f est une fonction continûment dérivable 2 fois (et 3 fois pour l'ordre2).

5.1 Dérivées partielles d'ordre 1

Forward di�erence Soit de développement le limité de f suivant :

f(xi + h) = f(xi) + h∂f

∂x

∣∣∣∣i

+O(h)

D'où∂f

∂x

∣∣∣∣i

=f(xi+1)− f(xi)

h+O(h)

On note ∆1,hf f(xi) = f(xi+1)−f(xi)

h l'approximation de la dérivée partielle avant. Onappelle cet opérateur, l'opération de di�érentiation avant d'ordre 1, ou bien forwarddi�erence.

Backward di�erence De façon analogue, avec un développement de Taylor de f(xi−h), on trouve :

∂f

∂x

∣∣∣∣i

=f(xi)− f(xi−1)

h+O(h)

30

Page 36: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 5. APPROXIMATION DES OPÉRATEURS DIFFÉRENTIELS 31

On note ∆1,hb f(xi) = f(xi+1)−f(xi)

h l'approximation de la dérivée partielle arrière. Onappelle cet opérateur, l'opération de di�érentiation arrière d'ordre 1, ou bien backwarddi�erence.

Center di�erence En sommant les deux équations trouvées nous avons :

∂f

∂x

∣∣∣∣i

=f(xi+1)− f(xx−1)

2h+O(h2)

On note ∆1,hc f(xi) = f(xi+1)−f(xi−1)

2h l'approximation de la dérivée partielle centrée.On appelle cet opérateur, l'opération de di�érentiation centrée d'ordre 1, ou bien centerdi�erence. On notera le fait que la méthode centrée est d'ordre 2, alors que les deuxautres sont d'ordre 1. Cela est dû au fait que la somme annule la dérivée seconde et doncque l'on puisse monter d'un ordre. Cette méthode est donc plus précise que les deuxautres.

5.2 Dérivées partielles d'ordre 2

Center di�erence On peut obtenir l'approximation de la dérivée partielle seconded'une fonction en calculant deux développements de Taylor à l'ordre 2 :

f(xi + h) = f(xi) + h∂f

∂x

∣∣∣∣i

+h2

2

∂2f

∂x2

∣∣∣∣i

+O(h2)

f(xi − h) = f(xi)− h∂f

∂x

∣∣∣∣i

+h2

2

∂2f

∂x2

∣∣∣∣i

+O(h2)

On en déduit alors que :

∂2f

∂x2

∣∣∣∣i

=f(xi+1)− 2f(xi) + f(xx−1)

h2+O(h2)

5.3 Application à l'équation des ondes

Nous allons, en appliquant ce que nous avons vu précédemment, donner un schémanumérique a�n d'approcher la solution u de ce problème :

∂2u∂t2− ∂2u

∂x2= 0 ∀(x, t) ∈ ]0;L[× ]0;T [

u(x, 0) = f(x) ∀x ∈ ]0;L[

u(0, t) = 0 ∀t ∈ ]0;T [

u(L, t) = 0 ∀t ∈ ]0;T [∂u∂t (x, 0) = g(x) ∀x ∈ [0;L]

Page 37: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 5. APPROXIMATION DES OPÉRATEURS DIFFÉRENTIELS 32

Nous avons donc :

u(xi, tj+1)− 2u(xi, tj) + u(xi, tj−1)

∆t2− u(xi+1, tj)− 2u(xi, tj) + u(xi−1, tj)

∆x2+ Ti,j = 0

où Ti,j est l'erreur de troncature. En notant uji l'approximation de u(xi, tj) on a :

uj+1i − 2uji + uj−1

i

∆t2−uji+1 − 2uji + uji−1

∆x2= 0

On peut donc en déduire une expression de uj+1i qui est :

uj+1i = 2uji (1− ρ) + ρ

(uji+1 + uji−1

)− uj−1

i

où l'on a pose ρ = ∆t2

∆x2.

Posons U j = T(uj1, . . . , u

jn−1

). Les conditions initiales donnent :

1. U0 = f(x)

2. U1−U0

∆t = g(x)⇒ U1 = g(x)∆t+ U0

3. uj0 = ujn = 0 ∀j

Nous avons donc la relation de récurrence suivante :U j+1 = AU j − U j−1

U1 = g(x)∆t+ U0

U0 = f(x)

Où A est la matrice suivante :

A =

2(1− ρ) ρ

ρ 2(1− ρ) ρ. . . . . . . . .

ρ 2(1− ρ) ρρ 2(1− ρ)

On pourra trouver en annexe A.2 p.52 une implémentation en Scilab de ce schéma

numérique.

5.4 Modélisation des vagues

Les vagues peuvent être modélisées par l'équation des ondes en deux dimensions. On aalors :

Page 38: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 5. APPROXIMATION DES OPÉRATEURS DIFFÉRENTIELS 33

∂2u∂t2− ∂2u

∂x2− ∂2u

∂y2= 0 ∀(x, y, t) ∈ ]0;X[× ]0;Y [× ]0;T [

u(x, y, 0) = f(x, y) ∀(x, y) ∈ ]0;X[× ]0;Y [∂u∂t (x, y, 0) = g(x, y) ∀(x, y) ∈ [0;X]× ]0;Y [

u(0, y, t) = 0 ∀(y, t) ∈ ]0;Y [× ]0;T [

u(X, y, t) = 0 ∀(y, t) ∈ ]0;Y [× ]0;T [∂u∂x(x, 0, t) = 0 ∀(x, t) ∈ ]0;X[× ]0;T [∂u∂x(x, Y, t) = 0 ∀(x, t) ∈ ]0;X[× ]0;T [

Cette modélisation impose plusieurs conditions à notre futur vague :

1. Tout d'abord, être une onde (c'est la moindre des choses)

2. Ensuite, deux conditions initiales :

a. La première concernera l'allure de notre vague à l'instant t = 0. On choisiraune fonction un peu bossue en y et qui décroit selon les x croissants pourformer le "rouleau". Cette fonction sera explicitée ci-après.

b. La seconde concernera la vitesse à l'état initiale. On choisira une vitessenulle.

3. Les deux suivantes permettent d'avoir les deux extrémités en x �xes.

4. Les deux dernières permettent quant à elle d'assurer un mouvement uniforme surles bords en y. Ainsi les bords en y n'apporteront pas de contribution à l'onde.

Les choix faits pour les conditions aux limites peuvent être justi�és par le fait quenous souhaitons modéliser une vague qui se trouve dans une piscine à vagues. De faitelle est émise par un système qui produit la vague avec une certaine forme (conditionsinitiales). Cette vague avance selon les x croissants puis tape sur le bord et revient versla source.

Nous avons donc :

u(xi, yj , tk+1)− 2u(xi, yj , tk) + u(xi, yj , tk−1)

∆t2=

u(xi+1, yj , tk)− 2u(xi, yj , tk) + u(xi−1, yj , tk)

∆x2+

u(xi, yj+1, tk)− 2u(xi, yj , tk) + u(xi, yj−1, tk)

∆y2+ T (i, j, k)

En notant u(i, j, k) l'approximation de u(xi, yj , tk), en posant ∆x = ∆y et ρ = ∆t2

∆x2,

et en négligeant T (i, j, k) nous avons :

u(i, j, k + 1) = ρ× (u(i+ 1, j, k) + u(i− 1, j, k) + u(i, j + 1, k) + u(i, j + 1, k))

+ 2u(i, j, k)(1− 2ρ)− u(i, j, k − 1)

Page 39: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 5. APPROXIMATION DES OPÉRATEURS DIFFÉRENTIELS 34

Je n'ai pas réussi à trouver une relation de récurrence comme précédemment. Leprogramme que je proposerai utilisera donc plusieurs boucles imbriquées1.

Je vais maintenant proposer une fonction f(x, y) qui va modéliser l'état initiale. Jen'ai pas tout à fait réussi à trouver la fonction que je voulais. Ce que j'ai me satisfaittout de même. J'aurai bien aimé une fonction qui fasse un vrai rouleau au sommet de lavague, mais j'ignore totalement comment y parvenir.

Je voulais une fonction qui :

1. Soit d'une grande amplitude pour les x proches de l'origine, et qui diminue rapi-dement avec les x croissants. J'ai donc pensé à un e−x

2.

2. Pour faire les vagues, il fallait un sin(2πx).

3. Pour créer le sommet de la vague, une simple parabole su�t : ay2 + by.

4. Puis pour faire des bosses sur le sommet de la vague2, (donc sur l'axe des y), j'ai

utilisé une somme de deux exponentielles : e−(y−e)2

f + e−(y−g)2

h .

Au �nal, la fonction f(x, y) a cette forme :

0 function z = f(x, y)

//y : parabole de sommet d en Y/2 et qui s'annule en 0 et Y.

d = 2;

b = 2*d/Y;

a = -b/Y;

5 e = Y*(1 -0.6);

f = 0.01

g = Y*(1 -0.5);

h = 0.2

10 z = (exp(-x^2.5) *(exp((-(y - e)^2/f)) + exp((-(y - g)^2)/h))).*(

sin(2*%pi*x)*(a*y.^2 + b*y))

endfunction;

Les codes sources pour réaliser l'animation sont disponibles en annexe A.3 p.53. Unevidéo du rendu �nal peut être visionnée à l'adresse suivante :

http://wwwetu.utc.fr/~chabotsi/MT94/vague.mpg

Voici une image de ce que j'obtiens :

1Je sais, ce n'est pas très beau, mais si une relation matricielle existe, je serai ravi de le savoir.

Je ne demande qu'à optimiser le programme...2Je remercie Thomas Dauteuille pour avoir trouvé l'allure de l'équation de la fonction que je

voulais !

Page 40: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 5. APPROXIMATION DES OPÉRATEURS DIFFÉRENTIELS 35

Figure 5.1: Modélisation d'une vague grâce aux di�érences �nies

Page 41: MT94 Introduction aux mathématiques appliquées Cahier d ...

6Valeurs propres

Dé�nition 6.0.1 (Valeur propre). On appelle valeur propre d'une matrice A un scalaireλ véri�ant Ay = λy. On appelle alors y vecteur propre associé à λ.

6.1 Calcul de valeurs propres

Dans la suite de cette section, on se donnera A une matrice symétrique1 de dimension net |λ1| > |λ2| > . . . > |λn| ses n valeurs propres ordonnées dans l'ordre décroissant.

Les valeurs propres λi sont toutes solutions du polynôme detA− λI. Dès lors, onpeut se dire "y'a qu'à trouver les n racines du polynôme" pour avoir toutes les valeurspropres. Théoriquement, oui. Sauf qu'en pratique, résoudre un polynôme de degré n esttrivial pour n 6 3 ou 4. Mais ça complique ensuite. Dans la pratique, on calcule plutôtdes valeurs approchées avec des algorithmes itératifs. Nous allons en voir quelques unsdans ce chapitre.

Dans une seconde partie, nous utiliserons un des algorithmes vus pour approcher lesracines d'un polynôme de degré n grâce à la matrice compagnon.

6.1.1 Méthode de la puissance itérée

On pose la relation de récurrence suivante :{yk+1 = Ayk

y0 est choisi arbitrairement(6.1)

Proposition 6.1.1. On peut alors montrer que :

1. yk tend vers un vecteur propre de A associé à λ1.

1Cela nous permet de nous assurer que les valeurs propres sont réelles et l'existence d'une

base orthonormale des vecteurs propres.

36

Page 42: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 6. VALEURS PROPRES 37

2. limk→∞(yk,Ayk)(yk,yk) = λ1

où (u, v) dé�ni un produit scalaire.

Preuve. Considérons les vecteurs propres vi de A, normés, associés à λi. Ces vecteurspropres forment alors une base de Rn et y0 choisi arbitrairement peut être exprimé commeune combinaison linéaire de ces vecteurs propres. On a alors y0 =

∑ni=1 αivi.

y1 = Ay0 = An∑i=1

αivi =n∑i=1

αiAvi

=n∑i=1

αiλivi

= λ1

(α1v1 +

n∑i=2

αiviλiλ1

)Par récurrence, on peut montrer que

yk = λk1

(α1v1 +

n∑i=2

αivi

(λiλ1

)k)(6.2)

Comme λ1 est strictement supérieure à λi pour tout i compris entre 2 et n, on a

limk→∞∑n

i=2 αivi

(λiλ1

)k= 0. Ainsi, yk tend bien bien vers un vecteur propre associé à

λ1.On a de plus

(yk, Ayk) = yk (Ayk)T

= yk

(α1v1λ

k+11

)T= yky

Tk λ1

en divisant par (yk, yk) on retrouve la proposition 6.1.1.

Lors du calcul pratique il convient, à chaque itération, de normaliser yk pour ne pasqu'il �explose�.

6.1.2 Méthode de la puissance itérée inverse

La méthode de la puissance itérée inverse permet quand à elle d'obtenir la valeur proprede plus petit module.

La relation de récurrence est la suivante :{yk+1 = A−1y

y0 est choisi arbitrairement(6.3)

Page 43: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 6. VALEURS PROPRES 38

Proposition 6.1.2. On peut alors montrer que :

1. yk tends vers un vecteur propre associé à λn

2. limk→∞(yk,A

−1yk)(yk,yk) = λn

Lemme 6.1.1. Si A est inversible, et que λ est une valeur propre de A, alors λ−1 estune valeur propre de A−1.

En e�et on a :

Ay = λy

A−1Ay = A−1λy

λ−1y = A−1y

Preuve. de la proposition 6.1.2 Considérons les vecteurs propres vi de A, normés, as-sociés à λn. Ces vecteurs propres forment une base de Rn et y0 choisi arbitrairementpeut être exprimer comme une combinaison linéaire de ces vecteurs propres. On a alorsy0 =

∑ni=1 αivi.

y1 = A−1y0 = A−1n∑i=1

αivi =n∑i=1

αiA−1vi

=n∑i=1

α1λ−1i vi

= λ−1n

(αnvn +

n−1∑i=1

αiviλnλi

)

Par récurrence, on peut montrer que

yk = λ−1n

(αnvn +

n−1∑i=1

αivi

(λnλi

)k)

Comme λ−1n est strictement supérieure à λ−1

i pour tout i compris entre 1 et n − 1,

on a limk→∞∑n−1

i=1 aivi

(λnλi

)k= 0. Ainsi yk tend bien vers un vecteur propre associé à

λn.

En pratique, on ne calculera pas A−1, mais on résoudra x = A−1y, soit Ax = y cequi sera plus économique en temps de calcul. En e�et, une résolution du type Ax = ydemande environ n3

3 opérations, alors que le calcul de A−1 en demande environ 4n3

3[Fortin(2008)].

Page 44: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 6. VALEURS PROPRES 39

6.2 Et. . . les autres valeurs propres ?

Les deux méthodes vues précédemment ne nous permettent d'obtenir que la plus grandeet la plus petite valeur propre. Mais qu'en est-il des n− 2 autres ?

6.2.1 Par construction d'une nouvelle matrice

Il est possible, sous réserve que les valeurs propres de la matrice A soit de multiplicité1, de construire une nouvelle matrice A(1) ayant les mêmes valeurs propres que A maissans λ1. On peut alors appliquer la méthode de la puissance itérée sur A1 pour obtenirλ2 puis construire une nouvelle matrice A(2) qui a les mêmes valeurs propres que A1 sansλ2, etc. Comme A est symétrique, ses vecteurs propres forment une base orthonorméede Rn. Donc vTi vj = 0,∀i 6= j.

On peut prendre A(1) = A−λ1v1vT1 . On a A(1)v1 = 0 et A(1)v2 = Av2−λ1v1v

T1 v2 =

λ2v2. La valeur propre dominante de A(1) est donc λ2, que l'on peut obtenir grâce à laméthode de la puissance itérée sur A(1).

Puis on pose A(2) = A(1) − λ2v2vT2 , etc.

6.2.2 Par itération sur un sous-espace propre

Le principe d'itération sur un sous-espace propre permet d'obtenir les p (p 6 n) premièresvaleurs propres d'une matrice symétrique (par ordre décroissant).

Le principe est le suivant :

1. On se donne p vecteurs de Rn linéairement indépendants que l'on note Xi0, i =

1 . . . p

2. Puis on applique le processus suivant :

a. Y ik+1 =

AXik

‖AXik‖, avec k > 0 et i = 1 . . . p

b. On obtient la famille{Xik+1

}par orthogonalisation de la famille

{Y ik+1

}avec

la méthode de Gram-Schmidt.

Théorème 6.2.1. On alimk→∞

Xjk = αyj

où yj est le vecteur propre associé à λj.

6.2.3 Calcul des valeurs propres d'une matrice quelconque

Les algorithmes que nous venons de voir ne peuvent s'appliquer que si la matrice estsymétrique. En e�et, il est supposé que les vecteurs propres forment une base. Par ex-emple, et nous en aurons besoin dans la section suivante, les méthodes vues ne permettentpas de calculer les valeurs propres d'une matrice compagnon.

Page 45: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 6. VALEURS PROPRES 40

Nous allons pour ce faire utiliser la décomposition2 QR de la matrice A.La méthode est la suivante :

k ← 0A(0) ← Arepeat

[Q(k), R(k)]← qr(A(k))A(k+1) ← R(k)Q(k)

k ← k + 1until A(k) soit (presque) triangulaire supérieure

On peut montrer que :

limk→∞

A(k) =

λ1 X X X

λ2 X X. . .

...λn

Voici le code Scilab de cet algorithme.

Code source 6.1: Obtention des valeurs propres depuis QR0 function [v] = val(A)

[Q, R] = qr(A);

n = size(A, 1);

eps = 0.001;

i = 0;

5 itmax = 500;

//Il suffit de regarder les termes de la diagonale. En effet ,

//si ils sont proches de 1, alors des

// autres sont proches de 0, car la matrice Q est orthonormee.

10 while(i < itmax & or(abs(abs(diag(Q)) - ones(n, 1)) > eps*ones(n

, 1)))

[Q, R] = qr(R * Q);

i = i + 1;

end;

15 v = (i < itmax).*diag(R*Q);

endfunction

Dans le code 6.1, nous avons traduit la condition �A(k) est presque triangulairesupérieur � par �La matrice Q(k) est presque égale à la matrice ±I�. Ce qui est équivalent.

2La méthode QR ne sera pas abordée ici, nous nous contenterons d'utiliser la commande qr()

de Scilab.

Page 46: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 6. VALEURS PROPRES 41

Preuve. 3

Par construction, nous avons A(0) = A = Q(0)R(0). Comme Q(0) est orthogonale, elleest en particulier inversible, et on a R(0) = Q(0)TA(0). Par construction, A(1) = R(0)Q(0).D'où A(1) = Q(0)TAQ(0).

Par récurrence, on peut montrer qu'à l'étape k on a

A(k+1) =

(k∏i=0

Q(k−i)T)A

(k∏i=0

Q(i)

)

On pose Pk =(∏k

i=0Q(k−i)T

). Le produit de matrices orthogonales est une matrice

orthogonale, donc P−1k existe et vaut P Tk . Or P Tk =

(∏ki=0Q

(i)). En e�et, (AB)T =

BTAT .D'où A(k) = PkAP

−1k . Ainsi A et A(k) sont semblables et ont les mêmes valeurs

propres.Pour poursuivre la preuve, on admettra que limk→∞Q

(k) = ±I.On a donc limk→∞A

(k) = limk→∞R(k)Q(k) = limk→∞±R(k)I = R. Où R est une

naturellement une matrice triangulaire supérieure. Ainsi, les valeurs propres de R sontses termes diagonaux. Et comme Ak et A ont les mêmes valeurs propres, A a les mêmesvaleurs propres que R.

J'ai fait plusieurs tests, et je ne saurais pas expliquer pourquoi, mais expérimen-talement, je trouve qu'il y a convergence si et seulement si toutes les valeurs propresde A ∈ Mn(K) sont aussi dans K. C'est à dire qu'il n'y a pas de convergence si par

exemple la matrice est réelle et les valeurs propres complexes. Ainsi, si A =

(1 −11 0

)par exemple, l'algorithme proposé ne convergera pas.

6.3 Calcul pratique des racines d'un polynôme de

degré élevé

Nous savons maintenant approcher toutes les valeurs propres d'une matrice (presque)quelconque, nous sommes à même d'approcher les racines d'un polynôme de degré n.

La matrice compagnon d'un polynôme p(x) = c0 + c1x+ . . . cn−1xn−1 + xn est

C =

−cn−1 −cn−2 . . . −c1 −c0

1 0 . . . 0 00 1 . . . 0 0...

.... . .

......

0 0 0 1 0

3Seule la preuve sur le fait que la matrice A(k) et A aient les mêmes valeurs sera faite. Je n'ai

pas réussi à prouver que limk→∞Q(k) = ±I. Je l'ai juste véri�é numériquement...

Page 47: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 6. VALEURS PROPRES 42

On pourrait montrer par récurrence que det(C−λI) = p(λ). De fait, les racines de pne sont autres que les valeurs propres de C. Ainsi pour trouver les racines un polynômep de degré n, il su�t de le mettre sous la forme de p, autrement dit, diviser tous lescoe�cients par celui devant xn puis de construire la matrice compagnon associée et d'encalculer les valeurs propres.

Un code source possible est le suivant où val() est la fonction dé�nie dans le listing6.1.

Code source 6.2: Obtention des racines d'un polynôme0 n = input("Quel est le degre du polynome ? :");

c = zeros(1, n+1);

for i = 1:n+1

c(i) = input("c_" + string(i-1) + " = ");

end;

5 p = poly(c, 's', 'coef');

C = companion(p);

r = val(C);

if(r == zeros(n, 1))

disp("Il n y a pas eu convergence");

10 else

disp(r);

end;

En pratique, on préférera utiliser4 spec(companion(poly(c, 's', 'coef'))) où c estun vecteur contenant les coe�cients du polynôme, plutôt que les programmes �faitsmaisons� source d'erreurs.

4Ou bien une fonction toute prête si elle existe...

Page 48: MT94 Introduction aux mathématiques appliquées Cahier d ...

7Séries de Fourier

7.1 Dé�nitions

Dé�nition 7.1.1 (Série de Fourier). Soit f une fonction T périodique1. On pose ω = 2πT .

On appelle série de Fourier associée à f la série trigonométrique suivante :

Sf(t) = a0 +

∞∑n=1

[an cos(nωt) + bn sin(nωt)] (7.1)

où l'on a :

a0 =1

T

∫ T2

−T2

f(t) d t

an =2

T

∫ T2

−T2

f(t) cos(nωt) d t

bn =2

T

∫ T2

−T2

f(t) sin(nωt) d t

Théorème 7.1.1 (de Dirichlet). On a

Sf(t) =

{f(t) Si f est continue en tf(t−)+f(t+)

2 sinon

où f(t+) (resp. f(t−)) représente la limite à droite (resp. à gauche) de f en t.

Proposition 7.1.1. On pourra remarque que :

1Si f n'est pas périodique, il est possible de la périodiser.

43

Page 49: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 7. SÉRIES DE FOURIER 44

• Si f est paire alors :

� an = 4T

∫ T2

0 f(t) cos(nωt) d t

� bn = 0

• Si f est impaire alors :

� an = 0

� bn = 4T

∫ T2

0 f(t) sin(nωt) d t

7.2 Application

7.2.1 Fonction créneaux

Depuis plusieurs années, je me demande comment dessiner la fonction créneaux sur macalculette ? J'ai maintenant la réponse. C'est possible avec les séries de Fourier. Ceserait certes un peu fastidieux de taper tous les coe�cients de Fourier dans la calculette,mais possible.

Détermination des coe�cients de Fourier �à la main�

a

a

Figure 7.1: Fonction créneaux

La fonction f représentée ci-dessus est de période T = 2a, d'où ω = πa et dé�nie

comme suit :

f(x) =

{1 si x ∈

[−a

2 ; a2]

0 si x ∈]−a;−a

2

[∪]a2 ; a[

La fonction f est paire, donc bn = 0 ∀N.

Page 50: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 7. SÉRIES DE FOURIER 45

1.

a0 =1

T

∫ T2

−T2

f(t) d t =2

T

∫ T2

0f(t) d t

=1

a

∫ a

0f(t) d t =

1

a

∫ a2

01 d t =

1

2

2.

an =2

T

∫ T2

T2

f(t) cos(nωt) d t =2

a

∫ a

0f(t) cos(nωt) d t

=2

a

∫ a2

0cos(nωt) d t =

2

a

[sin(nωt)

]a2

0

=2 sin(nπ2 )

Ainsi on a

Sf(x) =1

2+

∞∑n=1

2 sin(nπ2 )

nπcos(nωx) (7.2)

Voici ce que l'on obtient en entrant cette fonction dans Scilab.

Figure 7.2: Quelques cas particuliers de la série 7.2

Page 51: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 7. SÉRIES DE FOURIER 46

Directement avec Scilab

La méthode utilisée ci-dessus a un avantage : l'expression obtenue est exacte. L'inconvénientest qu'il faut calculer les termes à la main. À partir de la dé�nition d'une série de Fourier,il est possible de faire un programme Scilab qui soit générique et calcule les coe�cientsde Fourier d'une fonction donnée.

L'intégration numérique, grâce à la méthode des rectangles par exemple, nous per-mettra d'obtenir les coe�cients an et bn.

Code source 7.1: Calcul des coe�cients de Fourier0 function [a, b] = coef_f(f, T, n)

m = 100;

x = linspace(-T/2, T/2, m);

a = zeros(1,n);

b = zeros(1,n);

5 w = 2*%pi/T;

y = f(x);

for i=0:n-1

a(i+1) = sum(y.*cos(i*w*x))*(T/m);

10 b(i+1) = sum(y.*sin(i*w*x))*(T/m);

end;

a(1) = a(1)/2;

a = 2*a/T;

15 b = 2*b/T;

endfunction;

Cette fonction prend en paramètre la fonction f dont on veut calculer les coe�cients2

de Fourier, sa période T et le nombre de points n voulus.

Remarque 7.2.1.1 (Phénomène de Gibbs). On peut remarquer sur les �gures obtenuesde petits �sauts� au niveau des zones de discontinuité. Ce phénomène est connu sous lenom de phénomène de Gibbs. C'est ce que l'on peut appeler un défaut d'approximation.Ce défaut peut être majoré. Si la fonction f a une discontinuité d'amplitude ∆y, alorsSf connaîtra un ressaut de 18% au plus au niveau du voisinage de la discontinuité.[Wikipedia(2011a)]

2En Scilab les tableaux sont indicés à partir de 1 et non 0, comme en maths. Il y a donc un

décalage auquel il faut faire attention lorsque l'on se sert de ces coe�cients.

Page 52: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 7. SÉRIES DE FOURIER 47

Figure 7.3: Comparaisons des di�érentes méthodes (n = 50)

7.2.2 Depuis un signal audio

J'ai trouvé sur internet [Frising(2011)] 3 �chiers sons (en wav) qui sont un a chanté, uni chanté et un violon. Le site web donnait les périodes des 3 signaux.

On a :

• Ta = 2.86 ms

• Ti = 2.71 ms

• Tv = 3.45 ms

J'ai calculé pour chacun, sur la base des périodes données, les coe�cients de Fourierde chacun des sons.

Je ne traiterai seulement le son du i dans ce rapport, étant donné que la marche àsuivre est strictement identique pour les autres sons.

Contrairement au cas précédent, ici on ne connait pas la fonction qui se cache derrière.Ainsi, pour réaliser l'intégration dont nous avons besoin pour calculer les coe�cientsan et bn, il faut se �calquer� sur la période d'échantillonnage du signal. Le signal estéchantillonné à 22050 Hz. La fonction coef_f présentée ci-avant doit donc être un petitpeu modi�é. Par exemple, au lieu d'intégrer de −T

2 à T2 , l'intégration se fera de 0 à T .

Ainsi, la fonction est la suivante :

0 function [a, b] = coef_f(s, T, f, n)

h = 1/f;

x = 0:h:T;

a = zeros(1,n);

Page 53: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 7. SÉRIES DE FOURIER 48

b = zeros(1,n);

5

y = s(1: length(x));

for i=0:n-1

a(i+1) = sum(y.*cos(i*w*x))*h;

b(i+1) = sum(y.*sin(i*w*x))*h;

10 end;

a(1) = a(1)/2;

a = 2*a/T;

b = 2*b/T;

15 endfunction;

où s est le signal audio, T sa période, f l'échantillonnage (ici, 22050 Hz) et n le nombrede coe�cients voulus.

En a�chant sur un même graphique le signal réel et celui obtenu grâce à la série deFourier, on peut remarquer qu'un déphasage s'installe petit à petit. Je pense que celaest dû à deux choses (en partie), premièrement du fait que la période donnée pour le sonn'est peut être pas très précise (comment a-t-elle été mesurée ?) et deuxièmement dufait que le signal est un son réel et de ce fait n'est peut être pas vraiment périodique.J'ai donc essayé d'ajuster la période pour que les deux courbes se superposent au mieux.Au �nal, voici ce que j'obtiens :

Figure 7.4: Série de Fourier d'un signal audio (n = 20)

Histogramme

Une fois que les coe�cients de Fourier sont obtenus, on peut tracer l'histogramme. C'està dire la répartition de coe�cient.

Page 54: MT94 Introduction aux mathématiques appliquées Cahier d ...

CHAPITRE 7. SÉRIES DE FOURIER 49

Pour chaque coe�cient an et bn et on trace un segment de hauteur√a2n + b2n. Si

on regarde par exemple l'histogramme du i (�g 7.5 p.49), on peut voir que le premierharmonique est dominant. Les autres sont quasiment absents. Ce son est donc proched'un son pur, il ne contient, quasiment, qu'une seule fréquence.

Figure 7.5: Histogramme du i (n = 10)

Page 55: MT94 Introduction aux mathématiques appliquées Cahier d ...

Conclusion

Cette UV a été très enrichissante et m'a permis d'apporter quelques éléments de réponseaux questions que je me posais. La rédaction de ce cahier m'a donné envie de poursuivredans cette voie ; continuer à comprendre comment les logiciels de calculs fonctionnent,comment �expliquer à l'ordinateur� un calcul, etc. Je suis toujours un peu �jaloux� dulogiciel quand il donne une réponse et que je ne sais pas comment il fait. Je pensenotamment au calcul des valeurs propres, Scilab réussit à les trouver à tous les coups, etmalgré quelques recherches, les algorithmes que j'ai trouvés sont toujours soumis à desconditions (matrice symétrique, inversible, etc).

Comme a très bien dit M. Mottelet :

Il ne s'agit pas de réinventer la roue, mais de savoir de comment elletourne.

Merci à Mohammed El Djalil Katebet Stéphane Mottelet pour cette UV.

50

Page 56: MT94 Introduction aux mathématiques appliquées Cahier d ...

ACodes sources

A.1 Fractales

A.1.1 Courbe de Koch

Code source A.1: Courbe de koch0 w1 =[1/3 0 ; 0 1/3];

w4 =[1/3 0 ; 0 1/3];

v4 =[2/3 ; 0]

w2 =1/3*[ cos(%pi/3) -sin(%pi/3) ; sin(%pi/3) cos(%pi /3)];

v2 =[1/3 ; 0];

5 w3 =1/3*[ cos(%pi/3) sin(%pi/3) ; -sin(%pi/3) cos(%pi /3)];

v3=[-1/3 ; 0];

P1=[0 ; 0];

P2=[1 ; 0];

10 C = [1 ; 0];

function afficher(P1 ,P2)

x = [P1(1) ; P2(1)];

y = [P1(2) ; P2(2)];

15 xfpolys(x,y);

endfunction

function vonkoch(P1 ,P2 , N)

20 if(N >= 1) then

p1 = w1*P1;

p2 = w1*P2;

vonkoch(p1 , p2 , N-1);

25 p1 = w2*P1 + v2;

51

Page 57: MT94 Introduction aux mathématiques appliquées Cahier d ...

ANNEXES A. CODES SOURCES 52

p2 = w2*P2 + v2;

vonkoch(p1 , p2 , N-1);

p1 = w3*(P1 - C) + v3 + C;

30 p2 = w3*(P2 - C) + v3 + C;

vonkoch(p1 , p2 , N-1);

p1 = w4*P1 + v4;

p2 = w4*P2 + v4;

35 vonkoch(p1 , p2 , N-1);

else

xset("color", floor (10* rand(1,1, "uniforme")));

afficher(P1 , P2);

end

40

endfunction

N = input("Nb iterations ?");

drawlater;

45 vonkoch(P1 ,P2, N);

axis equal;

axis off;

drawnow;

A.2 Approximation des opérateurs di�érentiels

A.2.1 Équation des ondes

Code source A.2: Schéma numérique pour l'équation des ondes0 function anime_ondes(t,X,L)

ampl = max(abs(X));

N = 1+size(X,1);

nt = size(X,2);

x = linspace(0,L,N+1) ';

5 v = X(1:N-1,:);

v = [ zeros(1,nt) ; v ; zeros(1,nt) ];

drawlater

h = plot(x,v(:,1));

axis ([0 L -ampl ampl]);

10 drawnow

for i=2:nt

set(h,'ydata ',v(:,i));

end

endfunction

15

T = 4;

L = 1;

Page 58: MT94 Introduction aux mathématiques appliquées Cahier d ...

ANNEXES A. CODES SOURCES 53

l = 1;

20

N = 50;

dx = (L - 0)/N;

//rho = input('Quelle est la valeur de rho ? ');

25 rho = 0.4;

dt = sqrt(rho)*dx;

M = (T - 0)/dt;

x = linspace(0, L, N);

30 t = linspace(0, T, M);

disp(M);

disp(N);

35 function y = f(x)

y = sin(%pi*x);// -(x > L/2).*(x - L) + (x <= L/2).*x

endfunction;

function y = g(x)

40 y = 0.*x;

endfunction;

//U^{j+1} = A*U^j - U^{j - 1}

45 //U^1 = dt*g(x_i) + U^0

//U^0 = f(x_i)

u = zeros(N, M);

u(:,1) = f(x');

50 u(:,2) = dt*g(x') + u(:,1);

A = diag ((2*(1 - rho))*ones(N, 1)) + diag(rho*ones(N-1, 1), 1) +

diag(rho*ones(N-1, 1), -1);

for i = 2:M-1

55 u(:,i+1) = A*u(:,i) - u(:,i-1);

end;

anime_ondes(t, u, L);

60 //surf(t, x', u);

A.2.2 Modélisation d'une vague

Code source A.3: Schéma numérique pour la modélisation d'une vague0 clear

Page 59: MT94 Introduction aux mathématiques appliquées Cahier d ...

ANNEXES A. CODES SOURCES 54

plotlibmode

function anime_vague(z,X, Y)

ampl = max(abs(z));

5 N = size(z, 2);

M = size(z, 3);

x = linspace(0, X, N);

y = linspace(0, Y, N);

10

xset("pixmap", 1);

for i=1:M

delete(gca());

drawlater

15 plot3d(x', y, u(:,:,i));

axis ([0 X 0 Y -ampl ampl]);

drawnow

xpause (200000);

end;

20 xset("pixmap", 0);

endfunction

T = 30;

X = 6;

25 Y = 2;

N = 40;

dl = (X - 0)/N;

30 //rho = input('Quelle est la valeur de rho ? ');

rho = 0.4;

dt = dl/sqrt(rho);

M = (T - 0)/dt;

35 x = linspace(0, X, N);

y = linspace(0, Y, N);

t = linspace(0, T, M);

function z = f(x, y)

40 //ay^2 + by : parabole de sommet d en Y/2 et qui s'annule en 0

et Y.

d = 2;

b = 2*d/Y;

a = -b/Y;

e = Y*(1 -0.6);

45 f = 0.01

g = Y*(1 -0.5);

h = 0.2

Page 60: MT94 Introduction aux mathématiques appliquées Cahier d ...

ANNEXES A. CODES SOURCES 55

z = (exp(-x^2.5) *(exp((-(y - e)^2/f)) + exp((-(y - g)^2)/h))).*(

sin(2*%pi*x)*(a*y.^2 + b*y))

50 endfunction;

function z = g(x, y)

z = zeros(length(x), length(y)); //.*x*y;

endfunction;

55

//U^{j+1} = A*U^j - U^{j - 1}

//U^1 = dt*g(x_i) + U^0

//U^0 = f(x_i)

60

//u = zeros(N, M);

u(:,:,1) = f(x', y);

u(:,:,2) = dt*g(x', y) + u(:,:,1);

65 A = diag ((4*(1 - rho))*ones(N, 1)) + diag(rho*ones(N-1, 1), 1) +

diag(rho*ones(N-1, 1), -1);

for k = 2:M-1

u(:,:,k+1) = zeros(N, N);

for i = 2:N-1

70 for j = 2:N-1

u(i,j,k+1) = rho*(u(i+1,j, k) + u(i-1, j, k) + u(i, j+1, k

) + u(i, j-1, k)) + 2*(1 -2* rho)*u(i, j, k) - u(i, j, k

- 1);

end;

u(i, 1, k + 1) = u(i, 2, k+1); //\diffp{u}{x}(x, 0, t) = 0

u(i, N, k + 1) = u(i, N - 1, k+1); //\diffp{u}{x}(x, Y, t) = 0

75 end;

end;

anime_vague(u, X, Y);

A.3 Séries de Fourier

Code source A.4: Calcul des coe�cients de Fourier depuis un �chier son0 function [a, b] = coef_f(s, T, f, n)

h = 1/f;

x = 0:h:T;

a = zeros(1,n);

b = zeros(1,n);

5

y = s(1: length(x));

for i=0:n-1

a(i+1) = sum(y.*cos(i*w*x))*h;

b(i+1) = sum(y.*sin(i*w*x))*h;

Page 61: MT94 Introduction aux mathématiques appliquées Cahier d ...

ANNEXES A. CODES SOURCES 56

10 end;

a(1) = a(1)/2;

a = 2*a/T;

b = 2*b/T;

15

endfunction;

function y = foo(x, n)

20 y = 0;

for i=0:n-1

y = y + a(i+1)*cos(i*w*x) + b(i+1)*sin(i*w*x);

end;

endfunction;

25

function histogramme(a, b)

a = a(2: length(a));

b = b(2: length(b));

v = sqrt(a.^2 + b^2);

30 ampl = max(v);

plot2d3(v);

axis([-1 length(a) 0 1.3* ampl]);

endfunction;

35 s = loadwave("I.wav");

n = size(s, 2) - 1;

f = 22050;

h = 1/f;

t = 0:h:n*h;

40

T = 2.6730*10^( -3);

F = 1/T;

w = 2*%pi/T;

nb = 20;

45

[a, b] = coef_f(s, T, f, nb);

// subplot (211)

// plot(t, foo(t, nb), t, s, 'r');

// subplot (212)

50 histogramme(a, b);

// playsnd(foo(t, nb));

// playsnd(s);

Page 62: MT94 Introduction aux mathématiques appliquées Cahier d ...

Liste des �gures

1.1 Construction du triangle de Sierpi«ski . . . . . . . . . . . . . . . . . . . . 11.2 Courbe de Koch, après 6 itérations . . . . . . . . . . . . . . . . . . . . . . 21.3 Triangle de Sierpi«ski, après 6 itérations . . . . . . . . . . . . . . . . . . . 31.4 Fougère obtenue avec un IFS aléatoire . . . . . . . . . . . . . . . . . . . . 6

2.1 Illustration de la méthode de Newton . . . . . . . . . . . . . . . . . . . . . 102.2 Ordre de convergence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.3 Le bras de robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.4 Représentation géométrique du bras . . . . . . . . . . . . . . . . . . . . . 17

3.1 Représentation de la méthode d'Euler . . . . . . . . . . . . . . . . . . . . 193.2 Di�érentes solutions obtenues . . . . . . . . . . . . . . . . . . . . . . . . . 213.3 Courbe représentation des fonctions d'erreurs pour les trois méthodes . . . 22

4.1 Phénomène de Runge, pour f(x) = 11+25x2

. . . . . . . . . . . . . . . . . . 264.2 Interpolation par des splines cubiques, avec neuf points . . . . . . . . . . . 274.3 Interpolation paramétrique . . . . . . . . . . . . . . . . . . . . . . . . . . 29

5.1 Modélisation d'une vague grâce aux di�érences �nies . . . . . . . . . . . . 35

7.1 Fonction créneaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447.2 Quelques cas particuliers de la série 7.2 . . . . . . . . . . . . . . . . . . . . 457.3 Comparaisons des di�érentes méthodes (n = 50) . . . . . . . . . . . . . . . 477.4 Série de Fourier d'un signal audio (n = 20) . . . . . . . . . . . . . . . . . . 487.5 Histogramme du i (n = 10) . . . . . . . . . . . . . . . . . . . . . . . . . . 49

57

Page 63: MT94 Introduction aux mathématiques appliquées Cahier d ...

Références

[Fortin(2008)] Fortin, A. Analyse numérique pour ingénieurs. Presses internationalesPolytechnique, 2008.URL http://books.google.fr/books?id=oqT0BuI0KmcC

[Frising(2011)] Frising, Fernande. �Séries de Fourier et transformée de Fourier.� 2011.URL http://webapps.fundp.ac.be/didactique/fourier/acceuil.php

[Louveaux(2009)] Louveaux, Quentin. �Calcul de valeur propre.� 2009.URL www.montefiore.ulg.ac.be/~louveaux/val_prop_handout.pdf

[Nour-Eddine()] Nour-Eddine, Amroun. �Série de Fourier.� ????URL www.univ-sba.dz/fsi/lmd/Math3/Cours-seriesFourier.pdf

[Wikipedia(2011a)] Wikipedia. �Phénomène de Gibbs.� 2011a.URL http://fr.wikipedia.org/wiki/Phénomène_de_Gibbs

[Wikipedia(2011b)] ���. �Spline.� 2011b.URL http://fr.wikipedia.org/wiki/Spline

58