Académique Documents
Professionnel Documents
Culture Documents
Methodes Numeriques OUTILS
Methodes Numeriques OUTILS
En analyse numrique, un certain nombre de calculs sont faits de manire rptitive. Exemple : Rsoudre un systme linaire, Inverser une matrice, Calculer le dterminant, valeurs propres, vecteurs propres
Interpoler une fonction Extrapoler une fonction Dcomposer une fonction sur une base de fonctions (ex: TF)
Des algorithmes performants existent souvent, mais qui ont chacun des spcificits. En fonction de nos besoins, il faudra choisir lalgorithme adapt
La plupart de ces outils de base sont souvent dj programms dans des librairies de calculs mathmatiques (ex: NAG) . De manire gnrale, il nest jamais bon de lutiliser comme une bote noire : En fonction du problme, en choisissant lalgorithme le plus adapt, on peut gagner du temps de calcul , ou mieux : viter des instabilits numriques.
Exemple 1: Si vous avez besoins de calculer linverse dune matrice, et que sont dterminant est trs proche de 0 (mais non exactement 0), le calcul sera trs sensibles aux erreurs de troncatures de la machine. Dans ce cas il faut prfrer une inversion itrative, plutt quune inversion exacte Exemple 2 : Si vous souhaitez dcomposer une fonction sur une base de fonctions, ll vaut mieux bien connatre cette base, sinon vous ne saurez pas vraiment ce que vous faites Souvent, une telle dcomposition engendre des instabilits dans le schmas numrique en raison de la discrtisation etc
Interpolation et Extrapolation de fonctions Diffrentes mthodes, dcomposition sur une base, moindres carrs etc..
Gnrateurs de nombres pseudo-alatoires Quest ce quun bon gnrateur ? Comment les construire ? etc
Ax = b
O A est une matrice ( priori) inversible , b est un vecteur, et X est le vecteur inconnu.
Les questions attenantes ce problme sont : Calculer A-1, Det(A), valeurs propres de A, vecteurs propres de A Une dizaine de mthodes existent, mais certains outils sont commun de nombreuses mthodes (Pivot de Gauss, Dcomposition en matrice triangulaire, Mthode de substitution )
Un tel systme est facilement soluble dans le cas o la matrice A est triangulaire Pourquoi ? Par ce quune simple substitution itrative permet de rsoudre facilement le systme Ex :
a11 0 0 0
On a alors :
a12 a22 0 0
a11 0 0 0
a12 a22 0 0
Dune manire gnrale, on peut trouver toutes les valeurs de Xi par la mthode itrative suivante (substitution arrire)
x N = bn / ann 1 xi = aii
N bi aij x j j =i +1
a11 a21 a 31 a 41
0 0 a33 a43
0 x1 b1 0 x2 b2 x = b 0 3 3 a44 x4 b4
x1 = b1 / a11 1 xi = aii
i 1 bi aij x j j =1
Substitution avant
Dans de nombreuses mthodes, lobjectif est de transformer A pour la rendre Triangulaire, infrieure ou suprieurs, et ensuite calculer les solutions en utilisant une substitution (avant ou arrire si A est infrieure ou suprieure).
ELIMINATION DE GAUSS JORDAN Simple comprendre, mais ncessite de modifier b en mme temps que A Ne donne pas directement A-1 et les vecteurs propres
FACTORISATION L U Un peu plus subtile, ne modifie pas b, donc on peut utiliser la mme dcomposition pour tout vecteur b, donne A-1 et les vecteurs propres
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 troisime ligne; pour cela, on remplace la ligne L3 par L3-L2. On trouve :
On rsoud finalement le systme par substitution arrire (car on rsoud dabord Z , puis Y, puis X)
pivot
1 2 2 x 2 1 3 2 y = 1 3 5 8 z 8 2 x 2 1 2 0 1 4 y = 3 0 1 2 z 2
pivot
1 2 2 x 2 0 1 4 y = 3 0 0 2 z 1
Le pivot parcours la diagonale
pivot (1)
si pivot 0 alors pour i = k + 1 jusqu' n aik bk bi bi pivot pour j = k + 1 jusqu' n a aij aij ik akj pivot fait fait fait sinon " problme"
( ( k +1) aikk ) ( k ) ( aijk ) ( k ) akj aij akk pour i = k + 1,..., n ( aikk ) ( k ) b ( k +1) b ( k ) b i i (k ) k akk
pour j = k + 1,..., n
matriciellement : A( k +1) = M ( k ) A( k ) ;
chaque tape akk est le pivot.
b ( k +1) = M ( k )b ( k ) ;
Remarques
Choix du pivot : minimiser les erreurs darrondis
si un pivot est nul, on permute deux lignes si tous les pivots restant sont nuls la matrice est singulire (i.e. le systme dquations nadmet pas de solution unique) pour minimiser les erreurs darrondis : on choisi le plus grand pivot possible (en valeur absolue) et donc on permute les lignes (voir les colonnes associes) cest la stratgie du pivot maximal (partiel (lignes) ou total)
Problme de la mthode du pivot de Gauss seule : Ncessite de modifier b , Donc pour rsoudre Ax=b et Ax=b il faut recommencer la procdure deux fois Il faudrait une mthode qui ne modifie pas b
=> Dcomposition LU
Dcomposition LU
Supposons que nous sommes capables dcrire la matrice A sous la forme dune produit de deux matrices triangulaires L (lower) et U (upper)
L
l11 l21 l22 l l 31 32 l 41 l42
x
0 u11 u12 u22 l44 0
U
u13 u23 u33
=
u14 a11 u24 a21 = a u34 31 u44 a41
A
a12 a22 a32 a42 a13 a23 a33 a43 a14 a24 a34 a44
l33 l43
Alors rsoudre Ax=b peut aussi scrire Ax=(L U) x = L (U x) = b Que lon peut dcomposer en deux tapes, avec une variable intermdiaire : y Ax=b (LU)x=b L (Ux) = b L y=b avec y=Ux
1. Rsoudre L y =b 2. Rsoudre U x =y Intrt de la mthode : Si on connat L et U les tapes (1) et (2) se rsolvent simplement En appliquant pour (1) une substitution avant (L est triangulaire inf.) En appliquant pour (2) une susbstitution arrire (U est triangulaire sup.) De plus on peut calculer simplement linverse de A, on ne touche pas b
On peut montrer quen temps normal il existe une infinit de dcomposition LU Si A est inversible. Cependant il nexiste quune seule dcomposition telle que L ait pour lments diagonaux des 1 uniquement:
Pour Calculer L et U facilement on se sert de la mthode du pivot de Gauss, en utilisant une matrice intermdiaire un peu spciale, : la matrice augmente
a11 a21 a 31
1 2 1 x1 2 4 3 1 x2 = 3 2 2 3 x 5 3
On peut crire ce systme manire plus compacte avec la matrice augmente (qui nest plus carr)
a11 a21 a 31
1 2 1 x1 4 3 1 x2 = 2 2 3 x 3
1 2 1 2 2 3 4 3 1 3 2 2 3 5 5
On peut garder la trace des diffrentes tapes du pivot de gauss en considrant La matrice augmente
2 2 1 2 1 2 1 1 1 2 1 2 4 3 1 3 => 4 4 3 8 1 + 4 3 8 = 0 5 5 5 2 2 2 3 5 2 3 5 2 2 3 5
Nouvelle matrice A Nouveau vecteur b
Ide gniale : Au lieu de garder le 0 dans la nouvelle matrice augmente On conserve dans cette case le coefficient par lequel on a multipli L1 On a chang le 0 En 4
1 2 1 2 4 5 5 5 2 2 3 5
1 2 1 2 Augmente : 4 5 5 5 2 2 3 5
Maintenant on echange L3=L3-2/1 L1 Nouvelle augmente
1 2 1 2 4 5 5 5 2 2 5 1
On pivote maintenant sur la ligne 2, le pivot vaut -5 (a22) L2 ne change pas, et L3=L3 - (-2/-5) L3
1 2 1 2 4 5 5 5 2 2/5 3 3
1 2 1 2 4 5 5 5 2 2/5 3 3
2 1 2 1 A = 0 5 5 et b = - 5 3 0 0 3
Et on trouve X par substitution classiquement
=U
1 2 1 2 4 5 5 5 2 2/5 3 5
~L
Plus prcisement, on divise chaque colonne par llment diagonal pour mettre des 1 sur la diagonale de L
1 2 1 2 4 5 5 5 2 2 3 5 0 0 1 1 0 L = 4 2 2 / 25 1
Vous pourrez vrifier que LxU=A !!
1 2 1 et U = 0 5 5 0 0 3
Matrice U
Matrice L
Une fois quon possde la dcomposition LU, on obtient aisment : Le dterminant : Det(A)=Det(L)*Det(U) =u11x u22x x Unn
La matrice inverse : M On rsoud 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
M x2 M
M x3 M
Pour les trs grosses matrices on prfrera les mthodes itratives : Elle convergent vers la solution progressivement: Ide : Rsoudre une quation du type : F(x)=X Avec une suite du type : Xk+1=F(Xk) Si X0 nest pas trop loin de la solution, on Xk convergera vers la bonne valeur de X.
Comment transformer : AX=B en un quation du type X=F(X) ? O F est une opration linaire ??
X=M-1 N X + M-1 B= P X + C
F(x)
Donc si on arrive trouver une dcomposition de A avec une matrice M facilement inversible, alors on peut mettre en marche un algorithme itratif du type : Xk+1=P Xk + C
Donc A = D-(E+F)
M=D et N=E+F
La formule de rcurrence :
Xk+1=M-1 N Xk + M-1 B
xi = 1
Scrit :
Mais on fait la premire somme sur les coeffs dj calculs de ltape k+1
Ca converge plus vite, mais difficilement parrallisable A doit tre dominante diagonale i.e ABS( diagonale )soit tre > somme des v.abs des lements sur la ligne pour tre sr de la convergence.
Nous avons vu 2 familles de mthodes : -Les mthodes exactes, type pivot de Gauss Prcises, peu rapides, sensibles aux fluctuations
- Les mthodes itratives (ou dites de relaxation ) Moins prcises, plus rapides, plus stables Mais il est parfois difficile de prdire si elles convergent Plus on fait ditrations, plus la mthode est prcise.. La matrice doit tre diagonale dominante
Le problme : On a un ensemble de n points : x0 . Xn-1 et pour chaque point on connat la valeur dune fonction f inconnue (-priori): f(x0) . f(xn-1) (rem :les f(xi) seront aussi nots fi ) Question : Quelle est la valeur de f sur les points intermdiaire ? * Pour cela on doit supposer un modle mathmatique de f (polynome, somme de sinus etc) * On doit aussi savoir : 1) Les f(xi) sont-elles des valeurs exactes 2) Les f(xi) sont-elles des valeurs approches (ex : pts de mesure) ?
DONC : il ny a pas de manire idale dinterpoler/extrapoler une fonction car on a besoins dhypothses sur f. Diffrentes hypothses donneront des interpolations/extrapolations diffrentes eh oui Donc ce sera nous de savoir, en fonctions de la physique du problme, quelle est la meilleur hypothse sur la forme de f effectuer.
Si les f(xi) sont des valeurs exactes on fera une dcomposition sur une base de fonctions (des polynmes le plus souvent)
Si les f(xi) sont des valeurs approches on essaiera dadapter (de fitter en anglais) un modle mathmatique aux points de de mesure.
Les f(xi) sont des valeurs exactes : Dcomposition sur une base de fonctions
On suppose que f est la combinaison linaire dune famille de fonctions
f ( x) = aii ( x)
i
f est toujours dfinie sur un domaine : [xmin , xmax] 1er question : que choisir comme base ? 2me question : Comment calculer les ai ? Remarque : parfois on a pas besoin de connatre les ai explicitement, Certains algorithmes fournissent les ai , dautres donnent directement le rsultat f(xi)
1. Dcomposition polynomiale Supposons que f est polynomiale. Avec N points on peut construire un polynme dordre N-1 qui traverser les N points : N 1 i On suppose : i i =0
f ( x) = a x
Pour calculer les coefficients ai On a n quations n inconnues : Les inconnues sont les coefficients ai Et les n quations sont : f(xi)=fi o les fi sont les valeurs de f aux points xi . => Cela peut scrire matriciellement
N quations linaires N inconnues. Les ai sont les inconnues Les xij sont les coefficients
1 1 x0 1 1 x1 ... ... 1 x1 n 1
f0 f1 ... f n 1
f
Pour trouver A il suffit de calculer : A = M-1 f => Il faut donc inverser une matrice de N points cette mthode est intressante, marche mais elle est coteuse temps de calcul Car souvent on a pas besoin connatre les ai Seul f(x) nous interesse
2. Dcomposition en polynmes de Lagrange Pour calculer une dcomposition polynomiale sans calculer les ai on peut utiliser les polynmes de Lagrange :
f ( x) = ai li ( x)
i =0
ai : coefficients ai=f(xi) iem polynme de Lagrange
N 1
li ( x) =
j =0, j i
n 1
(x x j ) ( xi x j )
Les Li(x) sont des polynmes dordre n-1 : ~ produits de (x-xj) pour j diffrent de i
On a donc un polynme dordre 3. Les polynomes de Lagrange sont une mthode rapide de calculer des points sur la courbes sans avoir calculer explicitement les coefficients Si on a peu de points calculer cest interessant Sil y en a beaucoup, il est plus intressant de calculer les coefficients (moins de calculs effectuer).
On voit que les mthodes polynomiales divergent toujours linfini : Pas un problme pour linterpolation si N est faible Peut tre un problme pour lextrapolation
Notre polynme passe bien par tous les points mais entre ces points Il a des variations IMPORTANTES (ici : + ou 1021 !!!!) => TRES INSTABLE quand on a beaucoup de points
Linterpolation polynomiale ne doit-tre utilise que : -Si on a peu de points (moins de 10) -Si on est sur que les fi sont des valeurs EXACTES (pas de pts de mesure) Pour rsoudre ce problme dinstabilit en conservant un approche polynomiale :
Mthode simple : Ne pas utiliser tous les points, mais seulement les voisins 1 point : F est constante par morceaux 2 points : F est affine par morceaux (mais discontinue) (mais de non drivable, classe C0)
3 points : F est parabolique par morceaux (drivable 1 fois, classe C1) Etc
Ces mthodes sont plutt stables souvent trs utiles mais ont de mauvaises proprits de drivabilits
Pour les calculer : On utilise les polynmes de Legendre. On veut calculer f(x) en utilisant les p plus proches voisins : Xj1 Xjp
On a alors :
2pt
f ( x) = ai
i= j 0
jp
j = j 0, j i
jp
(x x j ) ( xi x j )
3 pt
1 pt
Dans le cas a 1 point : F(x)=f(xp0) (XP0 est le pt immdiatement infrieur X) Dans le cas 2 points :
f ( x) =
( x x p0 ) ( x p1 x p 0 )
( f ( x p1 ) f ( x p 0 ))
(xp1, F(xp1) )
(xp0, F(xp0) )
Simple interpolation linaire Une mthode dinterpolation populaire sappelle CUBIC SPLINE , elle utilise 4 points => F est de classe C3 (polynome dodre 3)
Les interpolations polynomiales sont simples programmer MAIS Elles sont dangereusement instables. Plus lordre est lev plus linstabilit sera grande. => Il faut prfrer les interpolations qui se basent sur les 2 ou 3 voisins (ordre faible)
Il existe encore dautres mthodes dinterpolation exactes : On peut aussi dcomposer en fractions rationnelles
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 modliser des fonctions avec des ples (complexes) etc Pour plus dinfo, lire Numerical Recipes
Les f(xi) sont des valeurs approches : Adaptation dun modle de fonctions
Souvent en physique, on obtient des points de mesures f(xi) aux points xi : Ex : - temprature dun solide en fct de la temprature -Nombre datomes radio-actifs en fonction du temps Etc. Exemple de mesure : Nb datomes en fonction du temps
Si les fi sont des points de mesures, ils sont soumis des erreurs, des fluctuations (on appelle cela du bruit) qui rend une interpolation exacte INSTABLE et invariablement FAUSSE !!
Dans ce genre de problme, typiquement on veut trouver quelle est la meilleure fonction mathmatique qui reprsente les donnes.
=> Elle ne passe pas exactement par les points, mais elle sen approche. On appelle souvent cela fitter une fonction (en franais adapter ).
Etc
Le problme ici nest donc pas dinterpoler MAIS De trouver le meilleur modle mathmatique qui reprsente les donnes.
Donc ncessit dun modle mathmatique priori !!! Ce modle sera choisit en fonction : -Soit de la physique du problme -Soit de la forme des donnes exprimentales (Sachez que lil humain est un excellent outil pour analyser rapidement un ensemble de donnes ne jamais ngliger cela !!)
mathmatique :
EXEMPLES:
paramtres a et b a et b a,,
Etc Moins on a de paramtres libres, plus robuste sera le modle (moins sujet aux instabilits) , mais le fit sera plus difficile
Lobjectif nest PAS de reproduire tous les points exactement (si cest le cas, cf. Cours sur linterpolation) Lobjectif EST de trouver la fonction qui passe au plus prs 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 . Une mesure courante : MOINDRES CARRES (xhi 2, 2)
2 (a, b, c,...) =
tt les pts
( y *i ya ,b ,c.. ( xi )) 2
2 i
Y*i = pt de mesure numro i (absice xi) Ya,b,c..(xi)= Modle (qui dpend des paramtres a,b,c..) au point xi
Considrons cet ensemble de mesures Y*i pour i=1 n A lil on voit que cest la fonction constante Y(x)=10
Ici nous avons trac la valeur du XHI2 en fonction du paramtre a Nous voyons que le XHI2 est minimis pour a =10
Cest un exemple simple 1 dimension (1 paramtre) En pratique souvent on utilise 2 ou 3 paramtres.. Minimisation en plusieurs dimensions Notez que la valeur du XHI2 nous donne une estimation de la qualit du fit.
Nous avons donc besoin dun algorithme de minimisation pour trouver le meilleur ensemble de paramtres { a,b,c } qui minimise le XHI2. Nous verrons de tels algorithmes plus tard dans le cours.
CEPENDANT Pour le cas dune rgression linaire (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 paramtres) au sens des moindres carrs. Cette mthode peut-tre gnralise pour des fonctions polynomiales : Y=a0+a1X +a2X2 + + anXn
Etude du XHI2
2 (a, b, c,...) =
tt les pts
( y *i ya ,b ,c.. ( xi )) 2 2i
Le XHI2 est une fonction des paramtres a,b,c , nots maintenant : a1 , , an Si le XHI2 est minimal au point (a*1, , a*n) alors toutes les drives partielle sannulent ce point l.
2 a1 2 a2 ... 2 an
= 0
* * a 1 ,.., a n
= 0
* * a 1 ,.., a n
= 0
* * a 1 ,.., a n
(a, b, c,...) =
2
tt les pts
( y yi ) = 2i tt les pts
* i
La distance
2 a1 2 a2 ... 2 an
= 0
* * a 1 ,.., a n
= 0
* a1
,.., a
* n
= 0
* * a 1 ,.., a n
O les (xi, , y*i) sont les points de mesure Et les (xi, , yi) sont les points de la fonction modle
* n 1 p y i a p xi p =0 i
!! Attention aux indices : k : numro de la variable que lon drive p: coefficient p du polynome i: numro du point de mesure
(a x )
Np k 1 k i i
* n 1 p y i a p xi p =0 =0 i
Np
a0 0
an a1 k k +1 xi + xi + ... + i n 1 i
Np
yi* k xik + n 1 = xi i i i
Np
Np
n 1 xi / 0 yi a pts 0 pts yi xi xi1+ n 1 / 1 a1 = pts pts ... ... ... an 1 y x n 1 i i 2n2 xi / n pts pts
x A = Y
Ordre du polynme
La Valeur du XHI2 est interessante : elle donne une indication sur la qualit du fit : Distance moyenne ~ (XHI2/n points)1/2 en units de i => Fit idal : XHI2~n points (chaque points est fitt en moyenne 1 ) Si XHI2 >> n points : mauvais fit ou barres derreur surestimes Si XHI2 << n points : trop bon fit : Vous avez srement surestime les barres derreurs SOUVENT, quand on a besoin rapidement dun fit , on met toutes les barres a 1 Mais dans ce cas on a pas destimation robuste de la qualit du fit
Exemple 1 : Fit par une droite Ici tous les i =0.5 Valeur du 2 = 25.2 La deviation moyenne est ~ sqrt(25.2/n points) ~ 1.2 Delta
Solution ?? En fait la barre derreur sur le dernier pt peut etre place beaucoup plus , disons =10. pour ce pts, et 0.5 pour les autres
=0.5 pour tous les pts et =10 pour le pt abrrant On retrouve une solution acceptable XHI2=22 (Ok)
Conclusion: mme si souvent on oublie de considrer les barres derreur de mesure peut tre trs utile pour sassurer de la qualit du fit
ebx
On utilise la regression
linaire
ebx =>
Les (xi, Ln(yi*) ) sont reprsentables par Y=Ln(a)+ b X ( cest une droite)
=> Y=LOG(Y)
En rsum: Faites attention quand vous calculez un fit : ayez toujours une estimation de sa qualit en considrant la valeur du XHI2 . Pour cela vous devez toujours connatre la qualit de vos points de mesure (barre derreur). Si votre modle de fonction est polynomial, vous pouvez trouver de manire analytique la meilleure solution en passant par une simple inversion de matrice. Si vous voulez fitter par une fonction plus complique Il faudra faire une VRAIE minimisation du XHI2 avec un algorithme de minimisation itratif (Amoeba, Simplex etc) plus tard dans le cours
Pour beaucoup dapplications en physique et en mathmatique il est utile (voire ncessaire) davoir un gnrateur de nombres alatoires : Exemples : Simulation dune source radioactive Simulation du mouvement brownien Estimation dune intgrale complexe en N dimensions (N>3) Simulation dun gaz Etc
On ne peut PAS rellement crer des nombres alatoires de manire algorithmique car tous les outils sont dtrministes. Nous construirons des sries de nombres que nous qualifieront de pseudo-alatoires si elles rpondent certaines tests statistiques i.e si elle a les mmes proprit statistique quune vraie srie alatoire.
Toutes les sries pseudo-alatoires dpendent dun chiffre, appel grane ( seed ) . On pourra regner la mme srie de chiffre en partant de la mme grane => reproductibilit de la srie (indispensable pour tester les programmes)
DISTRIBUTION UNIFORMES
Dans de nombreux langages de programmation, des gnrateurs de nombres pseudo-alatoires sont implments. Il sappellent souvent : RAN, RANDOM , RANDOMU etc
La majorit des fonctions RANDOM sont appel : Gnrateurs congruentiels Se sont des sries du type :
U j+1 = a U j (mod m)
Ou
U j+1 = a U j + c (mod m)
U j+1 = a U j (mod m)
Ou
U j+1 = a U j + c (mod m)
m= grand nombre ~ maximum reprsentable par la machine (~232 = 4.3 109) U0 = graine a, c : paramtres du gnrateur
Donc une srie de nombres pseudo-alatoires est une suite de chiffre calculs itrativement, avec U0= graine. Donc si on utilise la mme grane => on obtient la mme suite La qualit de la suite dpend dun choix Judicieux de a et de c.
Certains couples (a,c) sont connus pour tre bons, dautres mauvais.
Si on veut une srie entre 0 et 1 on divise par m Pas mal comme rsultat mais si on tire 105 nombres les pb apparaissent :
On voit clairement apparatre des corrlations entre les nombres, Priode tous les ~ 65000
Mme gnrateur, mais avec m=106 => des corrlations existent toujours MAIS plus longues : tous les 106 typiquement
Donc il faut bien choisir les valeurs de a, c et m Il en existe beaucoup dans la littrature
Les gnrateurs congruentiels sont faciles coder et rapides (important si on a besoin de 109 nombres par exemples) MAIS Ils finissent toujours par se rpter (i.e modulo m), les corrlations sont invitables Donc il faut jamais utiliser des sries de N nombres o N est comparable m
Il faut savoir aussi que le hasard est toujours plus important sur les premires dcimales (essayez pour voir)=> Si vous avez besoin de 2 nombres alatoires, Tirez en 2, et NE FAITES PAS je casse le nombre en plusieurs bouts pour en faire deux
Un gnrateur relativement simple et performant est : A=75 = 16087 M=232-1 = 2147483647 C=0
Tirage entre 0 et 1
Valeurs thoriques : <X>=0.5 Variance (Sigma^2)=1./12.=0.083333 A la vue des 2 premiers moments notre distribution est assez fidlement uniforme..
Pour diminuer encore les corrlations, diverses techniques existent, Par exemple on tire au hasard lindice du chiffre numro j ( shuffling ) On peut aussi utiliser des suites de Fibonacci (demandent + de mmoire) Uj+1 =(aUj-1 + bUJ-1+c) mod (m) etc
Les gnrateurs congruentiels permettent de tirer une srie de nombre avec un distribution ~ uniforme entre 0 et m-1
Si vous avez besoin dune srie entre 0 et 1, divisez les rsultat par m.
EN PRATIQUE On prfrera utiliser des algorithmes prprogramms en SE RENSEIGNANT sur leur robustesse !!! Tirez au hasard 107 chiffres et affichez le rsultat dj lil vous aurez une ide sil y a des corrlations videntes ou non
Mfiez vous si vous avez besoin dune LONGUE squence ROBUSTE.. Des corrlations caches peuvent vraiment affecter la validit de votre rsultat !! ENFIN Si vous voulez du VRAI hasard, cest possible.. Sur le web !! http://www.random.org/ O vous aurez des sries VRAIMENT alatoires, tires de systmes physiques
p( x) =
1 ba
1 p( x) = e 2
Gaussienne (Normale)
p( x) =
x e
x!
Poisson
a p ( x) = (a 2 + x 2 )
p( x) = x
Cauchy / Lorentzienne
x2 2 2
Raleygh
etc.
Problme : Nous voulons gnrer une srie de N points pseudo-alatoires qui sont distribus suivant une densit de probabilit p(x)
Pour cela nous allons utiliser un thorme fondamental de transformation des lois de probabilits : Prliminaires : On considre une srie de nombre alatoires xi entre a et b p(x) dx est la probabilit quun nombre xi soit entre x et x+dx
C ( x) = p ( x)dx
a
On a donc C(b)=1
Transformons les probabilits : On considre une srie de nombre {xi} distribus uniformments On considre maintenant la srie des { yi } o yi=f(xi) est une fonction bijective sur [a,b Les { yi } sont aussi not les { f(xi) } Connaissant p(x) nous voulons connatre la distribution p(y) des {yi} Soit x=Y-1(y)
dx p(y) dy = p(x) dx p ( y ) = p ( x) dy
Avec x=f-1(y) Exemple : Prenons y=-ln(x) , et p(x)=1. entre 0 et 1 Alors : P(y)=p(x)*|dx/dy| avec -1/dx=dy => dx/dy=-1/x P(y)= 1. | 1/x | or x=e-y p(y)=ey Distribution exponentielle !!!
{yi}={9.763,
0.03437, 2.0466, 4.541, 2.201, 1.16455, 0.1919, 0.0617, 0.080, 1.5274, 0.8070 }
=>
dx p( y ) = p( x) o x = f 1 ( y ) dy df 1 ( y ) p ( y ) = p f 1 ( y ) dy
On peut transformer notre distribution uniforme en nimporte quelle autre distribution Sous rserve que lon puisse calculer dx/dy et f-1 (ce qui nest pas toujours les cas..)
De manire plus pratique : On peut utiliser faire intervenir la distrib. cumulative Supposons que nous voulins obtenir une distribution p(y) partir de nombres uniformment {xi} distribus entre 0 et 1, p(x)=1. Comme la distrib. Cumulative
C ( y) =
y inf
p( y)dy
df 1 ( y ) p ( y ) = p f 1 ( y ) <=> dy dx p( y ) = p( x) <=> dy dC p( y) = 1 = = p( y ) 1 dC / dx dy 1
EN PRATIQUE : Soit une srie de nombres {xi} uniformment distribus entre 0 et 1 On veut construire une distribution {yi} qui suit la lois p(y)
p( y) =
y inf
p( y)dy
Exemple :
Lorentzienne
On calcule des {xi} distribus uniformment => On calcule les yi =C-1(xi) qui seront distribus selon une Lorentzienne
=>
Sur laxe de X on obtient les points {Yi} distribus selon une gaussienne Graphiquement cela marche bien , mais analytiquement problme !
Tout cela est trs bien mais pour de nombreuses fonctions on ne sait pas calculer C-1(x) Exemple : Pour la Gaussienne :
1 p( y ) = e 2
y
( y )2 2 2
=> dy ERF ( y )
1 C ( y) = e 2
( y ) 2 2 2
O Erf est la fonction Erreur Non analytique donc non inversible analytiquement
x e p( x) = (a )
a 1 x
Etc
Dans dautres cas , on connat C mais on nest pas capable de calculer C-1 Exemple C(x)=a0+a1 X + a2 X2 +a3 X3 + . + aN XN On polynme dordre elev (> 5) nest pas analytiquement inversible Et mme un polynme dordre 3 est difficilement inversible
Pour le cas particulier de la distribution Gaussienne, il existe un algorithme courant qui genre deux variables alatoires.* Mthode de : Box-Muller Soient x1 et x2 deux variables uniformes entre 0 et 1 Considrons les transformation suivantes :
INTEGRATION MONTE-CARLO Les nombres alatoires servent aussi intgrer des fonctions . Lintgration Monte Carlo est en gnral intressante pour une intgrale multi-dimensionnelle (N>~3) Ide de base : Si on tire N points au hasard le nombre de points sous la courbe est proportionnelle laire de celle -ci
A=Aire de la boite
A=Aire de la boite
X max
X min
En fait lintgration Mont Carlo est aussi intressante si le domaine dintgration est difficile calculer (la fonction peut-tre trs simple): Exemple :
z +
2
(x
+ y 3 1
2
x 1 y 3
V = dxdydz
v
On peut donc considrer un volume simple qui entoure le morceau de tore et compter le nombre de points qui tombent lintrieure
MAIS cette mthode est trs inefficace : il faudra tirer beaucoup de points pour converger vers le rsultat
I = f ( x)dx
A
Sur un domaine compliqu A, x et dx sont multi-dimensionnels On se donne un domaine plus simple, D qui englobe A Soit V le volume de D
On rcrit lintgrale :
I = f ( x)dx
A
Comme :
I = f ( x)dx = f ( x) g ( x)dx
D A
g ( x) = 1 si x A o g ( x) = 0 si x A
Que lon peut encore rcrire :
I =
1 f ( x) g ( x)dx = f ( x) g ( x)Vdx V D
I =
1 f ( x)dx = f ( x) g ( x)Vdx V D
On voit que I est la valeur moyenne de h(x)=f(x)g(x)V sur le domaine D Donc maintenant si {xi} sont des points uniformment distribus dans D Alors
1 I N
V h( xi ) = N i
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
V I N
f ( x)g ( x )
i i
1 N
Donc pour avoir une erreur 2 fois plus faible , il faut 4 fois plus de points !!! => pour 50 points lerreur (relative) est environ 0.05 pour avoir une erreur de seulement 0.025 il faut environ 200 points Et pour erreur~0.01 il fait environ 800 points ..
En conclusion : Lintgration par mthode Monte-Carlo permet dintgrer des fonctions -Complexes - Sur des domaines compliques - A plusieurs dimensions.