Advertisement
Guest User

Untitled

a guest
Jan 18th, 2020
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.35 KB | None | 0 0
  1. from mpi4py import MPI
  2.  
  3.  
  4. def task2_9(x, eps):
  5. if x > 1 or x < -1:
  6. return
  7.  
  8. res = 0
  9. i = 1
  10. val = 1
  11. while val > eps or val < -eps:
  12. res += val
  13. i += 1
  14. val = i * (i + 1) / 2 * (-x) ** (i - 1)
  15. return res
  16.  
  17.  
  18. def task2_9_cor(x):
  19. return 1 / (1 + x) ** 3
  20.  
  21.  
  22. comm = MPI.COMM_WORLD
  23. rank = comm.Get_rank()
  24. size = comm.Get_size()
  25.  
  26.  
  27. if rank == 0:
  28. e = float(input("input power_eps:")) # 10 ** -5
  29. A = float(input("input A:")) # 0.1
  30. B = float(input("input B:")) # 0.8
  31. N = int(input("input N:")) # 19
  32. comm.bcast(e, root=0)
  33.  
  34. coef = (B - A) / (N - 1)
  35. n = int(N / size)
  36.  
  37. x = [[A + coef*((n + 1) * i + j) for j in range(n + 1)] for i in range(N % size)] + \
  38. [[A + coef*(N % size * (n + 1) + n * i + j) for j in range(n)] for i in range(size - N % size)]
  39.  
  40. # for i in range(size):
  41. # print(x[i])
  42. else:
  43. e = comm.bcast(None, root=0)
  44. x = None
  45.  
  46. data = comm.scatter(x, root=0)
  47.  
  48. res = []
  49. for el in data:
  50. res.append([el, task2_9(el, 10 ** -e), task2_9_cor(el)])
  51.  
  52. res = comm.gather(res, root=0)
  53.  
  54. if rank == 0:
  55. print("-----------------------------------")
  56. for i in range(len(res)):
  57. for j in range(len(res[i])):
  58. print(res[i][j])
  59. print("-----------------------------------")
  60.  
  61. # print(rank, data, res)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement