A função seno (x) pode ser aproximada com ajuda de uma série de potência, conforme equação a seguir:
c seno(x)=x-x^33!+x^55!-x^77!+x^99!-cdots ou seno(x)=sumn=0^infty (-1)^n x^2 n+1(2 n+1)!
Desenvolva uma função (estrutura def) que receba dois argumentos, x e n (onde n é inteiro e representa o número de termos) e resolva a série do seno (x). Após término do desenvolvimento da função, crie um programa que plote um gráfico para o valor de seno(x) para diferentes números de termos (n). Use x=7. 0 Valor de n deve ser tal que garanta um valor praticamente constante. Atenção: Você deve implementar a função citada. Não use a função seno importada de outras bibliotecas.

Passo 1

Beleza, vamos lá! Você tem um exercício que envolve a aproximação da função seno usando uma série de potências. Basicamente, a ideia é somar vários termos dessa série para chegar perto do valor real de seno(x). Para resolver isso, vamos precisar entender séries de potências, desenvolver uma função em Python que calcula essa soma até n termos, e depois plotar um gráfico para ver como a aproximação se comporta conforme aumentamos o número de termos. Vamos usar x = 7 e escolher um n que faça o valor se estabilizar, ou seja, não mude muito com mais termos.

Passo 2

Primeiro, vamos entender a série de potências do seno. A função seno pode ser expandida como:
seno(x) = x - x^33! + x^55! - x^77! + x^99! - cdots
Isso significa que para calcular seno(x), somamos termos alternados de potências ímpares de x divididas pelo fatorial desses números. Cada termo adicional melhora a precisão da aproximação.

Passo 3

Agora, vamos criar uma função em Python que recebe dois parâmetros: x e n, onde x é o valor para o qual queremos calcular o seno e n é o número de termos que vamos somar da série. Dentro da função, vamos iterar de 0 até n-1, calculando cada termo da série e acumulando a soma. Lembre-se que o fatorial de um número é o produto de todos os inteiros positivos até ele, e em Python podemos usar a função math.factorial para isso.

Passo 4

Vamos ao código da função:
import math

def seno_serie(x, n):
    soma = 0
    for i in range(n):
        termo = ((-1)**i) * (x**(2*i + 1)) / math.factorial(2*i + 1)
        soma += termo
    return soma
Aqui, seno_serie calcula a soma dos n primeiros termos da série do seno para o valor x.

Passo 5

Depois de ter a função pronta, vamos criar um programa para plotar o gráfico de seno(x) usando diferentes valores de n, mantendo x = 7. Isso nos ajudará a ver como a aproximação fica mais precisa conforme aumentamos o número de termos. Vamos usar a biblioteca matplotlib para os gráficos.

Passo 6

Segue o código completo que implementa a função e plota o gráfico:
import math
import matplotlib.pyplot as plt
import numpy as np

def seno_serie(x, n):
    soma = 0
    for i in range(n):
        termo = ((-1)**i) * (x**(2*i + 1)) / math.factorial(2*i + 1)
        soma += termo
    return soma

x = 7
ns = range(1, 20)  # Testando de 1 a 19 termos
valores = [seno_serie(x, n) for n in ns]

plt.plot(ns, valores, marker='o')
plt.axhline(y=math.sin(x), color='r', linestyle='--', label='math.sin(x)')
plt.title('Aproximação da função seno(x) com séries de potências')
plt.xlabel('Número de termos (n)')
plt.ylabel('seno(x) aproximado')
plt.legend()
plt.grid(True)
plt.show()
Este script calcula o seno de 7 usando de 1 a 19 termos da série e plota os resultados, comparando com o valor real obtido pela função math.sin.

Resposta

Ao executar o programa, você verá que conforme aumentamos o número de termos n, a aproximação de seno(7) se torna cada vez mais precisa, convergindo para o valor real de aproximadamente 0.65699. Assim, escolhendo um n suficientemente grande (por exemplo, n = 10 ou mais), garantimos que o valor de seno(x) esteja praticamente constante e próximo do valor verdadeiro.

Exercícios relacionados