Illusztrációk mátrixok szingulárisérték-felbontására

3x3-as szimmetrikus mátrix közelítése spektrálfelbontással

Spektrálfelbontás:

A = matrix(RDF, [[1,1,0],[1,0,1],[0,1,0]]) Lambda, Q = A.eigenmatrix_left() A1 = Q.transpose()*Lambda*diagonal_matrix([1,0,0])*Q A2 = Q.transpose()*Lambda*diagonal_matrix([0,1,0])*Q A3 = Q.transpose()*Lambda*diagonal_matrix([0,0,1])*Q pretty_print(A,LatexExpr("\\ =\\ "),n(Q.transpose(),digits=2),LatexExpr("\\,\\cdot\\,"),n(Lambda,digits=2),LatexExpr("\\,\\cdot\\,"),n(Q,digits=2)) #pretty_print(LatexExpr("\\ =\\ "),n(A1,digits=2),LatexExpr("\\ +\\ "),n(A2,digits=2),LatexExpr("\\ +\\ "),n(A3,digits=2)) #pretty_print(n(A1+A2+A3,digits=2))

A kapott közelítések vizualizálása:

kep = matrix_plot(A, vmin=0, vmax=1, colorbar=True, colorbar_orientation='horizontal') kep_kozelites = matrix_plot(A2, vmin=0, vmax=1, colorbar=True, colorbar_orientation='horizontal') graphics_array([kep,kep_kozelites])

8x8-as szimmetrikus mátrix közelítése spektrálfelbontással

A = matrix(RDF, [[0,1,1,1,1,1,1,0],[1,0,0,0,0,0,0,1],[1,0,0,1,0,0,0,1],[1,0,1,0,0,1,0,1],[1,0,0,0,0,1,0,1],[1,0,0,1,1,1,0,1],[1,0,0,0,0,0,0,1],[0,1,1,1,1,1,1,0]]) U, Szigma, V = A.SVD() vagas = diagonal_matrix([1,0,0,0,0,0,0,0]) kep = matrix_plot(A, vmin=0, vmax=1) kep_kozelites = matrix_plot(U*Szigma*vagas*V.transpose(), vmin=0, vmax=1) graphics_array([kep,kep_kozelites])

98x100-as mátrix közelítése szingulárisérték-felbontással

Ez itt egy 98x100 pixeles szürkeárnyalatos kép mátrixa (6-féle szürkeárnyalattal):

