Professional Documents
Culture Documents
De manière générale, il n’est jamais bon de l’utiliser comme une « boîte noire » :
En fonction du problème, en choisissant l’algorithme le plus adapté, on peut
gagner du temps de calcul , ou mieux : éviter des instabilités numériques.
Exemple 1: Si vous avez besoins de calculer l’inverse d’une matrice, et que sont
déterminant est très proche de 0 (mais non exactement 0), le calcul sera très sensibles
aux erreurs de troncatures de la machine. Dans ce cas il faut préférer une inversion
itérative, plutôt qu’une inversion exacte…
Exemple 2 : Si vous souhaitez décomposer une fonction sur une base de fonctions,
ll vaut mieux bien connaître cette base, sinon vous ne saurez pas vraiment
ce que vous faites… Souvent, une telle décomposition engendre des instabilités
dans le schémas numérique en raison de la discrétisation etc…
Dans ce chapitre, nous aborderons 3 points :
Systèmes linéaires
Ax = b
Où A est une matrice (à priori) inversible , b est un vecteur, et X est le vecteur
inconnu.
Pourquoi ?
x3 =
1
(b3 − x4 a34 )
a33
etc...
⎛ a11 a12 a13 a14 ⎞⎛ x1 ⎞ ⎛ b1 ⎞
⎜ ⎟⎜ ⎟ ⎜ ⎟
⎜ 0 a22 a23 a24 ⎟⎜ x2 ⎟ ⎜ b2 ⎟
⎜ 0 ⎟ ⎜ ⎟ =⎜ ⎟
0 a33 a34 x3 b3
⎜ ⎟⎜ ⎟ ⎜ ⎟
⎜ 0
⎝ 0 0 a44 ⎟⎠⎜⎝ x4 ⎟⎠ ⎜⎝ b4 ⎟⎠
D’une manière générale, on peut trouver toutes les valeurs de Xi par la méthode
itérative suivante (substitution arrière)
x N = bn / ann
1 ⎡ N ⎤ On calcule Xn, puis Xn-1, Xn-2 … X1
xi = ⎢bi − ∑ aij x j ⎥
aii ⎣ j =i +1 ⎦
Une méthode similaire marche aussi pour un matrice triangulaire inférieure
⎛ a11 0 0 0 ⎞⎛ x1 ⎞ ⎛ b1 ⎞
⎜ ⎟⎜ ⎟ ⎜ ⎟
⎜ a21 a22 0 0 ⎟⎜ x2 ⎟ ⎜ b2 ⎟
⎜a ⎟ ⎜ ⎟ =⎜ ⎟
a32 a33 0 x3 b3
⎜ 31 ⎟⎜ ⎟ ⎜ ⎟
⎜a
⎝ 41 a42 a43 a44 ⎟⎠⎜⎝ x4 ⎟⎠ ⎜⎝ b4 ⎟⎠
x1 = b1 / a11
1 ⎡ i −1 ⎤ On calcule X1, puis X2, X3 … XN
xi = ⎢bi − ∑ aij x j ⎥
aii ⎣ j =1 ⎦
Substitution avant
Dans de nombreuses méthodes, l’objectif est de transformer A pour la rendre
Triangulaire, inférieure ou supérieurs, et ensuite calculer les solutions en utilisant
une substitution (avant ou arrière si A est inférieure ou supérieure).
FACTORISATION L U
Un peu plus subtile, ne modifie pas b, donc on peut utiliser la même décomposition
pour tout vecteur b, donne A-1 et les vecteurs propres
Gauss Jordan (pivot de Gauss)
On conserve la ligne L1, qui sert de pivot pour éliminer l'inconnue x des autres lignes;
pour cela, on retire L1 à L2, et 3 fois L1 à L3. On obtient :
On conserve alors la ligne L2 qui sert de pivot pour éliminer y de la troisième ligne;
pour cela, on remplace la ligne L3 par L3-L2. On trouve :
⎛1 2 2 ⎞⎛ x ⎞ ⎛ 2 ⎞
pivot ⎜ ⎟⎜ ⎟ ⎜ ⎟
⎜ 0 1 − 4 ⎟⎜ y ⎟ = ⎜ − 3 ⎟
⎜ 0 − 1 2 ⎟⎜ z ⎟ ⎜ 2 ⎟
⎝ ⎠⎝ ⎠ ⎝ ⎠
⎛ 1 2 2 ⎞⎛ x ⎞ ⎛ 2 ⎞
⎜ ⎟⎜ ⎟ ⎜ ⎟
⎜ 0 1 − 4 ⎟⎜ y ⎟ = ⎜ − 3 ⎟
⎜ 0 0 − 2 ⎟⎜ z ⎟ ⎜ − 1 ⎟
⎝ ⎠⎝ ⎠ ⎝ ⎠
2. permute 2 colonnes
3. divise par un même terme non nul les éléments d’une ligne
⎧2 x1 + 4 x2 − 2 x3 = −6
⎪ x + 3x + x4 = 0
⎪ 1 2
⎨
⎪3 x1 − x2 + x3 + 2 x4 = 8
⎪⎩ − x2 + 2 x3 + x4 = 6
pivot (1)
⎧2 x1 + 4 x2 − 2 x3 = −6
⎪ x + 3x + x4 = 0
⎪ 1 2
⎨
⎪3 x1 − x2 + x3 + 2 x4 = 8
⎪⎩ − x2 + 2 x3 + x4 = 6
L2 = L2-L1 a21/pivot (1)
Pivot de Gauss : un exemple
⎧2 x1 + 4 x2 − 2 x3 = −6
⎪ x + 3x + x4 = 0
⎪ 1 2
⎨
⎪3 x1 − x2 + x3 + 2 x4 = 8
⎪⎩ − x2 + 2 x3 + x4 = 6
L2 = L2-L1 a21/pivot (1)
⎧2 x1 + 4 x2 − 2 x3 = −6
⎪ 0 + x + x3 + x4 = 3
⎪ 2
⎨
⎪3 x1 − x2 + x3 + 2 x4 = 8
⎪⎩ − x2 + 2 x3 + x4 = 6
Pivot de Gauss : un exemple
⎧2 x1 + 4 x2 − 2 x3 = −6
⎪ x + 3x + x4 = 0
⎪ 1 2
⎨
⎪3 x1 − x2 + x3 + 2 x4 = 8
⎪⎩ − x2 + 2 x3 + x4 = 6
L3 = L3-L1 a31/pivot (1)
⎧2 x1 + 4 x2 − 2 x3 = −6
⎪ 0 + x2 + x3 + x4 = 3
⎪
⎨
⎪ 0 − 7 x2 + 4 x3 + 2 x4 = 17
⎪⎩ − x2 + 2 x3 + x4 = 6
⎧ ( k +1) a (k )
⎪ ij
a ← a (k )
ij − ik
a (k )
( k ) kj
pour j = k + 1,..., n
⎪ akk
pour i = k + 1,..., n ⎨ (k )
a
⎪b ( k +1) ← b ( k ) − ik b ( k )
⎪⎩ i i (k ) k
akk
matriciellement : A( k +1) = M ( k ) A( k ) ; b ( k +1) = M ( k )b ( k ) ;
Nécessite de modifier b ,
=> Décomposition LU
Décomposition LU
L x U = A
Ax=(L U) x = L (U x) = b
1. Résoudre L y =b
2. Résoudre U x =y
Intérêt de la méthode :
Matrices augmentées
⎛ 1 2 − 1⎞⎛ x1 ⎞ ⎛ 2⎞ ⎛ 1 2 −1 2⎞
⎜ ⎟⎜ ⎟ ⎜ ⎟ ⎜ ⎟
⎜ 4 3 1 ⎟⎜ x2 ⎟ = ⎜ 3⎟ ⇒ ⎜ 4 3 1 3⎟
⎜ 2 2 3 ⎟⎜ x ⎟ ⎜5⎟ ⎜ 2 2 3 5⎟
⎝ ⎠⎝ 3 ⎠ ⎝ ⎠ ⎝ ⎠
On peut garder la trace des différentes étapes du pivot de gauss en considérant
La matrice augmentée
⎛ 1 2 −1 2⎞ ⎛ 1 2 −1 2 ⎞ ⎛ 1 2 −1 2 ⎞
⎜ ⎟ ⎜ ⎟ ⎜ ⎟
⎜ 4 3 1 3 ⎟ => ⎜ 4 − 4 3 − 8 1 + 4 3 − 8 ⎟ = ⎜ 0 − 5 5 − 5 ⎟
⎜ 2 2 3 5⎟ ⎜ 2 5 ⎟⎠ ⎜⎝ 2 2 5 ⎟⎠
⎝ ⎠ ⎝ 2 3 3
Nouvelle matrice A Nouveau
vecteur b
On a changé le 0 ⎛ 1 2 −1 2 ⎞
En 4 ⎜ ⎟
⎜ 4 − 5 5 − 5⎟
⎜2 2 5 ⎟⎠
⎝ 3
⎛ 1 2 −1 2 ⎞
⎜ ⎟
Augmentée : ⎜ 4 − 5 5 − 5 ⎟
⎜2 2 5 ⎟⎠
⎝ 3
Nouvelle augmentée ⎛ 1 2 −1 2 ⎞
⎜ ⎟
⎜ 4 − 5 5 − 5⎟
⎜2 − 2 5 1 ⎟⎠
Au lieu du 0 ici, on ⎝
a mis le « 2 » par lequel on avait
multiplié L1
⎛ 1 2 −1 2 ⎞
Au lieu des 0 ⎜ ⎟
on a conservé
⎜ 4 − 5 5 − 5⎟
⎜2 2/5 3 3 ⎟⎠
les coefs. multiplicateurs ⎝
⎛ 1 2 −1 2 ⎞
⎜ ⎟ Augmentée finale.
⎜ 4 − 5 5 − 5⎟ On en déduite la forme triangulaire
⎜2 2/5 3 ⎟ de A et la nouvelle forme de b
⎝ 3 ⎠
⎛ 1 2 − 1⎞ ⎛2⎞
⎜ ⎟ ⎜ ⎟
A = ⎜ 0 − 5 5 ⎟ et b = ⎜ - 5 ⎟
⎜0 0 ⎟ ⎜3⎟
⎝ 3 ⎠ ⎝ ⎠
⎛ 1 2 −1 2 ⎞
⎜ ⎟
⎜ 4 − 5 5 − 5⎟
⎜2 2/5 3 ⎟
⎝ 5 ⎠
Plus précisement, on divise chaque colonne par l’élément diagonal pour
~L mettre des 1 sur la diagonale de L
⎛ 1 2 −1 2 ⎞
⎜ ⎟
⎜ 4 − 5 5 − 5⎟
⎜2 2 ⎟
⎝ 3 5 ⎠
⎛1 0 0⎞ ⎛ 1 2 − 1⎞
⎜ ⎟ ⎜
L = ⎜4 1 0⎟ et U = ⎜ 0 − 5 5
⎜ 2 − 2 / 25 1 ⎟ ⎜0 0
⎝ ⎠ ⎝ 3⎠
Matrice U
Matrice L
Une fois qu’on possède la décomposition LU, on obtient aisément
:
Le déterminant :
La matrice inverse : M
On résoud successivement pour toute dimension
A xj =ej où ej est le vecteur unitaire de la dimension j
=> En combinant tous les xj on trouve successivement toutes les
colonnes de la matrice A-1
⎛1⎞ ⎛ 0⎞ ⎛ 0⎞ ⎛M M M⎞
⎜ ⎟ ⎜ ⎟ ⎜ ⎟ −1
⎜ ⎟
Ax1 = ⎜ 0 ⎟ Ax2 = ⎜ 1 ⎟ Ax3 = ⎜ 0 ⎟ ⇒ A = ⎜ x1 x2 x3 ⎟
⎜0⎟ ⎜ 0⎟ ⎜1⎟ ⎜M M M ⎟⎠
⎝ ⎠ ⎝ ⎠ ⎝ ⎠ ⎝
Avantage de la méthode L-U : On ne calcule que L et U qu’une seule fois
METHODES ITERATIVES (Relaxation)
X=M-1 N X + M-1 B= P X + C
F(x)
Xk+1=P Xk + C
Décomposition E, D, F : idée : prendre pour M une simple matrice diagonale D
S’écrit :
Mais on fait la première somme sur les coeffs déjà calculés de l’étape k+1
A doit être à « dominante diagonale » i.e ABS( diagonale )soit être > somme des v.abs
des élements sur la ligne pour être sûr de la convergence….
Nous avons vu 2 familles de méthodes :
Le problème :
•Si les f(xi) sont des valeurs exactes on fera une décomposition
sur une base de fonctions (des polynômes le plus souvent)
f ( x) = ∑ aiϕi ( x)
i
f est toujours définie sur un domaine : [xmin , xmax]
On suppose : f ( x) = ∑ a x i
i
i =0
On a n équations à n inconnues :
M x A = f
N −1
f ( x) = ∑ ai li ( x)
i =0
Les Li(x) sont des polynômes d’ordre n-1 : ~ produits de (x-xj) pour j différent de i
Exemple :
Xi= [ 0 , 2 , 4, 6] et Fi=[ 0, 4, 0, 4]
Les polynomes de Lagrange sont une méthode rapide de calculer des points
sur la courbes… sans avoir à calculer explicitement les coefficients…
Interpolation
par polynômes
de Lagrange
L’interpolation polynomiale ne doit-être utilisée que :
Méthode simple :
Ne pas utiliser tous les points, mais seulement les voisins
2 points : F est affine par morceaux (mais de non dérivable, classe C0)
Etc…
1 point : constantes
par morceaux
Ces méthodes sont plutôt stables… souvent très utiles… mais ont de mauvaises
propriétés de dérivabilités…
Pour les calculer : On utilise les polynômes de Legendre.
On veut calculer f(x) en utilisant les p plus proches voisins : Xj1 …Xjp
jp jp
(x − x j )
f ( x) = ∑ ai ∏ ( xi − x j )
2pt
i= j 0 j = j 0, j ≠i
3 pt
1 pt
Dans le cas a 1 point : F(x)=f(xp0) (XP0 est le pt immédiatement inférieur à X)
( x − x p0 )
Dans le cas à 2 points : f ( x) = ( f ( x p1 ) − f ( x p 0 ))
( x p1 − x p 0 )
(xp1, F(xp1) )
(xp0, F(xp0) )
p0 + p1 x + p2 x 2 + ... + pn −1 x n −1
f ( x) =
q0 + q1 x + q2 x 2 + ... + qn −1 x n −1
Les inconnues sont les pi et les qi .
Les fractions rationnelles sont moins instables que les polynomes mais
moins faciles à coder.
Elles peuvent modéliser des fonctions avec des pôles (complexes) etc…
Exemple de mesure :
Nb d’atomes en fonction du temps
=> Elle ne passe pas exactement par les points, mais elle s’en approche.
On appelle souvent cela « fitter » une fonction (en français « adapter »).
Ex : faire passer
une gaussienne par des points
Fitter un nuage de points
par une droite
(Régression linéaire)
Etc…
Le problème ici n’est donc pas d’interpoler MAIS
De trouver le meilleur modèle mathématique qui représente les données.
EXEMPLES:
Etc …
L’objectif EST de trouver la fonction qui passe au plus prés des points de mesure :
=> Minimiser la distance entre chaque point de la fonction et chaque pts de mesure
EXEMPLES
On doit donc se donner une MESURE de la distance entre les points et
la fonction. On peut en imaginer de nombreuses ….
( y *i − ya ,b ,c.. ( xi )) 2
χ 2 (a, b, c,...) = ∑
tt les pts Δ 2
i
On va utiliser un modèle
à 1 paramètre :
Y(x)=a
CEPENDANT
Pour le cas d’une régression linéaire (fit par une droite, Y=aX+b) il existe
un algorithme simple et analytique qui donne directement la meilleure valeur
de a et b (2 paramètres) au sens des moindres carrés.
( y *i − ya ,b ,c.. ( xi )) 2
χ 2 (a, b, c,...) = ∑
tt les pts Δ2i
Si le XHI2 est minimal au point (a*1, …, a*n) alors toutes les dérivées
partielle s’annulent à ce point là.
∂χ 2
= 0
∂ a1 a 1* ,.., a n*
∂χ 2
= 0
∂a2 a 1* ,.., a n*
...
∂χ 2
= 0
∂an a 1* ,.., a n*
( y*i − ya,b,c.. ( xi ))2 ( y − yi )
* 2
χ (a, b, c,...) = ∑ = ∑
2 i
La distance
tt les pts Δ 2
i tt les pts Δ2
i
∂χ 2
= 0
∂ a1
On doit alors résoudre a 1* ,.., a n*
...
∂χ 2
= 0
∂an a 1* ,.., a n*
( y *
− y ) 2
χ (a, b, c,...) = ∑ ⇒
2 i i
tt les pts Δi
2
2
⎛ * n −1
p ⎞
⎜ y i − ∑ a p xi ⎟
χ 2 = ∑ ⎜⎜ ⎟ ⇒
Np
p =0 Où les (xi, , y*i) sont les points de
Δi ⎟ mesure
pts:i
⎜⎜ ⎟⎟ Et les (xi, , yi) sont les points
de la fonction « modèle »
⎝ ⎠
⎛ * n −1 p ⎞
⎜ y i − ∑ a p xi ⎟
∂χ 2
( )
!! Attention aux indices :
⎜ ⎟
Np
= −2∑ ak xik −1
p =0 k : numéro de la variable que
∂ak ⎜ Δi ⎟ l’on dérive
i
⎜⎜ ⎟⎟ p: coefficient p du polynome
⎝ ⎠ i: numéro du point de mesure
⎛ * n −1 p ⎞
⎜ y i − ∑ a p xi ⎟
∑ (a x ) ⎜ ⎟=0⇔
Np
k −1 p =0
k i ⎜ Δi ⎟
i
⎜⎜ ⎟⎟
⎝ ⎠
Np Np Np Np *
a0 a1 an y
Δ0
∑i xi + Δ ∑i xi + ... + Δ
k k +1
∑i i
x k + n −1
= ∑i Δ i
i
x k
1 n i
On obtient donc le système linaire, pour k=0, n-1
⎛ ⎛ ⎞ ⎛ ⎞ ⎞
⎜ (n + 1) / Δ 0 ⎜ ∑ xi ⎟ / Δ 0 ... ⎜ ∑ xi ⎟ / Δ 0 ⎟
n −1
⎛ ∑ yi ⎞
⎜ ⎜ ⎟ ⎜ ⎟ ⎟
⎝ pts ⎠ ⎝ pts ⎠ ⎛ a0 ⎞ ⎜ pts ⎟
⎜ ⎟⎜ ⎟ ⎜ ⎟
⎜ ∑ xi1+ n −1 ⎟ / Δ1 ⎟⎜ a1 ⎟ ⎜ ∑
⎜ ⎛⎜ x ⎞⎟ / Δ ⎛ ⎞ ⎛ ⎞
⎜ ⎜⎝ ∑
⎜ ∑ xi ⎟ / Δ1
2
...
y x
i i ⎟
i⎟ 1 ⎜ ⎟ ⎜ ⎟ ⎟ ⎜ ⎟ = ⎜ pts ⎟
pts ⎠ ⎝ pts ⎠ ⎝ pts ⎠ ...
⎜ ⎟ ⎜ ⎟ ⎜ ... ⎟
⎜ ... ... ... ... ⎟⎜⎝ an −1 ⎟⎠ ⎜ y x n −1 ⎟
⎜ ⎛⎜ x n −1 ⎞⎟ / Δ ⎛ ⎞ ⎛ ⎞ ⎟ ⎜ ∑ ⎟
⎜⎜∑
⎜ ∑ xi ⎜ ∑ xi ⎟ / Δ n
i i
1+ n −1
⎟ / Δn ... 2n−2
⎝ ⎠
i ⎟ n ⎜ ⎟ ⎜ ⎟ ⎟
pts
M x A = Y
=> A=M-1 Y
CAS PARTICULIER : Régression linéaire
Ordre du polynôme
La Valeur du XHI2 est interessante : elle donne une indication
sur la qualité du fit :
Distance moyenne ~ (XHI2/n points)1/2 en unités de Δi
=> Fit « idéal » : XHI2~n points (chaque points est « fitté en moyenne à 1 Δ)
Si XHI2 << n points : trop bon fit : Vous avez sûrement surestime les barres
d’erreurs
SOUVENT, quand on a besoin rapidement d’un fit , on met toutes les barres a 1
Mais dans ce cas on a pas d’estimation robuste de la qualité du fit
Exemple 1 : Fit par une droite
Valeur du
χ2 = 25.2
⇒La deviation
moyenne est
~ sqrt(25.2/n points)
~ 1.2 Delta
Exemple 2 : Fit par une droite avec un point aberrant
La droite a été
« tirée » vers le bas
XHI2=22 (Ok)
Si
les (xi , yi*) sont représentables par Y=a ebx =>
Les (xi, Ln(yi*) ) sont représentables par Y’=Ln(a)+ b X ( c’est une droite)
=>
Y’=LOG(Y)
En résumé:
Faites attention quand vous calculez un fit : ayez toujours une estimation
de sa qualité en considérant la valeur du XHI2 . Pour cela vous devez toujours
connaître la qualité de vos points de mesure (barre d’erreur).
Exemples :
Simulation d’une source radioactive
Simulation du mouvement brownien
Estimation d’une intégrale complexe en N dimensions (N>3)
Simulation d’un gaz
Etc …
Générateurs congruentiels
m= grand nombre ~
maximum représentable par la machine (~232 = 4.3 109)
U0 = graine
a, c : paramètres du générateur
Certains couples (a,c) sont connus pour être bons, d’autres mauvais….
Exemple : Uj+1= a Uj+c (mod M)
Pas mal comme résultat … mais si on tire 105 nombres les pb apparaissent :
Tirage de 1 million de chiffres pseudo-aléatoires
MAIS
Ils finissent toujours par se répéter (i.e modulo m), les corrélations sont
inévitables
Il faut savoir aussi que le « hasard » est toujours plus important sur les
premières décimales (essayez pour voir)=>
A=75 = 16087
M=232-1 = 2147483647
C=0
A la vue des 2 premiers moments notre distribution est assez fidèlement uniforme..
Pour diminuer encore les corrélations, diverses techniques existent,
Par exemple on tire au hasard « l’indice » du chiffre numéro j …
(« shuffling »)…
Si vous avez besoin d’une série entre 0 et 1, divisez les résultat par m.
EN PRATIQUE
Tirez au hasard 107 chiffres et affichez le résultat… déjà à l’œil vous aurez une
idée s’il y a des corrélations évidentes ou non
Méfiez vous si vous avez besoin d’une LONGUE séquence ROBUSTE.. Des
corrélations cachées peuvent vraiment affecter la validité de votre résultat !!
ENFIN
exemples
−( x−μ )2
1
p( x) = e 2σ 2
Gaussienne (Normale)
σ 2π
λx e − λ
p( x) = Poisson P(x)= densité de probabilité
x!
a
p ( x) = Cauchy / Lorentzienne
π (a 2 + x 2 )
− x2
x
p( x) = e 2σ 2 Raleygh etc….
σ 2
Problème : Nous voulons générer une série de N points pseudo-aléatoires
qui sont distribués suivant une densité de probabilité p(x)
x
C ( x) = ∫ p ( x)dx On a donc C(b)=1
a
On considère maintenant la série des { yi } où yi=f(xi) est une fonction bijective sur [a,b
Les { yi } sont aussi noté les { f(xi) }
dx
p(y) dy = p(x) dx ⇒ p ( y ) = p ( x)
dy
Avec x=f-1(y)
dx
p( y ) = p( x) où x = f −1 ( y ) ⇔
dy
[ ]
−1
−1 df ( y)
p( y) = p f ( y) ⋅
dy
Sous réserve que l’on puisse calculer dx/dy et f-1 (ce qui n’est pas toujours les cas..)
De manière plus pratique : On peut utiliser faire intervenir la distrib. cumulative
Supposons que nous voulins obtenir une distribution p(y) à partir de nombres
uniformément {xi} distribués entre 0 et 1, p(x)=1.
y
Comme la distrib. Cumulative C ( y) = ∫ p( y)dy
y inf
[ ]
−1
Alors : −1 df ( y)
p( y) = p f ( y) ⋅ <=>
dy
dx
p( y ) = p( x) ⋅ <=>
dy
1dC
p( y) = 1⋅ −1
= = p( y )
dC / dx dy
EN PRATIQUE :
1
p( y) = Lorentzienne
π (1 + y 2 )
1 arctan( y )
=> C ( y ) = +
2 π
=> C −1 ( x) = tan(πx − π / 2)
P(x)= Gaussienne
Sur l’axe de X on obtient les points {Yi} distribués selon une gaussienne
−( y −μ )2
1
p( y ) = e 2σ 2
=>
σ 2π
y −( y − μ ) 2
1
C ( y) = ∫ e 2σ 2
dy ∝ ERF ( y )
− ∞σ 2π
a −1 − x
x e
p( x) =
Γ(a )
On n’a pas d’expression de C(x) analytique … encore moins de C-1
Etc…
Dans d’autres cas , on connaît C mais on n’est pas capable de calculer C-1
Méthode de : Box-Muller
y1 = − 2 ln( x1 ) cos(2πx2 )
y2 = − 2 ln( x1 ) sin( 2πx2 )
=> La norme aussi : (Y12+Y22)1/2 => utile si on a besoin d’un seul chiffre
INTEGRATION MONTE-CARLO
A=Aire de la boite
Y f
X
A=Aire de la boite
Y f
X max
N sous F
∫
X min
f ( x)dx ≈
N total
×A
En fait l’intégration Monté Carlo est aussi intéressante si le domaine d’intégration
est difficile à calculer (la fonction peut-être très simple):
Exemple :
z +
2
(x 2
+ y −3 ≤1
2
)2
x ≥1
y ≥ −3
F(x)=1
V = ∫∫∫ dxdydz
v
On peut donc considérer un volume simple qui entoure le morceau de tore
et compter le nombre de points qui tombent à l’intérieure…
MAIS cette méthode est très inefficace : il faudra tirer beaucoup de points pour
converger vers le résultat…
On veut Calculer
I = ∫ f ( x)dx
A
I = ∫ f ( x)dx
A
⎧ g ( x) = 1 si x ∈ A
où ⎨
⎩ g ( x) = 0 si x ∉ A
Que l’on peut encore réécrire :
1
I =∫ f ( x) g ( x)dx = ∫ f ( x) g ( x)Vdx
D V D
Où V est le volume du domaine D.
Pourquoi cette transformation ?
1
I =∫ f ( x)dx = ∫ f ( x) g ( x)Vdx
A V D
On voit que I est la valeur moyenne de h(x)=f(x)g(x)V sur le domaine D
1 V
I≈
N
∑i h( xi ) = N ∑ f ( x )g ( x )
i
i i
Voilà un algorithme qui converge beaucoup plus rapidement que de tirer des points
sous la courbe.
CEPENDANT : pour le calcule de g(x) , on doit toujours tester si x appartient au domaine
Exemple :
V = longueur de l’intervalle : 1
g(x) =1 si on tire uniquement des points entre 0 et 1
F(x)=cos(x)2
1
On peut montrer que souvent , l’erreur décroit en
N
Donc pour avoir une erreur 2 fois plus faible , il faut 4 fois plus de points !!!