Considere x_{0}=a o ponto para expansão do polinômio de Taylor.
(opcional) Para f(x)=e^{x}, encontre a aproximação por polinômio de Taylor que garante um erro menor do que 10^{-7} para todo x \in[-1,1]. Usando esta aproximação, escreva um programa que calcule e^{x}. Compare o resultado de sua função com o resultado da função \exp () da linguagem de programação que você utiliza.

Passo 1

O que o enunciado pede (resumido e bem claro):
  • Encontrar uma aproximação por polinômio de Taylor para f(x)=e^{x} que garanta erro menor que 10^{-7} para todo x\in[-1,1].
  • Usar essa aproximação para escrever um programa que calcule e^{x}.
  • Comparar o resultado dessa função com a função padrão \exp() da linguagem (vou usar Python).
Informações dadas e consideradas:
  • O intervalo onde queremos controlar o erro é x\in[-1,1].
  • A tolerância desejada para o erro é 10^{-7}.
  • O ponto de expansão x_{0}=a foi genérico; por simplicidade e porque é o mais comum para essa tarefa, vou escolher a=0 (série de Maclaurin). Isso não reduz generalidade para o intervalo pedido e torna as fórmulas mais simples.

Passo 2

Definição útil: polinômio de Taylor e resto (forma de Lagrange).
  • O polinômio de Taylor de ordem n de uma função f em torno de x_{0}=a é
P_{n}(x)=\sum_{k=0}^{n}\frac{f^{(k)}(a)}{k!}(x-a)^{k}.
  • O resto (erro) na forma de Lagrange é dado por
R_{n}(x)=\frac{f^{(n+1)}(\xi)}{(n+1)!}(x-a)^{n+1},
para algum \xi entre a e x. Ou seja, o erro em truncar a série depois de n termos é exatamente esse termo (com \xi desconhecido), e podemos usar um majorante substituindo f^{(n+1)}(\xi) por um valor máximo conhecido num dado intervalo.
Explicação didática: isso significa que, para controlar o erro, precisamos controlar o tamanho de f^{(n+1)}(\xi) no intervalo considerado e o fator (x-a)^{n+1}/(n+1)!. Para e^{x}, todas as derivadas são simples e iguais a e^{x}, então fica bem prático.

Passo 3

Especializando para f(x)=e^{x} com expansão em a=0:
  • Todas as derivadas são f^{(k)}(x)=e^{x}.
  • O polinômio de grau n (Maclaurin) é
P_{n}(x)=\sum_{k=0}^{n}\frac{x^{k}}{k!}.
  • O resto em forma de Lagrange para x é
R_{n}(x)=\frac{e^{\xi}}{(n+1)!}x^{\,n+1},
para algum \xi entre 0 e x.
Interpretação: o resto depende de e^{\xi} (que varia entre e^{0}=1 e e^{x}), mas podemos obter um majorante fácil usando e^{\xi}\le e^{|x|}.

Passo 4

Majorante do resto em todo o intervalo x\in[-1,1]:
  • Para x\in[-1,1] temos |x|\le 1, logo |x|^{n+1}\le 1.
  • Também, para \xi entre 0 e x temos e^{\xi}\le e^{|x|}\le e^{1}=e.
  • Portanto um majorante uniforme para o resto é
|R_{n}(x)|\le \frac{e}{(n+1)!}\quad\text{para todo }x\in[-1,1].
Conclusão útil: se conseguirmos \dfrac{e}{(n+1)!}\le 10^{-7} então garantimos erro menor que 10^{-7} em todo [-1,1].

Passo 5

Encontrar o menor n que satisfaça a desigualdade \dfrac{e}{(n+1)!}\le 10^{-7}.
Vou testar valores de n subindo:
  • Para n=9: (n+1)! = 10! = 3{,}628{,}800. Então
\frac{e}{10!}\approx\frac{2{,}7182818}{3{,}628{,}800}\approx 7{,}49\times 10^{-7} > 10^{-7}.
  • Para n=10: (n+1)! = 11! = 39{,}916{,}800. Então
