Erros Numéricos no Computador
em 10 de Dezembro de 2021
Representação de Funções pela série de Taylor
Grande parte das funções podem ser representadas através de uma série de potencias, chamada de série de Taylor de acordo com a expressão abaixo:
eq 1
eq 2
onde fn(a) representa a derivada de f(x) de ordem n calculada no ponto x=a.
A série acima é chamada serie de Taylor de f(x) em torno do ponto a.
Por exemplo, vamos representar a função exponencial e(x) em torno do ponto a=0, pela equação (2).
Como todas as derivadas de e(x) em a=0 são iguais a 1, temos:
eq 3
eq 4
que em torno de a=0 vale:
eq 5
Para calcularmos na prática, em um computador, uma função pela série de Taylor, utilizamos um numero de termos finitos n , pois não temos como calcularmos um numero infinito de termos. A soma parcial até o termo de ordem n é chamada polinômio de Taylor de grau n de f em a, dado por:
eq 6
No caso da f(x)=e(x) temos para os três primeiros termos:
eq 7
eq 8
eq 9
Conforme utilizamos maior numero de termos, isto é, polinômio de Taylor com maior grau, nos aproximamos mais da função representada. Na figura abaixo mostramos a representação de e(x) pelos polinômios, T1, T2 e T3:
https://profes.com.br/arquivos/joaoguedes/grafpolinext1t2t3/
No limite quando n tende ao infinito a função f(x) pode ser representada exatamente pelo polinômio de Taylor , ou seja a série infinita.
eq 10
Se definirmos Rn(x) como o Resto da série, pela equação:
eq 11
então:
eq 12
ou
eq 13
então quando aproximamos a função f(x) pelo polinômio de Taylor de ordem n, o primeiro termo da equação 13, desprezando o Resto R, introduzimos um erro, por isto o Resto é chamado de erro de truncamento. Quanto maior for o grau do polinômio de Taylor utilizado, melhor é a aproximação e menor é o erro. No limite quando a polinômio de Taylor apresenta um grau muito alto, e tende para uma série infinita e o erro tende a 0.
DESIGUALDADE DE TAYLOR:
então o Resto da serie de Taylor satisfaz a desigualdade:
eq 14
Exemplo: vamos calcular o resto da aproximação da função e(x) por um polinômio de Taylor com n=7, em torno do ponto a=0, no intervalo de 0 a 1.
Temos que todas as derivadas de e(x) são iguais a própria e(x) então:
Então o erro de se calcular e(x) no intervalo 0<= x<= 1, em torno de a=0 pelo polinômio de Taylor de grau 7 (oito termos da série) é $\le 0,0000677$.
Se quisermos calcular a mesma função e(x) mas no intervalo 0<=x<=20 mantendo aproximadamente o mesmo erro absoluto anterior, temos que usar 77 termos que corresponde ao polinômio de Taylor de grau 76, pois:
Vamos agora implementar um programa para calcular e(x) através do polinômio de Taylor, utilizando o numero necessário de termos para uma boa acurácia. Vamos utilizar o programa Scilab que tem licença geral publica (GNU) e pode ser baixado facilmente para PC ou MAC, sem custos.
Apos abrir o Scilab vá no menu de topo em Aplicativos e abra o SciNotes (editor de textos integrado) onde vamos inserir a função (programa) e gravar para execução no console (tema principal do Scilab). Digite o programa abaixo no SciNotes e grave com o nome que desejar, no meu caso chamei de minhasfuncoes. Pode se manter várias funções gravadas no mesmo arquivo. O programa está mostrado abaixo com os devidos comentários em cada linha.
https://profes.com.br/arquivos/joaoguedes/programcalculaexp/
Apos digitar o programa clique na barra de ferramentas horizontal na parte superior da janela do SciNotes, procure o item salvar e executar (pequeno triangulo do lado direito da barra), clique no mesmo , alem de salvar vai carregar a função no console , retornando uma mensagem no console conforme abaixo:
'/Users/joaocarlosnassarguedes/Desktop/Scilibsaves/minhasfuncoes.sce', -1)
significando que o arquivo com funções foi carregada para uso.
Para rodar nossa função e(x), vamos digitar a linha abaixo no console, para capturar os resultados na matriz da esquerda
[Resultado, Diferenca-da-soma, Numero-de-termos]=calculaexponencial(1)
Rodando a função com três valores diferentes de x de entrada, iguais a 1, 10 e 18 , obtemos as saídas conforme tela baixo do console do Scilab:
https://profes.com.br/arquivos/joaoguedes/consolefuncaoexp/
Conforme verificamos a saída do calculo mostra o resultado da função e(x), para o valor de x de entrada, a diferença da soma (que deve ser um numero pequeno, significando uma boa aproximação com baixo erro), e também o numero de termos necessários da serie de Taylor. Observe que para manter o erro baixo foram necessários calcular no caso de e(1), 13 termos, no caso de e(10), 42 termos e no caso de e(18), 64 termos da serie.
Conforme mencionado a necessidade de um numero maior de termos para manter o erro baixo se dá em virtude da formula do resto (eq 14) que repetimos abaixo, considerando f(x)=e(x)
eq 15
para calcularmos por exemplo e(18) com apenas 11 termos (n=10) teríamos o erro:
que dá aproximadamente erro 1,07 .1014, extremamente alto.
Porem aplicando a mesma formula , usando 64 termos temos:
que dá aproximadamente erro <= 0,11.
Computando Rn(18) com a formula (15) para vários valores de n obtemos o gráfico abaixo mostrando o comportamento do erro em função de de n:
https://profes.com.br/arquivos/joaoguedes/graficodoresto/
Utilizamos a escala do eixo Y com escala logarítmica para melhor visualização uma vez que os valores tem uma faixa de variação muito grande para acomodar.
Observamos claramente que para valores pequenos de n= 5, 10, 20, os valores do erro são extremamente altos da ordem de 1010 a 1014 e para valores grandes de n= 70 a 80 o erro é da ordem de 10-6 a 10-10. Fica claro pelo gráfico que para reduzirmos o erro a valores pequenos temos que aumentar n e portando usar mais termos na série de aproximação da função.
Para nosso caso simulado com x=18, n=63 (64 termos da série), temos erro <= 0,11 conforme calculado acima, então log10(0,11)=-0,96 que corresponde ao ponto de cruzamento das linhas vermelhas do gráfico.
Então nossa aproximação deu e(18) ~=65659969,14 com erro aproximado erro <= 0,11 .Se precisarmos obter resultado com erro menor ainda , basta aumentarmos o numero de termos na série utilizada, aumentando n e recalculando a função.
Abraços,\\
João Carlos\\
jjjjcng2013@gmail.com