0% ont trouvé ce document utile (0 vote)
158 vues62 pages

Un Projet en C++: R Esolution D' Equations Diff Erentielles Lin Eaires

Le document décrit une approche pour représenter des fonctions sur un ordinateur en utilisant des coefficients sur une base de fonctions ou des valeurs sur une grille, et comment dériver des fonctions de manière numérique.

Transféré par

Ibtissem DERRAR
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
158 vues62 pages

Un Projet en C++: R Esolution D' Equations Diff Erentielles Lin Eaires

Le document décrit une approche pour représenter des fonctions sur un ordinateur en utilisant des coefficients sur une base de fonctions ou des valeurs sur une grille, et comment dériver des fonctions de manière numérique.

Transféré par

Ibtissem DERRAR
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 62

Projet de

C++

Jérôme
Novak, Daniel
Un projet en C++:
Reese
résolution d’équations
Introduction

Tchebychev
différentielles linéaires.
Equa. diff.

Jérôme Novak – Daniel Reese


[email protected], [email protected]
http://luth.obspm.fr/article403.html

Laboratoire Univers et Théories (LUTH) – Laboratoire d’Études Spatiales et d’Instrumentation en


Astrophysique (LESIA)
CNRS / Observatoire de Paris / Université Paris Diderot

Master 2e année recherche, Septembre 2016


Outline

Projet de
C++

Jérôme
Novak, Daniel
Reese

Introduction 1 Introduction : représentation des fonctions


Tchebychev

Equa. diff.

2 Transformée de Tchebychev, dérivée

3 Résolution d’équations différentielles


Outline

Projet de
C++

Jérôme
Novak, Daniel
Reese

Introduction 1 Introduction : représentation des fonctions


Tchebychev

Equa. diff.

2 Transformée de Tchebychev, dérivée

3 Résolution d’équations différentielles


Outline

Projet de
C++

Jérôme
Novak, Daniel
Reese

Introduction 1 Introduction : représentation des fonctions


Tchebychev

Equa. diff.

2 Transformée de Tchebychev, dérivée

3 Résolution d’équations différentielles


Projet de
C++

Jérôme
Novak, Daniel
Reese

Introduction

Tchebychev

Equa. diff. Introduction :


Représentation des fonctions
Fonctions sur un ordinateur
Approche simplifiée

Projet de
C++
Comment représenter une fonction sur un ordinateur ?
Jérôme
⇒un ordinateur ne sait gérer que des entiers
Novak, Daniel
Reese
Afin de représenter une fonctions φ(x) (par ex. interpoler), on
peut utiliser :
Introduction
un ensemble fini de ses valeurs {φi }i=0...N sur une grille
Tchebychev
{xi }i=0...N ,
Equa. diff.
un ensemble fini de Pses coefficients sur une base de
N
fonctions φ(x) ' i=0 ci Ψi (x).
Afin de manipuler une fonction (par ex. dériver), chaque
méthode s’apparente :
aux différences finies
φ(xi+1 ) − φ(xi )
φ0 (xi ) '
xi+1 − xi
aux méthodes spectrales X N
0
φ (x) ' ci Ψ0i (x)
i=0
Fonctions sur un ordinateur
Approche simplifiée

Projet de
C++
Comment représenter une fonction sur un ordinateur ?
Jérôme
⇒un ordinateur ne sait gérer que des entiers
Novak, Daniel
Reese
Afin de représenter une fonctions φ(x) (par ex. interpoler), on
peut utiliser :
Introduction
un ensemble fini de ses valeurs {φi }i=0...N sur une grille
Tchebychev
{xi }i=0...N ,
Equa. diff.
un ensemble fini de Pses coefficients sur une base de
N
fonctions φ(x) ' i=0 ci Ψi (x).
Afin de manipuler une fonction (par ex. dériver), chaque
méthode s’apparente :
aux différences finies
φ(xi+1 ) − φ(xi )
φ0 (xi ) '
xi+1 − xi
aux méthodes spectrales X N
0
φ (x) ' ci Ψ0i (x)
i=0
Fonctions sur un ordinateur
Approche simplifiée

