using TensorDec
normalize_markov! = function(w,A,B,C)
for i in 1:size(A,2)
l = sum(A[j,i] for j in 1:size(A,1) )
A[:,i] /= l
w[i] *= l
end
for i in 1:size(B,2)
l = sum(B[j,i] for j in 1:size(B,1) )
B[:,i] /=l
w[i] *= l
end
for i in 1:size(C,2)
l = sum(C[j,i] for j in 1:size(B,1) )
C[:,i] /=l
w[i] *= l
end
w, A,B,C
end
#3 (generic function with 1 method)
A = rand(4,4); B = rand(4,4); C = rand(4,4); w = rand(4);
normalize_markov!(w,A,B,C)
fill(1.,4)'*A, fill(1.,4)'*B, fill(1.,4)'*C
([1.0 1.0 0.9999999999999999 1.0], [1.0 1.0 1.0 1.0], [1.0 1.0 1.0 1.0000000000000002])
t = tensor(w,A,B,C)
4×4×4 Array{Float64, 3}:
[:, :, 1] =
0.234063 0.285357 0.103462 0.191386
0.218727 0.286619 0.129707 0.170557
0.209205 0.425856 0.127264 0.16453
0.118732 0.0596909 0.0376082 0.0904507
[:, :, 2] =
0.279874 0.13077 0.0596221 0.199513
0.142045 0.119766 0.065721 0.0576278
0.198098 0.165662 0.0709902 0.113465
0.18737 0.0653088 0.0389776 0.126248
[:, :, 3] =
0.214867 0.189827 0.0914425 0.141229
0.208208 0.212696 0.119492 0.119814
0.191811 0.251241 0.104985 0.10955
0.129442 0.0745876 0.0493614 0.0743552
[:, :, 4] =
0.230144 0.216675 0.121418 0.06259
0.243952 0.240236 0.147113 0.0353593
0.252846 0.292768 0.151077 0.0547589
0.169083 0.125945 0.0875379 0.0366872
wd, Ad, Bd, Cd = decompose(t)
normalize_markov!(wd,Ad,Bd,Cd)
([3.694482003721782, 1.96102733362676, 1.9933882246257302, 1.9764764966704675], [0.23483019338633918 0.42554942646819244 0.25252028706635804 0.2766430902822981; 0.2978234858839293 0.08605877236288709 0.41854896891106447 0.20958703618171567; 0.2802151027758203 0.20860858309999522 0.21552452070284817 0.5110844938609499; 0.18713121795391116 0.2797832180689253 0.1134062233197293 0.0026853796750362937], [0.39242341888274107 0.4824959627763829 0.3006722860410282 0.11794789204636491; 0.3363916928314428 0.05907965220726224 0.25264171551452624 0.6479935039796955; 0.23844448244243127 0.015705542950132996 0.17409120103744857 0.12498027721289932; 0.03274040584338476 0.442718842066222 0.27259479740699694 0.10907832676104036], [0.07987462385898321 0.22058914135729182 0.5641953394133821 0.5063951144686444; 0.2017199121133617 0.49158460506530877 0.03576400310373513 0.1216842653870496; 0.19497875857115374 0.1877645100352776 0.3929152368423388 0.2080062783496625; 0.5234267054565015 0.10006174354212186 0.0071254206405438406 0.1639143417946436])
w
4-element Vector{Float64}:
1.9764764966704738
1.9610273336266786
3.6944820037219146
1.993388224625744
wd
4-element Vector{Float64}:
3.694482003721782
1.96102733362676
1.9933882246257302
1.9764764966704675
A
4×4 Matrix{Float64}:
0.276643 0.425549 0.23483 0.25252
0.209587 0.0860588 0.297823 0.418549
0.511084 0.208609 0.280215 0.215525
0.00268538 0.279783 0.187131 0.113406
Ad
4×4 Matrix{Float64}:
0.23483 0.425549 0.25252 0.276643
0.297823 0.0860588 0.418549 0.209587
0.280215 0.208609 0.215525 0.511084
0.187131 0.279783 0.113406 0.00268538
using LinearAlgebra
norm(t-tensor(wd,Ad,Bd,Cd))
1.577576718862004e-14