#[TEX]\text{Cas(m,n)=}\prod_{j=1}^{\lfloor \frac{m}{2} \rfloor} \prod_{k=1}^{\lfloor {n} \rfloor}2 sqrt{\left(\cos^2\left(\frac{\pi \cdot j}{m+1}\right) + \cos^2\left(\frac{\pi \cdot k}{n+1}\right)\right)}[/TEX]
# source : http://math.uchicago.edu/~may/REU2015/REUPapers/Borys.pdf
import math
from itertools import combinations
# Définir la fonction
def fonction(m, n, pi, k, j):
return 2*math.sqrt(math.cos((pi * j) / (m + 1))**2 + math.cos((pi * k) / (n + 1))**2)
# Définir les valeurs de m et n
m = 8 # pair
n = 7 # pair ou impair
pi_value = math.pi
# Calculer le produit
def cas(m,n):
resultat = 1
for j_value in range(1, m // 2 + 1):
for k_value in range(1, n + 1):
resultat *= fonction(m, n, pi_value, k_value, j_value)
return resultat
# Afficher le résultat
C0 = cas(8,7)
print("\nPavages possibles = ", C0)
C1 = cas(8,6)
print("\nnbr de cas route en L1 = ", C1)
C2 = cas(8,5) # corr : + 1 était faux
print( "nbr de cas route en L2 = ", C2)
C3 = (cas(8,2) + cas(8,4))
print( "nbr de cas route en L3 = ", C3)
C4 = 2 * cas(8,3)
print( "nbr de cas route en L4 = ", C4)
#C5=C3, C6=C2, C7=C1
P1 = C1 / C0
print("\nP1 route en ligne_1 = ", P1)
P2 = C2 / C0
print( "P2 route en ligne_2 = ", P2)
P3 = C3 / C0
print( "P3 route en ligne_3 = ", P3)
P4 = C4 / C0
print( "P4 route en ligne_4 = ", P4)
#P5=P3, P6=P2, P7=P1
P = P4 + 2 *(P1 + P2 + P3)
print("\nP au moins 1 route H = ", P)
# Cas Liet Cas(8,n = 2 to 7)
for i in [2,3,4,5,6,7]:
print (f"cas(8C, {i}L) = ", cas(8,i))
# Methode S_i , C_i
S_1 = 0
S_2 = cas(m, 2) - 1
S_3 = cas(m, 3) - 2 * S_2 - 1
S_4 = cas(m, 4) - 3 * S_3 - 2 * S_2 - 1
S_5 = cas(m, 5) - 2 * S_4 - 2 * S_3 - 2 * S_2 - S_2**2 - 1
S_6 = cas(m, 6) - 2 * S_5 - 2 * S_4 - 2 * S_3 - 2 * S_2 - S_2**2 - 2 * S_2 * S_3 - 1
S_7 = cas(m, 7) - 2 * S_6 - 2 * S_5 - 2 * S_4 - 2 * S_3 - 2 * S_2 - S_3**2 - S_2**2 - 2 * S_2 * S_4 - 2 * S_2 * S_3 - 1
print ("\nC_7 = ",cas(m, 7))
print ( "S_7 = ",S_7)
print ( "Cas Favorables C_7 - S_7 = ", cas(m, 7) - S_7)
print ( "Proba = (C_7 - S_7)/C_7 = ", (cas(m, 7) - S_7)/cas(m, 7))
# Poincaré Crible traduit en Python par GPT
def Pav(n):
nb = 1
for j in range(1, 5):
nb *= math.prod(4 * math.cos(j * math.pi / 9) ** 2 + 4 * math.cos(k * math.pi / (n + 1)) ** 2
for k in range(1, math.ceil(n / 2) + 1))
return round(nb)
def PLH(L, n, Pav_list):
nb = Pav_list[L[0]]
for i in range(len(L) - 1):
nb *= Pav_list[L[i + 1] - L[i] - 1]
nb *= Pav_list[n - 1 - L[-1]]
return nb
def H(n):
Pav_list = [Pav(n) for n in range(8)]
print("Pav_list:", Pav_list)
H_val = 0
for k in range(n):
C = combinations(range(n), k + 1)
H_val += (-1) ** k * sum(PLH(L, n, Pav_list) for L in C)
return H_val
print ("\n\nCrible de Poincaré")
result = H(7)
print (result)