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
(::#1) (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 1.0 1.0], [1.0 1.0 1.0 1.0], [1.0 1.0 1.0 1.0])
t = tensor(w,A,B,C)
4×4×4 Array{Float64,3}:
[:, :, 1] =
0.320077 0.420908 0.475253 0.247127
0.213319 0.307566 0.588408 0.224455
0.1917 0.293001 0.582306 0.187666
0.45846 0.610626 0.921451 0.340751
[:, :, 2] =
0.280598 0.356095 0.414781 0.172266
0.216832 0.321847 0.615896 0.18891
0.201625 0.311211 0.630846 0.181488
0.507995 0.679081 1.01114 0.339524
[:, :, 3] =
0.163092 0.203824 0.24255 0.0909542
0.134334 0.201202 0.388134 0.11168
0.125966 0.195363 0.400887 0.111561
0.321378 0.430591 0.64321 0.210276
[:, :, 4] =
0.265587 0.350888 0.358595 0.221097
0.145616 0.191792 0.314945 0.15979
0.124797 0.175718 0.291309 0.116509
0.307703 0.387446 0.502116 0.224392
wd, Ad, Bd, Cd = decompose(t)
normalize_markov!(wd,Ad,Bd,Cd)
([8.75104, 1.73324, 9.71851, 0.723709], [0.0946489 0.661463 0.253254 0.204076; 0.266164 0.118039 0.155807 0.382351; 0.286631 0.114663 0.135711 0.132622; 0.352556 0.105835 0.455228 0.280951], [0.0846472 0.203291 0.287103 0.132316; 0.188458 0.309878 0.32835 0.0826015; 0.589626 0.279492 0.258835 0.306848; 0.137268 0.207338 0.125712 0.478235], [0.306021 0.405378 0.277047 0.428301; 0.345862 0.111032 0.323644 0.0907689; 0.222999 0.00489305 0.206897 0.00596532; 0.125118 0.478697 0.192412 0.474965])
w
4-element Array{Float64,1}:
0.723709
8.75104
9.71851
1.73324
wd
4-element Array{Float64,1}:
8.75104
1.73324
9.71851
0.723709
A
4×4 Array{Float64,2}:
0.204076 0.0946489 0.253254 0.661463
0.382351 0.266164 0.155807 0.118039
0.132622 0.286631 0.135711 0.114663
0.280951 0.352556 0.455228 0.105835
Ad
4×4 Array{Float64,2}:
0.0946489 0.661463 0.253254 0.204076
0.266164 0.118039 0.155807 0.382351
0.286631 0.114663 0.135711 0.132622
0.352556 0.105835 0.455228 0.280951
norm(t-tensor(wd,Ad,Bd,Cd))
6.380155789400488e-14