from random import *
def jeu(A,B):
# deux premiers tirages; nbtir le nombre de tirages
Der2=[randrange(2),randrange(2)] ; nbtir=2
# a est à 0 tant que A n'est pas sorti;
# idem pour b et B
a=0 ; b=0
# on boucle jusqu'à ce que A et B soit sortis
while (a==0 or b==0) :
# nouveau tirage ajouté aux deux derniers
Der3=Der2+[randrange(2)] ; nbtir+=1
# si A n'a pas encore été obtenu, on vérifie
# si on l'obtient; dans ce cas on met a à 1
# et on range le nombre de tirages dans tirA
if a==0 :
if Der3==A :
tirA=nbtir ; a=1
# idem pour B
if b==0 :
if Der3==B :
tirB=nbtir ; b=1
# on garde les deux derniers tirages et on revient
# dans la boucle
Der2=Der3[1:]
# on renvoie la liste [tirA,tirB]
return [tirA,tirB]
def seriejeux(A,B,n) :
# on fait une série de n jeux et on comptabilise le
# nombre de fois où A arrive premier et les totaux de
# nombres de tirages pour arriver à A et B
victA=0 ; tottirA=0 ; tottirB=0
for i in range(n) :
R=jeu(A,B)
tottirA=tottirA+R[0]
tottirB=tottirB+R[1]
if R[0]<R[1] : victA+=1
# on retourne la proportion de victoires de A,
# le nb moyen de tirages pour A et celui pour B
return victA/n, tottirA/n, tottirB/n
# Fabriquer des listes de tirages de longueur voulue
def LTPF(n) :
if n==0 :
return ['']
else :
L=LTPF(n-1)
return ['P'+T for T in L]+['F'+T for T in L]
# Fabriquer la matrice de transition entre états
def MatTrans(A) :
# liste des tirages à pile ou face de longueur 1 de moins
# que A
L=LTPF(len(A)-1)
l=len(L)
# Fabrication de la matrice de transition
MT=matrix(QQ,l+1,l+1)
MT[l,l]=1
for i in range(l) :
S=L[i]+'P'
if S==A : MT[i,l]=1/2
else : MT[i,L.index(S[1:])]=1/2
T=L[ i]+'F'
if T==A : MT[i,l]=1/2
else : MT[i,L.index(T[1:])]=1/2
return MT
R = PolynomialRing(QQ,'x')
#Calculer les valeurs propres des matrices de transion
A=MatTrans('PFF')
VPA=solve(SR(A.characteristic_polynomial()),x)
print "Valeurs propres de la matrice de transition pour PFF :\n",VPA
B=MatTrans('PFP')
VPB=solve(SR(B.characteristic_polynomial()),x)
print "Valeurs propres de la matrice de transition pour PFP :\n",VPB
Valeurs propres de la matrice de transition pour PFF :
[
x == 1,
x == (1/2),
x == -1/4*sqrt(5) + 1/4,
x == 1/4*sqrt(5) + 1/4,
x == 0
]
Valeurs propres de la matrice de transition pour PFP :
[
x == -1/12*(1/2)^(1/3)*(3*sqrt(23)*sqrt(3) + 25)^(1/3)*(I*sqrt(3) + 1) - 1/6*(1/2)^(2/3)*(-I*sqrt(3) + 1)/(3*sqrt(23)*sqrt(3) + 25)^(1/3) + 1/3,
x == -1/12*(1/2)^(1/3)*(3*sqrt(23)*sqrt(3) + 25)^(1/3)*(-I*sqrt(3) + 1) - 1/6*(1/2)^(2/3)*(I*sqrt(3) + 1)/(3*sqrt(23)*sqrt(3) + 25)^(1/3) + 1/3,
x == 1/6*(1/2)^(1/3)*(3*sqrt(23)*sqrt(3) + 25)^(1/3) + 1/3*(1/2)^(2/3)/(3*sqrt(23)*sqrt(3) + 25)^(1/3) + 1/3,
x == 1,
x == 0
]
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 3 invités
Tu pars déja ?
Identification
Pas encore inscrit ?
Ou identifiez-vous :