Motivação

Como aproximar e0,1?

Considere-se f(x)=ex uma função infinitamente derivável em 0. Ora, sabe-se que f(0)=e0=1. Como a derivada da função exponencial é a própria função exponencial, então f(0)=e0=1. Sabendo a imagem de f e da sua derivada na origem, pode- se construir a reta tangente a f em 0:y=f(0)+f(0)x=1+x. Para pontos x próximos da origem, a reta tangente permite-nos obter uma boa aproximação para f(x). Ou seja, e0,1e0+e0×0,1=1,1. Ora o valor fornecido pelo computador é: 1,105170918075648, pelo que se tem uma casa decimal correta.

Como melhorar? Bem, se no caso anterior se construir a reta tangente, polinómio de grau 1, P1(x), tal que f(0)=P1(0) e f(0)=P1(0), então pode-se tentar construir um polinómio de grau 2 na condição de adicionalmente satisfazer f"(0)=P"2(0). Assim, sendo P2(x)=a+bx+cx2, tem-se que P2(0)=a,P2(0)=b e P"2(0)=2c. Pelo que a=e0=1, b=e0=1 e 2c=e0=1, donde o polinómio de segundo grau que verifica as três condições anteriores é P2(x)=1+x+12x2. Pode-se então aproximar “melhor” e0,1 através de P2(0,1)=1+0,1+0,005=1,105, e passa-se a ter três casas decimais coincidentes.

Este processo pode ser continuado para um polinómio de grau n centrado em 0, 0, 0,Pn(x)=1+x+12x2+13x3++1n!xn, que se designa por polinómio de Taylor de grau n centrado em 0 (FIGURA 1).


Série de Taylor

Seja f(x) uma função infinitamente derivável. O polinómio de Taylor de grau n centrado em x0R vem dado por


Pn(x)=nk=0f(k)(x0)k!(xxo)k



FIGURA 1. A função exponencial e os polinómios de Taylor de grau 1, 2 e 3 centrados em 0 da função exponencial.

sendo f(k) a derivada de ordem k de f. Na verdade, o valor de n pode crescer até ao infinito (e mais além...). Define-se série de Taylor da função f centrada em x0 e avaliada em x à soma infinita


f(x)=k=0f(k)(x0)k!(xx0)k.


Para a função exponencial, tem-se


ex=k=0ex0k!(xx0)k.


Quando a série se desenvolve em torno de x0=0 é designada por série de Maclaurin. A aproximação pelo polinómio de Taylor resulta então de truncar a série de Taylor num número finito de termos.


Várias questões se podem levantar:

  • Para aproximar o valor de uma função num ponto, qual o valor de x0 a escolher? A função pode estar definida para todo o real, mas apenas na vizinhança de x0 a aproximação polinomial deve dar bons resultados. Como melhorar a aproximação?
  • Que condições devem ser verificadas para que a série seja convergente? Na verdade poderá não haver convergência para um dado valor de x0, e polinómios com elevado grau trazem problemas ao cálculo numérico: crescimento rápido de n! (fração a convergir para zero muito rapidamente) e potências muito elevadas de (xx0)k.


Para melhorar o cálculo numérico pode-se evitar o cálculo explícito das potências e fatorial, basta verificar (método de Horner) que


