0% ont trouvé ce document utile (0 vote)
2 vues5 pages

Intégration numérique : méthodes et exercices

Ce TP se concentre sur l'application des concepts de calcul différentiel, optimisation et intégration, en introduisant le calcul récursif sans utiliser de bibliothèques externes. Il aborde les sommes de Riemann, la méthode des trapèzes, et les méthodes stochastiques de Monte-Carlo pour estimer des intégrales. Les étudiants doivent concevoir une librairie d'intégration avec différentes méthodes et syntaxe pour calculer des intégrales simples et multiples.

Transféré par

Vlad Lebovici
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)
2 vues5 pages

Intégration numérique : méthodes et exercices

Ce TP se concentre sur l'application des concepts de calcul différentiel, optimisation et intégration, en introduisant le calcul récursif sans utiliser de bibliothèques externes. Il aborde les sommes de Riemann, la méthode des trapèzes, et les méthodes stochastiques de Monte-Carlo pour estimer des intégrales. Les étudiants doivent concevoir une librairie d'intégration avec différentes méthodes et syntaxe pour calculer des intégrales simples et multiples.

Transféré par

Vlad Lebovici
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

TP 9 : En résumé

1 Introduction
Ce TP sera l’occasion d’appliquer tous les concepts vus en cours. Nous les appliquerons en particulier
aux notions abordées dans le cours de Calcul différentiel, Optimisation et Intégration.
Ce sera également l’occasion d’entrevoir une nouvelle notion : le calcul récursif. Ce TP est à réaliser
sans NumPy ou autre librairie de calcul (sauf lorsque cela est proposé). Vous pouvez utiliser math pour
calculer des fonctions telles que l’exponentielle et scipy pour simuler des nombres aléatoires.

2 Les sommes de Riemann


Les sommes de Riemann permettent d’approcher les valeurs d’intégrales par des sommes finies (nombre
fini de termes).

2.1 Fonctions d’une variable


Soit une fonction réelle f : [a, b] 7→ R intégrable au sens de Riemann. Soit σ = (a = x0 < x1 <
. . . < xn = b; (ti )i≤n ) un découpage de [a, b] associé pour chaque intervalle à un point contenu dans
l’intervalle (ti ∈ [xi−1 , xi ]). Il est possible de définir la somme de Riemann de la manière suivante :
n
X
S(f, σ) = (xi − xi−1 )f (ti )
i=1

Si la subdivision tend vers 0 (le plus grand intervalle [xi−1 , xi ] a une longueur qui tend vers 0), alors
la somme tend vers l’intégrale de Riemann :
Z b
f (x)dx
a

2.2 Fonctions de plusieurs variables


Ce principe se généralise directement à des fonctions de plusieurs variables. Par exemple, soit l’intégrale
suivante : Z Z b d Z b
f (x, y)dxdy = g(y)dy
a c a
Rd
où g(y) = c f (x, y)dx qui est une intégrale qui ne dépend que de x. Il faut donc faire un découpage
en x, puis évaluer g(y) en faisant un découpage le long des y.

1
L2 MIASHS TP 9 : En résumé

3 Méthode des trapèzes


La méthode des trapèzes part de la même idée que décrite précédemment. La différence vient de
la manière avec laquelle on calcule l’intégrale sur un intervalle. Ici, on va interpoler linéairement la
fonction sur l’intervalle et calculer l’aire du trapèze correspondant :
f (xi ) + f (xi−1 )
(xi − xi−1 )
2

4 Monte-Carlo - Échantillonnage préférentiel


