Guest User

Untitled

a guest
Dec 3rd, 2019
100
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import numpy as np
  2. import random
  3. from scipy import linalg
  4.  
  5. n = 4
  6. A = np.array([[3,2,9,5],
  7. [3,1,3,11],
  8. [3,7,4,8],
  9. [5,2,4,9]])
  10. x1 = np.zeros(n)
  11. x2 = np.zeros(n)
  12. l1 = np.zeros(n)
  13. l2 = np.zeros(n)
  14. y = np.zeros(n)
  15.  
  16. def otn(y, x):
  17. result = np.zeros(x.size)
  18. for i in range(x.size):
  19. if x[i] != 0:
  20. result[i] = y[i]/x[i]
  21. return result
  22.  
  23. def usl(y, x):
  24. eps = 0.00001
  25. result = False
  26. for i in range(x.size):
  27. if abs(y[i]-x[i])<=eps:
  28. result = True
  29. return result
  30.  
  31. for i in range(n):
  32. y[i] = 1
  33. l2[i] = 1
  34. k = 1
  35. x2 = y/np.linalg.norm(y)
  36.  
  37. while True:
  38. x1 = x2
  39. l1 = l2
  40. y = A.dot(x1)
  41. x2 = y/np.linalg.norm(y)
  42. l2 = otn(y, x1)
  43. k += 1
  44. if usl(l1,l2):
  45. break
  46. print("k =",k)
  47. s= 0
  48. for i in range(n):
  49. s += l2[i]
  50. L = s / n
  51. print(L)
  52. print(linalg.eigvals(A))
RAW Paste Data