ex=1+x(1+x2(1+x3(1+


pode ser usado para exprimir a série de Taylor da função exponencial em torno de 0.


Análise do erro

Sendo Pn(x) o polinómio de Taylor de grau n centrado em x0, pode-se definir o erro absoluto em aproximar f(x) por Pn(x):


Rn(x)=|f(x)Pn(x)|.


No caso da função exponencial


Rn(x)=|e(n+1)c(n+1)!(xx0)n+1|

=|ece(n+1)(n+1)!(xx0)n+1|


sendo c um valor real que satisfaz x0cx. Ora como a função exponencial é crescente, então atinge o maior valor no extremo direito do intervalo [x0,x]. Então, o erro absoluto é majorado por


Rn(x)|ex(xx0)n+1(n+1)!|


e o relativo por


Rn(x)ex|(xx0)n+1(n+1)!|.


Note-se que |Pn+1(x)Pn(x)|=|(xx0)n+1(n+1)!|, e o erro relativo em Pn(x) é majorado pelo termo de ordem n+1 da série de Taylor. Assim, pode-se determinar quantos termos n terão de ser considerados para que uma precisão de tol seja verificada: |(xx0)nn!|tol.


FIGURA 2. Erro relativo para aproximações de e ex,x[1,1], com polinómio de Taylor em torno de 0, Pn(x), e grau n usado para cada valor de x de forma a que |xnn!|1016.

Na FIGURA 2 mostram-se os erros relativos ao aproximar ex, para x[1,1], usando polinómios de Taylor de grau n, centrados em 0, a satisfazer |xnn!|1016. À medida que o valor que se pretende aproximar se afasta de 0, o grau do polinómio a usar vai aumentando, mas a qualidade da aproximação vai sendo menos boa. Isso é cada vez mais evidente quanto maior for a amplitude de valores a considerar para x (FIGURA 3).


FIGURA 3. Logaritmo do erro relativo para aproximações de ex,x[10,10], com polinómio de Taylor em torno de 0, Pn(x), e grau n usado para cada valor de x de forma a que |xnn!|1016.

Redução da distância do argumento de aproximação

Pode-se recorrer a propriedades das funções para focar a aproximação e assim evitar usar grau polinomial elevado e com perda de qualidade de aproximação.

No caso da função exponencial sabe-se que Pn(x)=nk=0xkk! pode ser uma boa aproximação de ex desde que x seja próximo de 0. Então uma ideia seria a de “trazer” a aproximação de ex para “perto” de e0. Ora se se considerar x=lIn2+r para um inteiro positivo l e um real r com |r|12In2 (valor suficientemente próximo de zero) então, ex=elIn2+r=2ler.

Resulta imediato que se pode aproximar ex à custa da aproximação de Maclaurin da exponencial em r e de 2(l) que é fácil e eficiente de calcular. Para que l seja inteiro e |r|xnn!, de l=xIn2rIn2 pode-se impor que l=xIn212 (arredondamento para cima). Sabendo l e x calcula-se r e usa-se 2lPn(r) para aproximar ex=2ler. Da FIGURA 4 ilustra-se que, o erro relativo (em escala logarítmica) é muito bom mesmo para valores distantes de 0 sendo que, o grau polinomial usado foi no máximo de 14.

As aproximações são já muito boas: note-se que para aproximar e5001,03610217 se está a cometer um erro relativo de 2×1014 (i.e., erro na décima quarta casa decimal de um número imensamente grande).

Pode-se fazer ainda melhor recorrendo a abordagens mais sofisticadas e eficientes de efetuar a redução da distância do argumento de aproximação, mas sobretudo, considerando outras aproximações, como interpolação polinomial. Estas matérias de teoria de aproximação e de implementação em computador são abordadas em análise numérica e matemática computacional.


FIGURA 4. Logaritmo do erro relativo para aproximações de ex,x[10,10], com polinómio de Taylor em torno de 0, Pn(x), e grau n usado para cada valor de x de forma a que |xnn!|1016.

O número de Euler

Antes de terminar vai-se destacar que a aritmética efetuada num computador é em precisão finita. Num computador os números racionais têm de ser armazenados num espaço que é finito, em oposição à sua infinitude. Os computadores trabalham numa base 2, resultando daí que muitos números racionais não têm representação exata. Por exemplo, a fração decimal 0,1 não tem representação exata em base 2 mas tem em base 10 (0,1=1×101).

A representação de números reais em computador segue, desde 1985, a norma IEEE-754 na utilização da aritmética binária para números de vírgula flutuante, relativo ao armazenamento, métodos de arredondamento, ocorrência de underflow/overflow e realização das operações aritméticas básicas. Um sistema de vírgula flutuante permite representar, com um número fixo de dígitos, números racionais com diferentes ordens de magnitude. A representação finita em base 2 usa 3 componentes: o sinal, o expoente e a mantissa: [±][mantissa]×2[expoente]. O sistema a 64-bits (dupla precisão) usa 1 bit para o sinal, 11 para o expoente e 52 para a mantissa (sendo de 8 bits para o expoente e de 23 bits para a mantissa em precisão simples). O real 0,1 tem a seguinte representação binária em 64- bits: sinal (0), expoente (01111111011) e mantissa 1001100110011001100110011001100110011001100110011010), a que corresponde, de volta à base 10, a melhor representação possível de


0.100000000000000005551115123126.


É curioso testar no vosso computador que 0,1+0,20,3=5,5511×1017 e não 0. Na verdade para o computador tal resultado deve ser considerado 0, pois o cálculo em precisão dupla fornece uma precisão relativa de cerca de 16 dígitos decimais.

A precisão de computador pode ser calculada através do épsilon de máquina: o menor número que separa 1 do próximo número representável (2, 2204 \times 10^{-16}). O épsilon de um número maior é também maior: o de 100000 é 1,4552×1011. Assim se efetuarem no vosso computador ou numa calculadora o seguinte cálculo 10121012+105 o resultado será o esperado 105, pois ao subtrair dois números com a mesma representação e adicionarem um terceiro, resulta o terceiro. Mas, a propriedade associativa não existe em vírgula flutuante: o cálculo de 1012105+1012 vale 0. Note-se que o épsilon de 1012 é 1,2207×104 e portanto 1012+105=1012. O próximo número representável após 1012 é 1012+1,2207×104. Por este facto, os números reais em computador não são uniformemente espaçados. No standard IEEE 754, existe maior representatividade próximo de 0 do que para valores muito grandes em valor absoluto.

Sabe-se que e é irracional e que pode ser aproximado por limn(1+1n)n e que portanto este limite corresponde à soma da série de Taylor da função exponencial em torno de 1:e=k=01k!.

A TABELA 1 mostra as aproximações calculadas para e via polinómios de Taylor e através de (1+1n)n, para valores crescentes de n. Ora com um polinómio de Taylor centrado na origem de grau 19 obtém-se quase a precisão máquina, sendo que para graus maiores não há melhoria na aproximação. Já para o cálculo via a expressão do limite, com n=100000 tem-se ainda um erro na sexta casa decimal. Poder-se-ia pensar que o erro relativo baixaria consistentemente para valores crescentes de n. Tal não é o caso atendendo aos erros numéricos, que não vão permitir melhorar a aproximação de e com a expressão (1+1n)n


TABELA 1. Aproximações para o número e por polinómios de Taylor e por (1+1n)n.

Por exemplo, para n=1015 a aproximação calculada é... 3,03503520654926! (com erro relativo 0,116527055720995).