Advertisement
Riposati

Seno calculado com série de Taylor

May 20th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.25 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <math.h>
  5.  
  6. #define pi 3.14159265358979323846
  7.  
  8. long long m[30][30];
  9.  
  10. double minhaPow(double v,double base){
  11.  
  12.     double resp=1;
  13.     double aux = base;
  14.  
  15.     while(base > 0){
  16.  
  17.         resp *= v;
  18.  
  19.         base--;
  20.     }
  21.  
  22.     return resp;
  23. }
  24.  
  25. void iniMatrix(){ // inicializar a matriz de memoização com 0's
  26.  
  27.     memset(m, 0, sizeof(long long) * 30 * 30);
  28. }
  29.  
  30. double converteGrau(double grau){
  31.  
  32.     double resp = (grau * pi) / 180.0;
  33.  
  34.     return resp;
  35. }
  36.  
  37. long long fat(long long x){ // uso tabulação por questão de desempenho
  38.  
  39.     if(x==0 || x==1)
  40.         return 1;
  41.  
  42.     if(m[x][x]!=0){
  43.  
  44.         return m[x][x];
  45.     }
  46.     else
  47.         return m[x][x] = (x * fat(x-1));
  48. }
  49.  
  50. double meuSeno(double x){
  51.  
  52.     double somaSeno = 0.0;
  53.     int i;
  54.  
  55.     for(i=0;i<9;i++){ // série de Taylor para cálculo do seno
  56.  
  57.         double numerador = (double)minhaPow(-1,i) * (double)minhaPow(x,2 * i + 1);
  58.         double denominador = (double)fat(2 * i + 1);
  59.  
  60.         somaSeno = somaSeno + numerador / denominador;
  61.     }
  62.  
  63.     return somaSeno;
  64. }
  65.  
  66. double meuCosseno(double x){
  67.  
  68.     double soma = 0.0;
  69.     int i;
  70.  
  71.     for(i=0;i<9;i++){ // série de Taylor para cálculo do seno
  72.  
  73.         double numerador = (double)minhaPow(-1,i) * (double)minhaPow(x,2 * i);
  74.         double denominador = (double)fat(2 * i);
  75.  
  76.         soma = soma + numerador / denominador;
  77.     }
  78.     return soma;
  79. }
  80.  
  81. int main()
  82. {
  83.     iniMatrix();
  84.     int valor;
  85.  
  86.     printf("informe o valor pra calcular seno e cosseno ou -1 pra sair e tecle enter\n");
  87.     scanf("%d",&valor);
  88.  
  89.     while(valor!=-1){
  90.  
  91.         printf("Seno Usando Sequencia de Taylor = %lf\n",meuSeno(converteGrau(valor)));
  92.         printf("Cosseno Usando Sequencia de Taylor = %lf\n",meuCosseno(converteGrau(valor)));
  93.  
  94.         printf("-----------------------------------------------------------\n");
  95.  
  96.         printf("Seno pela biblioteca do C = %lf\n",sin(converteGrau(valor)));
  97.         printf("Cosseno pela biblioteca do C = %lf\n\n",cos(converteGrau(valor)));
  98.  
  99.         printf("informe o valor pra calcular seno e cosseno ou -1 pra sair e tecle enter\n");
  100.         printf("\n");
  101.         scanf("%d",&valor);
  102.     }
  103.  
  104.     return 0;
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement