O que é o e para o computador?
📧
- Universidade do Porto
Referência Vasconcelos, P. B., (2022) O que é o e para o computador?, Rev. Ciência Elem., V10(1):005
DOI http://doi.org/10.24927/rce2022.005
Palavras-chave Computação, e, operações, Série de Taylor, polinómios, função exponencial, erro
Resumo
Como é que o computador ou a máquina de calcular nos fornecem o valor de e? E de e0,1? A mesma questão pode ser colocada para o valor de outras funções num ponto: por exemplo, sin, cos e log. Se se pensar que um computador trabalha apenas com as operações elementares “+”, “—”, “×” e “/”, então o cálculo deve passar por exprimir a função exponencial em termos destas operações.
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,1≈e0+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)=P′1(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,P′2(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 x0∈R vem dado por
Pn(x)=∑nk=0f(k)(x0)k!(x−xo)k

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!(x−x0)k.
Para a função exponencial, tem-se
ex=∑∞k=0ex0k!(x−x0)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 (x−x0)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)!(x−x0)n+1|
=|ece(n+1)(n+1)!(x−x0)n+1|
sendo c um valor real que satisfaz x0≤c≤x. 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(x−x0)n+1(n+1)!|
e o relativo por
Rn(x)ex≤|(x−x0)n+1(n+1)!|.
Note-se que |Pn+1(x)−Pn(x)|=|(x−x0)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: |(x−x0)nn!|≤tol.

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!|≤10−16. À 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).

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=xIn2−rIn2 pode-se impor que l=⌈xIn2−12⌉ (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 e500≈1,03610217 se está a cometer um erro relativo de 2×10−14 (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.

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×10−1).
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,2−0,3=5,5511×10−17 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×10−11. Assim se efetuarem no vosso computador ou numa calculadora o seguinte cálculo 1012−1012+10−5 o resultado será o esperado 10−5, 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 1012−10−5+1012 vale 0. Note-se que o épsilon de 1012 é 1,2207×10−4 e portanto 1012+10−5=1012. O próximo número representável após 1012 é 1012+1,2207×10−4. 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

Por exemplo, para n=1015 a aproximação calculada é... 3,03503520654926! (com erro relativo 0,116527055720995).
Referências
- 1 BRISEBARRE, N. et al., A new range-reduction algorithm, IEEE Transactions on Computers, 54, 3, 331–339. 2005.
- 2 FOUSSE, L. et al., A multiple-precision binary floating-point library with correct rounding, ACM Transactions on Mathematical Software (TOMS), 33, 2, 13. 2007.
- 3 GORDON, S. P., Approximating functions with exponential functions, Problems, Resources, and Issues in Mathematics Undergraduate Studies, 15, 4, 349–362. 2005.
- 4 TREFETHEN, L. N., Approximation Theory and Approximation Practice, Extended Edition, SIAM. 2019.
- 5 WANG, L. et al., Efficient argument range reduction for implementation of double-precision floating-point exponential function, World Congress on Intelligent Control and Automation, 2, 6800–6803. IEEE. 2006.
Este artigo já foi visualizado 2415 vezes.