Buscar

Calculo de integral usando regra do Trapézio, OpenMp, Threads, Balanceamento de cagra e discretização

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; 
}

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?