butiran

code of gillette 1983

notes

matrices c, d

import numpy as np

D = np.array(
  [
    [0.26, 0.22, 0.14],
    [0.20, 0.40, 0.80],
    [1.60, 1.20, 0.40],
    [0.12, 0.14, 0.18]
  ]
)
print(D)

DT = D.T
print(DT)

C = DT @ D
print(C)
[[0.26 0.22 0.14]
 [0.2  0.4  0.8 ]
 [1.6  1.2  0.4 ]
 [0.12 0.14 0.18]]
[[0.26 0.2  1.6  0.12]
 [0.22 0.4  1.2  0.14]
 [0.14 0.8  0.4  0.18]]
[[2.682 2.074 0.858]
 [2.074 1.668 0.856]
 [0.858 0.856 0.852]]

matrices c, e, l

import numpy as np
from numpy import linalg as la

C = np.array(
    [
      [2.682, 2.074, 0.858],
      [2.074, 1.668, 0.856],
      [0.858, 0.856, 0.852],
      ]
  )

print("C =",)
print(C)
print()

print("CE = EL")
L, E = la.eig(C)

print("E =")
print(E.round(3))
print()

print("L =")
print(np.diag(L).round(3))
print()

print("C @ E =")
print((C @ E).round(3))
print()

print("E @ L =")
print((E @ np.diag(L)).round(3))
print()
C =
[[2.682 2.074 0.858]
 [2.074 1.668 0.856]
 [0.858 0.856 0.852]]

CE = EL
E =
[[-0.745 -0.535 -0.4  ]
 [-0.596  0.802  0.039]
 [-0.3   -0.267  0.916]]

L =
[[4.688 0.    0.   ]
 [0.    0.    0.   ]
 [0.    0.    0.514]]

C @ E =
[[-3.491  0.    -0.205]
 [-2.796  0.     0.02 ]
 [-1.405  0.     0.471]]

E @ L =
[[-3.491 -0.    -0.205]
 [-2.796  0.     0.02 ]
 [-1.405 -0.     0.471]]

matrices a, d, e

import numpy as np

D = np.array(
  [
    [0.26, 0.22, 0.14],
    [0.20, 0.40, 0.80],
    [1.60, 1.20, 0.40],
    [0.12, 0.14, 0.18],
    ]
  )

E = np.array(
  [
    [0.745, -0.400],
    [0.596, 0.039],
    [0.300, 0.916],
    ]
  )

A = D @ E

print("D ="); print(D); print()
print("E ="); print(E); print()
print("A ="); print(A.round(3)); print()
D =
[[0.26 0.22 0.14]
 [0.2  0.4  0.8 ]
 [1.6  1.2  0.4 ]
 [0.12 0.14 0.18]]

E =
[[ 0.745 -0.4  ]
 [ 0.596  0.039]
 [ 0.3    0.916]]

A =
[[ 0.367  0.033]
 [ 0.627  0.668]
 [ 2.027 -0.227]
 [ 0.227  0.122]]

to-do

refs

dicussion