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)=\cos \left(x^{2}+y^{2}\right)

Passo 1

O objetivo é implementar em MATLAB uma rotina que aproxime
f(x,y)=\cos\bigl(x^2+y^2\bigr)
pelo polinômio de Taylor de ordem n em (0,0). Vamos precisar de –
  1. Saber a expansão em série de Taylor de \cos z em z=0.
  2. Obter o termo geral para \cos(x^2+y^2).
  3. Programar um laço para somar até k=n.
  4. Calcular erro absoluto e erro relativo comparando com o valor exato \cos(x^2+y^2).
  5. Experimentar para vários n e analisar quando o erro para de diminuir sensivelmente.

Passo 2

Derivação do termo geral. Sabemos que
\cos z = \sum_{k=0}^{\infty}(-1)^k\,\frac{z^{2k}}{(2k)!}.
Tomando z=x^2+y^2, obtemos o polinômio de Taylor truncado em n termos:
P_n(x,y) \;=\;\sum_{k=0}^{n}(-1)^k\;\frac{\bigl(x^2+y^2\bigr)^{2k}}{(2k)!}.

Passo 3

Esboço do algoritmo em MATLAB: \text{\texttt{function [P, err\_abs, err\_rel] = taylor\_cosxy(x,y,n)}}
  1. Calcular r2 = x^2 + y^2.
  2. Inicializar \texttt{P}=0.
  3. Para k=0 até n: \texttt{P = P + (-1)^k * r2^(2*k) / factorial(2*k);}
  4. \texttt{ftrue = cos(r2);}
  5. \texttt{err\_abs = abs(P - ftrue);} \quad \texttt{err\_rel = err\_abs ./ abs(ftrue);}

Passo 4

Protocolo de experimentação e análise de erro:
  1. Fixar um ponto de teste, por exemplo (x,y)=(0,5,0,5).
  2. Para n = 0,1,2,\dots,N_{\max} (sugestão N_{\max}=20):
    – Calcular \texttt{[P, err\_abs, err\_rel]}.
    – Guardar erros em vetores.
  3. Fazer gráficos (em escala semilog) de \texttt{err\_abs(n)} e \texttt{err\_rel(n)} versus n.
  4. Observar a partir de qual n o erro absoluto e relativo atingem a ordem de 10^{-12} (limite da precisão de máquina) e praticamente não melhoram.

Passo 5

Reflexões típicas:
  • Para (x,y) de ordem O(1), já em torno de n=8 ou n=10 o erro absoluto fica abaixo de 10^{-12}.
  • A partir desse n, os termos adicionais são da ordem de rotação numérica (máquina) e não reduzem o erro.
  • Aumentar n além desse ponto só aumenta o custo computacional sem ganho em precisão.

Resposta

Segue o código MATLAB sugerido e a conclusão sobre n:
function [P, \(err_abs\), \(err_rel\)] = \(taylor_cosxy\)(x, y, n)
 % Aproxima cos(\(x^2\)+\(y^2\)) pelo polinômio de Taylor de n termos
 r\(2=\) x.^\(2+\) y.^2;
 P \(=0\);
 for k \(=0\):n
 P = P + (-1)^k * r2.^(2*k) / factorial(2*k);
 end
 ftrue = cos(r2);
 \(err_abs\) = abs(P - ftrue);
 \(err_rel\) = \(err_abs\) ./ abs(ftrue);
end
Experimentos mostram que, para (x,y) tipicamente em [-1,1]^2, a partir de n\approx10 o erro absoluto já está na casa de 10^{-12} e não melhora de modo confiável com n maior. Portanto, usa-se n=10 como ponto em que o erro é tão pequeno que não compensa encarecer mais cálculos.

Exercícios relacionados