>}
}
printf (" n");
/*
розрахунок точок решт підінтервалів і їх розсилка по процесорах - адресатам.
*/(process_id == master)
{(process = 1; process <= process_num-1; process + +)
{[0] = ((double) (process_num - process) * x_min
+ (double) (process - 1) * x_max)
/(double) (process_num - 1); [1] = ((double) (process_num - process - 1) * x_min
+ (double) (process) * x_max)
/(double) (process_num - 1); = process; = 1;
printf ("Точки інтервалів% f! n", xb [0]); = MPI_Send (xb, 2, MPI_DOUBLE, target, tag, MPI_COMM_WORLD);
}
}
{= master; = 1; = MPI_Recv (xb, 2, MPI_DOUBLE, source, tag, MPI_COMM_WORLD, & status);
}
/*
дочекаємося, коли всі процесори отримувати свої призначення.
*/= MPI_Barrier (MPI_COMM_WORLD);
if (process_id == master)
{(" n"); ("Головний процесор: n");
printf ("підінтервали призначені. n");
}
/*
кожному процесору потрібно передати кількість точок
для обчислень за широкомовній розсилці.
*/
m = 100;
source = master;
ierr = MPI_Bcast (& m, 1, MPI_INT, source, MPI_COMM_WORLD);
/*
кожен процесор виконує обчислення над своїм інтервалом і передає результат
процесору 0.
*/(process_id! = master)
{
q_local = 0.0;
printf ("Процесор% d активний! n", process_id); (i = 1; i <= m; i + +)
{= ((double) (2 * m - 2 * i + 1) * xb [0]
+ (double) (2 * i - 1) * xb [1])
/(double) (2 * m); _local = q_local + f (x);
} _local = q_local * (xb [1] - xb [0])/(double) (m); = master; = 2; = MPI_Send (& q_local, 1, MPI_DOUBLE, target, tag, MPI_COMM_WORLD);
}
/*
процесор 0 чекає N-1 проміжного результату. <...