Contrairement aux méthodes précédentes qui sont déterministes, les méthodes de Monte-Carlo sont
stochastiques. Il s’agit de simuler un grand nombre d’échantillons X1 , . . . , Xn uniformément sur le
domaine de définition de notre fonction. On peut ensuite estimer notre intégrale en moyennant la
valeur prise par notre fonction pour chaque échantillon :
n
1X
f (Xi )
n
i=1
où la loi des grands nombres nous dit que cette quantité convergera vers l’intégrale lorsque le nombre
d’échantillon devient grand.
L’Échantillonnage préférentiel permet d’aller encore plus loin en permettant de considérer des inté-
grales généralisées. Il s’agit ici de générer un grand nombre d’échantillons X1 , . . . , Xn selon une loi
de probabilité P de densité q dont le support est le même que celui de la fonction à intégrer. Notre
objectif va être de calculer l’espérance suivante :
  Z Z
f (X) f (x)
E = q(x)dx = f (x)dx
q(X) D q(x) D
De la même manière que précédemment, on peut donc s’appuyer sur la loi des grands nombres pour
approcher notre intégrale de la manière suivante :
n
1 X f (Xi )
n q(Xi )
i=1

5 Votre travail
5.1 Syntaxe
On cherche à concevoir une librairie d’intégration permettant la syntaxe suivante :

1 my_integral = i n t e g r a l ( 1 . , 1 0 . , f u n c=lambda x : 1 / x )
2 print ( my_integral ( ) )

qui s’interprète comme l’intégrale suivante :


Z 10
1
dx
1 x
Un autre usage doit être :

1 my_integral = I n t e g r a l ( 1 . , 1 0 . ) . i n t e g r a t e (lambda x : 1 / x )
2 print ( my_integral ( ) )

TP E32MI5 2 2024-2025
L2 MIASHS TP 9 : En résumé

qui calcule la même intégrale. On veut bien sûr pouvoir calculer des intégrales doubles (ou plus) :

1 int_x = i n t e g r a l ( ( lambda y : y / 2 ) , 1 , f u n c=lambda ∗_: 1 )


2 int_y = i n t e g r a l ( 0 , 2 , f u n c=int_x )
3 print ( int_y ( ) )

qui se lit comme : Z 2Z 1


dxdy
0 y/2

Encore une fois, une autre syntaxe possible doit pouvoir être :

1 my_integral = i n t e g r a l ( 0 , 2 ) . i n t e g r a t e (
2 i n t e g r a l ( ( lambda y : y / 2 ) , 1 ) . i n t e g r a t e (lambda ∗_: 1 )
3 )
4 print ( my_integral ( ) )

qui calcule toujours la même intégrale. La méthode de calcule par défaut doit être les sommes de
Riemann. Cependant, on doit pouvoir adapter la méthode :

1 my_integral = i n t e g r a l ( 0 , 2 ) . i n t e g r a t e (
2 i n t e g r a l ( ( lambda y : y / 2 ) , 1 , method= ’ t r a p e z o i d a l _ r u l e ’ ) . i n t e g r a t e (lambda ∗_:
1)
3 )
4 print ( my_integral ( ) )

où on considère que la seconde intégrale doit être calculée via la règle des trapèzes alors que la première
reste calculée via les sommes de Riemann. Enfin, on peut aussi considérer la méthode d’échantillonnage
préférentiel qui est notamment utile dans le cadre d’intégrales généralisées (avec des bornes infinies).
Ainsi, si on souhaite calculer l’intégrale ci-dessous :
Z
x2
e− 2 dx
R

on doit pouvoir écrire cela :

1 from s c i p y . s t a t s import g e n l o g i s t i c
2
3 my_integral = i n t e g r a l (
4 g e n e r a t o r=g e n l o g i s t i c ( c =1, s c a l e =0.5) . rvs ,
5 g e n e r a t o r _ d e n s i t y=g e n l o g i s t i c ( c =1, s c a l e =0.5) . pdf ,
6 method= ’ importance_sampling ’
7 ) . integrate (
8 lambda x : math . exp ( −0.5∗ x ∗ ∗ 2 )
9 )
10
11 print ( my_integral ( ) )

