Approche fonctionnelle des calculs scientifiques
Méthodes numériques et applications
Gérald Jean-Baptiste
Cépaduès
Sommaire1
Introduction3
Remerciements6
Chapitre 1 - Initiation au langage Python7
1. Introduction
7
2. Exemples de base
8
2.1. Quelques exemples sous le SHELL8
2.2. Structures conditionnelles simples10
2.3. Les modules11
2.4. Le module math11
2.5. Quelques fonctions prédéfinies12
2.6. Erreurs de typage13
3. Déclarations de liaisons globales et locales
14
4. La puissance des fonctions
14
4.1. Quelques exercices15
5. Lecture d'un fichier TXT
18
6. Fonctions récursives
19
6.1. L'imparable fonction factorielle19
6.2. La fonction puissance19
7. La suite de fibonacci
20
8. Implémentation des fonctions sur les suites
20
9. Les fonctions anonymes
32
10. Trier une suite
32
10.1. Tri par séléction avec extraction du plus grand élément33
10.2. Tri par partition35
Principe du partitionnement de deux suites35
10.3. Tri par fusion36
Principe du take et du drop36
Codage du tri36
11. Génération de nombres aléatoires
37
12. Lancer un programme directement par IDLE
38
13. Quelques exercices
40
Chapitre 2 - Résolution d'équations non linéaires49
1. Résolution d'une équation à une inconnue
49
1.1. Méthode itérative49
Implémentation de la méthode en langage Python49
Exécution sous le SHELL Python50
1.2. Dérivation d'une fonction-Résolution par pas constant du type Grégory-Newton50
1.3. Méthode Newton Raphson51
1.3.1. Implémentation de la méthode en langage Python52
1.4. Méthode de Lagrange52
1.4.1. Implémentation de la méthode en langage Python 53
1.5. Méthode de la dichotomie53
1.5.1. Implémentation de la méthode en langage Python54
1.6. La méthode des parties proportionnelles55
1.6.1. Implémentation de la méthode en Python55
1.7. La méthode de la parallèle56
1.7.1. Implémentation de la méthode en Python56
1.8. La méthode de Steffensen57
1.8.1. Implémentation de la méthode en Python57
1.9. La méthode de la sécante58
1.9.1. Implémentation de la méthode en Python58
2. Bibliographie
59
Chapitre 3 - Intégration numérique en 1D61
1. Introduction
61
1.1. La méthode des trapèzes62
1.2. La méthode de Simpson64
2. Intégration Gaussienne
66
Chapitre 4 - Approximation des intégrales doubles en coordonnées cartésiennes-bornes non dépendants de fonctions69
1. Introduction
69
1.1. Intégrales doubles sur un rectangle69
1.2. Propriétés de l'intégrale double70
1.3. Intégrale double sur un domaine non rectangulaire70
1.4. Un premier exemple73
1.5. Optimisation du programme74
1. Différents exemples applicatifs
75
2.1. à 2.3 Approximation de différentes intégrales doubles75
3. Optimisation - Implémentation en utilisant les listes
78
3.1. Une première implémentation78
3.2. Amélioration de l'efficacité79
4. Résolution de différentes intégrales doubles
80
4.1. à 4.3 Calculer et approximer l'intégrale suivante80
5. Bibliographie
82
Chapitre 5 - Approximation numérique des intégrales par la méthode de Monte-Carlo83
1. Introduction
83
2. Générateur de nombres pseudo-aléatoires
84
2.1. Définitions de nombres pseudo-aléatoires85
2.2. Loi Uniforme86
2.2.1. Loi Uniforme discrète86
2.2.2. Loi Uniforme continue86
2.3. Analyse de l'erreur pour l'intégration de Monte-Carlo88
2.3.1. Intervalle de confiance88
3. Estimation de (...)
90
3.1. Code impératif en Python92
4. Intégration en une dimension
93
4.1. Principe de calcul93
4.2. Une simple programmation93
4.2.1. Un premier exemple93
4.2.2. Un second exemple95
4.3. Autres exemples95
4.4. Utilisation du type abstrait Liste et calcul d'erreur97
4.4.1. Exemple de l'approximation ci-dessus en fonctions récursives Python98
4.4.2. Code Python en plusieurs fonctions récursives globales99
5. Exemples de résolution de plusieurs intégrales 1D
100
5.1. Exemple n° 1100
5.2. Exemple n° 2101
5.3. Exemple n° 3101
5.4. Exemple n° 4101
6. Programmation 1D en impératif
102
7. Intégration double pour des bornes dépendantes de fonctions
103
7.1. Source en liste et récursive en Python104
7.2. Un exemple106
7.3. Nombre d'épreuves107
7.3.1 Exemple n° 1108
7.3.2 Exemple n° 2108
7.3.3 Exemple n° 3109
7.3.4 Exemple n° 4111
8. Intégration triple pour des bornes dépendantes de fonctions
111
8.1. Source Python112
8.2. Exemple de calcul du volume d'une sphère unité-code Python114
9. Bibliographie
115
Chapitre 6 - Intégrales triples en coordonnées cartésiennes117
1. Introduction
117
2. Implémentation en langage Python
118
2.1. Exemple- Approximation d'une sphère unité118
2.1.1. Implémentation118
2.2. Exemple- Centre de gravité d'une demi-boule119
2.2.1. Approximation120
2.3. Exemple n°2121
2.4. Exemple n°3121
2.4.1. Application122
3. Bibliographie
123
Chapitre 7 - Résolution d'équations différentielles125
1. Introduction
125
2. Méthodes à pas séparé
127
2.1. Méthode d'Euler ordinaire127
2.2. Méthode d'Euler améliorée129
2.3. Méthode d'Euler-Cauchy. - (Méthode d'Euler modifiée)131
2.4. Méthode de Runge-Kutta - formulation d'ordre 2 et 4133
2.5. Méthodes de Runge-Kutta-Merson avec estimé de l'erreur136
2.5.1. Algorithme de Runge-Kutta-Merson d'ordre global 4 avec estimé de l'erreur[6]137
2.5.2. Algorithme de Runge-Kutta-Fehlberg d'ordre global 5 avec estimé de l'erreur[6]139
3. Méthode à pas multiples
142
3.1. Méthode de Nyström142
3.2. Méthode d'Adams-Bashfort-Moulton144
4. Équation différentielle du second ordre- Méthode des différences finies
147
5. Bibliographie
151
Chapitre 8 - Résolution d'un système linéaire153
1. Définition des fonctions primitives matricielles
153
2. Application - .Méthode de résolution s'intégrales de Romberg
163
3. Application - .Résolution Ly=b et Ux=y
165
3.1. Résolution d'un système triangulaire supérieur : Ux=y165
3.2. Résolution d'un système triangulaire inférieur : Ly=b168
4. Factorisation A=LU
169
4.1. Réalisation en langage Python170
5. La méthode de Gauss-Jordan
173
5.1. Principe par l'exemple173
5.2. Algorithme175
5.3. Implémentation Python175
6. Inverse d'une matrice
178
6.1. Création d'une matrice identité178
6.2. Inversion de la matrice en utilisant la méthode de Gauss Jordan179
7. Méthode de Doolittle - Méthode de Crout
179
7.1. Implémentation Python de la méthode de Doolittle180
7.2. Factorisation LR - Méthode de Crout182
7.3. Implémentation de la méthode de factorisation LR en Python183
8. Factorisation des matrices symétriques
186
8.1. Factorisation de Choleski applicable aux matrices symétriques définies positives186
8.2. Réalisation en langage Python186
9. Méthodes itératives de relaxation
192
9.1. Algorithme de Jacobi192
9.2. Implémentation Python de la méthode de Jacobi192
9.3. Implémentation Python de la méthode de Jacobi - utilisation des fonctions map194
9.4. Algorithme de Gauss-Seidel195
9.5. Implémentation Python de la méthode de Gauss-Seidel195
9.6. Algorithme de S.O.R. (Successive Over Relaxation)196
9.7. Implémentation Python de la méthode S.O.R. (Successive Over Relaxation)197
10. Méthodes du gradient conjugué
198
10.1 Implémentation Python du gradient conjugué200
11. Extension de la méthode du gradient conjugué pour des matrices quelconques
202
11.1. Méthode du résidu minimal202
11.2. Implémentation Python du résidu minimal202
12. Méthode de l'équation normale
206
12.1. Algorithme206
12.2. Implémentation de l'équation normale206
12.3. Gradient conjugué préconditionné => Matrice A Symétrique [2]208
12.4. Implémentation Python du gradient conjugué préconditionné208
13. Méthode du gradient bi-conjugué
210
13.1. Implémentation Python du gradient bi-conjugué211
14. Exercices
-Multiplication de 2 polynômes213
14.1. Implémentation récursive Python213
15. Bibliographie
214
Chapitre 9 - Recherche des valeurs propres et des vecteurs propres associés215
1. Plus grande valeur propre - méthode de la puissance
215
1.1. Implémentation de la méthode en Python218
2. Plus grande valeur propre - méthode de la norme du maximum
220
2.1. Implémentation de la méthode en Python221
3. Plus petite valeur propre - norme du maximum inverse
223
3.1. Implémentation de la méthode en Python223
4. Plus petite valeur propre - méthode de la puissance inverse
225
4.1. Implémentation de la méthode en Python225
5. Calcul de la valeur propre la plus proche d'un nombre donné par la méthode de la puissance inverse
227
5.1. Implémentation de la méthode en Python227
6. Calcul de la valeur propre la plus proche d'un nombre donné par la méthode de l'itération inverse de Rayleigh
229
6.1. Implémentation de la méthode en Python230
7. Recherche de toutes les valeurs propres d'une matrice par la méthode QR
232
7.1. Factorisation A=QR par la méthode de Householder232
7.2. Algorithme de la Factorisation A=QR233
7.3. Implémentation de la méthode en Python233
7.4. Recherche de toutes les valeurs propres - Python239
8. Recherche de toutes les valeurs propres d'une matrice par la méthode de Rutishauser (Décomposition LR)
242
8.1. Factorisation LR (méthode de Crout)242
8.2. Algorithme de la méthode de Crout243
8.3. Implémentation de la méthode de factorisation LR en Python243
8.4. Recherche de toutes les valeurs propres (méthode de Rutishauser)246
9. Tridiagonalisation d'une matrice - la méthode de Lanczos
248
9.1. Implémentation Python249
10. Bibliographie
251
Annexe : Primitives.py253