A = matrix(RDF, [[0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,3,3,4,4,2,2,2,3,4,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,2,1,1,1,], [1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,3,3,4,4,3,3,3,4,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,2,1,1,1,1,], [1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1,1,3,3,4,4,3,2,4,4,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,2,2,3,2,1,1,1,], [1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,2,1,0,0,0,0,0,0,0,1,1,1,1,3,3,4,4,3,4,4,4,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,2,2,2,3,2,2,1,1,], [1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,2,2,2,3,3,1,0,0,0,0,0,0,1,1,1,1,3,3,4,3,3,4,4,4,4,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,1,1,2,2,2,2,3,2,1,1,], [1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,2,2,2,2,2,1,0,0,0,0,1,1,1,1,1,3,3,4,3,4,4,4,3,4,3,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,2,2,2,2,2,2,2,1,2,], [2,1,1,1,2,3,3,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,4,4,4,3,4,3,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,2,1,1,1,], [2,2,2,1,3,3,3,3,2,2,1,1,1,1,1,2,2,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,2,3,3,3,4,4,3,4,4,3,4,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,2,2,2,2,2,1,1,1,], [3,3,2,1,3,3,3,3,2,2,2,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,0,0,0,1,0,1,1,1,1,2,2,2,2,2,3,3,3,4,4,3,4,4,4,3,3,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,1,1,2,], [3,3,2,1,3,3,3,3,2,2,2,2,1,1,1,1,2,3,3,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,3,3,3,4,4,3,4,3,1,1,1,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,1,1,1,1,], [3,3,3,1,3,3,3,2,2,2,2,2,2,1,1,1,1,1,2,3,3,3,3,2,2,2,2,2,3,2,2,2,2,2,2,2,3,2,2,2,3,2,2,2,2,2,2,3,3,4,4,3,3,3,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,1,1,2,1,], [4,3,2,1,3,3,3,3,2,2,2,2,2,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,3,3,3,3,3,2,3,3,4,4,3,3,3,2,2,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,1,1,1,2,], [4,3,2,1,2,3,3,3,2,2,2,2,2,1,1,1,1,1,1,1,2,3,4,4,4,4,4,4,4,4,4,3,3,3,3,3,4,4,4,4,4,4,4,3,3,3,2,3,3,4,4,4,4,4,3,3,3,3,2,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,1,1,2,2,1,], [4,4,3,1,1,3,3,3,2,2,2,2,2,1,1,1,1,1,1,1,1,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,4,4,4,4,2,2,3,4,4,4,4,4,4,4,4,4,3,3,3,2,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,2,3,3,2,], [4,4,3,2,1,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,2,4,4,4,4,4,4,4,4,4,3,4,4,4,4,4,4,3,2,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,2,3,3,], [4,4,3,3,1,1,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,2,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,1,1,1,3,3,3,4,], [4,3,3,3,1,1,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,2,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,2,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,4,4,4,3,3,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,1,1,1,1,3,3,3,3,], [3,3,3,3,2,1,1,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,2,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,1,1,1,1,2,3,3,2,], [3,3,3,3,3,2,1,1,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,2,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,3,2,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,1,2,2,2,2,2,1,1,1,1,1,1,3,3,3,3,], [3,3,3,4,4,2,1,1,2,2,2,2,2,2,2,2,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,4,4,4,4,4,4,4,4,4,4,4,4,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,3,2,2,1,1,1,1,1,1,1,1,1,2,1,1,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,2,3,2,2,3,], [3,3,3,4,4,3,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,1,1,1,1,1,1,1,1,2,2,2,3,3,3,4,4,4,4,4,4,4,3,3,4,4,4,4,4,4,4,4,4,3,3,2,3,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,2,2,2,2,2,1,1,1,1,2,1,1,1,2,2,2,2,3,3,], [4,4,4,5,5,4,3,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,1,1,1,1,1,1,1,1,1,2,2,2,2,3,2,2,3,3,3,3,3,4,4,4,4,3,3,3,2,2,2,2,2,3,2,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,2,3,3,3,3,], [4,4,4,5,5,4,3,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,1,1,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,2,2,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,2,1,1,1,1,2,2,2,2,2,2,2,3,3,3,2,1,1,1,1,2,2,1,1,1,1,2,3,2,3,4,4,], [4,4,5,5,4,4,3,2,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,1,1,1,1,1,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,2,2,2,2,2,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,2,2,2,2,1,1,1,2,2,2,1,1,1,1,1,1,1,3,3,4,4,], [4,5,5,4,4,3,4,2,1,1,1,1,1,1,2,2,2,2,2,2,2,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,2,2,2,3,2,2,2,2,2,2,2,2,2,2,3,2,2,2,2,2,2,2,2,1,1,1,2,2,2,1,1,1,1,1,1,1,2,3,3,3,4,], [4,5,5,4,4,4,2,1,1,1,1,1,1,1,1,1,1,2,2,2,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,3,2,2,2,2,2,2,2,2,2,2,2,3,2,2,2,3,2,3,2,2,3,2,3,3,2,2,3,2,3,3,3,3,3,3,2,3,3,2,2,2,2,2,2,2,2,1,2,2,2,2,2,1,1,1,1,1,2,2,2,3,4,4,3,], [5,5,4,4,4,3,2,1,1,2,1,1,1,2,1,1,1,1,2,3,3,3,3,3,3,3,2,2,2,2,3,3,3,2,3,3,2,2,2,2,3,2,3,2,2,2,2,2,2,2,2,2,3,3,2,2,2,2,2,2,3,2,2,3,2,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,1,1,2,2,2,2,1,1,1,1,1,1,1,3,4,4,3,2,2,], [5,5,4,4,4,2,4,2,0,1,1,1,1,1,2,1,1,1,1,2,2,2,3,3,3,2,2,2,2,2,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,3,2,2,2,2,3,3,3,2,2,2,2,2,2,2,3,3,3,3,3,3,3,4,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,3,3,4,3,1,2,2,], [5,4,4,4,3,3,4,3,1,1,1,1,1,1,2,2,2,2,1,1,1,2,2,2,3,2,2,2,2,2,3,4,4,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,3,3,2,3,2,2,2,2,3,3,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,1,1,1,2,1,2,3,3,2,3,3,2,3,2,], [5,4,4,4,2,2,3,2,1,1,1,1,1,1,1,2,2,2,2,2,1,2,2,2,2,2,2,2,2,3,4,3,3,3,2,3,2,3,3,3,3,2,2,2,2,2,3,2,3,2,2,3,3,3,3,3,2,2,3,2,2,2,2,2,3,4,3,2,2,3,3,2,2,2,2,2,2,2,3,2,2,2,2,2,3,2,1,1,2,2,1,2,3,3,3,2,2,2,3,3,], [5,4,4,4,2,1,1,1,1,2,2,1,1,1,1,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,2,2,2,2,3,3,3,2,2,2,2,2,2,3,2,3,3,3,2,3,3,3,3,2,2,2,2,3,2,2,3,3,4,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,2,2,1,1,1,2,2,2,1,3,3,3,2,2,3,3,2,3,], [4,4,4,4,2,4,3,1,1,2,1,1,1,1,1,1,2,2,3,2,2,2,2,2,2,2,2,2,2,2,2,3,2,3,2,2,3,3,3,2,2,2,2,2,2,1,2,3,3,2,3,2,2,2,3,2,3,2,2,3,3,2,2,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,2,2,3,2,3,2,3,2,3,3,3,3,3,], [4,4,4,4,2,4,4,2,2,3,2,1,2,2,1,2,2,2,2,2,2,2,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,2,2,2,3,3,2,1,2,3,2,3,3,3,2,3,2,2,2,2,2,2,2,3,2,3,3,3,2,3,2,2,2,2,2,2,2,2,2,2,3,3,2,1,1,1,1,1,1,1,1,2,3,3,2,3,2,2,3,3,3,3,], [4,4,4,4,2,4,3,1,1,2,0,1,2,2,1,1,1,1,3,3,3,3,3,2,2,2,2,2,2,2,2,2,3,2,2,2,3,3,3,3,3,2,3,3,3,2,3,3,2,3,4,3,2,3,3,2,2,2,3,2,2,2,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,3,2,2,1,1,2,1,1,1,1,1,1,2,3,2,3,3,2,2,3,3,3,3,], [4,4,4,4,3,2,1,1,2,0,0,1,2,1,1,1,1,1,1,2,3,2,3,3,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,2,2,3,2,2,3,3,3,2,4,3,2,3,4,2,2,2,2,2,2,2,3,4,3,2,3,3,2,2,2,2,3,3,2,2,3,2,2,1,1,1,2,2,2,2,2,1,1,2,1,2,4,3,3,3,3,3,3,3,], [4,4,4,4,3,1,2,4,3,1,3,3,1,1,1,1,2,1,1,1,1,2,3,3,2,3,2,2,2,2,2,2,2,2,2,2,2,2,3,4,4,3,3,2,2,2,2,2,3,2,3,3,2,2,4,2,2,3,2,2,1,2,3,4,4,2,3,2,2,2,3,2,3,3,2,2,2,2,2,1,1,1,1,2,2,2,2,2,2,2,2,4,4,3,3,3,3,2,2,3,], [4,4,4,4,4,2,3,4,3,2,4,2,1,1,1,2,1,1,1,1,1,2,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,1,3,4,4,3,2,2,2,2,2,2,3,2,3,3,2,2,4,2,2,3,2,1,1,3,2,4,4,2,2,3,3,2,3,2,3,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,3,3,3,3,3,3,3,2,2,2,3,3,], [4,4,4,4,4,3,1,2,2,1,2,1,0,2,2,2,2,1,1,1,1,1,1,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,2,2,2,2,2,2,2,3,3,2,3,3,1,2,4,2,3,3,3,1,2,3,2,3,3,2,2,2,3,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,3,3,2,2,3,2,2,2,2,2,2,2,], [4,4,4,4,4,4,3,1,0,0,0,0,2,2,2,2,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,1,3,2,1,2,2,2,2,2,3,3,2,2,2,3,3,3,3,2,1,2,3,2,3,4,1,2,2,3,2,2,2,1,2,1,3,2,3,1,2,2,3,3,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,], [3,4,3,4,4,4,4,3,2,2,2,3,3,4,3,2,1,1,1,1,1,1,1,1,2,2,2,2,3,2,2,3,1,1,2,2,2,2,1,2,1,2,3,3,1,2,2,2,3,3,3,3,1,3,2,3,2,2,1,2,2,4,3,1,2,2,2,1,2,1,2,2,2,2,2,2,2,1,2,2,2,3,2,1,1,1,2,2,1,2,2,2,2,2,2,2,2,2,2,2,], [3,3,3,4,3,3,4,4,2,2,3,4,4,4,3,2,1,1,1,1,1,1,1,1,2,2,2,2,3,2,2,2,2,1,2,2,2,2,2,2,1,3,4,2,1,2,2,2,3,3,3,2,1,3,3,2,1,2,1,2,3,4,3,2,1,1,2,2,2,1,2,2,1,2,1,2,2,2,2,2,3,2,2,2,2,2,2,1,2,2,1,1,1,2,2,2,2,2,2,2,], [2,2,2,2,2,2,2,2,2,2,2,3,2,2,2,1,2,1,1,1,1,2,2,2,2,2,2,2,2,1,1,2,2,2,1,2,2,2,2,2,2,3,4,3,2,2,2,2,3,3,2,2,1,3,2,1,1,2,1,2,3,3,2,2,1,2,2,2,2,1,2,1,1,1,1,2,2,2,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,], [2,2,2,2,2,2,2,2,1,1,1,1,1,2,1,1,2,2,1,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,1,2,1,2,2,2,3,2,3,2,3,2,1,2,3,2,2,2,1,2,2,1,1,2,2,3,3,3,2,2,2,2,2,2,2,2,2,1,1,1,1,2,2,2,3,2,2,3,2,2,2,2,2,2,2,2,1,2,2,1,1,2,2,1,2,2,], [2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,3,2,2,2,2,2,2,1,2,2,2,2,1,2,1,2,2,2,3,1,1,2,4,3,2,2,3,3,2,2,1,1,1,0,1,1,3,3,3,1,2,2,2,2,2,1,2,2,1,1,2,2,2,2,2,2,2,2,3,2,2,2,2,2,2,2,2,1,1,1,1,2,2,2,2,1,2,2,], [1,1,1,1,2,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,3,3,2,2,2,1,1,2,2,2,1,1,1,1,1,1,2,2,2,1,1,1,3,4,2,1,2,3,2,2,0,1,1,0,1,2,3,2,2,1,2,2,2,2,1,1,1,1,1,2,2,2,2,2,2,1,2,1,2,2,2,2,2,2,2,2,2,2,1,2,1,2,1,2,2,1,2,2,], [2,2,2,2,2,2,2,1,2,1,1,2,2,2,2,2,2,2,2,3,2,2,2,2,2,2,2,1,2,1,1,1,2,1,1,1,1,1,2,2,2,1,1,1,2,4,3,1,2,2,2,1,0,0,0,0,1,3,3,1,1,1,2,2,2,2,1,1,1,1,2,2,2,3,2,2,1,1,1,2,2,1,1,2,2,2,2,2,2,2,1,2,1,2,1,2,2,2,2,2,], [3,3,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,3,2,2,2,2,2,2,1,1,2,2,1,2,2,1,1,1,1,1,2,2,2,1,1,1,1,3,4,2,1,2,1,1,0,0,0,0,1,2,2,1,1,1,2,2,3,2,1,1,1,1,2,2,3,2,2,2,1,1,2,2,2,1,1,2,2,2,2,2,2,2,2,2,1,1,1,2,2,2,2,1,], [3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,1,1,1,1,2,2,2,1,1,1,1,2,3,3,1,1,1,0,0,0,0,0,0,1,1,1,1,1,2,2,3,2,1,1,1,1,2,2,2,1,2,2,2,2,1,2,2,1,1,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,1,1,], [3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,2,2,3,2,2,2,1,1,1,1,2,3,2,1,1,1,1,1,3,3,1,1,1,0,0,0,0,0,0,1,1,1,1,1,2,3,3,2,1,1,1,1,2,2,2,1,1,1,1,1,1,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,], [4,3,4,3,3,4,4,3,3,2,2,2,2,2,2,2,2,2,2,2,1,1,2,1,1,1,1,2,2,2,2,2,2,2,1,1,1,1,2,2,2,1,1,1,1,1,2,2,1,1,0,0,0,0,0,0,0,1,1,1,1,1,2,3,3,2,1,1,1,2,2,2,1,2,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,], [3,3,3,3,4,3,3,4,3,3,2,2,2,2,2,2,2,2,2,1,1,1,1,2,1,2,2,1,1,1,2,1,2,2,1,1,1,1,2,3,3,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,2,3,3,2,1,1,1,2,1,1,1,1,1,1,1,1,1,2,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,], [3,3,3,3,3,3,3,4,3,2,2,2,2,2,2,2,2,2,2,2,1,1,1,2,2,1,2,1,1,1,1,1,1,2,2,1,1,1,2,3,3,2,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,2,3,3,1,1,1,1,2,1,1,1,1,1,1,1,1,1,2,2,1,1,2,2,2,2,3,3,3,2,2,2,2,2,2,2,2,2,2,], [3,3,3,3,3,3,3,3,3,3,2,2,2,3,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,3,3,2,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,2,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,2,2,2,2,2,2,3,3,3,2,2,2,2,2,2,2,2,2,2,], [3,3,4,3,3,3,3,2,2,2,1,1,2,2,2,2,2,2,2,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,3,3,2,1,1,2,2,2,1,1,0,0,0,0,0,0,0,1,1,1,1,2,1,3,3,2,1,1,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,3,3,2,2,3,3,3,2,2,2,2,2,2,3,2,2,2,], [3,3,4,4,3,3,3,3,1,2,1,1,2,2,2,2,2,2,1,2,2,1,2,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,3,2,2,2,2,2,2,1,1,0,0,0,0,0,0,0,1,1,1,2,2,2,2,2,2,2,3,3,4,4,4,4,4,4,3,3,2,2,2,2,3,3,4,4,3,3,3,3,3,3,3,2,2,2,2,2,3,2,2,2,], [4,3,3,4,3,3,3,3,2,1,1,1,2,3,2,2,2,2,2,2,2,1,1,2,2,1,1,2,3,3,3,4,4,4,3,3,3,2,2,2,2,2,2,3,3,3,2,1,1,0,0,0,0,0,0,0,1,1,1,2,2,2,2,2,3,4,4,4,4,4,3,2,4,4,4,4,3,2,2,2,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,3,2,2,3,2,], [4,4,4,4,4,3,2,1,1,1,1,1,2,2,3,2,2,2,2,2,2,3,3,3,2,2,2,4,4,4,4,4,4,4,4,4,4,4,3,2,2,2,2,3,2,2,1,1,1,0,0,0,0,0,0,0,1,1,1,2,2,2,2,3,4,4,4,5,4,3,2,3,3,4,4,3,2,1,1,1,2,2,2,3,3,3,3,3,3,2,2,2,2,2,2,2,2,3,2,2,], [4,4,4,4,4,3,2,2,1,1,0,1,2,3,3,2,3,3,3,3,3,4,3,3,2,2,2,3,4,4,3,3,3,5,4,4,4,4,5,4,3,2,2,2,2,2,1,1,1,0,0,0,0,0,0,0,1,1,1,2,2,2,3,4,4,4,4,4,4,3,3,2,3,3,5,3,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,3,2,2,3,3,2,2,], [5,4,4,4,4,3,2,2,1,1,0,1,1,2,3,3,3,3,4,3,3,3,3,2,1,1,1,3,4,3,3,3,4,5,4,4,4,4,4,4,4,3,2,2,2,2,1,1,1,0,0,0,0,0,0,0,1,1,1,1,2,3,4,4,4,4,4,4,4,3,3,2,2,3,4,3,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,3,3,2,2,3,2,3,], [5,4,4,4,3,3,2,1,1,0,0,1,1,1,1,2,2,2,3,3,2,2,2,1,1,1,1,3,4,3,3,3,3,5,4,4,3,4,4,5,5,4,3,2,2,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,2,5,4,3,3,3,4,4,4,3,3,2,2,4,4,2,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,3,2,3,2,3,3,3,3,], [4,4,4,4,3,2,2,1,1,0,0,1,2,1,2,2,2,2,2,2,2,2,2,1,1,1,1,3,4,3,3,3,3,4,3,3,3,3,3,5,4,5,4,2,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,3,5,4,3,3,3,3,4,3,3,3,2,3,4,3,1,1,1,2,2,3,2,2,2,2,1,2,3,2,2,2,2,2,3,3,2,3,3,3,2,], [4,4,4,4,4,2,1,1,0,0,0,1,1,2,2,2,1,2,2,2,2,2,2,2,1,1,1,2,4,4,3,3,3,4,3,3,3,3,4,5,4,5,4,2,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,4,4,5,3,3,3,3,3,3,3,2,3,4,4,2,1,1,1,2,3,3,2,2,2,2,2,2,2,2,2,2,2,3,3,3,2,3,3,3,2,], [4,4,4,3,2,2,2,1,0,0,0,0,1,1,1,1,1,1,1,2,1,2,3,3,2,1,1,1,3,4,3,3,3,3,3,3,2,3,4,5,4,5,4,3,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,2,4,5,5,4,3,3,3,3,3,2,3,4,4,3,1,1,2,3,3,3,2,2,2,2,2,2,2,2,2,2,2,3,3,3,2,3,3,3,2,3,], [3,3,3,3,2,2,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,2,2,3,3,2,1,1,1,4,4,4,3,3,3,3,3,4,5,5,5,5,4,3,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,2,4,4,4,5,4,4,3,3,3,4,4,4,3,2,1,2,2,3,4,3,2,2,2,2,3,2,1,1,2,3,2,3,3,2,3,3,3,3,2,2,], [4,3,3,2,3,1,1,0,0,0,0,0,0,1,0,1,1,1,2,2,2,1,2,3,4,3,2,1,1,1,3,4,4,4,3,4,4,5,5,5,4,4,4,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,4,3,4,4,5,5,5,5,4,3,2,1,1,2,3,3,3,4,3,2,2,2,3,2,2,1,2,2,2,3,3,3,3,3,3,2,2,2,2,], [3,3,3,3,3,2,0,0,0,0,0,0,0,0,1,1,1,2,2,2,1,1,2,3,4,4,3,2,1,1,1,2,3,4,4,4,4,4,3,3,3,4,4,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,4,2,1,2,2,2,3,2,1,1,1,2,2,3,4,3,3,3,3,2,2,2,2,2,1,1,1,2,2,2,2,3,3,3,2,3,3,3,2,], [3,3,3,2,2,1,0,0,0,0,0,0,0,0,0,0,1,2,2,2,2,1,2,2,3,3,3,4,3,3,2,1,1,1,2,2,2,1,1,1,2,3,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,2,1,1,1,1,1,1,1,1,2,3,3,3,3,3,3,3,2,2,2,2,2,1,1,2,2,2,2,2,3,3,2,3,3,3,2,3,2,], [3,4,3,2,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,2,2,1,1,2,3,3,4,3,4,3,3,3,2,1,1,1,1,1,1,1,1,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,2,2,3,3,3,3,3,3,3,2,2,2,2,2,1,1,1,2,2,2,2,2,2,3,3,3,3,3,2,3,3,], [3,3,3,2,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,2,2,2,2,3,3,3,3,3,3,2,2,2,2,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,2,2,3,3,3,3,3,3,2,2,2,2,2,1,1,1,2,2,2,2,3,2,2,3,3,3,3,3,2,3,3,], [3,3,3,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,2,2,2,2,3,3,3,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,2,2,2,3,3,3,2,2,2,1,1,1,1,1,2,2,2,2,3,2,2,3,2,2,3,3,3,3,3,], [3,2,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,2,1,2,2,3,3,3,2,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,2,3,3,3,2,2,2,1,1,1,1,1,1,1,2,2,3,3,2,2,3,2,3,3,3,2,3,3,], [3,2,2,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,2,2,2,2,3,2,2,2,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,2,3,3,2,2,1,1,1,1,1,1,1,2,2,3,3,3,3,3,3,2,3,3,3,3,3,2,], [3,3,2,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,2,2,2,2,2,1,1,1,1,1,1,1,1,2,3,3,3,3,3,3,3,3,3,3,3,3,3,2,], [2,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,2,3,3,3,2,1,3,3,3,3,4,3,3,3,2,], [2,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,2,3,3,3,3,2,2,3,3,3,3,3,3,3,3,3,], [3,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,3,3,3,3,2,3,3,3,3,3,3,3,3,2,2,], [3,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,3,2,2,3,3,2,2,3,3,3,3,3,3,2,2,3,], [3,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,2,2,1,1,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,3,3,2,3,3,3,4,3,3,3,3,3,3,2,2,3,], [2,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,2,3,3,2,3,2,3,4,3,2,3,3,3,3,2,2,3,], [2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,1,2,3,3,3,2,2,2,2,2,3,2,1,0,0,0,0,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,2,3,3,2,3,3,3,3,2,2,3,], [2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,2,2,2,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,3,3,2,3,3,3,3,2,2,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,2,2,2,3,3,2,2,3,2,2,3,3,3,3,3,3,3,3,2,3,], [1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,3,3,3,3,3,2,2,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,2,1,1,1,1,1,1,2,2,1,2,2,2,2,4,4,2,2,2,3,3,3,3,3,3,2,3,3,], [1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,2,3,3,3,4,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,3,2,3,3,3,2,3,4,2,2,3,3,4,3,3,3,3,2,4,3,], [1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,2,2,3,4,4,3,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,3,3,2,1,1,2,2,3,1,2,3,2,2,3,3,2,3,3,3,3,4,3,3,3,2,3,4,], [1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,2,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,3,4,4,3,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,3,1,1,3,2,1,1,1,2,2,3,4,3,2,2,3,2,2,3,3,3,3,3,3,3,3,2,4,], [2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1,2,1,1,2,2,2,2,2,3,3,3,4,3,3,3,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,3,4,1,1,3,4,3,3,2,2,2,3,3,2,3,2,3,2,3,2,3,3,2,2,2,2,2,2,2,], [1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,1,1,1,1,1,2,2,2,2,2,2,2,2,2,3,3,4,3,3,3,2,2,2,2,2,2,1,1,1,1,1,1,2,2,2,2,2,2,1,1,2,3,3,2,2,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,2,3,2,], [1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,4,4,3,3,2,2,2,2,2,2,2,2,1,1,1,2,2,2,2,1,2,4,1,0,1,3,3,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,], [1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,3,3,3,3,4,4,4,4,3,3,3,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,3,1,0,1,3,3,2,2,2,2,2,2,1,2,2,3,2,2,2,2,2,2,2,3,2,2,2,2,], [1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,4,3,4,4,4,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,1,1,1,1,3,1,0,1,3,3,3,3,2,2,2,2,2,2,2,3,2,2,2,2,2,2,2,2,2,3,2,2,], [1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,2,1,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,1,1,1,1,1,1,3,1,0,0,2,3,3,2,2,3,2,2,2,2,2,2,3,2,2,2,2,2,2,2,3,3,2,2,], [2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,2,2,0,0,2,3,3,2,3,3,2,2,2,2,3,2,2,3,2,2,2,1,2,2,2,2,3,2,], [1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,2,0,0,2,3,3,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,1,2,3,], [2,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,3,3,3,3,2,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,2,0,0,1,3,3,2,2,1,2,2,2,2,3,2,2,2,3,2,2,3,2,2,3,2,2,2,], [1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,3,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,0,1,0,0,2,3,3,3,2,2,2,1,2,2,3,3,2,2,2,3,2,2,2,2,3,2,1,2,], [2,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,3,3,2,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,2,3,3,3,2,3,2,2,2,2,3,2,3,2,2,3,2,2,2,2,3,3,3,2,], [1,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,2,3,3,2,2,3,3,2,2,3,3,2,2,3,2,2,2,2,3,3,2,2,3,2,], [2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,2,3,3,1,3,3,2,3,3,3,3,2,2,2,2,2,2,2,3,3,2,2,3,1,] ]) A.nrows(), A.ncols()