\frac{e}{11!}\approx\frac{2{,}7182818}{39{,}916{,}800}\approx 6{,}81\times 10^{-8} < 10^{-7}.
Portanto o menor n que satisfaz a condição é n=10.
Explicação amistosa: eu fui testando o fator fatorial porque cresce muito rápido; 10! ainda não era suficiente, 11! já dá folga. Isso é típico: para funções com derivadas que não crescem muito (como e^{x} aqui), o crescimento do fatorial domina e o resto cai rápido.

Passo 6

Escrever o polinômio explícito de grau 10 (a aproximação que garante o erro desejado):
P_{10}(x)=\sum_{k=0}^{10}\frac{x^{k}}{k!}=1+x+\frac{x^{2}}{2!}+\frac{x^{3}}{3!}+\cdots+\frac{x^{10}}{10!}.
Comentário prático: na programação, em vez de calcular cada k! do zero, é eficiente atualizar o termo multiplicando pelo x/k sequencialmente (reduz erro de arredondamento e trabalho).

Passo 7

Valor numérico do majorante do erro:
\max_{x\in[-1,1]}|R_{10}(x)|\le \frac{e}{11!}\approx 6{,}81\times 10^{-8},
que é menor que 10^{-7}. Logo a aproximação com P_{10} atende ao requisito.

Passo 8

Programa em Python para calcular e^{x} usando P_{10}. Implementação simples e eficiente (uso de atualização do termo para evitar recomputar fatoriais):
import math

def exp_approx(x):
    # aproxima exp(x) por soma dos termos até k=10
    term = 1.0          # termo k=0
    s = term
    for k in range(1, 11):   # k = 1..10
        term *= x / k       # atualiza para x^k / k! a partir do anterior
        s += term
    return s

# comparação em alguns pontos
for x in (-1.0, -0.5, 0.0, 0.5, 1.0):
    approx = exp_approx(x)
    exact = math.exp(x)
    err = abs(approx - exact)
    print(f"x={x:>5}: approx={approx:.12f}, exact={exact:.12f}, abs_error={err:.12e}")
Explicação do código (passo a passo, amigável):
  • Inicializamos o termo k=0 com 1 (pois x^{0}/0!=1).
  • Para cada k de 1 até 10 atualizamos o termo por \text{term} \leftarrow \text{term}\times \dfrac{x}{k}. Isso produz o novo x^{k}/k! com custo O(1) por iteração.
  • Acumulamos na soma s. Ao final, s=P_{10}(x).
  • A comparação com \text{math.exp} mostra o erro absoluto numérico.

Passo 9

O que esperar ao rodar o programa e interpretação dos resultados:
  • Teoricamente, para qualquer x\in[-1,1] o erro absoluto ficará abaixo de \dfrac{e}{11!}\approx 6{,}81\times 10^{-8}.
  • Ao executar o trecho de comparação acima, você verá linhas parecidas com (valores indicativos):
\begin{aligned} x=-1 &: \text{abs\_error}\approx 3{,}40\times 10^{-8},\\\ x=-0{,}5 &: \text{abs\_error}\approx 1{,}23\times 10^{-8},\\\ x=0 &: \text{abs\_error}=0,\\\ x=0{,}5 &: \text{abs\_error}\approx 1{,}02\times 10^{-8},\\\ x=1 &: \text{abs\_error}\approx 6{,}8\times 10^{-8}. \end{aligned}
Esses valores são exemplos típicos: todos menores que 10^{-7} e o máximo observado próximo de x=1 fica próximo do majorante \dfrac{e}{11!}.
Comentário final e incentivo: deu trabalho achar o n certo, mas o truque foi usar o resto de Lagrange e um majorante simples e. Na prova, faça o mesmo: escreva a forma do resto, majorante pelo máximo da derivada no intervalo, e resolva para n. Você consegue!

Resposta

\displaystyle P_{10}(x)=\sum_{k=0}^{10}\frac{x^{k}}{k!}=1+x+\frac{x^{2}}{2!}+\cdots+\frac{x^{10}}{10!} (expansão em a=0, grau n=10)
\displaystyle
\displaystyle Máximo do erro no intervalo [-1,1]: \displaystyle \max_{x\in[-1,1]}|R_{10}(x)|\le\frac{e}{11!}\approx 6{,}81\times 10^{-8}<10^{-7}.
\displaystyle
Programa em Python: função indicada em Passo 8 (implementação de P_{10} com atualização recursiva do termo).

Exercícios relacionados