où genlogistic est la distribution logistique généralisée qui est pour support la droite réelle. La mé-
thode rvs est le générateur qui permet de générer des nombres aléatoires et la méthode pdf est la
fonction de densité. On intègre donc la fonction voulue sur la droite réelle via la méthode d’échan-
tillonnage préférentiel. Bien sûr, on peut doit pour voir contrôler le découpage des méthodes de sommes
de Riemann et des trapèzes ou le nombre d’échantillons.

TP E32MI5 3 2024-2025
L2 MIASHS TP 9 : En résumé

5.2 Testez votre code


5.3 Méthodes déterministe et intégrale simple
5.3.1 Les sommes de Riemann
Le découpage le plus facile à construire est celui où chaque partie de la subdivision a la même longueur :

x1 − x0 = x2 − x1 = . . . = xn − xn−1

Ici, la longueur de chaque segment est donnée par :


b−a
δn =
n
et on a x0 = a, x1 = a + δn , x2 = a + 2δn , . . ., xn = a + nδn = b.
Le découpage choisi, nous devons choisir pour chaque intervalle un point qui servira à évaluer notre
fonction. Le plus simple, à nouveau, revient à prendre le point médian :
xi + xi−1 2i − 1
ti = =a+ δn
2 2
Tout est en place pour évaluer notre somme de Riemann :
n
X
S(f, σ) = δn f (ti )
i=1

Proposez une classe dont le constructeur accepte :


1. les bornes de l’intégrale,
2. la fonction à intégrer,
3. le nombre de sous-intervalles du découpage.
Votre classe doit permettre de modifier la fonction à intégrer (via un mutateur ou non).
Votre classe doit posséder une méthode permettant d’évaluer l’intégrale à partir des paramètres ren-
seignés.

5.3.2 La règle des trapèzes


Suivant les mêmes idées, ajoutez la possibilité d’utiliser la méthode des trapèzes.

5.4 Intégrales multiples


En reprenant l’exercice 6 du TD9 (COI), on veut pouvoir écrire :

1 i n t e g r a l = I n t e g r a l (0 , 2) . i n t e g r a t e (
2 I n t e g r a l ( ( lambda y : y / 2 ) , 1 ) . i n t e g r a t e (lambda ∗_: 1 )
3 )
4 print ( i n t e g r a l ( ) )

qui représente l’intégrale : Z 2Z 1


1dxdy
0 y/2

Bien que les sommes de Riemann partent d’un intervalle fini, il est aussi possible d’avoir une idée
d’intégrales telles que : Z
1 2
e− 2 x dx
R

TP E32MI5 4 2024-2025
L2 MIASHS TP 9 : En résumé

En effet, l’intégrale :
Z d 1 2
e− 2 x dx
d
converge vers la précédente lorsque d tend vers l’infini. Cette convergence est en réalité assez rapide :

1 d = 500
2 i n t e g r a l = I n t e g r a l (−d , d , n=10000) . i n t e g r a t e (lambda x : math . exp ( −0.5∗ x ∗ ∗ 2 ) )
3 print ( i n t e g r a l ( ) )

Attention, lorsque d croît mais que n reste constant, les intervalles croissent. Ainsi, la somme de
Riemann s’éloigne de la valeur de l’intégrale représentée. Il faut donc faire croître n au même titre que
d.
En réalité, l’exercice précédent gère déjà ou presque la notion d’intégrale multiple.

5.5 Intégrale généralisée


Une intégrale généralisée est de la forme :
Z +∞ Z z
f (x)dx = lim f (x)dx
a z→+∞ a

On voit rapidement que d’un point de vue informatique, l’infini va nous gêner.
Utilisez les méthodes stochastiques afin de calculer des intégrales généralisées.

5.6 Gestion des tests et des exceptions


5.7 Résoudre quelques exercices de COI
5.8 Tester son code
En vous appuyant sur les solutions vu en TD de COI, proposez des tests unitaires pour les intégrales
codées dans la question précédente.

TP E32MI5 5 2024-2025

Vous aimerez peut-être aussi