A kép közelítése a mátrix szingulárisérték-felbontásának első néhány tagjával:

U, Szigma, V = A.SVD() vagas = zero_matrix(RDF, nrows=100) for i in range(1): vagas[i,i]=1 kep = matrix_plot(A, vmin=0, vmax=5) kep_kozelites = matrix_plot(U*Szigma*vagas*V.transpose(), vmin=0, vmax=5) graphics_array([kep_kozelites])

Borok termőhelyének meghatározása főkomponens-analízissel

Az $M$ mátrix 178 minta 3 tulajdonságát tartalmazza (fenol-, flavonoid- és alkoholtartalom):

from sklearn.datasets import load_wine import numpy as np wine = load_wine() X = wine.data # shape (178, 13) y = wine.target # values: 0, 1, 2 (three wine cultivars) n = len(y) cols = [5,6,0] # total phenols, flavonoids, alcohol X = X[:, cols] y = y M = matrix(X).transpose() pretty_print("M =",M)

A mátrix oszlopai 178 pontot adnak a 3-dimenziós térben (mindegyik pont egy mintának felel meg):

a = M[0]; b = M[1]; c = M[2] points = [((a[i],b[i],c[i]),'brown') for i in range(n)] P = sum(list_plot([pt[0]], color=pt[1], size=40) for pt in points) show(P,frame=False)

