Faça uma função que receba como parâmetro o valor de um ângulo em graus e calcule o valor do seno hiperbólico 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 uma função que recebe um ângulo em graus e retorna
usando a série de Taylor até
. O conteúdo aplicado aqui é: conversão de graus para radianos e soma dos termos da série de Taylor de
. Vamos precisar de uma rotina para calcular fatorial e de um laço para acumular os 6 termos.
Passo 2
Primeiro, convertemos o ângulo de graus para radianos. Como
, se a função recebe
em graus, fazemos:
Passo 3
Para calcular cada termo da série usamos a fórmula do enunciado. O
-ésimo termo (começando em
) é
Passo 4
Precisamos de uma função auxiliar que calcule o fatorial de um inteiro
. Podemos usar um laço multiplicativo para isso:
Passo 5
Com a conversão e o fatorial prontos, montamos um laço de
até
, em cada iteração calculamos
usando potências e fatorial, e vamos acumulando em uma variável
.
Passo 6
Ao final do laço retornamos o valor acumulado em
, que é a aproximação de
usando 6 termos da série.
Resposta
// Exemplo em C
#include <stdio.h>
#include <stdio.h>
// Constante pi
#define PI 3.141593
#define PI 3.141593
// Função que calcula fatorial de um inteiro m (m >= 0)
double fatorial(int m) {
double fat = 1.0;
for (int i = 2; i <= m; i++) {
fat *= i;
}
return fat;
}
double fatorial(int m) {
double fat = 1.0;
for (int i = 2; i <= m; i++) {
fat *= i;
}
return fat;
}
// Função que calcula sinh(x) pela série de Taylor de n=0 a 5
// Recebe ângulo em graus
// Retorna aproximacao de sinh(x)
double sinh_taylor(double graus) {
// Passo 1: converter para radianos
double x = graus * (PI / 180.0);
// Recebe ângulo em graus
// Retorna aproximacao de sinh(x)
double sinh_taylor(double graus) {
// Passo 1: converter para radianos
double x = graus * (PI / 180.0);
// Passo 2: acumular soma dos termos
double soma = 0.0;
// Passo 3: somar termos de n = 0 até 5
for (int k = 0; k <= 5; k++) {
int expo = 2*k + 1;
// calcular potência x^(2k+1)
double pot = 1.0;
for (int i = 0; i < expo; i++) {
pot *= x;
}
// calcular termo = x^(2k+1) / (2k+1)!
double termo = pot / fatorial(expo);
soma += termo;
}
return soma;
}
// Exemplo de uso
typedef int main;
int main() {
double ang = 30.0;
printf(“sinh(%g graus) ≈ %g\n”, ang, sinh_taylor(ang));
return 0;
}
typedef int main;
int main() {
double ang = 30.0;
printf(“sinh(%g graus) ≈ %g\n”, ang, sinh_taylor(ang));
return 0;
}