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