Projet de
C++
Comment représenter une fonction sur un ordinateur ?
Jérôme
⇒un ordinateur ne sait gérer que des entiers
Novak, Daniel
Reese
Afin de représenter une fonctions φ(x) (par ex. interpoler), on
peut utiliser :
Introduction
un ensemble fini de ses valeurs {φi }i=0...N sur une grille
Tchebychev
{xi }i=0...N ,
Equa. diff.
un ensemble fini de Pses coefficients sur une base de
N
fonctions φ(x) ' i=0 ci Ψi (x).
Afin de manipuler une fonction (par ex. dériver), chaque
méthode s’apparente :
aux différences finies
φ(xi+1 ) − φ(xi )
φ0 (xi ) '
xi+1 − xi
aux méthodes spectrales X N
0
φ (x) ' ci Ψ0i (x)
i=0
Fonctions sur un ordinateur
Approche simplifiée

Projet de
C++
Comment représenter une fonction sur un ordinateur ?
Jérôme
⇒un ordinateur ne sait gérer que des entiers
Novak, Daniel
Reese
Afin de représenter une fonctions φ(x) (par ex. interpoler), on
peut utiliser :
Introduction
un ensemble fini de ses valeurs {φi }i=0...N sur une grille
Tchebychev
{xi }i=0...N ,
Equa. diff.
un ensemble fini de Pses coefficients sur une base de
N
fonctions φ(x) ' i=0 ci Ψi (x).
Afin de manipuler une fonction (par ex. dériver), chaque
méthode s’apparente :
aux différences finies
φ(xi+1 ) − φ(xi )
φ0 (xi ) '
xi+1 − xi
aux méthodes spectrales X N
0
φ (x) ' ci Ψ0i (x)
i=0
Fonctions sur un ordinateur
Approche simplifiée

Projet de
C++
Comment représenter une fonction sur un ordinateur ?
Jérôme
⇒un ordinateur ne sait gérer que des entiers
Novak, Daniel
Reese
Afin de représenter une fonctions φ(x) (par ex. interpoler), on
peut utiliser :
Introduction
un ensemble fini de ses valeurs {φi }i=0...N sur une grille
Tchebychev
{xi }i=0...N ,
Equa. diff.
un ensemble fini de Pses coefficients sur une base de
N
fonctions φ(x) ' i=0 ci Ψi (x).
Afin de manipuler une fonction (par ex. dériver), chaque
méthode s’apparente :
aux différences finies
φ(xi+1 ) − φ(xi )
φ0 (xi ) '
xi+1 − xi
aux méthodes spectrales X N
0
φ (x) ' ci Ψ0i (x)
i=0
Convergence
p des
7
séries de Fourier
φ(x) = 1.5 + cos(x) + sin x

N
Projet de X
C++ φ(x) ' ai Ψi (x) avec Ψ2k = cos(kx), Ψ2k+1 = sin(kx)
Jérôme i=0
Novak, Daniel
Reese

Introduction

Tchebychev

Equa. diff.
Convergence
p des
7
séries de Fourier
φ(x) = 1.5 + cos(x) + sin x

N
Projet de X
C++ φ(x) ' ai Ψi (x) avec Ψ2k = cos(kx), Ψ2k+1 = sin(kx)
Jérôme i=0
Novak, Daniel
Reese

Introduction

Tchebychev

Equa. diff.
Convergence
p des
7
séries de Fourier
φ(x) = 1.5 + cos(x) + sin x

N
Projet de X
C++ φ(x) ' ai Ψi (x) avec Ψ2k = cos(kx), Ψ2k+1 = sin(kx)
Jérôme i=0
Novak, Daniel
Reese

Introduction

Tchebychev

Equa. diff.
Convergence
p des
7
séries de Fourier
φ(x) = 1.5 + cos(x) + sin x

N
Projet de X
C++ φ(x) ' ai Ψi (x) avec Ψ2k = cos(kx), Ψ2k+1 = sin(kx)
Jérôme i=0
Novak, Daniel
Reese

Introduction

Tchebychev

