Remarque : Soit n le nombre de coupes et i le nombre d'intersections.
Le nombre de parts est égal à n i 1
La méthode de Montécarlo (voir annexe pour le programme ) donne les résultats suivants :
Donc Q1 : 5 parts
Q2 : Il faut 7 coupes
Remarque : en multipliant la dernière colonne par 6 , nous obtenons des nombres très proches de : 30 42 56 72 90 110 132 156 182 210
A002378 => (n+2)(n+3)
==> L'espérance semble suivre la formule : n2 n3
6 avec n = nombre de coupes
Annexe :
from math import*
import random
def ED(x1,y1,x2,y2,a1,b1,a2,b2):
p1 = (y2-y1)/(x2-x1) p2 = (b2-b1)/(a2-a1) o1 = y1 - p1*x1 o2 = b1 - p2*a1 x = (o2-o1)/(p1-p2) y = p1*x+o1
ok = 0
if x*x + y*y <1 : ok = 1 return ok
# Pour un nombre de cordes variant de 3 à 15 for nnb in range(3,15) :
nb = 2*nnb # nombre des points cpt = 0
int = []
ll = []
l = []
#Numérotation des nb points for i in range(nb) :
ll.append(i)
#Coordonnées des nb points for i in range(nb) :
num = 2.12345*3.14*i*i*i/(nb+1)*5*0.91111+ 0.111 a = sin(num)
b = cos(num) l.append([a,b])
#Tableau du nombre d'intersections for kk in range(0,400):
int.append(0)
#10000 expériences de traçage au hasard de nnb cordes for kkk in range(100000):
cpt=0
random.shuffle(ll) lll= []
for k in range(nb//2):
lll.append([ll[2*k],ll[2*k+1]]) ccpt = 0
for p in range(len(lll)):
for q in range(p+1,len(lll)):
x1 = l[lll[p][0]][0]
y1 = l[lll[p][0]][1]
x2 = l[lll[p][1]][0]
y2 = l[lll[p][1]][1]
a1 = l[lll[q][0]][0]
b1 = l[lll[q][0]][1]
a2 = l[lll[q][1]][0]
b2 = l[lll[q][1]][1]
#comptage du nombre d'intersection pour une situation sur les 100000 ccpt = ccpt + ED(x1,y1,x2,y2,a1,b1,a2,b2)
int[ccpt] = int[ccpt]+1
#Calcul de l'espérance du nombre d'intersections esp = 0
for kkk in range(len(int)):
esp = kkk*int[kkk]+esp print(nb//2,esp/100000)