Faça uma função que receba como parâmetro o valor de um ângulo em graus e calcule o valor do seno desse ângulo usando sua respectiva série de Taylor:
sin x=sumn=0^infty (-1)^n(2 n+1)! x^2 n+1=x-x^33!+x^55!-ldots para todo x,
onde x é o valor do ângulo em radianos. Considerar pi=3.141593 e n variando de 0 até 5.

Passo 1

O enunciado pede para criar uma função que receba um ângulo em graus e retorne o seno desse ângulo usando a série de Taylor de ordem 5. Vamos usar o conceito de expansão em série de Taylor e também converter graus para radianos. Precisaremos de:
  • A conversão de graus para radianos com
    x = graus \times \frac{\pi}{180}
  • A fórmula da série de Taylor de sin x até n=5:
    sin x = sumn=0^5 (-1)^n(2n+1)! x^2n+1

Passo 2

Primeiro, convertemos o ângulo de graus para radianos. Considerando pi = 3.141593, fazemos:
x = graus times 3.141593180

Passo 3

Em seguida, lembramos que precisamos somar os termos da série de Taylor de n=0 a n=5. Cada termo é dado por:
Tn = (-1)^n ; x^2n+1(2n+1)!

Passo 4

Para calcular cada termo, vamos implementar uma função auxiliar de fatorial. O fatorial de um inteiro m é:
m! = 1 times 2 times 3 times cdots times m

Passo 5

Agora implementamos o loop principal que varre n de 0 até 5, calcula Tn usando potências e fatorial, e acumula na soma. O sinal alterna por (-1)^n.

Passo 6

Por fim, retornamos a soma acumulada como aproximação de sin do ângulo. Abaixo está uma implementação em C que segue esses passos.

Resposta

#include <stdio.h>
// Função para calcular o fatorial de m
long factorial(int m) {
long result = 1;
for (int i = 1; i <= m; i++) {
result *= i;
}
return result;
}
// Função que calcula o seno via série de Taylor até n = 5
double sine_taylor(double graus) {
const double pi = 3.141593;
double x = graus * pi / 180.0; // converte para radianos
double sum = 0.0;
for (int n = 0; n <= 5; n++) {
    int expo = 2*n + 1;
    double term = 1.0;

    // calcula x^(2n+1)
    for (int i = 0; i < expo; i++) {
        term *= x;
    }

    // divide pelo fatorial de (2n+1)
    term /= factorial(expo);

    // aplica o sinal (-1)^n
    if (n % 2 != 0) {
        term = -term;
    }

    sum += term;
}

return sum;
}
int main() {
double angulo = 30.0;
printf(“sen(%.2f°) ≈ %.6f\n”, angulo, sine_taylor(angulo));
return 0;
}

Exercícios relacionados