Equa. diff.
Convergence
p des
7
séries de Fourier
φ(x) = 1.5 + cos(x) + sin x

N
Projet de X
C++ φ(x) ' ai Ψi (x) avec Ψ2k = cos(kx), Ψ2k+1 = sin(kx)
Jérôme i=0
Novak, Daniel
Reese

Introduction

Tchebychev

Equa. diff.
Convergence
p des
7
séries de Fourier
φ(x) = 1.5 + cos(x) + sin x

Projet de
C++ 1

Jérôme
Novak, Daniel 0,01
Reese

Introduction 0,0001
Relative accuracy (max-norm)

Tchebychev
1e-06
Equa. diff.

1e-08

1e-10

1e-12

1e-14

1e-16
0 10 20 30 40 50 60 70
Number of coefficients N
Convergence
p de
7
la dérivée
φ(x) = 1.5 + cos(x) + sin x

N
Projet de X
C++ φ0 (x) ' ai Ψ0i (x) avec Ψ02k = −k sin(kx), Ψ02k+1 = k cos(kx)
Jérôme i=0
Novak, Daniel
Reese

Introduction

Tchebychev

Equa. diff.
Convergence
p de
7
la dérivée
φ(x) = 1.5 + cos(x) + sin x

N
Projet de X
C++ φ0 (x) ' ai Ψ0i (x) avec Ψ02k = −k sin(kx), Ψ02k+1 = k cos(kx)
Jérôme i=0
Novak, Daniel
Reese

Introduction

Tchebychev

Equa. diff.
Convergence
p de
7
la dérivée
φ(x) = 1.5 + cos(x) + sin x

N
Projet de X
C++ φ0 (x) ' ai Ψ0i (x) avec Ψ02k = −k sin(kx), Ψ02k+1 = k cos(kx)
Jérôme i=0
Novak, Daniel
Reese

Introduction

Tchebychev

Equa. diff.
Convergence
p de
7
la dérivée
φ(x) = 1.5 + cos(x) + sin x

N
Projet de X
C++ φ0 (x) ' ai Ψ0i (x) avec Ψ02k = −k sin(kx), Ψ02k+1 = k cos(kx)
Jérôme i=0
Novak, Daniel
Reese

Introduction

Tchebychev

Equa. diff.
Convergence
p de
7
la dérivée
φ(x) = 1.5 + cos(x) + sin x

N
Projet de X
C++ φ0 (x) ' ai Ψ0i (x) avec Ψ02k = −k sin(kx), Ψ02k+1 = k cos(kx)
Jérôme i=0
Novak, Daniel
Reese

Introduction

Tchebychev

Equa. diff.
Convergence
p de
7
la dérivée
φ(x) = 1.5 + cos(x) + sin x

Projet de
C++ 1

Jérôme
Novak, Daniel 0,01
Reese

Introduction 0,0001
Relative accuracy (max-norm)

Tchebychev
1e-06
Equa. diff.

1e-08

1e-10

1e-12

1e-14

1e-16
0 10 20 30 40 50 60 70
Number of coefficients N
Phénomène de Gibbs
pas de convergence pour des fonctions discontinues (ou
non-périodiques) !

