Escrever um programa no MatLab com o objetivo de calcular aproximações de uma função f(x, y), usando o polinômio de Taylor para f(x, y) na origem.
O valor de x e y e o número de termos do polinômio de Taylor, n, são dados de entrada.
Analisar os resultados obtidos pelos
  • Erro absoluto
  • Erro relativo
  • Fazer reflexões
A partir de qual n o erro é tão pequeno que não compensa aumentar seu valor?
O projeto deve ser feito em grupo de no máximo 5 alunos, cada função só pode ser implementada por um grupo.
Data da entrega até dia 21/08/2025 até às 18:00, pelo drive:
https://drive.google.com/drive/folders/lrBwu02ViFBbwi7BIEeD2iNoHhPwt107C?usp=sharing
Funções:
f(x, y)=x e^{y}

Passo 1

O enunciado pede um programa em MATLAB que, para dados de entrada (x,y) e um inteiro n, calcule a aproximação de
f(x,y)=x\,e^y
pelo polinômio de Taylor de ordem n centrado na origem, e em seguida avalie o erro absoluto e o erro relativo dessa aproximação. Por fim, devemos refletir a partir de qual n o incremento de ordem não traz ganho significativo dado o custo computacional e o limite de precisão da máquina.

Passo 2

Derivamos o polinômio de Taylor de f(x,y)=x\,e^y em torno de (0,0). Como x é fator constante e e^y=\sum_{k=0}^{\infty}\frac{y^k}{k!}, a aproximação de ordem n é
T_n(x,y)=x\sum_{k=0}^{n}\frac{y^k}{k!}.

Passo 3

Escrevemos o esqueleto do programa em MATLAB:
function [Tn, ea, er] = \(taylor2D_xexpY\)(x,y,n)
 % Tn = aproximação polinomial de ordem n
 % ea = erro absoluto |f-Tn|
 % er = erro relativo ea/|f|
 Tn = x * sum( y.^ (0:n) ./ factorial(0:n) );
 \(f_exato\) = x * exp(y);
 ea = abs(\(f_exato\) - Tn);
 er = ea / abs(\(f_exato\));
end

Passo 4

Para analisar o comportamento do erro, definimos um laço que incrementa n até um valor máximo, memória ou precisão limite, e armazenamos \mathrm{ea}(n) e \mathrm{er}(n). Por exemplo:
maxN \(=20\);
for n \(=0\):maxN
 [Tn(n\(+1\)), ea(n\(+1\)), er(n\(+1\))] = \(taylor2D_xexpY\)(x,y,n);
end

Passo 5

Refletimos sobre a convergência: o termo de resto em módulo é aproximadamente
R_{n+1} \approx |x|\frac{|y|^{\,n+1}}{(n+1)!}.
Como o factorial cresce muito rápido, para valores moderados de |y| e em precisão dupla, já com n\approx 10 temos
\frac{|y|^{\,n+1}}{(n+1)!} < 10^{-15},
o que está no nível de ruído de ponto flutuante. Aumentar n além disso não reduzirá o erro absoluto de forma significativa, mas vai consumir mais tempo de CPU.

Resposta

Em geral, para |y| em torno de 1 e cálculo em precisão dupla, a partir de n=10 o erro absoluto atinge a ordem de 10^{-15}, e não compensa aumentar n além desse valor.

Exercícios relacionados