Advertisement
Guest User

Untitled

a guest
Feb 6th, 2016
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.10 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. import numpy as np
  5.  
  6. matrix_2_2 = True
  7. matrix_3_3 = False
  8.  
  9. if matrix_2_2 == True:
  10. comp_x = 9999.0
  11. matrix_a = []
  12. vec_solu = np.array([0, 0], 'f4')
  13. eq_1 = np.array([3, 2, 7], 'f4')
  14. eq_2 = np.array([4, 6, 16], 'f4')
  15.  
  16. if eq_1[0] > eq_1[1] and eq_2[1] > eq_2[0]:
  17. pass
  18.  
  19. else:
  20. print 'El sistema de ecuaciones no es una matriz diagonalmente dominante, no habrá convergencia con el método Jacobi'
  21. quit()
  22.  
  23. eq_1_desp = [eq_1[2], -eq_1[1]]
  24. for i in range(2):
  25. eq_1_desp[i] = eq_1_desp[i]/eq_1[0]
  26. matrix_a.append(eq_1_desp)
  27.  
  28. eq_2_desp = [eq_2[2], -eq_2[0]]
  29. for i in range(2):
  30. eq_2_desp[i] = eq_2_desp[i]/eq_2[1]
  31. matrix_a.append(eq_2_desp)
  32.  
  33. matrix_a = np.asarray(matrix_a, 'f4')
  34.  
  35. sol_x = matrix_a[0][0] + (matrix_a[0][1] * vec_solu[1])
  36. sol_y = matrix_a[1][0] + (matrix_a[1][1] * vec_solu[0])
  37. print sol_x
  38. print sol_y
  39. print
  40. print
  41.  
  42. vec_solu[0] = sol_x
  43. vec_solu[1] = sol_y
  44.  
  45.  
  46. while 0.001 < abs(comp_x - sol_x):
  47. comp_x = vec_solu[0]
  48.  
  49. sol_x = matrix_a[0][0] + (matrix_a[0][1] * vec_solu[1])
  50. sol_y = matrix_a[1][0] + (matrix_a[1][1] * vec_solu[0])
  51. print sol_x
  52. print sol_y
  53. print
  54. print
  55. vec_solu[0] = sol_x
  56. vec_solu[1] = sol_y
  57.  
  58. print vec_solu
  59.  
  60. elif matrix_3_3 == True:
  61. comp_x = 9999.0
  62. matrix_a = []
  63. vec_solu = np.array([0, 0, 0], 'f4')
  64. eq_1 = np.array([4, -1, -1, 3], 'f4')
  65. eq_2 = np.array([-2, 6, 1, 9], 'f4')
  66. eq_3 = np.array([-1, 1, 7, -6], 'f4')
  67.  
  68. if eq_1[0] > eq_1[1] + eq_1[2] and eq_2[1] > eq_2[0] + eq_2[2] and eq_3[2] > eq_3[0] + eq_3[1]:
  69. pass
  70.  
  71. else:
  72. print 'El sistema de ecuaciones no es una matriz diagonalmente dominante, no habrá convergencia con el método Jacobi'
  73. quit()
  74.  
  75. eq_1_desp = [eq_1[3], -eq_1[1], -eq_1[2]]
  76. for i in range(3):
  77. eq_1_desp[i] = eq_1_desp[i]/eq_1[0]
  78. matrix_a.append(eq_1_desp)
  79.  
  80. eq_2_desp = [eq_2[3], -eq_2[0], -eq_2[2]]
  81. for i in range(3):
  82. eq_2_desp[i] = eq_2_desp[i]/eq_2[1]
  83. matrix_a.append(eq_2_desp)
  84.  
  85. eq_3_desp = [eq_3[3], -eq_3[0], -eq_3[1]]
  86. for i in range(3):
  87. eq_3_desp[i] = eq_3_desp[i]/eq_3[2]
  88. matrix_a.append(eq_3_desp)
  89.  
  90. matrix_a = np.asarray(matrix_a, 'f4')
  91.  
  92. sol_x = matrix_a[0][0] + (matrix_a[0][1] * vec_solu[1]) + (matrix_a[0][2] * vec_solu[2])
  93. sol_y = matrix_a[1][0] + (matrix_a[1][1] * vec_solu[0]) + (matrix_a[1][2] * vec_solu[2])
  94. sol_z = matrix_a[2][0] + (matrix_a[2][1] * vec_solu[0]) + (matrix_a[2][2] * vec_solu[1])
  95.  
  96. vec_solu[0] = sol_x
  97. vec_solu[1] = sol_y
  98. vec_solu[2] = sol_z
  99.  
  100.  
  101. while 0.00001 < abs(comp_x - sol_x):
  102. comp_x = vec_solu[0]
  103.  
  104. sol_x = matrix_a[0][0] + (matrix_a[0][1] * vec_solu[1]) + (matrix_a[0][2] * vec_solu[2])
  105. sol_y = matrix_a[1][0] + (matrix_a[1][1] * vec_solu[0]) + (matrix_a[1][2] * vec_solu[2])
  106. sol_z = matrix_a[2][0] + (matrix_a[2][1] * vec_solu[0]) + (matrix_a[2][2] * vec_solu[1])
  107.  
  108. vec_solu[0] = sol_x
  109. vec_solu[1] = sol_y
  110. vec_solu[2] = sol_z
  111.  
  112. print vec_solu
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement