Vous êtes sur la page 1sur 6

Série 2 TP CMTD

Exercices
Exercice 1
Soit la matrice de transition suivante :
0 1 0
1 1
0
𝑃= 2 2
1 1 1
(3 3 3)

1. Vérifier que la chaîne admet une distribution stationnaire π unique, puis déterminer
cette distribution
2. Calculer 𝑃𝑛 pour n=3, 10, 20, 100, 200,300 qu’est ce que vous remarquez
3. Si 𝜋 (0) = (1 0 0 ) déterminer 𝜋 (𝑛) pour n=3,5,10,100,200,300 qu’est ce que vous
remarquez
4. Déterminer 𝜋 (500) lorsque 𝜋 (0) = (1 0 0 ) 𝜋 (0) = (0 1 0 ) 𝜋 (0) =
(0 0 1 ) 𝜋 (0) = (1/3 1/3 1/3 ) qu’est ce que vous remarquez
5. En déduire le temps moyen de retour à l’état 3

Exercice 2
Soit la matrice de transition suivante :

0 1 0 0 0
1 0 0 0 0
𝑃= 0 0 0 1 0
1 2
0 0 0
3 3
(1 0 0 0 0)

1. Si 𝜋 (0) = (0.2, 0.4, 0.1, 0.2, 0.1) déterminer 𝜋 (𝑛) pour


n=300,500,1000,10000,100000 qu’est ce que vous remarquez
2. Refaire les mêmes calculs pour 𝜋 (0) = (0.8 0.1 0 .1 0 0) et 𝜋 (0) =
(0 0.1 0 .1 0 0.8)
qu’est ce que vous remarquez

Exercice 3
Soit la matrice de transition suivante :
0.5 0.3 0 0.2
0.4 0.1 0.5 0
( )
0.1 0 0.4 0.5
0 0 0 1
1. Représenter le graphe de transition de cette chaîne
(4) (4) (6) (3) (4)
2. Calculer 𝑓11 , 𝑓13 , 𝑓32 , 𝑝12 , 𝑝42
(3) (5)
3. Si 𝜋 (0) = (0.4 0.3 0.2 0.1 ) calculer 𝑃(𝑋3 = 3), 𝑃(𝑋5 = 2), 𝑝13 , 𝑝12 . Recalculer
les mêmes quantités si 𝜋 (0) = (1 0 0 0 ) qu'est ce que vous remarquez?
4. Démonter que cette chaîne est absorbante
5. Ecrire la matrice de transition sous sa forme canonique puis en déduire Q et R
6. Déterminer la matrice fondamentale de la chaîne
7. Déterminer la probabilité d’absorption en 4 en partant de 3
8. Déterminer le temps d’absorption moyen en partant de 2
9. Déduire empiriquement que lim 𝑄 𝑛 = 0
𝑛→+∞

SOLUTIONS
1)
d=c(0,1,0,1/2,0,1/2,1/3,1/3,1/3)
dm=matrix(d,3,3,byrow=T)
dMC=new("markovchain",states=c("1","2","3"),transitionMatrix=dm)
> is.irreducible(dMC)
[1] TRUE
> period(dMC)
[1] 1

La chaîne de Markov est irréductible et apériodique, alors elle admet une distribution
stationnaire unique π

> pi=steadyStates(dMC)
> pi
1 2 3
[1,] 0.3 0.4 0.3
> dMC^3
> dMC ^4
> dMC ^10
> dMC ^20
> dMC ^100
> dMC ^200
> dMC ^300

Lorsque n devient grand les lignes de 𝑃𝑛 deviennent identiques et sont égales à 𝜋 =


𝜋
𝜋
(0.3 0.4 0.3) lim 𝑃𝑛 = ( )
𝑛→∞ 𝜋
𝜋

3)
> pi0=c(1,0,0)
> pi10=pi0*dMC^10
> pi10
> pi20=pi0*dMC^20
> pi20
> pi100=pi0*dMC^100
> pi100
> pi200=pi0*dMC^200
> pi200

Lorsque n devient grand 𝜋 (𝑛) tend vers 𝜋 = (0.3 0.4 0.3) ( lim 𝜋(𝑛) = 𝜋)
𝑛→∞
4)
> pi02=c(0,1,0)
> pi03=c(0,0,1)
> pi500=pi0*dMC^500
> pi500
> pi500=pi02*dMC^500
> pi500
> pi500=pi03*dMC^500
> pi500