Projet de x pour x ∈ [0, π]
C++ φ(x) =
x − 2π pour x ∈]π, 2π[
Jérôme
Novak, Daniel
Reese

Introduction

Tchebychev

Equa. diff.
Phénomène de Gibbs
pas de convergence pour des fonctions discontinues (ou
non-périodiques) !

Projet de x pour x ∈ [0, π]
C++ φ(x) =
x − 2π pour x ∈]π, 2π[
Jérôme
Novak, Daniel
Reese

Introduction

Tchebychev

Equa. diff.
Phénomène de Gibbs
pas de convergence pour des fonctions discontinues (ou
non-périodiques) !

Projet de x pour x ∈ [0, π]
C++ φ(x) =
x − 2π pour x ∈]π, 2π[
Jérôme
Novak, Daniel
Reese

Introduction

Tchebychev

Equa. diff.
Phénomène de Gibbs
pas de convergence pour des fonctions discontinues (ou
non-périodiques) !

Projet de x pour x ∈ [0, π]
C++ φ(x) =
x − 2π pour x ∈]π, 2π[
Jérôme
Novak, Daniel
Reese

Introduction

Tchebychev

Equa. diff.
Phénomène de Gibbs
pas de convergence pour des fonctions discontinues (ou
non-périodiques) !

Projet de x pour x ∈ [0, π]
C++ φ(x) =
x − 2π pour x ∈]π, 2π[
Jérôme
Novak, Daniel
Reese

Introduction

Tchebychev

Equa. diff.
Phénomène de Gibbs
pas de convergence pour des fonctions discontinues (ou
non-périodiques) !

Projet de x pour x ∈ [0, π]
C++ φ(x) =
x − 2π pour x ∈]π, 2π[
Jérôme
Novak, Daniel
Reese

Introduction

Tchebychev

Equa. diff.
Phénomène de Gibbs
pas de convergence pour des fonctions discontinues (ou
non-périodiques) !

Projet de x pour x ∈ [0, π]
C++ φ(x) =
x − 2π pour x ∈]π, 2π[
Jérôme
Novak, Daniel
Reese

Introduction

Tchebychev

Equa. diff.
Phénomène de Gibbs
pas de convergence pour des fonctions discontinues (ou
non-périodiques) !

Projet de x pour x ∈ [0, π]
C++ φ(x) =
x − 2π pour x ∈]π, 2π[
Jérôme
Novak, Daniel
Reese

Introduction

Tchebychev

Equa. diff.
Phénomène de Gibbs
pas de convergence pour des fonctions discontinues (ou
non-périodiques) !

Projet de x pour x ∈ [0, π]
C++ φ(x) =
x − 2π pour x ∈]π, 2π[
Jérôme
Novak, Daniel
Reese

Introduction

Tchebychev

Equa. diff.
Phénomène de Gibbs
pas de convergence pour des fonctions discontinues (ou
non-périodiques) !

Projet de x pour x ∈ [0, π]
C++ φ(x) =
x − 2π pour x ∈]π, 2π[
Jérôme
Novak, Daniel
Reese

Introduction

Tchebychev

Equa. diff.
Phénomène de Gibbs
pas de convergence pour des fonctions discontinues (ou
non-périodiques) !

Projet de x pour x ∈ [0, π]
C++ φ(x) =
x − 2π pour x ∈]π, 2π[
Jérôme
Novak, Daniel
Reese

Introduction

Tchebychev

Equa. diff.
Phénomène de Gibbs
pas de convergence pour des fonctions discontinues (ou
non-périodiques) !

Projet de x pour x ∈ [0, π]
C++ φ(x) =
x − 2π pour x ∈]π, 2π[
Jérôme
Novak, Daniel
Reese

Introduction

Tchebychev

Equa. diff.
Phénomène de Gibbs
pas de convergence pour des fonctions discontinues (ou
non-périodiques) !

Projet de x pour x ∈ [0, π]
C++ φ(x) =
x − 2π pour x ∈]π, 2π[
Jérôme
Novak, Daniel
Reese

Introduction

Tchebychev

Equa. diff.
Interpolation polynomiale

Projet de
C++
D’après le théorème de Weierstrass, toute fonction continue
Jérôme
peut être approximée comme limite d’une suite de fonctions
Novak, Daniel
Reese
polynomiales.
En pratique, si l’on connaı̂t les valeurs de la fonctions sur des
Introduction
points de grille {xi }i=0...N , on peut interpoler par des
Tchebychev
polynômes de Lagrange :
Equa. diff.
N=4
1
N
Y x − xj
li (x) =
0.5
xi − xj
j=0,j6=i
y

0 mais une grille uniforme


2
f = 1/(1+16x )
Uniform interpolant n’est pas un bon choix
-0.5 ⇒phénomène de Runge
-1 -0.5 0 0.5 1
x
Interpolation polynomiale

Projet de
C++
D’après le théorème de Weierstrass, toute fonction continue
Jérôme
peut être approximée comme limite d’une suite de fonctions
Novak, Daniel
Reese
polynomiales.
En pratique, si l’on connaı̂t les valeurs de la fonctions sur des
Introduction
points de grille {xi }i=0...N , on peut interpoler par des
Tchebychev
polynômes de Lagrange :
Equa. diff.
N=4
1
N
Y x − xj
li (x) =
0.5
xi − xj
j=0,j6=i
y

0 mais une grille uniforme


2
f = 1/(1+16x )
Uniform interpolant n’est pas un bon choix
-0.5 ⇒phénomène de Runge
-1 -0.5 0 0.5 1
x
Interpolation polynomiale

Projet de
C++
D’après le théorème de Weierstrass, toute fonction continue
Jérôme
peut être approximée comme limite d’une suite de fonctions
Novak, Daniel
Reese
polynomiales.
En pratique, si l’on connaı̂t les valeurs de la fonctions sur des
Introduction
points de grille {xi }i=0...N , on peut interpoler par des
Tchebychev
polynômes de Lagrange :
Equa. diff.
N=13
1
N
Y x − xj
li (x) =
0.5
xi − xj
j=0,j6=i
y

0 mais une grille uniforme


2
f=1/(1+16x )
Uniform interpolant n’est pas un bon choix
-0.5 ⇒phénomène de Runge
-1 -0.5 0 0.5 1
x
Polynômes orthogonaux

Projet de
C++ Les solutions (λi , ui )i∈N d’un problème de Sturm-Liouville
Jérôme singulier sur l’intervalle x ∈ [−1, 1] :
Novak, Daniel 0
Reese − pu0 + qu = λwu,
Introduction avec p > 0, C 1 , p(±1) = 0
Tchebychev
forment une famille orthogonale par rapport au poids w :
Equa. diff.
Z 1
(ui , uj ) = ui (x)uj (x)w(x)dx = 0 pour m 6= n,
−1
forment une base spectrale telle que, pour f (x) régulière
(C ∞ )
XN
f (x) ' ci ui (x)
converge plus vite que toutei=0
puissance de 1/N .
Les polynômes de Tchebychev, Legendre et, plus généralement
de Jacobi font partie de cette catégorie.
Polynômes orthogonaux

Projet de
C++ Les solutions (λi , ui )i∈N d’un problème de Sturm-Liouville
Jérôme singulier sur l’intervalle x ∈ [−1, 1] :
Novak, Daniel 0
Reese − pu0 + qu = λwu,
Introduction avec p > 0, C 1 , p(±1) = 0
Tchebychev
forment une famille orthogonale par rapport au poids w :
Equa. diff.
Z 1
(ui , uj ) = ui (x)uj (x)w(x)dx = 0 pour m 6= n,
−1
forment une base spectrale telle que, pour f (x) régulière
(C ∞ )
XN
f (x) ' ci ui (x)
converge plus vite que toutei=0
puissance de 1/N .
Les polynômes de Tchebychev, Legendre et, plus généralement
de Jacobi font partie de cette catégorie.
Polynômes orthogonaux

Projet de
C++ Les solutions (λi , ui )i∈N d’un problème de Sturm-Liouville
Jérôme singulier sur l’intervalle x ∈ [−1, 1] :
Novak, Daniel 0
Reese − pu0 + qu = λwu,
Introduction avec p > 0, C 1 , p(±1) = 0
Tchebychev
forment une famille orthogonale par rapport au poids w :
Equa. diff.
Z 1
(ui , uj ) = ui (x)uj (x)w(x)dx = 0 pour m 6= n,
−1
forment une base spectrale telle que, pour f (x) régulière
(C ∞ )
XN
f (x) ' ci ui (x)
converge plus vite que toutei=0
puissance de 1/N .
Les polynômes de Tchebychev, Legendre et, plus généralement
de Jacobi font partie de cette catégorie.
Polynômes orthogonaux

Projet de
C++ Les solutions (λi , ui )i∈N d’un problème de Sturm-Liouville
Jérôme singulier sur l’intervalle x ∈ [−1, 1] :
Novak, Daniel 0
Reese − pu0 + qu = λwu,
Introduction avec p > 0, C 1 , p(±1) = 0
Tchebychev
forment une famille orthogonale par rapport au poids w :
Equa. diff.
Z 1
(ui , uj ) = ui (x)uj (x)w(x)dx = 0 pour m 6= n,
−1
forment une base spectrale telle que, pour f (x) régulière
(C ∞ )
XN
f (x) ' ci ui (x)
converge plus vite que toutei=0
puissance de 1/N .
Les polynômes de Tchebychev, Legendre et, plus généralement
de Jacobi font partie de cette catégorie.
Quadrature de Gauss

Projet de
C++

Jérôme Afin de représenter une fonction f (x) à l’aide de ses


Novak, Daniel
Reese coefficients {ci }i=0...N , il suffit d’être capable de calculer
Introduction
R1
f (x)ui (x)w(x)dx
Tchebychev ∀i, ci = R−1
1 2
.
Equa. diff. −1 (ui (x)) w(x)dx

En pratique, il est avantageux d’utiliser la quadrature de Gauss


(ici : Gauss-Lobatto) : étant donnés w(x) et N , on peut trouver
deux familles {wi }k=0...N et {xi }k=0...N ∈ [−1, 1] telles que
Z 1 N
X
∀g ∈ P2N −1 , g(x)w(x)dx = g(xk )wk .
−1 k=0
Quadrature de Gauss

Projet de
C++

Jérôme Afin de représenter une fonction f (x) à l’aide de ses


Novak, Daniel
Reese coefficients {ci }i=0...N , il suffit d’être capable de calculer
Introduction
R1
f (x)ui (x)w(x)dx
Tchebychev ∀i, ci = R−1
1 2
.
Equa. diff. −1 (ui (x)) w(x)dx

En pratique, il est avantageux d’utiliser la quadrature de Gauss


(ici : Gauss-Lobatto) : étant donnés w(x) et N , on peut trouver
deux familles {wi }k=0...N et {xi }k=0...N ∈ [−1, 1] telles que
Z 1 N
X
∀g ∈ P2N −1 , g(x)w(x)dx = g(xk )wk .
−1 k=0
Exemple avec les polynômes de
Tchebychev 2
φ(x) = (1 + 2 sin(5x)) /(1 + x )
Projet de N
X
C++
φ(x) ' ai Ψi (x) avec Ψk = Tk (x) = cos(k arccos(x))
Jérôme
Novak, Daniel i=0
Reese

Introduction

Tchebychev

Equa. diff.
Exemple avec les polynômes de
Tchebychev 2
φ(x) = (1 + 2 sin(5x)) /(1 + x )
Projet de N
X
C++
φ(x) ' ai Ψi (x) avec Ψk = Tk (x) = cos(k arccos(x))
Jérôme
Novak, Daniel i=0
Reese

Introduction

Tchebychev

Equa. diff.
Exemple avec les polynômes de
Tchebychev 2
φ(x) = (1 + 2 sin(5x)) /(1 + x )
Projet de N
X
C++
φ(x) ' ai Ψi (x) avec Ψk = Tk (x) = cos(k arccos(x))
Jérôme
Novak, Daniel i=0
Reese

Introduction

Tchebychev

Equa. diff.
Exemple avec les polynômes de
Tchebychev 2
φ(x) = (1 + 2 sin(5x)) /(1 + x )
Projet de N
X
C++
φ(x) ' ai Ψi (x) avec Ψk = Tk (x) = cos(k arccos(x))
Jérôme
Novak, Daniel i=0
Reese

Introduction

Tchebychev

Equa. diff.
Exemple avec les polynômes de
Tchebychev 2
φ(x) = (1 + 2 sin(5x)) /(1 + x )
Projet de N
X
C++
φ(x) ' ai Ψi (x) avec Ψk = Tk (x) = cos(k arccos(x))
Jérôme
Novak, Daniel i=0
Reese

Introduction

Tchebychev

Equa. diff.
Exemple avec les polynômes de
Tchebychev 2
φ(x) = (1 + 2 sin(5x)) /(1 + x )
Projet de
C++ 1

Jérôme
Novak, Daniel 0,01
Reese

0,0001
Relative accuracy (max - norm)

Introduction

Tchebychev
1e-06
Equa. diff.

1e-08

1e-10

1e-12

1e-14

1e-16
10 20 30 40 50 60
Number of coefficients N
Projet de
C++

Jérôme
Novak, Daniel
Reese

Introduction

Tchebychev Étape no 1 :
Equa. diff.

Transformée de Tchebychev,
interpolation et dérivée
Polynômes de Tchebychev
Définition

Projet de
C++
Les fonctions associées aux polynômes de Tchebychev
Jérôme
{Tn (x)}n∈N sont définies par :
Novak, Daniel
Reese ∀x ∈ [−1, 1], Tn (x) = cos (n arccos x) .
Introduction

Tchebychev

Equa. diff.

Ils sont orthogonaux par


rapport au poids
1
w(x) = √
1 − x2

Z 1
Tn (x)Tp (x) π
hTn , Tp i = √ dx = (1 + δ0n )δnp .
−1 1−x 2 2
Polynômes de Tchebychev
Calcul des coefficients

Projet de
C++
Les coefficients peuvent se calculer par quadrature de Gauss
Jérôme
-Lobatto. Les poids wi et les points de grille sont connus
Novak, Daniel
Reese
analytiquement. Si
N
Introduction
X
Tchebychev
∀x ∈ [−1, 1], f (x) ' ci Ti (x),
i=0
Equa. diff.
alors on a, avec une très bonne approximation :
N
1 X
ci ' f (xk )Ti (xk )wk ,
γi
où k=0
 
kπ π π
xk = − cos , w 0 = wN = , wk = (k = 1 . . . N −1);
N 2N N
N
X
et γi = Ti2 (xk )wk .
k=0
Polynômes de Tchebychev
Interpolation

Projet de
C++
Pour calculer la valeur de Tn en un point x, on utilise la
Jérôme
récurrence :
Novak, Daniel
Reese
T0 (x) = 1, T1 (x) = x;
Introduction
∀x ∈ [−1, 1], ∀n ≥ 2, Tn (x) = 2xTn−1 (x) − Tn−2 (x).
Tchebychev Cela permet de calculer les 7 premiers polynômes de
Equa. diff. Tchebychev...
T0 (x) = 1,
T1 (x) = x,
T2 (x) = 2x2 − 1,
T3 (x) = 4x3 − 3x,
T4 (x) = 8x4 − 8x2 + 1,
T5 (x) = 16x5 − 20x3 + 5x,
T6 (x) = 32x6 − 48x4 + 18x2 − 1.
Polynômes de Tchebychev
Dérivation

Projet de
C++

Jérôme Si on approxime
Novak, Daniel N
Reese
X
f (x) ' ci Ti (x),
Introduction i=0
Tchebychev
alors la dérivée peut être approximée de la même manière :
Equa. diff.

N
X
f 0 (x) ' di Ti (x),
i=0

avec
N
2 X
di = k ck .
1 + δ0i
k=i+1, (k+i) impair

Cette formule vient de la dérivation de la relation de récurrence.


TPno 6
une classe de fonctions

Projet de
C++ En partant des classes Tab et Matrice, implémenter une classe
Jérôme
Novak, Daniel
Fonction représentant des fonctions définies sur [−1, 1] :
Reese
chaque instance de la classe contiendra la grille de points
Introduction de Gauss-Lobatto et les valeurs de la fonctions en ces
Tchebychev points ;
Equa. diff.
les coefficients seront calculés par quadrature de
Gauss-Lobatto et stockés comme membres ;
la classe possédera une méthode de calcul de la valeur en
un point quelconque de [−1, 1] et de transformation
inverse (coefficients → valeurs aux points de grille) ;
elle aura aussi une méthode renvoyant la Fonction
dérivée.
Pour un  cahier des charges , voir le fichier
Donnees cheb/ppl.cpp.
Projet de
C++

Jérôme
Novak, Daniel
Reese

Introduction

Tchebychev
Étape no 2 :
Equa. diff.

Résolution d’équations
différentielles linéaires à coefficients
constants
Opérateurs différentiels linéaires

Projet de
C++

Jérôme 0
Novak, Daniel
Reese  f  7→  f   
c0 d0 c0
 
Introduction  ..   ..  . 
 .   .  = D  .. 
×
Tchebychev

Equa. diff.
cN dN cN

Tout opérateur différentiel linéaire :

f 7→ af 00 + bf 0 + c (a, b, c) ∈ R3 ,

peut être vu comme une matrice.


L’inversion de cet opérateur ⇐⇒ inversion d’un système
linéaire
La matrice générale est-elle inversible ?
Opérateurs différentiels linéaires

Projet de
C++

Jérôme 0
Novak, Daniel
Reese  f  7→  f   
c0 d0 c0
 
Introduction  ..   ..  . 
 .   .  = D  .. 
×
Tchebychev

Equa. diff.
cN dN cN

Tout opérateur différentiel linéaire :

f 7→ af 00 + bf 0 + c (a, b, c) ∈ R3 ,

peut être vu comme une matrice.


L’inversion de cet opérateur ⇐⇒ inversion d’un système
linéaire
La matrice générale est-elle inversible ?
Conditions initiales

Projet de
C++
La matrice  brute  n’est pas inversible, il n’y a pas unicité de
Jérôme
la solution tant que les conditions initiales n’ont pas été
Novak, Daniel
Reese
spécifiées.
Introduction Méthode τ
Tchebychev Pour chaque condition, une ligne du système différentiel est
Equa. diff. remplacée par la condition, exprimée en termes des coefficients
inconnus.
On choisit évidemment la ligne concernant le plus haut degré
du système différentiel.

En pratique :
pour une condition du type f (x0 ) = y0 , on remplace les
aN i de l’opérateur par Ti (x0 ) et le N e coefficient du
membre de droite par y0 ;
pour f 0 (x0 ) = y0 , on fait la même chose, mais avec
T 0 (x0 ).
TPno 7
les classes d’équations différentielles

Projet de
C++
Concevoir une classe abstraite Equa diff contenant :
Jérôme
n, le degré de représentation spectrale des fonctions et une
Novak, Daniel
Reese
Matrice contenant l’opérateur ;
le vecteur (Tab) membre de droite de l’équation et le
Introduction
nombre de conditions au bord à imposer ;
Tchebychev
des fonctions impose conditions bord(), resout() ;
Equa. diff.
une fonction calcule operateur homogene() virtuelle
pure.
À partir de cette classe de base, faire deux classes dérivées :
Equa un représentant les équations différentielles du
premier ordre ay 0 + by = f , où (a, b) ∈ R2 et la fonction f
sont donnés. (a, b) seront les nouvelles données et la
fonctions virtuelle pure définie.
Equa deux représentant les équations différentielles du
second ordre ay 00 + by 0 + cy = f , où (a, b, c) ∈ R3 et la
fonction f sont donnés. . .
TPno 7
les classes d’équations différentielles

Projet de
C++
Concevoir une classe abstraite Equa diff contenant :
Jérôme
n, le degré de représentation spectrale des fonctions et une
Novak, Daniel
Reese
Matrice contenant l’opérateur ;
le vecteur (Tab) membre de droite de l’équation et le
Introduction
nombre de conditions au bord à imposer ;
Tchebychev
des fonctions impose conditions bord(), resout() ;
Equa. diff.
une fonction calcule operateur homogene() virtuelle
pure.
À partir de cette classe de base, faire deux classes dérivées :
Equa un représentant les équations différentielles du
premier ordre ay 0 + by = f , où (a, b) ∈ R2 et la fonction f
sont donnés. (a, b) seront les nouvelles données et la
fonctions virtuelle pure définie.
Equa deux représentant les équations différentielles du
second ordre ay 00 + by 0 + cy = f , où (a, b, c) ∈ R3 et la
fonction f sont donnés. . .

Vous aimerez peut-être aussi