A borok 3 termőhelyről származnak, az alábbi ábrán eszerint vannak színezve a pontok:

colors = {0:'red',1:'cyan',2:'green'} points_colored = [((a[i],b[i],c[i]),colors[y[i]]) for i in range(n)] P_colored = sum(list_plot([pt[0]], color=pt[1], size=40) for pt in points_colored) show(P_colored,frame=False)

Az első két szinguláris vektor által kifeszített síkra vetítjük a pontokat:

X = X - X.mean(axis=0) M = matrix(X).transpose() Ut, Szigma, Vt = M.SVD() U = Ut.transpose() V = Vt.transpose() a = (U*M)[0] b = (U*M)[1] points = [((a[i],b[i]),'brown') for i in range(n)] P = sum(list_plot([pt[0]], color=pt[1], size=120) for pt in points) show(P)

Ugyanez a termőhelyek szerint színezett pontokkal:

a = (U*M)[0] b = (U*M)[1] points_colored = [((a[i],b[i]),colors[y[i]]) for i in range(n)] P_colored = sum(list_plot([pt[0]], color=pt[1], size=120) for pt in points_colored) show(P_colored)

Kézzel írt számjegyek felismerése főkomponens-analízissel

Az $M$ mátrix minden oszlopa 64 pixelt tartalmaz, amelyek egy-egy kézzel írt számjegyet ábrázolnak:

