Advertisement
JoelSjogren

jordan normal form

May 30th, 2018
377
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.75 KB | None | 0 0
  1. J = matrix([[2 ,0, 0, 0, 0, 0],
  2.             [0,-1, 0, 0, 0, 0],
  3.             [0, 0, 3, 0, 0, 0],
  4.             [0, 0, 0, 3, 1, 0],
  5.             [0, 0, 0, 0, 3, 1],
  6.             [0, 0, 0, 0, 0, 3]])
  7.  
  8. P = matrix([[1, 3, 5, 2,-3,-2],
  9.             [1, 2, 1, 2, 1, 2],
  10.             [1, 2, 3, 4, 5, 6],
  11.             [1, 0, 0, 4, 2, 1],
  12.             [6, 4, 2, 3,-1, 5],
  13.             [0, 1, 2, 0, 1, 2]])
  14.  
  15. A = (P \ J * P).transpose()
  16. #print(A)
  17.  
  18. I = identity_matrix(6)
  19.  
  20. def gauss(M):
  21.     M = copy(M)
  22.     print(M)
  23.     for i in range(M.nrows()):
  24.         r = range(i+1, M.nrows())
  25.         if all(M[j,i] == 0 for j in r):
  26.             break
  27. #        try:
  28. #            k = [M[j,i] != 0 for j in r].index(True)
  29. #        except ValueError:
  30. #            continue
  31. #        if any(abs(M[j,i]) for j in r):
  32. #            j =
  33.         M[i,:] /= M[i,i]
  34.         for j in r:
  35.             M[j,:] -= M[j,i] * M[i,:]
  36.     print(M)
  37.     print(i)
  38.     for i in range(i-1, -1, -1):
  39.         for j in range(i-1, -1, -1):
  40.             M[j,:] -= M[j,i] * M[i,:]
  41.     return M #print(M)
  42.            
  43. B = 16*(A-3*I)
  44. #gauss(B)
  45.  
  46. v1 = matrix([[1],[-1],[-3],[4],[2],[0]])
  47. v2 = matrix([[-1],[3],[7],[-4],[0],[4]])
  48. C = block_matrix([[B, 16*v1, 16*v2]])
  49. gC = gauss(C)
  50.  
  51. w0 = matrix([[31/4],[-1/4],[-33/4],[10],[0],[0]])
  52. D = block_matrix([[B, 16*w0, 16*v1, 16*v2]])
  53. gD = gauss(D)
  54.  
  55. Q = matrix([[1, 1, 1, 0, 6, 8],
  56.             [2, 3,-1, 1, 5, 0],
  57.             [1, 5,-3, 2, 4,-7],
  58.             [2, 2, 4, 0, 3,11],
  59.             [1,-3, 2, 1, 0, 0],
  60.             [2,-2, 0, 2, 7, 0]])
  61.  
  62. K = matrix([[-1,0, 0, 0, 0, 0],
  63.             [0, 2, 0, 0, 0, 0],
  64.             [0, 0, 3, 0, 0, 0],
  65.             [0, 0, 0, 3, 1, 0],
  66.             [0, 0, 0, 0, 3, 1],
  67.             [0, 0, 0, 0, 0, 3]])
  68.  
  69. assert A*Q == Q*K
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement