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)=\frac{1}{1-x-y+x y}

Passo 1

O enunciado pede que a gente escreva um programa em MatLab que, para dados x, y e grau n, compute a aproximação de
f(x,y)=\frac{1}{1 - x - y + x\,y}
por meio do polinômio de Taylor (Maclaurin) em (0,0), e em seguida avalie o erro absoluto e relativo e reflita até que grau n vale a pena usar.

Passo 2

Para montar o polinômio de Taylor precisamos da série de Maclaurin de f. Note que
1 - x - y + x\,y = (1 - x)(1 - y)
logo
f(x,y) = \frac{1}{(1 - x)(1 - y)} = \sum_{i=0}^{\infty} x^i \;\sum_{j=0}^{\infty} y^j = \sum_{i=0}^{\infty}\sum_{j=0}^{\infty} x^i y^j.

Passo 3

O polinômio de Taylor de grau total n (ou seja, com todos os termos x^i y^j tais que i+j\le n) fica
P_n(x,y) \;=\;\sum_{i=0}^{n}\sum_{j=0}^{\,n-i} x^i\,y^j.

Passo 4

Implementação em MatLab: crie um arquivo taylor2D_f.m com o seguinte conteúdo
function [P, errAbs, errRel] = \(taylor2D_f\)(x,y,n)
% \(taylor2D_f\) aproxima f(x,y)\(=1\)/(1-x-\(y+x\)*y) por polinômio de Maclaurin grau total n
% Entradas:
% x, y : pontos onde avalia
% n : grau total do polinômio
% Saídas:
% P : valor de \(P_n\)(x,y)
% errAbs : erro absoluto |f(x,y)-\(P_n\)(x,y)|
% errRel : erro relativo errAbs/|f(x,y)|
 P \(=0\);
 for i \(=0\):n
 for j \(=0\):(n - i)
 P = P + \(x^i\) * \(y^j\);
 end
 end
 fval \(=1\)/(1 - x - y + x*y);
 errAbs = abs(fval - P);
 errRel = errAbs / abs(fval);
end

Passo 5

Para analisar a convergência e decidir até que n vale a pena:
  • Use chamadas em loop para vários n crescentes (por ex. n=0,1,2,\dots,N_{\max}) e registre errRel.
  • Plote errRel versus n para ver onde atinge a tolerância desejada \varepsilon (por ex. 10^{-6}).
  • Assim que errRel < ε, aumentar n traz ganho desprezível.

Passo 6

Em termos teóricos, se definirmos
s = |x| + |y|\;,
a parte da série omitida (resto) pode ser estimada por
R_n = \sum_{i+j>n} |x|^i\,|y|^j = \frac{s^{\,n+1}}{1 - s},\quad\text{desde que }s<1.
Para garantir R_n<\varepsilon basta escolher
n \;\ge\;\frac{\ln\bigl(\varepsilon\,(1-s)\bigr)}{\ln(s)} \;-\;1.
Ou seja, quando n atingir esse valor, o erro é tão pequeno que elevar n não compensa.

Resposta

Segue o código MatLab em taylor2D_f.m acima, junto com o critério teórico
n \;\ge\;\frac{\ln\bigl(\varepsilon\,(1-s)\bigr)}{\ln(s)} - 1,
com s=|x|+|y|<1, para determinar a partir de qual n o erro fica suficientemente pequeno.

Exercícios relacionados