Guest User

Untitled

a guest
Mar 23rd, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.31 KB | None | 0 0
  1. a = [[1,1,1],[4,3,-1],[3,5,3]]
  2. b = [1,6,4]
  3. c = [[1,-3,7],[-2,6,1],[0,3,-2]]
  4.  
  5. def chechDeterminants(c):
  6. if c[0][0] == 0:
  7. print("Determinant is 0. Re-ordering")
  8. swap(c)
  9. elif c[0][0]*c[1][1]-c[0][1]*c[1][0] == 0:
  10. print("Determinant is 0. Re-ordering")
  11. swap(c)
  12. elif c[0][0]*c[1][1]*c[2][2]+c[0][1]*c[1][2]*c[2][0]+c[0][2]*c[1][0]*c[2][1]-c[0][2]*c[1][1]*c[2][0]-c[0][1]*c[1][0]*c[2][2]-c[0][0]*c[1][2]*c[2][1] == 0:
  13. print("Determinant is 0. Re-ordering")
  14. swap(c)
  15. else:
  16. LU(c)
  17.  
  18. def swap(c):
  19. secondRow = c[1]
  20. lastRow = c[2]
  21. c[1] = lastRow
  22. c[2] = secondRow
  23. print("Reordered Matrix B:")
  24. for i in range(len(c)):
  25. print(c[i])
  26. chechDeterminants(c)
  27.  
  28. def LU(a):
  29.  
  30. n = len(a)
  31.  
  32. L = [[0 for i in range(n)]for i in range(n)]
  33. for i in range(n):
  34. L[i][i] = 1
  35.  
  36. U = [[0 for i in range(n)]for j in range(n)]
  37. for i in range(n):
  38. for j in range(n):
  39. if i == 0:
  40. U[i][j] = a[i][j]
  41. else:
  42. U[i][j] = 0
  43.  
  44. for i in range(n):
  45. for j in range(n):
  46. if j == 0 and i > 0:
  47. L[i][j] = a[i][j]/U[0][0]
  48. else:
  49. if i == 1:
  50. U[i][j] = a[i][j]-(L[i][0]*U[i-1][j])
  51. if i == 2:
  52. if j == 1:
  53. L[i][j] = (a[i][j]-(L[i][j-1]*U[i-2][j]))/U[i-1][j]
  54. if j == 2:
  55. U[i][j] = (a[i][j]-(L[i][j-2]*U[i-2][j])-(L[i][j-1]*U[i-1][j]))
  56.  
  57. print("L Matrix")
  58. for i in range(len(L)):
  59. print(L[i])
  60. print("U Matrix")
  61. for i in range(len(U)):
  62. print(U[i])
  63.  
  64. return L, U
  65.  
  66. def B(L,b,U):
  67. B = [0,0,0]
  68. n = len(b)
  69. for i in range(n):
  70. B[i] = b[i]/L[i][i]
  71. for j in range(n):
  72. if j != i:
  73. B[i] -= L[i][j]*B[j]
  74. print("B Matrix (LY)")
  75. print(B)
  76.  
  77. X(U,B)
  78.  
  79. def X(U,B):
  80. X = [0,0,0]
  81. n = len(B)
  82. for i in range(n-1,-1,-1):
  83. X[i] = B[i]/U[i][i]
  84. for j in range(n):
  85. if j != i:
  86. X[i] += U[i][j]*X[j]
  87. print("Result!")
  88. print(X)
  89.  
  90. print("Matrix A:")
  91. for i in range(len(a)):
  92. print(a[i])
  93. L, U = LU(a)
  94. B(L,b,U)
  95. print("----------------")
  96. print("Matrix B")
  97. for i in range(len(c)):
  98. print(c[i])
  99. chechDeterminants(c)
Add Comment
Please, Sign In to add comment