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:
para todo
,
onde
é o valor do ângulo em radianos. Considerar
e
variando de 0 até 5.
onde
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 comx = graus \times \frac{\pi}{180}
-
A fórmula da série de Taylor de
até :
Passo 2
Primeiro, convertemos o ângulo de graus para radianos. Considerando
, fazemos:
Passo 3
Em seguida, lembramos que precisamos somar os termos da série de Taylor de
a
. Cada termo é dado por:
Passo 4
Para calcular cada termo, vamos implementar uma função auxiliar de fatorial. O fatorial de um inteiro
é:
Passo 5
Agora implementamos o loop principal que varre
de 0 até 5, calcula
usando potências e fatorial, e acumula na soma. O sinal alterna por
.
Passo 6
Por fim, retornamos a soma acumulada como aproximação de
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;
}
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;
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;
}
double angulo = 30.0;
printf(“sen(%.2f°) ≈ %.6f\n”, angulo, sine_taylor(angulo));
return 0;
}