A série infinita apresentada na Equação 11.16 converge para o valor \lambda=\frac{\pi^{4}}{90} quando n \rightarrow \infty. Escreva um programa em Python para calcular a aproximação de f(n) com base em um número de iteraçōes fornecido pelo usuário. Para cada iteração, calcule o erro relativo em relaçāo ao valor exato de \lambda. Ao final, gere um gráfico que mostre a evoluçāo do erro relativo ao longo das iteraçöes.
f(n)=\sum_{n=1}^{\infty} \frac{1}{n^{4}}

Passo 1

O enunciado pede para aproximar a série
f(n)=\sum_{k=1}^{n}\frac{1}{k^{4}}
até um número de iterações n fornecido pelo usuário, comparar cada soma parcial com o valor exato
\lambda = \frac{\pi^{4}}{90}
calculando o erro relativo
\text{erro}(n)=\frac{\bigl|f(n)-\lambda\bigr|}{\lambda}
e, ao final, traçar um gráfico que mostre a evolução de \text{erro}(n) em função de n.

Passo 2

Para implementar isso em Python vamos precisar:
  1. Calcular o valor exato \lambda = \pi^{4}/90 usando math.pi.
  2. Fazer um loop de k=1 até k=n, acumulando a soma parcial e guardando, a cada passo, o erro relativo.
  3. Usar matplotlib para traçar o gráfico de \text{erro}(n) vs.\ n, preferencialmente em escala logarítmica no eixo vertical para evidenciar a convergência.

Passo 3

Segue o programa Python completo. Ele:
  • N do usuário.
  • Itera acumulando a soma \sum_{k=1}^{n}1/k^4.
  • Calcula a lista de erros relativos.
  • Plota o gráfico com escala log no eixo y.

Resposta

import math
import matplotlib.pyplot as plt

def \(aprox_serie\)(N):
 # valor exato da soma até infinito
 lam = math.pi**4 / 90
 soma \(=0.0\)
 erros = []
 for k in range(1, N\(+1\)):
 soma \(+=1.0\) / k**4
 \(erro_rel\) = abs(soma - lam) / lam
 erros.append(\(erro_rel\))
 return erros

def main():
 N = int(input("Digite o número de iterações (N): "))
 erros = \(aprox_serie\)(N)
 xs = list(range(1, N\(+1\)))

 plt.figure()
 plt.plot(xs, erros, marker='o', linestyle='-')
 plt.yscale('log')
 plt.xlabel("Iteração \(n\)")
 plt.ylabel("Erro relativo")
 plt.title("Convergência de \(\sum_{k=1}^{n} \frac{1}{k^{4}}\)")
 plt.grid(True, which="both", ls="--")
 plt.show()

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

Exercícios relacionados