Como visto na questão 6, uma função senoidal pode ser calculada por meio de uma série infinita. Escreva um programa em Scilab, Octave ou Python que implementa a fórmula da questão 10, de modo que ela calcule e imprima os valores de cos (x) à medida que cada termo da série é adicionado. Em outras palavras, calcule e imprima em sequência os valores para
& cos (x)=1 & cos (x)=1-x^22! & cos (x)=1-x^22!+x^44!
até o termo de ordem n de sua escolha. Para cada um dos resultados anteriores, calcule e exiba o erro relativo percentual como
er=x-barxx times 100

Passo 1

O enunciado pede que a gente escreva um programa (em Python, Octave ou Scilab) que aproxime cos(x) usando a série de Taylor e, a cada termo adicionado, imprima o valor parcial da soma e o erro relativo percentual em relação ao valor exato de cos(x).

Passo 2

O conteúdo é a série de Taylor para função cosseno em torno de zero:
cos(x)=sumk=0^infty(-1)^k,x^2k(2k)!
Para truncar até a ordem n, somamos os termos de k=0 a k=n.

Passo 3

Para não recalcular fatoriais a cada iteração, usamos a relação de recorrência entre termos consecutivos:
t0=1, tk=tk-1timesl(-1r)timesx^2(2k-1)(2k)
Então mantemos uma variável termo que é tk e uma variável aprox que acumula a soma dos termos.

Passo 4

O erro relativo percentual é dado por
er = cos(x) - aproxcos(x) times 100,
onde usamos math.cos(x) como valor “exato” de referência. Se math.cos(x) for zero, marcamos o erro como indefinido.

Passo 5

Abaixo está um exemplo de implementação em Python. Ele lê do usuário o valor de (em radianos) e o número de termos , e imprime a aproximação e o erro a cada iteração.
import math

def cos_series(x, n):
    """
    Aproxima \(\cos(x)\) até o termo de ordem \(2n\) da série de Taylor.
    Em cada passo, imprime a soma parcial e o erro relativo percentual.
    """
    aprox = 0.0
    termo = 1.0      # t_0 = 1
    cos_exato = math.cos(x)
    
    for k in range(0, n+1):
        if k == 0:
            termo = 1.0
        else:
            # relação de recorrência: \(t_k = t_{k-1} \cdot (-1) \cdot \frac{x^2}{(2k-1)(2k)}\)
            termo *= -1.0 * x * x / ((2 * k - 1) * (2 * k))
        aprox += termo
        
        if cos_exato != 0.0:
            erro = (cos_exato - aprox) / cos_exato * 100.0
        else:
            erro = float('nan')
        
        print(f"k={k:2d} | aprox = {aprox:.12f} | erro relativo = {erro:.6f}%")

if __name__ == "__main__":
    # Leitura de dados
    x = float(input("Digite o valor de x (radianos): "))
    n = int(input("Digite o número de termos n: "))
    print("\nCalculando série de Taylor para cos(x):\n")
    cos_series(x, n)

Resposta

O programa acima implementa a fórmula pedida, imprimindo a cada termo da série de Taylor o valor parcial de cos(x) e o erro relativo percentual.

Exercícios relacionados