Estou com dificuldade de realizar este exercício da linguagem C utilizando a biblioteca MPI.
Preciso criar um programa para calcular a tangente do ângulo passado como parâmetro na execução do programa e testar com 4 e 8 processadores. O objetivo desta aplicação é utilizar as séries de Taylor para o cálculo do seno e do cosseno de um determinado ângulo, com o intuito de calcular a tangente deste ângulo.
Esse é o formulário:
Fórmula para o cálculo do seno é usada a fórmula infinita:
Sen x = x1 – x3 + x5 – x7 + x9 – x11 + …
1! 3! 5! 7! 9! 11! (! = fatorial)
Fórmula para o cálculo do cosseno é usada a fórmula infinita:
Cos x = x0 – x2 + x4 – x6 + x8 – x10 + …
0! 2! 4! 6! 8! 10!
Fórmula para o cálculo da tangente é usada a fórmula:
Tan x = sen x
cos x
Desenvolvi este código para a solução do problema:
#include"mpi.h"#include<stdio.h>#include<math.h>#include<stdlib.h>long fat(int num){if(num ==0|| num ==1)return1;elsereturn num * fat(num-1);}int main(int argc,char*argv[]){double ang_aux, graus, min, seg, ang, sen, cos,
tg, tempoInicial, tempoFinal, soma_sen,
soma_cos, PI=3.14;int n, myid, numprocesso, i;
MPI_Init(&argc,&argv);
MPI_Comm_size(MPI_COMM_WORLD,&numprocesso);
MPI_Comm_rank(MPI_COMM_WORLD,&myid);if(myid==0){
printf("Cálculo das funções trigonométricas através do polinômio de Taylor de forma paralela \n");
graus = atoi(argv[1]);
min = atoi(argv[2]);
seg = atoi(argv[3]);
n = atoi(argv[4]);
ang_aux =(double)(graus +(min /60.0)+(seg /3600.0));
ang =(ang_aux * PI)/(180.0);
printf("\nN=%d",n);
printf("\nGraus: %.0lf Minutos: %.0lf Segundos: %.0lf", graus, min, seg);
tempoInicial = MPI_Wtime();}
MPI_Bcast(&n,1, MPI_INT,0, MPI_COMM_WORLD);
MPI_Bcast(&ang,1, MPI_DOUBLE,0, MPI_COMM_WORLD);for(i = myid; i < n; i += numprocesso){
cos +=(double)(pow(-1, i)* pow(ang,2* i))/ fat(2* i);
sen +=(double)(pow(-1, i)* pow(ang,2* i +1))/ fat(2* i +1);}
MPI_Reduce(&sen,&soma_sen,1, MPI_DOUBLE, MPI_SUM,0,MPI_COMM_WORLD);
MPI_Reduce(&cos,&soma_cos,1, MPI_DOUBLE, MPI_SUM,0,MPI_COMM_WORLD);
tg =(soma_sen / soma_cos);if(myid ==0){
printf("\nSeno de %.1lf %.1lf %.1lf em %d iteracoes = %1.15lf\n\n", graus, min, seg, n, soma_sen);
printf("Cosseno de %.1lf %.1lf %.1lf em %d iteracoes = %1.15lf\n\n", graus, min, seg, n, soma_cos);
printf("Tangente de %.1lf %.1lf %.1lf em %d iteracoes = %1.15lf\n\n", graus, min, seg, n, tg);
tempoFinal = MPI_Wtime();
printf("\nTempo inicial: %.5lf\n", fabs(tempoInicial));
printf("\nTempo final: %.5lf\n", fabs(tempoFinal));
printf("\nTempo decorrido: %.5lf\n", fabs(tempoFinal - tempoInicial));}
MPI_Finalize();return0;}
O problema é que na hora da execução do programa no simulador na máquina virtual, eu recebo um erro, e não consigo executar o processo. Já tentei mudar várias coisas no código, mas este erro sempre persiste.
Pergunta
melotjk
Boa noite,
Estou com dificuldade de realizar este exercício da linguagem C utilizando a biblioteca MPI.
Preciso criar um programa para calcular a tangente do ângulo passado como parâmetro na execução do programa e testar com 4 e 8 processadores. O objetivo desta aplicação é utilizar as séries de Taylor para o cálculo do seno e do cosseno de um determinado ângulo, com o intuito de calcular a tangente deste ângulo.
Esse é o formulário:
Fórmula para o cálculo do seno é usada a fórmula infinita:
Sen x = x1 – x3 + x5 – x7 + x9 – x11 + …
1! 3! 5! 7! 9! 11! (! = fatorial)
Fórmula para o cálculo do cosseno é usada a fórmula infinita:
Cos x = x0 – x2 + x4 – x6 + x8 – x10 + …
0! 2! 4! 6! 8! 10!
Fórmula para o cálculo da tangente é usada a fórmula:
Tan x = sen x
cos x
Desenvolvi este código para a solução do problema:
O problema é que na hora da execução do programa no simulador na máquina virtual, eu recebo um erro, e não consigo executar o processo. Já tentei mudar várias coisas no código, mas este erro sempre persiste.
Editado por melotjk
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.