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
[Link]@[Link], [Link]@[Link]
[Link]
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/[Link].
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. . .