Sur le long terme, le vecteur 𝜋 (𝑛) converge toujours vers 𝜋 quelque soit le 𝜋 (0) choisi.

> ss=steadyStates(dMC)
> ss
1 2 3
[1,] 0.3 0.4 0.3
> M3=1/ss[3]
> M3
[1] 3.333333

2)
W=c(0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1/3,0,2/3,1,0,0,0,0)
Wm=matrix(W,nrow=5,byrow=T)
WMC=new("markovchain",states=c("1","2","3","4","5"),transitionMatrix=Wm)
is.irreducible(WMC)
[1] FALSE
pi0=c(0.2,0.4,0.1,0.2,0.1)
smc=pi0*WMC^300
smc
smc=pi0*WMC^500
smc
smc=pi0*WMC^1000
smc
smc=pi0*WMC^10000
smc
smc=pi0*WMC^100000
smc

pi0=c(0.8,0.1,0.1,0,0)
pi0=c(0,0.1,0.1,0,0.8)

3)
1)
S=c(0.5,0.3,0,0.2, 0.4,0.1,0.5,0,0.1,0,0.4,0.5,0,0,0,1)
SM=matrix(S,nrow=4,byrow=T)
SMC=new("markovchain",states=c("1","2","3","4"),transitionMatrix=SM)
plotmat(t(SM), name=c("1","2","3","4"),pos=c(2,1,1), box.size=0.05)
2)
> f1=firstPassage(SMC,"1",4)
> f1
1 2 3 4
1 0.5000 0.3000 0.0000 0.2000
2 0.1200 0.1500 0.1500 0.1000
3 0.0270 0.0750 0.0900 0.1490
4 0.0087 0.0375 0.0645 0.1294
> f114=f1[4,1]
> f114
[1] 0.0087
> f134=f1[4,3]
> f134
[1] 0.0645
> f3=firstPassage(SMC,"3",6)
> f3

1 2 3 4
1 0.100000 0.000000 0.40000 0.500000
2 0.040000 0.030000 0.00000 0.220000
3 0.016000 0.027000 0.01500 0.098000
4 0.006400 0.018300 0.00900 0.054100
5 0.002560 0.011070 0.00645 0.034580
6 0.001024 0.006303 0.00450 0.024109
> f326=f3[6,2]
> f326
[1] 0.006303

> p12trois=(SMC^3)[1,2]
> p12trois
[1] 0.129
> p42quatre=(SMC^4)[4,2]
> p42quatre
[1] 0
3)
> pi0=c(0.4,0.3,0.2,0.1)
> px33=(pi0*SMC^3)[3]
> px33
[1] 0.1253
> px52=(pi0*SMC^5)[2]
> px52
[1] 0.049347
> p133=(SMC^3)[1,3]
> p133
[1] 0.15
> p125=(SMC^5)[1,2]
> p125
[1] 0.07023
> pi01=c(1,0,0,0)
> px33=(pi01*SMC^3)[3]
> px33
[1] 0.15
> px52=(pi01*SMC^5)[2]
> px52
[1] 0.07023
3)
> absorbingStates(SMC)
[1] "4"
> is.accessible(SMC,"1","4")
[1] TRUE
> is.accessible(SMC,"2","4")
[1] TRUE
> is.accessible(SMC,"3","4")
[1] TRUE
Donc la chaîne est absorbante
4)
> cano=canonicForm(SMC)
> cano

0.5 0.3 0 0.2


𝑄 = (0.4 0.1 0.5) 𝑅=( 0 )
0.1 0 0.4 0.5
5)

> Q=cano[2:4,2:4]
> R=cbind(cano[c(2:4),1])
> N=solve(diag(3)-Q)
>N
1 2 3
1 2.9508197 0.9836066 0.8196721
2 1.5846995 1.6393443 1.3661202
3 0.4918033 0.1639344 1.80327876)

> B=N%*%R
>B
[,1]
1 1
2 1
3 1
𝑏34 = 1
Si on part de l’état 3, on est sur d’être absorbée par l’état 4
7)
> cc=rbind(rep(1,3))
> t=N%*%cc
>t
[,1]
1 4.754098
2 4.590164
3 2.459016

𝑡2 = 𝟒. 𝟓𝟗𝟎𝟏𝟔𝟒

Si on démarre de l’état 2, il nous faut en moyennes 4,59 étapes pour arriver à l’état absorbant
4
Déduire empiriquement que lim 𝑄 𝑛 = 0
𝑛→+∞

cano^10000