A série de Taylor (ou Maclaurin) para \ln (1+x), válida para |x|<1, é apresentada na Equação 11.18. Escreva um programa em Python que utilize essa série para aproximar o valor de \ln (1+x) para um dado valor de x, calculando o erro absoluto em cada iteração e exibindo esses erros em um gráfico.
\ln (1+x)=\sum_{n=1}^{\infty}(-1)^{n+1}\left(\frac{x^{n}}{n}\right)

Passo 1

O enunciado pede para aproximar \ln(1+x) usando a série de Maclaurin
\ln(1+x)=\sum_{n=1}^{\infty}(-1)^{n+1}\frac{x^n}{n}
válida para |x|<1. Precisamos implementar em Python a soma parcial até um número máximo de termos, calcular o erro absoluto a cada iteração comparando com o valor exato obtido por math.log(1+x) e, por fim, exibir esses erros num gráfico.

Passo 2

Para cada N de 1 até N_{\max}, definimos a soma parcial
S_N = \sum_{n=1}^{N}(-1)^{n+1}\frac{x^n}{n}
e o erro absoluto
\text{erro}_N = \bigl|\ln(1+x) - S_N\bigr|.
Vamos armazenar \text{erro}_N em uma lista para depois plotar \text{erro}_N versus N.

Passo 3

Em Python, usaremos um laço for n in range(1, N_max+1) para acumular termo a termo na variável soma. A cada iteração calculamos
termo = (-1)**(n\(+1\)) * x**n / n
soma \(+=\) termo
erro = abs(math.log(\(1+\)x) - soma)
e guardamos erro em uma lista.

Passo 4

Para plotar, usaremos matplotlib.pyplot. O eixo horizontal será o índice do termo N e o eixo vertical será o erro absoluto correspondente. Bastam chamadas a plt.plot, plt.yscale('log') (opcional para visualizar melhor) e plt.show().

Resposta

import math
import matplotlib.pyplot as plt

def \(aproximar_ln1p\)(x, \(N_max\)):
 """
 Aproxima ln(\(1+\)x) pela série de Maclaurin até \(N_max\) termos.
 Retorna listas de N (1..\(N_max\)), \(soma_parcial\) e \(erro_absoluto\).
 """
 soma \(=0.0\)
 erros = []
 termos = []
 for n in range(1, \(N_max +1\)):
 termo = (-1)**(n\(+1\)) * x**n / n
 soma \(+=\) termo
 erro = abs(math.log(\(1+\) x) - soma)
 termos.append(n)
 erros.append(erro)
 return termos, erros

def \(plotar_erros\)(x, \(N_max =50\)):
 termos, erros = \(aproximar_ln1p\)(x, \(N_max\))
 plt.figure(figsize=(8, 5))
 plt.plot(termos, erros, marker='o', linestyle='-')
 plt.yscale('log') # escala log para ver melhor o decaimento do erro
 plt.title(f"Erro absoluto na aproximação de ln(1+{x}) por série de Taylor")
 plt.xlabel("Número de termos N")
 plt.ylabel("Erro absoluto")
 plt.grid(True, which='both', ls='--')
 plt.show()

if __name__ \(==\) "__main__":
 x \(=0.5\) # escolha um valor de x em (-1,1)
 \(N_max =50\) # número máximo de termos
 \(plotar_erros\)(x, \(N_max\))

Exercícios relacionados