Un projet en C++ - LUTH

Transcription

Un projet en C++ - LUTH
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Un projet en C++:
résolution d’équations
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
2
Transformée de Tchebychev, dérivée
3
Résolution d’équations différentielles
Tchebychev
Equa. diff.
Outline
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
1
Introduction : représentation des fonctions
2
Transformée de Tchebychev, dérivée
3
Résolution d’équations différentielles
Tchebychev
Equa. diff.
Outline
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
1
Introduction : représentation des fonctions
2
Transformée de Tchebychev, dérivée
3
Résolution d’équations différentielles
Tchebychev
Equa. diff.
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++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
Comment représenter une fonction sur un ordinateur ?
⇒un ordinateur ne sait gérer que des entiers
Afin de représenter une fonctions φ(x) (par ex. interpoler), on
peut utiliser :
un ensemble fini de ses valeurs {φi }i=0...N sur une grille
{xi }i=0...N ,
un ensemble fini de
coefficients sur une base de
Pses
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
N
aux méthodes spectrales X
0
φ (x) '
ci Ψ0i (x)
i=0
Fonctions sur un ordinateur
Approche simplifiée
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
Comment représenter une fonction sur un ordinateur ?
⇒un ordinateur ne sait gérer que des entiers
Afin de représenter une fonctions φ(x) (par ex. interpoler), on
peut utiliser :
un ensemble fini de ses valeurs {φi }i=0...N sur une grille
{xi }i=0...N ,
un ensemble fini de
coefficients sur une base de
Pses
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
N
aux méthodes spectrales X
0
φ (x) '
ci Ψ0i (x)
i=0
Fonctions sur un ordinateur
Approche simplifiée
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
Comment représenter une fonction sur un ordinateur ?
⇒un ordinateur ne sait gérer que des entiers
Afin de représenter une fonctions φ(x) (par ex. interpoler), on
peut utiliser :
un ensemble fini de ses valeurs {φi }i=0...N sur une grille
{xi }i=0...N ,
un ensemble fini de
coefficients sur une base de
Pses
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
N
aux méthodes spectrales X
0
φ (x) '
ci Ψ0i (x)
i=0
Fonctions sur un ordinateur
Approche simplifiée
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
Comment représenter une fonction sur un ordinateur ?
⇒un ordinateur ne sait gérer que des entiers
Afin de représenter une fonctions φ(x) (par ex. interpoler), on
peut utiliser :
un ensemble fini de ses valeurs {φi }i=0...N sur une grille
{xi }i=0...N ,
un ensemble fini de
coefficients sur une base de
Pses
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
N
aux méthodes spectrales X
0
φ (x) '
ci Ψ0i (x)
i=0
Fonctions sur un ordinateur
Approche simplifiée
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
Comment représenter une fonction sur un ordinateur ?
⇒un ordinateur ne sait gérer que des entiers
Afin de représenter une fonctions φ(x) (par ex. interpoler), on
peut utiliser :
un ensemble fini de ses valeurs {φi }i=0...N sur une grille
{xi }i=0...N ,
un ensemble fini de
coefficients sur une base de
Pses
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
N
aux méthodes spectrales X
0
φ (x) '
ci Ψ0i (x)
i=0
Convergence
des
séries de Fourier
p
7
φ(x) =
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
1.5 + cos(x) + sin x
φ(x) '
N
X
i=0
ai Ψi (x) avec Ψ2k = cos(kx), Ψ2k+1 = sin(kx)
Convergence
des
séries de Fourier
p
7
φ(x) =
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
1.5 + cos(x) + sin x
φ(x) '
N
X
i=0
ai Ψi (x) avec Ψ2k = cos(kx), Ψ2k+1 = sin(kx)
Convergence
des
séries de Fourier
p
7
φ(x) =
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
1.5 + cos(x) + sin x
φ(x) '
N
X
i=0
ai Ψi (x) avec Ψ2k = cos(kx), Ψ2k+1 = sin(kx)
Convergence
des
séries de Fourier
p
7
φ(x) =
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
1.5 + cos(x) + sin x
φ(x) '
N
X
i=0
ai Ψi (x) avec Ψ2k = cos(kx), Ψ2k+1 = sin(kx)
Convergence
des
séries de Fourier
p
7
φ(x) =
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
1.5 + cos(x) + sin x
φ(x) '
N
X
i=0
ai Ψi (x) avec Ψ2k = cos(kx), Ψ2k+1 = sin(kx)
Convergence
des
séries de Fourier
p
7
1.5 + cos(x) + sin x
φ(x) =
Projet de
C++
1
Jérôme
Novak, Daniel
Reese
Tchebychev
Equa. diff.
Relative accuracy (max-norm)
Introduction
0,01
0,0001
1e-06
1e-08
1e-10
1e-12
1e-14
1e-16
0
10
20
30
40
Number of coefficients N
50
60
70
Convergence
de
la dérivée
p
7
φ(x) =
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
1.5 + cos(x) + sin x
φ0 (x) '
N
X
i=0
ai Ψ0i (x) avec Ψ02k = −k sin(kx), Ψ02k+1 = k cos(kx)
Convergence
de
la dérivée
p
7
φ(x) =
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
1.5 + cos(x) + sin x
φ0 (x) '
N
X
i=0
ai Ψ0i (x) avec Ψ02k = −k sin(kx), Ψ02k+1 = k cos(kx)
Convergence
de
la dérivée
p
7
φ(x) =
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
1.5 + cos(x) + sin x
φ0 (x) '
N
X
i=0
ai Ψ0i (x) avec Ψ02k = −k sin(kx), Ψ02k+1 = k cos(kx)
Convergence
de
la dérivée
p
7
φ(x) =
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
1.5 + cos(x) + sin x
φ0 (x) '
N
X
i=0
ai Ψ0i (x) avec Ψ02k = −k sin(kx), Ψ02k+1 = k cos(kx)
Convergence
de
la dérivée
p
7
φ(x) =
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
1.5 + cos(x) + sin x
φ0 (x) '
N
X
i=0
ai Ψ0i (x) avec Ψ02k = −k sin(kx), Ψ02k+1 = k cos(kx)
Convergence
de
la dérivée
p
7
1.5 + cos(x) + sin x
φ(x) =
Projet de
C++
1
Jérôme
Novak, Daniel
Reese
Tchebychev
Equa. diff.
Relative accuracy (max-norm)
Introduction
0,01
0,0001
1e-06
1e-08
1e-10
1e-12
1e-14
1e-16
0
10
20
30
40
Number of coefficients N
50
60
70
Phénomène de Gibbs
pas de convergence pour des fonctions discontinues (ou
non-périodiques) !
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
φ(x) =
x
x − 2π
pour x ∈ [0, π]
pour x ∈]π, 2π[
Phénomène de Gibbs
pas de convergence pour des fonctions discontinues (ou
non-périodiques) !
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
φ(x) =
x
x − 2π
pour x ∈ [0, π]
pour x ∈]π, 2π[
Phénomène de Gibbs
pas de convergence pour des fonctions discontinues (ou
non-périodiques) !
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
φ(x) =
x
x − 2π
pour x ∈ [0, π]
pour x ∈]π, 2π[
Phénomène de Gibbs
pas de convergence pour des fonctions discontinues (ou
non-périodiques) !
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
φ(x) =
x
x − 2π
pour x ∈ [0, π]
pour x ∈]π, 2π[
Phénomène de Gibbs
pas de convergence pour des fonctions discontinues (ou
non-périodiques) !
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
φ(x) =
x
x − 2π
pour x ∈ [0, π]
pour x ∈]π, 2π[
Phénomène de Gibbs
pas de convergence pour des fonctions discontinues (ou
non-périodiques) !
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
φ(x) =
x
x − 2π
pour x ∈ [0, π]
pour x ∈]π, 2π[
Phénomène de Gibbs
pas de convergence pour des fonctions discontinues (ou
non-périodiques) !
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
φ(x) =
x
x − 2π
pour x ∈ [0, π]
pour x ∈]π, 2π[
Phénomène de Gibbs
pas de convergence pour des fonctions discontinues (ou
non-périodiques) !
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
φ(x) =
x
x − 2π
pour x ∈ [0, π]
pour x ∈]π, 2π[
Phénomène de Gibbs
pas de convergence pour des fonctions discontinues (ou
non-périodiques) !
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
φ(x) =
x
x − 2π
pour x ∈ [0, π]
pour x ∈]π, 2π[
Phénomène de Gibbs
pas de convergence pour des fonctions discontinues (ou
non-périodiques) !
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
φ(x) =
x
x − 2π
pour x ∈ [0, π]
pour x ∈]π, 2π[
Phénomène de Gibbs
pas de convergence pour des fonctions discontinues (ou
non-périodiques) !
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
φ(x) =
x
x − 2π
pour x ∈ [0, π]
pour x ∈]π, 2π[
Phénomène de Gibbs
pas de convergence pour des fonctions discontinues (ou
non-périodiques) !
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
φ(x) =
x
x − 2π
pour x ∈ [0, π]
pour x ∈]π, 2π[
Phénomène de Gibbs
pas de convergence pour des fonctions discontinues (ou
non-périodiques) !
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
φ(x) =
x
x − 2π
pour x ∈ [0, π]
pour x ∈]π, 2π[
Interpolation polynomiale
D’après le théorème de Weierstrass, toute fonction continue
peut être approximée comme limite d’une suite de fonctions
polynomiales.
En pratique, si l’on connaı̂t les valeurs de la fonctions sur des
points de grille {xi }i=0...N , on peut interpoler par des
polynômes de Lagrange :
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
N=4
1
li (x) =
N
Y
j=0,j6=i
y
0.5
x − xj
xi − xj
mais une grille uniforme
n’est pas un bon choix
⇒phénomène de Runge
0
2
f = 1/(1+16x )
Uniform interpolant
-0.5
-1
-0.5
0
x
0.5
1
Interpolation polynomiale
D’après le théorème de Weierstrass, toute fonction continue
peut être approximée comme limite d’une suite de fonctions
polynomiales.
En pratique, si l’on connaı̂t les valeurs de la fonctions sur des
points de grille {xi }i=0...N , on peut interpoler par des
polynômes de Lagrange :
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
N=4
1
li (x) =
N
Y
j=0,j6=i
y
0.5
x − xj
xi − xj
mais une grille uniforme
n’est pas un bon choix
⇒phénomène de Runge
0
2
f = 1/(1+16x )
Uniform interpolant
-0.5
-1
-0.5
0
x
0.5
1
Interpolation polynomiale
D’après le théorème de Weierstrass, toute fonction continue
peut être approximée comme limite d’une suite de fonctions
polynomiales.
En pratique, si l’on connaı̂t les valeurs de la fonctions sur des
points de grille {xi }i=0...N , on peut interpoler par des
polynômes de Lagrange :
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
N=13
1
li (x) =
N
Y
j=0,j6=i
y
0.5
x − xj
xi − xj
mais une grille uniforme
n’est pas un bon choix
⇒phénomène de Runge
0
2
f=1/(1+16x )
Uniform interpolant
-0.5
-1
-0.5
0
x
0.5
1
Polynômes orthogonaux
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
Les solutions (λi , ui )i∈N d’un problème de Sturm-Liouville
singulier sur l’intervalle x ∈ [−1, 1] :
0
− pu0 + qu = λwu,
avec p > 0, C 1 , p(±1) = 0
forment une famille orthogonale par rapport au poids w :
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 ∞ )
N
X
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++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
Les solutions (λi , ui )i∈N d’un problème de Sturm-Liouville
singulier sur l’intervalle x ∈ [−1, 1] :
0
− pu0 + qu = λwu,
avec p > 0, C 1 , p(±1) = 0
forment une famille orthogonale par rapport au poids w :
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 ∞ )
N
X
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++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
Les solutions (λi , ui )i∈N d’un problème de Sturm-Liouville
singulier sur l’intervalle x ∈ [−1, 1] :
0
− pu0 + qu = λwu,
avec p > 0, C 1 , p(±1) = 0
forment une famille orthogonale par rapport au poids w :
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 ∞ )
N
X
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++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
Les solutions (λi , ui )i∈N d’un problème de Sturm-Liouville
singulier sur l’intervalle x ∈ [−1, 1] :
0
− pu0 + qu = λwu,
avec p > 0, C 1 , p(±1) = 0
forment une famille orthogonale par rapport au poids w :
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 ∞ )
N
X
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
Novak, Daniel
Reese
Afin de représenter une fonction f (x) à l’aide de ses
coefficients {ci }i=0...N , il suffit d’être capable de calculer
R1
Introduction
Tchebychev
∀i,
Equa. diff.
ci = R−1
1
f (x)ui (x)w(x)dx
2
−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
∀g ∈ P2N −1 ,
g(x)w(x)dx =
−1
N
X
k=0
g(xk )wk .
Quadrature de Gauss
Projet de
C++
Jérôme
Novak, Daniel
Reese
Afin de représenter une fonction f (x) à l’aide de ses
coefficients {ci }i=0...N , il suffit d’être capable de calculer
R1
Introduction
Tchebychev
∀i,
Equa. diff.
ci = R−1
1
f (x)ui (x)w(x)dx
2
−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
∀g ∈ P2N −1 ,
g(x)w(x)dx =
−1
N
X
k=0
g(xk )wk .
Exemple avec les polynômes de
Tchebychev
2
φ(x) = (1 + 2 sin(5x)) /(1 + x )
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
φ(x) '
N
X
i=0
ai Ψi (x) avec Ψk = Tk (x) = cos(k arccos(x))
Exemple avec les polynômes de
Tchebychev
2
φ(x) = (1 + 2 sin(5x)) /(1 + x )
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
φ(x) '
N
X
i=0
ai Ψi (x) avec Ψk = Tk (x) = cos(k arccos(x))
Exemple avec les polynômes de
Tchebychev
2
φ(x) = (1 + 2 sin(5x)) /(1 + x )
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
φ(x) '
N
X
i=0
ai Ψi (x) avec Ψk = Tk (x) = cos(k arccos(x))
Exemple avec les polynômes de
Tchebychev
2
φ(x) = (1 + 2 sin(5x)) /(1 + x )
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
φ(x) '
N
X
i=0
ai Ψi (x) avec Ψk = Tk (x) = cos(k arccos(x))
Exemple avec les polynômes de
Tchebychev
2
φ(x) = (1 + 2 sin(5x)) /(1 + x )
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
φ(x) '
N
X
i=0
ai Ψi (x) avec Ψk = Tk (x) = cos(k arccos(x))
Exemple avec les polynômes de
Tchebychev
2
φ(x) = (1 + 2 sin(5x)) /(1 + x )
Projet de
C++
1
Jérôme
Novak, Daniel
Reese
Tchebychev
Equa. diff.
Relative accuracy (max - norm)
Introduction
0,01
0,0001
1e-06
1e-08
1e-10
1e-12
1e-14
1e-16
10
20
30
40
Number of coefficients N
50
60
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++
Jérôme
Novak, Daniel
Reese
Les fonctions associées aux polynômes de Tchebychev
{Tn (x)}n∈N sont définies par :
∀x ∈ [−1, 1],
Tn (x) = cos (n arccos x) .
Introduction
Tchebychev
Equa. diff.
Ils sont orthogonaux par
rapport au poids
w(x) = √
Z
1
hTn , Tp i =
−1
1
1 − x2
Tn (x)Tp (x)
π
√
dx = (1 + δ0n )δnp .
2
2
1−x
Polynômes de Tchebychev
Calcul des coefficients
Projet de
C++
Jérôme
Novak, Daniel
Reese
Les coefficients peuvent se calculer par quadrature de Gauss
-Lobatto. Les poids wi et les points de grille sont connus
analytiquement. Si
Introduction
∀x ∈ [−1, 1],
Tchebychev
f (x) '
N
X
ci Ti (x),
i=0
Equa. diff.
alors on a, avec une très bonne approximation :
ci '
k=0
où
xk = − cos
N
1 X
f (xk )Ti (xk )wk ,
γi
kπ
N
, w 0 = wN =
et γi =
N
X
k=0
π
π
, wk = (k = 1 . . . N −1);
2N
N
Ti2 (xk )wk .
Polynômes de Tchebychev
Interpolation
Projet de
C++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
Pour calculer la valeur de Tn en un point x, on utilise la
récurrence :
T0 (x) = 1, T1 (x) = x;
∀x ∈ [−1, 1], ∀n ≥ 2, Tn (x) = 2xTn−1 (x) − Tn−2 (x).
Cela permet de calculer les 7 premiers polynômes de
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
Novak, Daniel
Reese
Si on approxime
f (x) '
Introduction
Tchebychev
N
X
ci Ti (x),
i=0
alors la dérivée peut être approximée de la même manière :
Equa. diff.
f 0 (x) '
N
X
di Ti (x),
i=0
avec
di =
2
1 + δ0i
N
X
k ck .
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++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
En partant des classes Tab et Matrice, implémenter une classe
Fonction représentant des fonctions définies sur [−1, 1] :
chaque instance de la classe contiendra la grille de points
de Gauss-Lobatto et les valeurs de la fonctions en ces
points ;
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
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
0
 f  7→  f 
d0
c0
 .. 
 .. 
 . 
 . 
cN
dN

=

c0
. 
×
 .. 
cN

D

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
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
0
 f  7→  f 
d0
c0
 .. 
 .. 
 . 
 . 
cN
dN

=

c0
. 
×
 .. 
cN

D

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++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
La matrice brute n’est pas inversible, il n’y a pas unicité de
la solution tant que les conditions initiales n’ont pas été
spécifiées.
Méthode τ
Pour chaque condition, une ligne du système différentiel est
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++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
Concevoir une classe abstraite Equa diff contenant :
n, le degré de représentation spectrale des fonctions et une
Matrice contenant l’opérateur ;
le vecteur (Tab) membre de droite de l’équation et le
nombre de conditions au bord à imposer ;
des fonctions impose conditions bord(), resout() ;
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++
Jérôme
Novak, Daniel
Reese
Introduction
Tchebychev
Equa. diff.
Concevoir une classe abstraite Equa diff contenant :
n, le degré de représentation spectrale des fonctions et une
Matrice contenant l’opérateur ;
le vecteur (Tab) membre de droite de l’équation et le
nombre de conditions au bord à imposer ;
des fonctions impose conditions bord(), resout() ;
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. . .