L6maple.mws, Markovin ketjut
ke 2.10.02 Luento 11
Lähteet
Lay Ch 4.9 ss. 288 - 296. (ei prujuja)
Alustukset
> | restart: with(LinearAlgebra):with(linalg): |
Warning, the previous binding of the name GramSchmidt has been removed and it now has an assigned value
Warning, the protected names norm and trace have been redefined and unprotected
> | alias(rref=ReducedRowEchelonForm):alias(ref=GaussianElimination): alias(Id=IdentityMatrix): |
Markovin ketjut
Lay Ch 4.9
Mallinnetaan moninaisia ilmiöitä mm. biologiassa, liiketaloudessa, kemiassa, fysiikassa, insinööritieteissä,...
Malli kuvaa koetta tai mittaussarjaa, joka toistetaan monta kertaa samalla tavalla.
Jokainen koetulos on vektori, jonka alkiot riippuvat vain edellisen tulosvektorin komponenteista.
> | restart: with(LinearAlgebra): |
Esim. Kaupugin väestöjakauma
Kaupungin väestö koostukoon 1) kantakaupunkilaisista ja 2) esikaupunkilaisista.
Oletetaan, että vuotuinen muuttoliike tapahtuu seuraavan matriisin määräämällä tavalla:
> | M:=<<.95,.05>|<.03,.97>>; |
> | Kantakaupungista:=M[1..-1,1]; |
> | Esikaupungista:=M[1..-1,2]; |
> | Kantakaupunkiin:=M[1,1..-1]; |
> | Esikaupunkiin:=M[2,1..-1]; |
> | X[0]:=<.6,.4>; |
> | X[1]:=M.X[0]; |
> | for j from 0 to 10 do X[j+1]:=M.X[j]: end do: |
> | seq(X[j],j=0..10); |
> | for j from 10 to 20 do X[j+1]:=M.X[j]: end do: |
> | seq(X[j],j=11..20); |
> | for j from 20 to 100 do X[j+1]:=M.X[j]: end do: |
> | seq(X[j],j=[30,40,50,60,70,80,90,100]); |
> |
Lähestyykö tasapainotilaa . Vaikuttiko alkupisteen valinta asiaan? Kokeillaan aivan toista.
> | X[0]:=<0.8,0.2>; |
> | for j from 0 to 100 do X[j+1]:=M.X[j]: end do: |
> | seq(X[j],j=[50,60,70,80,90,100]); |
Eipä näyttäisi juurikaan vaikuttavan .
> | q:=<.375,.625>;q:=convert(q,rational); M:=convert(M,rational); |
> | M.q; |
q on kiintopiste (tasapainotila, "steady state").
Tästä prosessi ei etene mihinkään.
Esim. Vaalit
> | restart: with(LinearAlgebra):alias(Id=IdentityMatrix): |
> | <<Demokraateilta>|<Republikaaneilta>|<Liberaaleilta>>; P:=<<.7,.2,.1>|<.1,.8,.1>|<.3,.3,.4>>; |
> | X[0]:=<.55,.40,.05>; |
> | for j from 0 to 10 do X[j+1]:=P.X[j]: end do: |
> | seq(X[j],j=0..10); |
> |
> |
> |
Taspainotila "Steady state" (kiintopiste)
> | restart: with(LinearAlgebra):with(linalg): |
Warning, the previous binding of the name GramSchmidt has been removed and it now has an assigned value
Warning, the protected names norm and trace have been redefined and unprotected
> | alias(rref=ReducedRowEchelonForm):alias(ref=GaussianElimination): alias(Id=IdentityMatrix): |
> |
Kaupunkimatriisi
> | M:=<<.95,.05>|<.03,.97>>; M:=convert(M,rational); |
M x = x <==> (M - I) x = 0
Tehtävänä on siis etsiä vektori x#0 siten, että (M - I) x = 0,
ts. (HY):lle ei-triv. ratk.
> | M1:=M-Id(2); |
> | rref(M1); |
> | x2:=t: x1:=3/5*t; |
> | T:=solve(x1+x2=1,t); |
> | x:=subs(t=T,<x1,x2>); |
> | convert(%,float); |
> |
> |
Normaalisti lasketaan kaikki liukuluvuilla.
Huom! Tämähän oli puhdaslinjainen ominaisvektorilasku . Taspainovektorihan tarkoittaa ominaisarvoa 1 vastaavaa ominaisvetoria.
Näyttäisi siis siltä, että stokastisilla matriiseilla on ominaisarvo 1, ainakin tämän esimerkin valossa.
Asia saa vahvistuksen harj. 4:n AV-tehtävässä.