Calculer une aire sans équation : méthode de Monte Carlo

En géométrie, il est parfois difficile de calculer des aires de figures qui diffèrent des formes classiques simples comme le carré, le rectangle, le cercle.

Dans un vieil article dans mon blog, j’avais réussi à établir l’équation pour calculer toute aire d’un quadrilatère dont les 4 côtés sont différents.

Cependant, il arrive parfois qu’il soit impossible (à un moment donné) de déterminer une équation pour calculer l’aire d’une figure pouvant être compliquée.

Avec les fonctions aléatoires des calculettes et des programmes informatiques sur PC, il est néanmoins possible d’évaluer une aire compliquée grâce à la méthode de Monte Carlo.

Voici le cas à étudier à titre d’exemple :

Menisque

Nous savons tous (ou presque) qu’à la base, un cercle de rayon 1 et centré sur l’origine du repère orthonormé a pour équation x²+y²=1. Et que l’aire du cercle de rayon 1 vaut pi, car pi*R² = pi * 1 = pi.

Mais j’ai imaginé un cas où deux cercles de rayon 1 chacun s’interpénètrent : chacun des cercles passe par chacun des centres.

Ainsi, ici, nos deux cercles ont ces équations :

  • (x-1)²+(y-1)²=1
  • (x-2)²+(y-1)²=1

Ces cercles sont inscrits dans un rectangle de largeur 2 et de longueur 3, donc sa surface vaut 6.

Les figures se composent de deux croissants de lune et d’un ménisque central. Ici, on doit réussir à calculer l’aire du ménisque.

Je n’ai pas d’équation pour calculer l’aire du ménisque, mais je peux déclarer que l’aire du ménisque ici vaut 1,22, et que chacun des croissants de lune a une aire de 1,91. Sachant que l’aire d’un croissant et l’aire du ménisque forme l’aire d’un disque complet, donc la somme des aires vaut toujours pi. Ensuite, je peux déclarer aussi que l’aire externe aux cercles et ménisque dans le rectangle vaut 0,95.

Comment ça marche ? J’ai généré 10 millions de points aléatoires dans l’aire du rectangle (aire qui vaut 6). Puis on compte les points distribués dans chacune des aires distinctes. C’est ça, la méthode de Monte Carlo. Quand il est très difficile de trouver des équations et de les résoudre, les méthode aléatoires permettent de gagner un temps précieux, et ça, John von Neumann l’avait compris, quand les ordinateurs devaient déchiffrer les codes secrets allemands pendant la Seconde Guerre Mondiale où l’urgence était vitale. Pour les ingénieurs dans l’industrie, gagner du temps est un critère important aussi, pour des raisons d’économie. Voir ici : http://fr.wikipedia.org/wiki/M%C3%A9thode_de_Monte-Carlo

En résumé, à défaut de se baser sur le déterminisme d’équations précises, on se base sur des simulations probabilistes.

Voici le code source du programme VBScript :

m = 0
c1 = 0
c2 = 0
u = 0

lim = 10000000
for i = 1 To lim

‘ Rectangle dim 3 par 2, aire = 6
rectangle = 6
‘ Cercle 1 de centre (1;1) et de rayon 1
‘ Cercle 2 de centre (2;1) et de rayon 1
Randomize
x = 3 * Rnd()
Randomize
y = 2 * Rnd()

d1 = Sqr((x – 1) * (x – 1) + (y – 1) * (y – 1))
d2 = Sqr((x – 2) * (x – 2) + (y – 1) * (y – 1))

‘ Dans le ménisque

if ((d1 <= 1) And (d2 <= 1)) Then

m = m + 1
End If

if ((d1 <= 1) And (d2 > 1)) Then

c1 = c1 + 1
End If

if ((d2 <= 1) And (d1 > 1)) Then

c2 = c2 + 1
End If

if ((d2 > 1) And (d1 > 1)) Then

u = u + 1
End If

Next

‘ Aire du ménisque

aire = rectangle * m / lim
aire1 = rectangle * c1 / lim
aire2 = rectangle * c2 / lim
au = rectangle * u / lim
surface = aire1 + aire2 – (rectangle – au)
msg = « Menisque :  » & m &  » tirs sur  » & lim & vbCrLf
msg = msg & « Aire du menisque =  » & aire & vbCrLf
msg = msg & « Aire du cercle 1 =  » & aire1 & vbCrLf
msg = msg & « Aire du cercle 2 =  » & aire2 &vbCrLf
msg = msg & « Aire dans rectangle hors cercles =  » & au & vbCrLf

‘ Aire menisque reelle
msg = msg & « Surface menisque =  » & surface
MsgBox msg

 

 

Copyright 2015 John Philip C. Manson

 

Advertisements