Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from mpi4py import MPI
- def task2_9(x, eps):
- if x > 1 or x < -1:
- return
- res = 0
- i = 1
- val = 1
- while val > eps or val < -eps:
- res += val
- i += 1
- val = i * (i + 1) / 2 * (-x) ** (i - 1)
- return res
- def task2_9_cor(x):
- return 1 / (1 + x) ** 3
- comm = MPI.COMM_WORLD
- rank = comm.Get_rank()
- size = comm.Get_size()
- if rank == 0:
- e = float(input("input power_eps:")) # 10 ** -5
- A = float(input("input A:")) # 0.1
- B = float(input("input B:")) # 0.8
- N = int(input("input N:")) # 19
- comm.bcast(e, root=0)
- coef = (B - A) / (N - 1)
- n = int(N / size)
- x = [[A + coef*((n + 1) * i + j) for j in range(n + 1)] for i in range(N % size)] + \
- [[A + coef*(N % size * (n + 1) + n * i + j) for j in range(n)] for i in range(size - N % size)]
- # for i in range(size):
- # print(x[i])
- else:
- e = comm.bcast(None, root=0)
- x = None
- data = comm.scatter(x, root=0)
- res = []
- for el in data:
- res.append([el, task2_9(el, 10 ** -e), task2_9_cor(el)])
- res = comm.gather(res, root=0)
- if rank == 0:
- print("-----------------------------------")
- for i in range(len(res)):
- for j in range(len(res[i])):
- print(res[i][j])
- print("-----------------------------------")
- # print(rank, data, res)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement