A expansāo em série de Taylor da funçāo f(x)=e^{x} é representada pela Equação 11.10. Desenvolva um programa em Python para calcular a aproximação de e^{x} com base nessa série, interrompendo as iteraçōes quando for atingido um erro absoluto mínimo pré-definido. Para melhor visualizaçāo do desempenho da aproximaçāo, gere um gráfico que mostre a evolugäo do erro absoluto a cada iteração.
e^{x}=\sum_{n=0}^{\infty} \frac{x^{n}}{n!}

Passo 1

O enunciado pede um programa em Python que use a expansão em série de Taylor
e^{x} = \sum_{n=0}^{\infty} \frac{x^{n}}{n!}
para aproximar e^{x}, interrompendo as iterações quando o erro absoluto entre a soma parcial e o valor exato (obtido por math.exp(x)) ficar abaixo de uma tolerância fornecida. Além disso, precisamos gerar um gráfico mostrando a evolução desse erro a cada iteração.

Passo 2

Para implementar isso, vamos:
  1. Ler do usuário o valor de x e a tolerância \mathrm{tol}.
  2. Inicializar a soma parcial S_0 = 1 (correspondente a n=0) e o primeiro termo T_0 = 1.
  3. Calcular o erro absoluto inicial \lvert e^{x} - S_0\rvert usando math.exp(x).
  4. Iterar para n = 1,2,3,\dots atualizando
T_n = T_{n-1}\times\frac{x}{n}, \quad S_n = S_{n-1} + T_n,
até que \lvert e^{x} - S_n\rvert < \mathrm{tol}.
5. Em cada iteração, armazenar o erro em uma lista para depois plotar.

Passo 3

Depois de obter a lista errors com o erro absoluto em cada iteração, vamos usar Matplotlib para gerar um gráfico onde o eixo x é o número da iteração e o eixo y é o erro absoluto. Podemos usar escala semilogarítmica em y para ver melhor a queda do erro.

Resposta

import math
import matplotlib.pyplot as plt

def \(approx_exp\)(x, tol):
 term \(=1.0\) # T\(0= x^0\) / 0! \(=1\)
 S = term # soma parcial S\(0=1\)
 errors = [abs(math.exp(x) - S)]
 n \(=1\)
 # itera até o erro ficar abaixo de tol
 while errors[-1] > tol:
 term *= x / n # Tn = \(T_{n-1}\) * x/n
 S \(+=\) term # \(S_n\) = \(S_{n-1}\) + \(T_n\)
 errors.append(abs(math.exp(x) - S))
 n \(+=1\)
 return S, errors

def main():
 x = float(input("Digite o valor de x: "))
 tol = float(input("Digite a tolerância: "))
 S, errors = \(approx_exp\)(x, tol)
 print(f"Aproximação de e^{x} = {S:.12f}")
 print(f"Número de termos usados = {len(errors)}")
 # plot do erro em escala logarítmica vertical
 plt.semilogy(range(len(errors)), errors, marker='o')
 plt.xlabel("Iteração")
 plt.ylabel("Erro absoluto")
 plt.title(f"Convergência da série de Taylor para e^{x}")
 plt.grid(True, which="both", ls="--")
 plt.show()

if __name__ \(==\) "__main__":
 main()

Exercícios relacionados