Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
#include <stdio.h> #include <stdlib.h> #include <math.h> #include <omp.h> #define chunk 1 double f(double x); int main(int argc, char *argv[]) { int thread_count = strtol(argv[1], NULL, 10); double integral = 0.0; //Armazenar o resultado das somas const double inicial = 0.0; //Intervalo Inicial const double final = 100.0; // Intervalo Final int part = 0; // Número de partições double h = 0.0001; // Discretização double x = 0.0; // Armazena o valor de X da função integrada part = (final - inicial) / h; // Quantidade de partições #pragma omp parallel for private(x) schedule(static, 1) reduction(+ \ : integral) num_threads(thread_count) for (int i = 1; i <= part - 1; i++) // Loop { x = inicial + i * h; //Valor de X da função a ser integrada integral = integral + f(x); // Somando os valores calculados } integral = (integral + (f(inicial) + f(final)) / 2.0) * h; // Calculando o valor final printf("\n%s%f%s%d%s%f\n", "Discretização = ", h, " Número de partições n = ", part, " Valor da Integral = ", integral); return 0; } double f(double x) { double return_val; // declarando variavel que irá receber a função f(x) return_val = sqrt(pow(1000, 2) - pow(x, 2));// Função return return_val; }