from sklearn.datasets import load_digits import matplotlib.pyplot as plt import numpy as np digits = load_digits() X = digits.data # shape: (1797, 64) y = digits.target # labels 0–9 digits_to_keep = [5, 6, 9] #digits_to_keep = [0,1,2,3,4,5,6,7,8,9] mask = np.isin(y, digits_to_keep) X_small = X[mask] y_small = y[mask] M = matrix(X_small).transpose() pretty_print("M =",M)

Az első néhány számjegy így fest:

for i in range(10): plt.figure() plt.imshow(X_small[i].reshape(8, 8), cmap='gray') plt.axis('on') plt.show()

Az $M$ mátrix egy (nagy) ponthalmazt ad meg a 64-dimenziós térben. Ezt vetítjük az első két szinguláris vektor által kifeszített síkra:

Xc = X_small - X_small.mean(axis=0) M = matrix(Xc).transpose() Ut, Szigma, Vt = M.SVD() U = Ut.transpose() V = Vt.transpose() a = (U*M)[0] b = (U*M)[1] c = (U*M)[2] #a = M[42]; b = M[34]; c = M[29] points = [((a[i],b[i]),'brown') for i in range(len(y_small))] P = sum(list_plot([pt[0]], color=pt[1], size=40) for pt in points) show(P)

Az alábbi ábrán a leírt számjegyek szerint vannak színezve a pontok:

colors = {0:'yellow',1:'pink',2:'brown',3:'grey',4:'orange',5:'red',6:'green',7:'cyan',8:'magenta',9:'blue'} points_colored = [((a[i],b[i]),colors[y_small[i]]) for i in range(len(y_small))] P_colored = sum(list_plot([pt[0]], color=pt[1], size=40) for pt in points_colored) show(P_colored)

Az első három szinguláris vektor által kifeszített altérre vetítjük a pontokat:

points = [((a[i],b[i],c[i]),'brown') for i in range(len(y_small))] P = sum(list_plot([pt[0]], color=pt[1], size=300) for pt in points) show(P,frame=False)

Ugyanez a számjegyek szerint színezett pontokkal:

points_colored = [((a[i],b[i],c[i]),colors[y_small[i]]) for i in range(len(y_small))] P_colored = sum(list_plot([pt[0]], color=pt[1], size=300) for pt in points_colored) show(P_colored,frame=False)

Mik a legfontosabb pixelek?

for i in range(64): print(i,"-->",U[0][i])