Prévia do material em texto
<p>CN © MAP’2023 Aritmética computacional</p><p>Aritmética computacional</p><p>Cálculo Numérico compreende:</p><p>• A análise dos processos (modelagem) que resolvem problemas</p><p>matemáticos por meio de operações aritméticas;</p><p>• O desenvolvimento de uma seqüência de instruções (algoritmo) que</p><p>levem às respostas numéricas desejadas;</p><p>• O uso de computadores para obter as respostas numéricas, o que implica</p><p>em escrever o método numérico como um programa de computador.</p><p>Espera-se, com isso, obter respostas confiáveis para problemas</p><p>matemáticos.</p><p>No entanto, não é raro acontecer que os resultados obtidos estejam</p><p>distantes do que se esperaria obter. Por quê?</p><p>9</p><p>CN © MAP’2023 Aritmética computacional</p><p>Principais fontes de erro</p><p>• Erros de arredondamento: limitação na quantidade de números com</p><p>representação exata pelo computador (números de ponto flutuante):</p><p>(0.1)10 = (0.00011 0011 0011...)2</p><p>• Erros de significação: propagação dos erros de arredondamento nos</p><p>resultados das operações aritméticas realizadas pelo computador (perda</p><p>de algarismos significativos).</p><p>10</p><p>CN © MAP’2023 Aritmética computacional</p><p>Principais fontes de erro</p><p>• Erros de truncamento: processos numéricos infinitos dever ser</p><p>aproximados por um processo numérico finito, devido a limitações</p><p>práticas:</p><p>• Erros de modelagem: imprecisão na aproximação da situação física que</p><p>representa o fenômeno, ou nos dados utilizados (dados empíricos,</p><p>medição grosseira etc.);</p><p>• Instabilidade do processo numérico: devido ao caráter iterativo de alguns</p><p>processos numéricos, a propagação dos erros de significação pode</p><p>apresentar taxa de crescimento exponencial.</p><p>11</p><p>...</p><p>!4!3!2</p><p>1</p><p>432</p><p>+++++=</p><p>xxx</p><p>xex</p><p>CN © MAP’2023 Aritmética computacional</p><p>Representação de números: fração decimal</p><p>Seja x um número fracionário do sistema decimal:</p><p>onde dk ∈ {0, 1, 2, 3, ..., 9}.</p><p>Exemplos:</p><p>• ¼ = 0.25 = 2×10-1 + 5×10-2</p><p>• ⅓ = 0.333... = 3×10-1 + 3×10-2 + 3×10-3 + ...</p><p>Se existe k’ tal que dk = 0, ∀k ≥ k’, então a fração é limitada. Do contrário, a</p><p>fração é ilimitada (podendo ou não ser periódica).</p><p>12</p><p>(x)10 =</p><p>∞</p><p>∑</p><p>k=1</p><p>dk × 10−k,</p><p>CN © MAP’2023 Aritmética computacional</p><p>Representação de números: fração binária</p><p>Seja x um número fracionário do sistema binário:</p><p>onde dk ∈ {0, 1}.</p><p>Exemplos:</p><p>• (0.625)10 = (0.101)2 = 1×2-1 + 0×2-2 + 1×2-3</p><p>• (0.6)10 = (0.10011001...)2 = 1×2-1 + 0×2-2 + 0×2-3 + 1×2-4 + 1×2-5 + ...</p><p>Se existe k’ tal que dk = 0, ∀k ≥ k’, então a fração é limitada. Do contrário, a</p><p>fração é ilimitada (podendo ou não ser periódica).</p><p>13</p><p>(x)2 =</p><p>∞</p><p>∑</p><p>k=1</p><p>dk × 2−k,</p><p>CN © MAP’2023 Aritmética computacional</p><p>Representação de números: forma geral</p><p>Qualquer número x, com partes inteira e fracionária, possui representação</p><p>em uma determinada base de numeração β, da seguinte forma:</p><p>x = (im … i1 i0 . f1 f2 … fn)β</p><p>= im×βm + ... + i1×β1 + i0×β0 + f1×β–1 + f2×β–2 + ... + fn×β–n</p><p>onde ik (k = 0, 1, ..., m) e fj (j = 1, 2, ..., n) são símbolos que pertencem ao</p><p>conjunto S = {s ∈ ℕ : 0 ≤ s < β} (ou seja, os dígitos permitidos no sistema).</p><p>Exemplos:</p><p>• Sistema decimal: β = 10 e S = {0, 1, 2, 3, 4, 5, 6, 7 ,8 , 9}.</p><p>• Sistema octal: β = 8 e S = {0, 1, 2, 3, 4, 5, 6, 7}.</p><p>• Sistema binário: β = 2 e S = {0, 1}.</p><p>14</p><p>CN © MAP’2023 Aritmética computacional</p><p>Conversão de base: decimal para binária</p><p>Parte inteira: divide-se o número sucessivamente por 2 (divisão inteira), até</p><p>que o quociente seja zero. A representação equivalente na base binária é</p><p>obtida pela concatenação dos restos, na ordem inversa de sua obtenção.</p><p>Exemplo:</p><p>173</p><p>1 86</p><p>0 43</p><p>1 21</p><p>1 10</p><p>0 5</p><p>1 2</p><p>0 1</p><p>1 0</p><p>15</p><p>2</p><p>2</p><p>2</p><p>2</p><p>2</p><p>2</p><p>2</p><p>2</p><p>⇒ (173)10 = (10101101)2</p><p>CN © MAP’2023 Aritmética computacional</p><p>Conversão de base: decimal para binária</p><p>Parte fracionária: multiplica-se o número por 2 e subtrai-se a parte inteira,</p><p>sucessivamente, até que o produto final apresente parte fracionária igual a</p><p>zero ou até que seja observada a ocorrência de uma dízima.</p><p>Exemplos:</p><p>a) 0.625</p><p>0.25</p><p>0.5</p><p>16</p><p>→ 1</p><p>→ 0</p><p>→ 1 ⇒ (0.625)10 = (0.101)2</p><p>× 2 = 1.25</p><p>× 2 = 0.5</p><p>× 2 = 1.0</p><p>CN © MAP’2023 Aritmética computacional</p><p>Conversão de base: decimal para binária</p><p>b) 0.6</p><p>0.2</p><p>0.4</p><p>0.8</p><p>0.6</p><p>. . .</p><p>OBS: Um número real entre 0 e 1 pode ter representação finita no sistema</p><p>decimal, mas representação infinita no sistema binário.</p><p>17</p><p>→ 1</p><p>→ 1</p><p>→ 1</p><p>→ 0</p><p>→ 0</p><p>⇒ (0.6)10 = (0.100110011001...)2</p><p>× 2 = 1.2</p><p>× 2 = 0.4</p><p>× 2 = 0.8</p><p>× 2 = 1.6</p><p>× 2 = 1.2</p><p>CN © MAP’2023 Aritmética computacional</p><p>Conversão de base: binária para decimal</p><p>Basta utilizar a expressão da forma geral com β = 2.</p><p>Exemplo:</p><p>= 1×8 + 0×4 + 0×2 + 1×1 + 1× + 0× + 0× + 1×</p><p>= 8 + 0 + 0 + 1 + 0.5 + 0 + 0 + 0.0625</p><p>= (9.5625)10</p><p>18</p><p>(1001.1001)2</p><p>2</p><p>1</p><p>4</p><p>1</p><p>8</p><p>1</p><p>16</p><p>1</p><p>= 1×23 + 0×22 + 0×21 + 1×20 + 1×2-1 + 0×2-2 + 0×2-3 + 1×2-4</p><p>CN © MAP’2023 Aritmética computacional</p><p>Números reais</p><p>Um número real x pode ser representado como:</p><p>x = ±m × βe</p><p>onde m é a mantissa, β é base do sistema de numeração e e é o expoente.</p><p>Exemplos:</p><p>• x = (721.543)10 ! x = 721.543 × 100 = 72.1543 × 101 = 72154.3 × 10–2</p><p>• x = (–1101.01)2 ! x = –1101.01 × 20 = –11.0101 × 22 = –11010.1 × 2–1</p><p>Quando 0 ≤ m < 1 tem-se um número real normalizado.</p><p>Exemplos:</p><p>• x = (721.543)10 ! x = 0.721543 × 103</p><p>• x = (–1101.01)2 ! x = –0.110101 × 24</p><p>19</p><p>CN © MAP’2023 Aritmética computacional</p><p>Números de ponto flutuante</p><p>Os números reais representáveis em um computador de forma exata são</p><p>denominados números de ponto flutuante.</p><p>Segundo a norma IEEE 754-1985, a organização da memória para a representação</p><p>normalizada de um número de ponto flutuante de precisão simples (32 bits) em um</p><p>computador é:</p><p>*incluindo o bit para o sinal.</p><p>20</p><p>0223031 23</p><p>sinal expoente mantissa</p><p>Precisão</p><p>Simples Simples estendida Dupla Dupla estendida</p><p>bits para a mantissa* 24 ≥ 32 53 ≥ 64</p><p>bits para o expoente 8 ≥ 11 11 ≥ 15</p><p>emin –127 ≤ –1023 –1023 ≤ –16383</p><p>emax +128 ≥ +1024 +1024 > +16384</p><p>CN © MAP’2023 Aritmética computacional</p><p>Sistema de ponto flutuante</p><p>Num computador de 32 bits, os números binários de ponto flutuante são</p><p>representados na forma normalizada da base binária:</p><p>x = (–1)s × 0.m × 2e–127</p><p>onde s é o valor do bit de sinal, m corresponde à mantissa normalizada e e é o</p><p>valor do expoente.</p><p>Um sistema de ponto flutuante F(β, n, emin, emax) corresponde ao conjunto de</p><p>todos os números de ponto flutuante representáveis de forma exata:</p><p>• β é a base de numeração.</p><p>• n é o número de bits para representação da mantissa.</p><p>• emin é o menor expoente permitido.</p><p>• emax é o maior expoente permitido.</p><p>OBS: |emin| < emax para garantir que não ocorra overflow em .</p><p>21</p><p>€</p><p>2 emin</p><p>CN © MAP’2023 Aritmética computacional</p><p>Sistema de ponto flutuante</p><p>Exemplo: Seja o sistema F(2, 3, –1, 2).</p><p>• qual será o maior número representável?</p><p>• qual será o menor número positivo representável?</p><p>• qual o total de números representáveis neste sistema?</p><p>Tem-se (2 sinais) × (4 mantissas) × (4 expoentes) + (1 zero*) = 33 números.</p><p>OBS: O número 0 existe em qualquer SPF. Neste sistema é representado como 0.000×2–1.</p><p>22</p><p>s = 0</p><p>(positivos) mantissas</p><p>expoentes .100 .101 .110 .111</p><p>–1</p><p>0</p><p>1</p><p>2</p><p>1/4</p><p>1/2</p><p>1</p><p>2</p><p>5/16</p><p>5/8</p><p>5/4</p><p>5/2</p><p>3/8</p><p>3/4</p><p>3/2</p><p>3</p><p>7/16</p><p>7/8</p><p>7/4</p><p>7/2</p><p>CN © MAP’2023 Aritmética computacional</p><p>Sistema de ponto flutuante</p><p>Os números de ponto flutuante representáveis não estão uniformemente</p><p>distribuídos no intervalo [–3.5, 3.5]. A distância entre dois números de</p><p>ponto flutuante consecutivos vai aumentando ao aproximar-se do extremo</p><p>superior do intervalo;</p><p>Algumas leis da aritmética que valem em ℝ (conjunto dos números reais)</p><p>não valem para</p><p>F (conjunto dos números de ponto flutuante).</p><p>• x = 5/4 e y = 3/8 ∈ F(2, 3, –1, 2), mas x + y = 13/8 ∉ F(2, 3, –1, 2)</p><p>a representação normalizada de 13/8 requer 4 dígitos na mantissa e, portanto, não pode pertencer à F.</p><p>• x = 5/4, y = 3/8, z = 3/4 ∈ F(2, 3, –1, 2), mas (x + y) + z ≠ x + (y + z)</p><p>23</p><p>0 21 35/41/2 3/2 5/2 7/27/4</p><p>5/8 7/8</p><p>3/41/4</p><p>3/8</p><p>5/16 7/16</p><p>overflowunderflow</p><p>CN © MAP’2023 Aritmética computacional</p><p>Arredondamento e Truncamento</p><p>A representação em computador de um número de ponto flutuante deve ser</p><p>limitada ao tamanho n reservado para a mantissa.</p><p>Na aritmética de ponto flutuante, quando um valor, para ser representado,</p><p>precisa de mais dígitos na mantissa do que o máximo permitido, é preciso</p><p>fazer uma aproximação.</p><p>x = 0.d1d2 ... dn–1dndn+1 ... × βe</p><p>No sistema decimal (β = 10):</p><p>• Truncamento: dj ← 0, j > n.</p><p>• Arredondamento:</p><p>24</p><p>se dn+1 < 5 ⇒ dj ← 0, ∀j > n.</p><p>se dn+1 ≥ 5 ⇒ dn ← dn + 1 e dj ← 0, ∀j > n.</p><p>CN © MAP’2023 Aritmética computacional</p><p>Operações aritméticas em sistemas de ponto flutuante</p><p>Somas ou subtrações: Quando dois números em ponto flutuante são</p><p>somados ou subtraídos, a mantissa do número que apresenta o menor</p><p>expoente é modificada de forma a igualar os expoentes. Esse ajuste tem o</p><p>efeito de alinhar os pontos decimais em relação ao número com o maior</p><p>expoente (mais significativo).</p><p>Exemplo: Calcular 0.1557 × 101 + 0.4381 × 10–1.</p><p>0.1557 × 101</p><p>0.004381 × 101 +</p><p>0.160081 × 101 → 0.1601 × 101 (após arredondamento)</p><p>Todo resultado deve ser normalizado e/ou arredondado.</p><p>25</p><p>CN © MAP’2023 Aritmética computacional</p><p>Operações aritméticas em sistemas de ponto flutuante</p><p>Multiplicações: As mantissas são multiplicadas e os expoentes são somados.</p><p>Divisão: As mantissas são divididas e os expoentes são subtraídos.</p><p>Exemplo: (0.2363 × 103 * 0.6423 × 10–1) = 0.15177549 × 102</p><p>0.8004 × 10–2 0.8004 × 10–2</p><p>≅ 0.1518 × 102 = 0.189655… × 104</p><p>0.8004 × 10–2</p><p>≅ 0.1897 × 104.</p><p>Todo resultado deve ser normalizado e/ou arredondado.</p><p>26</p><p>CN © MAP’2023 Aritmética computacional</p><p>Dígitos significativos exatos</p><p>Diz-se que o número é uma aproximação do valor x com k dígitos</p><p>significativos exatos se k é o maior número inteiro não-negativo para o qual:</p><p>Exemplo:</p><p>• x = ⅔, = 0.6667 tem 4 dígitos significativos exatos.</p><p>• x = ⅔, = 0.66998 tem 2 dígitos significativos exatos.</p><p>|x − x̄ |</p><p>x</p><p>≤ 0.5 × 10−k</p><p>27</p><p>x̄</p><p>x̄</p><p>x̄</p><p>CN © MAP’2023 Aritmética computacional</p><p>Erro Absoluto e Erro Relativo</p><p>Seja uma aproximação para x. O erro absoluto é definido como:</p><p>e o erro relativo é definido como:</p><p>x = 0.300×100, = 0.310×100: EA(x) = 0.100×10–1, ER(x) = 0.333... ×10–1</p><p>x = 0.300×10–4 , = 0.310×10–4: EA(x) = 0.100×10–5, ER(x) = 0.333... ×10–1</p><p>x = 0.300×103, = 0.310×103: EA(x) = 0.100×102, ER(x) = 0.333... ×10–1</p><p>O erro relativo é mais significativo, pois considera a magnitude dos valores.</p><p>28</p><p>x̄</p><p>EA(x) = |x − x̄ |</p><p>ER(x) =</p><p>|x − x̄ |</p><p>x</p><p>, x ≠ 0</p><p>x̄</p><p>x̄</p><p>x̄</p><p>CN © MAP’2023 Aritmética computacional</p><p>Aritmética de ponto flutuante: adição</p><p>• Erro absoluto:</p><p>Ou seja, o erro absoluto da soma é a soma dos erros absolutos das parcelas:</p><p>• Erro relativo:</p><p>Ou seja, o erro relativo da soma é um valor intermediário entre os erros</p><p>relativos das parcelas.</p><p>29</p><p>x + y = x̄ + EA(x) + ȳ + EA(y) = x̄ + ȳ + EA(x) + EA(y)</p><p>EA(x + y) = EA(x) + EA(y)</p><p>= αER(x) + (1 − α)ER(y), α < 1</p><p>CN © MAP’2023 Aritmética computacional</p><p>Aritmética de ponto flutuante: subtração</p><p>• Erro absoluto:</p><p>O erro absoluto da subtração é a diferença dos erros absolutos das parcelas:</p><p>• Erro relativo:</p><p>Se x ≈ y ⇒ α pode ser muito grande e as parcelas podem ser números muito</p><p>grandes (cancelamento subtrativo).</p><p>30</p><p>= αER(x) − (α − 1)ER(y), α > 1</p><p>x − y = [x̄ + EA(x)] − [ȳ + EA(y)] = x̄ − ȳ + [EA(x) − EA(y)]</p><p>EA(x − y) = EA(x) − EA(y)</p><p>CN © MAP’2023 Aritmética computacional</p><p>Aritmética de ponto flutuante: multiplicação</p><p>• Erro absoluto:</p><p>Como EA(x) × EA(y) é um número muito pequeno, podemos desconsiderar este</p><p>termo e assumir que o erro absoluto do produto x × y será:</p><p>• Erro relativo:</p><p>31</p><p>x × y = [x̄ + EA(x)] × [ȳ + EA(y)]</p><p>= x̄ × ȳ + x̄ × EA(y) + ȳ × EA(x) + EA(x) × EA(y)</p><p>EA(x × y) = x̄ × EA(y) + ȳ × EA(x)</p><p>ER(x × y) =</p><p>x̄ × EA(y) + ȳ × EA(x)</p><p>x × y</p><p>=</p><p>[x − EA(x)] × EA(y) + [y − EA(y)] × EA(x)</p><p>x × y</p><p>≈</p><p>x × EA(y) + y × EA(x)</p><p>x × y</p><p>=</p><p>EA(x)</p><p>x</p><p>+</p><p>EA(y)</p><p>y</p><p>= ER(x) + ER(y)</p><p>CN © MAP’2023 Aritmética computacional</p><p>admite representação em</p><p>série infinita</p><p>Aritmética de ponto flutuante: divisão</p><p>• Erro absoluto:</p><p>• Erro relativo:</p><p>32</p><p>EA(x /y) =</p><p>ȳ × EA(x) − x̄ × EA(y)</p><p>(ȳ)2</p><p>×</p><p>× ×</p><p>CN © MAP’2023 Aritmética computacional</p><p>Instabilidade de método numérico</p><p>Estável: se a propagação dos erros</p><p>(arredondamento/truncamento)</p><p>tem taxa de crescimento linear:</p><p>O(ε) = k ε.</p><p>33</p><p>Instável: se a propagação dos erros</p><p>(arredondamento/truncamento) tem</p><p>taxa de crescimento exponencial:</p><p>O(ε) = kn ε.</p><p>n</p><p>O(ε)</p><p>n</p><p>O(ε)</p><p>Um método numérico iterativo pode ser:</p><p>CN © MAP’2023 Aritmética computacional</p><p>Instabilidade de método numérico</p><p>Exemplo: Calcular com α > 0, para n = 0, 1, 2, ...</p><p>Proposta de um método iterativo:</p><p>⇒ , n > 0.</p><p>n = 0:</p><p>⇒</p><p>34</p><p>In = ∫</p><p>1</p><p>0</p><p>xn</p><p>x + α</p><p>dx</p><p>In + 𝛼In-1 =</p><p>In =</p><p>1</p><p>n</p><p>− αIn−1</p><p>I0 = ∫</p><p>1</p><p>0</p><p>1</p><p>x + α</p><p>dx = Ln(α + 1) − Ln(α)</p><p>I0 = Ln ( α + 1</p><p>α )</p><p>CN © MAP’2023 Aritmética computacional</p><p>Instabilidade de método numérico</p><p>O valor de In deve ser sempre positivo. Além disso, In deve decrescer à</p><p>medida que n aumenta.</p><p>Por que os absurdos quando α = 5.0?</p><p>35</p><p>n α = 0.5</p><p>0 1.09861</p><p>1 0.45069</p><p>2 0.27465</p><p>3 0.19601</p><p>4 0.15200</p><p>5 0.12400</p><p>6 0.10467</p><p>7 0.09052</p><p>8 0.07974</p><p>9 0.07124</p><p>10 0.06438</p><p>11 0.05872</p><p>α = 5.0</p><p>0.18232</p><p>0.08839</p><p>0.05804</p><p>0.04314</p><p>0.03431</p><p>0.02845</p><p>0.02443</p><p>0.02072</p><p>0.02141</p><p>0.00408</p><p>0.07962</p><p>- 0.30718</p><p>CN © MAP’2023 Aritmética computacional</p><p>Instabilidade de método numérico</p><p>Considere que existe um erro (de arredondamento) ε no valor de I0:</p><p>I0 = I0 + ε</p><p>Neste caso, as próximas aproximações serão:</p><p>Se α > 1, a contribuição do erro vai crescendo de forma exponencial a cada</p><p>iteração. O método iterativo proposto é, portanto, um método numérico</p><p>instável.</p><p>36</p><p>αεαεα −⎟</p><p>⎠</p><p>⎞</p><p>⎜</p><p>⎝</p><p>⎛ −=+−= 001 1</p><p>1)(</p><p>1</p><p>1 III</p><p>εαααεα 2</p><p>112 2</p><p>1)(</p><p>2</p><p>1</p><p>+⎟</p><p>⎠</p><p>⎞</p><p>⎜</p><p>⎝</p><p>⎛ −=−−= III</p><p>εαα n</p><p>nn I</p><p>n</p><p>I )(1</p><p>1 −+⎟</p><p>⎠</p><p>⎞</p><p>⎜</p><p>⎝</p><p>⎛ −= −</p><p>.</p><p>.</p><p>.</p><p>CN © MAP’2023 Aritmética computacional</p><p>Mal-condicionamento</p><p>Um problema é mal-condicionado se pequenas alterações nos seus dados</p><p>resultam em grandes modificações em sua solução.</p><p>O mal-condicionamento é uma propriedade do problema em si, e não do</p><p>método numérico usado para resolvê-lo.</p><p>Exemplo:</p><p>37</p><p>⎪</p><p>⎪</p><p>⎩</p><p>⎪</p><p>⎪</p><p>⎨</p><p>⎧</p><p>=+++</p><p>=+++</p><p>=+++</p><p>=+++</p><p>0.3110957</p><p>0.3391068</p><p>0.235657</p><p>0.3278710</p><p>4321</p><p>4321</p><p>4321</p><p>4321</p><p>xxxx</p><p>xxxx</p><p>xxxx</p><p>xxxx</p><p>Solução:</p><p>⎥</p><p>⎥</p><p>⎥</p><p>⎥</p><p>⎦</p><p>⎤</p><p>⎢</p><p>⎢</p><p>⎢</p><p>⎢</p><p>⎣</p><p>⎡</p><p>=</p><p>0.1</p><p>0.1</p><p>0.1</p><p>0.1</p><p>x</p><p>⎪</p><p>⎪</p><p>⎩</p><p>⎪</p><p>⎪</p><p>⎨</p><p>⎧</p><p>=+++</p><p>=+++</p><p>=+++</p><p>=+++</p><p>1.3110957</p><p>9.3291068</p><p>9.225657</p><p>1.3278710</p><p>4321</p><p>4321</p><p>4321</p><p>4321</p><p>xxxx</p><p>xxxx</p><p>xxxx</p><p>xxxx</p><p>Solução:</p><p>⎥</p><p>⎥</p><p>⎥</p><p>⎥</p><p>⎦</p><p>⎤</p><p>⎢</p><p>⎢</p><p>⎢</p><p>⎢</p><p>⎣</p><p>⎡</p><p>−</p><p>−</p><p>=</p><p>1.0</p><p>9.2</p><p>2.7</p><p>0.6</p><p>x</p><p>CN © MAP’2023 Aritmética computacional</p><p>Miscelânea de efeitos numéricos</p><p>Calcular e pela expansão em série de Taylor:</p><p>Para x = 1 (com 10 termos e 4 dígitos na mantissa):</p><p>e ≅ 0.1000×101 + 0.1000×101 + 0.5000×100 + 0.1667×100 + 0.4167×10–1 +</p><p>0.8333×10–2 + 0.1389×10–2 + 0.1984×10–3 + 0.2480×10–4 + 0.2756×10–5</p><p>= 2.7183</p><p>Comparado ao valor 2.718281828, tem-se um erro relativo de 0.6685×10–5,</p><p>resultando em uma aproximação com 4 dígitos significativos.</p><p>38</p><p>e 5.5−e</p><p>...</p><p>!4!3!2</p><p>1</p><p>432</p><p>+++++=</p><p>xxx</p><p>xex</p><p>CN © MAP’2023 Aritmética computacional</p><p>Miscelânea de efeitos numéricos</p><p>Para x = –5.5 (com 5 dígitos na mantissa):</p><p>e –5.5 = 0.10000×101 – 0.55000×101 + 0.15125×102 – 0.27730×102 +</p><p>0.38129×102 – 0.41942×102 + 0.38446×102 – 0.30208×102 +</p><p>0.20768×102 – 0.12692×102 + 0.69803×101 – 0.34902×101 + ...</p><p>= 0.0026363</p><p>Comparando com valor 0.00408671439</p><p>(obtido com uma calculadora) tem-se</p><p>um erro relativo de 0.3549, resultando em uma aproximação com nenhum</p><p>dígito significativo (devido a erros de arredondamento).</p><p>Uma alternativa seria calcular .</p><p>Dessa forma, obtém-se para a aproximação o valor 0.0040865, com erro</p><p>relativo de 0.5246×10–4 e 3 dígitos significativos na mantissa.</p><p>39</p><p>5.5</p><p>5.5 1</p><p>e</p><p>e =−</p><p>CN © MAP’2023 Aritmética computacional</p><p>Miscelânea de efeitos numéricos</p><p>Calcular a média aritmética de dois números a e b:</p><p>• Para um dado F(β, n, emin, emax) e a e b ∈ F, o Algoritmo 1 pode apresentar</p><p>overflow no passo 2.</p><p>• O Algoritmo 2 pode apresentar underflow nos passos 2 e 3.</p><p>• Para o Algoritmo 3, se a e b forem valores muito próximos, pode ocorrer o</p><p>cancelamento subtrativo no passo 2.</p><p>40</p><p>Algoritmo 1</p><p>1. ler(a, b);</p><p>2. s ← a + b;</p><p>3. m ← s / 2;</p><p>4. exibir(m);</p><p>Algoritmo 2</p><p>1. ler(a, b);</p><p>2. s1 ← a / 2;</p><p>3. s2 ← b / 2;</p><p>4. m ← s1 + s2;</p><p>5. exibir(m);</p><p>Algoritmo 3</p><p>1. ler(a, b);</p><p>2. d1 ← a – b;</p><p>3. d1 ← d1 / 2;</p><p>4. m ← b + d1;</p><p>5. exibir(m);</p>