Apostila de Numérico

234
1 UNIVERSIDADE FEDERAL DE SANTA CATARINA - UFSC CENTRO TECNOLÓGICO - CTC DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA - INE Cálculo numérico em computadores para engenharia e computação e Computação Científica II: Autor: Prof. Sérgio Peters e-mail: [email protected] Florianópolis, 2014.

description

Anotações de aula Calculo Numérico UFSC

Transcript of Apostila de Numérico

  • 1

    UNIVERSIDADE FEDERAL DE SANTA CATARINA - UFSC CENTRO TECNOLGICO - CTC

    DEPARTAMENTO DE INFORMTICA E ESTATSTICA - INE

    Clculo numrico em computadores

    para engenharia e computao

    e

    Computao Cientfica II:

    Autor: Prof. Srgio Peters

    e-mail: [email protected]

    Florianpolis, 2014.

  • 2

    1. SISTEMAS DE NUMERAO

    1.1 - INTRODUO

    Atualmente o sistema padronizado de representao de quantidades para o uso e a comunicao entre as pessoas o sistema decimal. Entretanto, para facilitar a representao fsica, a definio das operaes aritmticas e a comunicao entre as mquinas digitais, necessrio fazer uso de outros sistemas de representao. Como premissa bsica, conceitua-se nmero como a representao simblica de determinada quantidade matemtica e base de um sistema de numerao a quantidade de smbolos distintos utilizados nesta representao. Desta forma, um nmero real qualquer X na base pode ser algebricamente representado atravs de:

    X = (a1 a2 . . . ak , ak+1 ak+2 . . . a k+n) (1)

    onde a base, ai {0,1,2,....,-1}, i = 1,2,...,k+n , k o comprimento da parte inteira e n da parte fracionria do nmero, com k,n .

    Ex. 1: X=(309,57)10

    Para fins de uso algbrico X pode tambm ser representado na forma fatorada equivalente:

    (2)

    Ex. 2: X=(309,57)10 = 3.102 + 0.101 + 9.100 + 5.10-1 + 7.10-2

    A seguir, sero abordados alguns sistemas de numerao e as formas de representao de nmeros de amplo uso nas mquinas digitais.

    1.2 - SISTEMA DECIMAL ( = 10)

    O sistema decimal de numerao, adotado pela maioria dos pases, foi desenvolvido pelos astronmos hindus por volta do sculo V e divulgado ao mundo islmico em 825 no livro do matemtico Alkhawarismi e definitivamente adotado no ocidente no sculo XVI. Sua aceitao como padro deve-se a algumas de suas caractersticas tais como:

    i). Utiliza dez smbolos, dgitos (digitus = dedo em latim) ou algarismos (curruptela lgica de Alkhawarismi). Tais smbolos atualmente so representados por: 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9, conhecidos por algarismos arbicos, que so derivados da verso ainda hoje usada no mundo muulmano:

    , , , , , , , , , Historicamente estes nmeros tem diversas hipteses sobre sua origem::

    a) Nmero de ngulos existentes no desenho de cada algarismo; b) Nmero de traos contidos no desenho de cada algarismo; c) Nmero de pontos de cada algarismo; d) Nmero de dimetros e arcos de circunferncia contidos no desenho de cada algarismo; e) Figuras desenhadas a partir dos traos de um quadrado e suas diagonais.

    X a aik i

    i

    k

    k jj

    j

    n

    = +=

    +

    =

    1 1

  • 3

    ii). Faz uso do zero. O zero, aceito com muita relutncia, o indicador da ausncia de certas potncias da base na representao de um nmero na forma fatorada;

    iii). Adota o princpio da posicionalidade. No sistema posicional o valor de cada smbolo relativo, isto , depende da sua posio no nmero.

    Ex. 3: Nos nmeros a) (574)10 = 5x102 + 7x101 + 4x100 b) (348)10 = 3x102 + 4x101 + 8x100 c) (432,5)10 = 4x102 + 3x101 + 2x100 + 5x10-1

    O smbolo 4 representa, respectivamente, quatro unidades, quatro dezenas e quatro centenas. Note que nenhum dgito interfere na posio do outro, eles so inteiramente independentes entre si. Utilizando-se das duas ltimas caractersticas do sistema decimal, a seguir sero estabelecidos outros sistemas de numerao, para facilitar a comunicao homem-mquina.

    1.3 - SISTEMA BINRIO ( = 2)

    Fazendo uso apenas dos smbolos 0 e 1, tambm chamados de bits (abreviatura de binary digits); do zero e da posicionalidade, gera-se um novo sistema de numerao cuja correspondncia com o decimal ser:

    Decimal 0 1 2 3 4 5 6 7 8 9 10 . 19 . Binrio 0 1 10 11 100 101 110 111 1000 1001 1010 . 10011 .

    Utilizando-se da notao fatorada, tem-se por exemplo, Ex. 4:

  • 4

    (10011)2 = (1.24 +0.23 + 0.22 + 1.21 + 1.20)10 = (19)10

    Obs.: A forma fatorada do nmero binrio (base 2) est representada na base 10.

    Vantagens do Sistema Binrio em Relao ao Sistema Decimal

    (i). Simplicidade de representao fsica, bastam 2 estados distintos de uma mquina digital para representar os dgitos da base: 0 = - , off

    1 = + , on

    Obs.: No futuro poder se chegar a distino de bits atravs dos atomos, que a concepo do computador quntico (quantum-bits, ou qubits).

    (ii). Simplicidade na definio de operaes aritmticas fundamentais:

    Ex. 5: Adio: + : x (x,y) x + y definida por:

    Em = 10 necessita-se de 100 combinaes dos possveis valores de x e y para se definir a funo adio.

    Em = 2 tem-se apenas 4 combinaes:

    0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10

    Desvantagens do Sistema Binrio

    (i). Necessidade de registros longos para armazenamento de nmeros.

    Ex. 6: (597)10 = (1001010101)2

    Observa-se que foi necessrio um registro com capacidade de armazenamento de dez smbolos binrios para representar a grandeza decimal (597)10 de apenas trs dgitos decimais.

    1.4 - SISTEMA HEXADECIMAL ( = 16)

    Smbolos representativos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E e F. Onde A, B, C, D, E e F representam as quantidades decimais 10, 11, 12, 13, 14 e 15, respectivamente.

    Este tambm um sistema posicional.

    Ex. 7: (1A0, C)16 = 1x16 2 + Ax16 1 + 0x16 0 + Cx16 -1 = (1x16 2 + 10x16 1 + 0x16 0 + 12x16 -1 )10 = (256 + 160 + 0 + 12/16 = 416,75)10

    Vantagem do Sistema Hexadecimal

    (i). Nmero reduzido de smbolos para representar grandes quantidades, por isso um sistema de numerao interessante para visualizao e armazenamento de dados. Os registros binrios internos de uma mquina digital so convertidos de forma direta para Hexadecimal quando so necessrias visualizaes externas, requisitadas pelo usurio.

    Ex. 8: (1101 0110)2 = (D6)16 = (214)10

    oito bits 2 smbolos hexadecimais

    Obs.: At a dcada de 70 as mquinas digitais se utilizavam do sistema de numerao octal, de base

  • 5

    8, para visualizar os registros binrios internos.

    1.5 - CONVERSES ENTRE SISTEMAS DE NUMERAO

    As converses entre bases so necessrias para que se possa melhor entender algumas das causas dos erros existentes nas representaes digitais de quantidades, pois o homem utiliza o sistema decimal e os computadores as convertem para bases binria, hexadecimal, ou outra.

    1.5.1 - CONVERSO DE BASE PARA BASE 10

    Nestes casos as converses so obtidas escrevendo o respectivo nmero na sua forma fatorada, representada na base decimal.

    (a1a2a3,a4a5) = (a1 . 2 + a2 . 1 + a3 . 0 + a4 . -1 + a5 . -2)10

    Ex. 9: (101,1)2 = 1 . 22 + 0 . 21 + 1 . 20 + 1 . 2-1 = (5,5)10 (1A,B)16 = 1 . 161 + A . 160 + B . 16-1 = (16,6875)10

    1.5.2 - CONVERSO DE BASE 10 PARA BASE

    _

    (17,5)10 = ((i),(ii))

    Procedimento de converso:

    i) na parte inteira do nmero: divide-se sucessivamente a parte inteira do nmero decimal pela base , e constri-se o novo nmero escrevendo o ltimo quociente e os restos obtidos nas divises, para separar as potncias sucessivas de componentes da parte inteira. Desta forma agrupam-se as diferentes potncias da base .

    Ex. 10: (19)10 = ( )2 19 | 2 1 9 | 2 1 4 | 2 0 2 | 2 0 1 (10011)2 = 1.24 + 0.23 + 0.22 + 1.21 + 1.20

    (527)10 = ( )16 527 | 16 15 32 | 16 0 2 (20F)16 = 2.162 + 0.161 + F.160

    ii) na parte fracionria do nmero: multiplica-se sucessivamente a parte fracionria do nmero decimal pela base , e constri-se o nmero escrevendo os inteiros resultantes de cada produto. A parte fracionria restante novamente multiplicada por at que o produto final seja um inteiro ou, a quantidade limite de dgitos na representao seja atingida. Desta forma constrem-se as fraes sucessivas de .

    Ex. 11: (0,03125)10 = ( )2

    0,03125 0,06250 0,125 0,25 0,5 x 2 x 2 x 2 x 2 x 2 0,06250 0,12500 0,250 0,50 1,0

    = (0,00001)2 Ex. 12: (0,1)10 = ( )2

  • 6

    0,1 0,2 0,4 0,8 0,6 0,2 0,4 0,8 0,6 0,2 x 2 x 2 x 2 x 2 x 2 x 2 x 2 x 2 x 2 x 2 0,2 0,4 0,8 1,6 1,2 0,4 0,8 1,6 1,2 0,4

    0 0 0 1 1 0 0 1 1 0 ...

    (0,00011 0011...)2

    dzima peridica

    Ento: (0,1)10 = (0,00011001100110011...)2 (0,0001100110011)2 2-4.(1,100110011)2 (0,1)10 (0,099975585)10 dgitos desprezados (arredondamento) por limitao de

    armazenamento no registro binrio (10 bits significativos)

    Devemos notar neste exemplo que, na converso das bases, parte dos dgitos da representao binria so descartados, por limitao do nmero de dgitos representveis, o que gera um erro de arredondamento.

    Exerccios:

    Exerccio - Efetuar as seguintes converses de base:

    a) (10,57)10 = ( )2 b) (10,1011)2 = ( )10 c) (513,98)10 = ( )16 d) (A,0F)16 = ( )10

    Exerccio - Implemente o algoritmo abaixo em um compilador com processamento numrico (por exemplo: Pascal, C, Fortran, ...).

    Incio leia n

    x = 1/n Para i = 1 at 100 x = (n + 1) x - 1 imprimir i , x Fim para

    Fim

    Testar para n = 2, 3, 10 e 16 e avaliar a evoluo de x com o nmero de iteraes i. Note que se x = 1/n x (n + 1).1/n - 1 = 1 + 1/n - 1 = 1/n = x. Logo, o valor de x no deveria se alterar com clculos sucessivos.

    1.3 - Existe uma base onde todo racional tem representao finita, de acordo com George Cantor (1869) todo racional tem representao finita na base fatorial.

    Conceitualmente, a base fatorial semelhante decimal com a diferena de que em um nmero XF! = (an an-1 ... a1 , a-1 a-2 ... a-m) cada ai s pode assumir um valor do intervalo 0 ai | i | e

    (Xi)F! = (an an-1 ... a1)F! = 10 a parte inteira e

    (X-i)F! = (0, a-1 a-2 ... a-m)F! = a parte fracionria

    Lembre-se que:

    (4321)F! ter como seu sucessor (10000)F!

    =

    !iam

    ni i

    +

    =

    )!1i(a im

    1i

  • 7

    (119)10 (120)10

    Represente os nmeros na forma fatorada e converta para a base decimal:

    i) (3021)F! = 3x4! + 0x3! + 2x2! + 1x1! = (77)10 ii) (321,123)F! = iii) (0,02)F! = iv) (0,113)F! =

    Note que nos exerccios (ii), (iii) e (iv) tem-se representaes exatas de nmeros racionais, que na base decimal so dzimas peridicas.

    1.5.3 - CONVERSES DIRETAS ENTRE BINRIO E HEXADECIMAL:

    Estas converses so importantes para se entender os mecanismos de operacionalizao de mquinas digitais que implementam as operaes aritmticas em base binria e visualizar as representaes em base hexadecimal. Sabemos que um dgito hexadecimal corresponde a quatro dgitos binrios, pois 161 = 24 e note que (15)10 = (F)16 = (1111)2 Ento, fazemos a converso direta associando a cada um dgito hexadecimal quatro dgitos binrios. Para tal, agrupamos os dgitos binrios em grupos de quatro a partir da posio da vrgula, para a direita e para a esquerda. Caso seja necessrio, completa-se o grupo de quatro bits com zeros no significativos.

    Ex. 13: (A1,B)16 = ( )2 Como: (A)16 = (1010)2

    (1)16 = (0001)2 (B)16 = (1011)2 temos: (A1,B)16 = (1010 0001 , 1011)2

    Ex. 14: (10001 , 01001 1001 1001 ...)2 = ( )16

    Agrupando-se os dgitos em grupos de quatro e completando com zeros: (0001 0001 , 0100 1100 1100 1100 ...)2

    1 1 4 C C C ( 11,4CCC...)16 Ex. 15: (110001,01) = ( )16 (0011 0001 , 0100)2 = (31,4)16

    3

    1 4

    Pois, (00110001,0100)2 =

    0x27 + 0x26 + 1x25 + 1x24 + 0x23 + 0x22 + 0x21 + 1x20 + 0x2-1 + 1x2-2 + 0x2-3 + 0x2-4

    (0x23 + 0x22 + 1x21 + 1x20) (24)1 + (0x23 + 0x22 + 0x21 + 1x20) (24)0 + ( 0x23 + 1x22 + 0x21 + 0x20) (24)-1

    3 x 161 1 x 160 4 x 16-1

    logo 3x161 + 1x16 + 4x16 = (31,4)16

    Obs.: Nas converses diretas entre as bases binria e hexadecimal (ou entre as bases binria e octal), no h perda de dgitos (arredondamento). Mas nas converses de base decimal para base

  • 8

    binria, ou para base hexadecimal, ou para base octal, podemos perder dgitos significativos. Por exemplo:

    (17,3)10 = (11,4CCC ...)16 = ( )10 = 1 . 161 + 1 . 160 + 4 . 16-1 + 12 . 16-2 + 12 . 16-3 + ...

    Assim, (17,3)10 = (11,4CCCC...)16 (11,4CC)16 (5 significativos)

    (17,296875)10

    Exerccios:

    1.4 - Converter os nmeros para as bases na ordem indicada:

    a) (10111,1101)2 = ( )16 = ( )10 b) (BD,0E)16 = ( )10 = ( )2 c) (41,1)10 = ( )2 = ( )16

    Obs.: Verifique se houve perda de dgitos significativos em alguma das converses, considerando um nmero limitado de dgitos representveis.

  • 9

    2. REPRESENTAO DIGITAL DE NMEROS:

    2.1. - INTRODUO

    De uma maneira geral, nos sistemas computacionais, um nmero X representado na forma de notao em ponto flutuante, de maneira a racionalizar o armazenamento digital. Se utilizassemos um armazenamento em ponto fixo (vrgula fixa) seria necessrio um nmero de posies (dgitos) no mnimo igual a variao dos limites dos expoentes. Por exemplo, para se obter a representao de uma calculadora cientfica comum com limites positivos entre 1,0.10-99 e 9,999999999.10+99 seria necessrio:

    (i). Entre 1,0.10-99 e 1 seriam necessrias 99 posies:

    1,0.10-99 = 0,000.....00001 99 dgitos aps a vrgula

    (ii). Entre 1 e 9,99999999.10+99 seriam necessrias 100 posies:

    9,99999999.10+99 = 9999999999000.....0000, 100 dgitos inteiros

    (iii). Seria necessrio mais uma posio para o sinal (s), para as representaes de negativos, totalizando 200 posies em cada registro:

    s 100 posies para a parte inteira 99 posies para a parte fracionria

    Por outro lado, em uma representao em Ponto Flutuante, esta calculadora cientfica funciona com pouco mais de dez dgitos, incluindo posies reservadas ao expoente.

    Ento, em uma representao em Ponto Flutuante, onde a vrgula flutua segundo um certo padro, temos a seguinte representao genrica na base :

    X = [ d1/ + d2/2 + d3/3 + ... + dt/t ] . exp ou

    X = (0,d1 d2 d3 ... dt) . exp onde di = nmeros inteiros contidos em 0 di ( - 1) (i = 1, 2, ... , t) que constituem a mantissa.

    Obs.: necessrio algum tipo de normalizao para padronizao da mantissa, no caso adota-se d1 0.

    exp = expoente de , assume valores limites I (Inferior) e S (Superior) onde I exp S.

    t = nmero de dgitos significativos do sistema de representao, chamado de preciso da mquina.

    Ex. 16: Representar em ponto flutuante:

    a) (3,501)10 = (3/10 + 5/102 + 0/103 + 1/104) . 101 = 0,3501 x 101 b) (101,011)2 = (1x2-1 + 0x2-2 + 1x2-3 + 0x2-4 + 1x2-5 + 1x2-6) . 23 = (0,101011)2 . 23

    Vamos agora exemplificar a representao digital de nmeros em computador mostrando trs exemplos prticos:

  • 10

    2.2. - PADRO 16 BITS

    Vamos mostrar o sistema de Representao em Ponto Flutuante em uma mquina binria ( = 2), com t = 10 dgitos na mantissa e expoentes limitados entre I = -15 e S = + 15 (1510 = 11112), de modo que simbolicamente temos: F(, t, I, S) = F(2, 10, -15, 15)10. Esta a representao clssica da mquina de 16 bits, que detalhada aqui por motivos histricos. Representao esquemtica de dgitos significativos binrios, onde cada bit alocado em um registro (clula quadrada):

    s1 t dgitos significativos s2 expoente sinal da mantissa sinal do expoente

    Convenciona-se que: Se s1 = 0 nmero positivo. Se s1 = 1 nmero negativo. s2 idem.

    No registro total tem-se:

    1 bit para sinal da mantissa . 10 bits para armazenar os dgitos significativos da mantissa (t=10). 1 bit para sinal do expoente. 4 bits para o mdulo do expoente

    Totalizando 16 bits neste registro.

    Devemos notar tambm que os dgitos significativos so armazenados no padro de normalizao com d1 0, conforme estabelecido anteriormente.

    Ex. 17: Representar + 0,101011 . 23 na mquina de 16 bits estabelecida anteriormente.

    Convertendo-se o expoente: (3)10 = (0011)2, tem-se

    0 1 0 1 0 1 1 0 0 0 0 0 0 0 1 1

    Limites da Representao em ponto Flutuante

    Estes limites de representao sero exemplificados atravs da mquina de 16 bits:

    a). Menor positivo representvel (m.p.):

    0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 Lembre-se de que toda representao na mquina de 16 bits usa normalizao com padro d1 0.

    m.p. = +(0,1)2 . 2-15 = (2-1 . 2-15)10 = (2-16)10 = (0,0000152587)10

    b) Maior positivo representvel (M.P.):

    0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1

    M.P. = +(0,1111111111)2 . 215 = (2-1 + 2-2 + 2-3 + ... + 2-10 ) . 215 = (32736)10 (1 . 215)

    Obs.: Os limites de representao dos nmeros negativos so simtricos aos limites positivos apresentados.

  • 11

    Na reta real temos a seguinte representao para F(2, 10, -15, +15):

    - M.P. - m.p. m.p. M.P.

    0

    regio de overflow regio de underflow regio de overflow

    Obs.:

    regio de underflow: {x | - mp < x < mp} regio de overflow: {x | x < - MP e x > MP}

    c) Representao do zero:

    obtida com mantissa nula e o menor expoente representvel (I).

    Ex. 18: Representar o zero em F(2,10,-15,+15).

    0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1

    expoente mnimo

    Devemos lembrar que este o nico nmero escrito no normalizado, pois sua mantissa zero. No exemplo 20, a seguir, pode-se visualizar o que poderia acontecer se o expoente do zero fosse diferente do limite inferior I.

    Ex. 19: Simular a operao de adio: 0,000135 + 0 na mquina F(10,4,-10,+10) a b 1) Considerando a representao do zero com expoente nulo (b = 0,0000 . 100):

    a = 0,1350 . 10-3 b = 0,0000 . 100

    a = 0,000135 . 100

    b = 0,0000 . 100

    a + b = 0,0001 . 100 = 0,1000 . 10-3

    2) Considerando a representao do zero com expoente mnimo I (b = 0,0000 . 10-10):

    a = 0,1350 . 10-3 b = 0,0000 . 10-10

    a = 0,1350 . 10-3 b = 0,0000 . 10-3

    a + b = 0,1350 . 10-3 = a

    Neste segundo caso o zero representado pela mquina digital representa corretamente o elemento neutro da operao de adio.

  • 12

    d). Nmero mximo de elementos representveis:

    Podemos notar que a distribuio de nmeros representveis em ponto flutuante discreta (somente alguns valores so representveis), enquanto a distribuio de valores na parte Real contnua (qualquer valor representvel).

    Ex. 20: Representar os dois primeiros nmeros positivos do sistema F(2, 10, -15, +15)

    1 positivo - 0 1 0 . . . 0 1 1 1 1 1 = (0,0000152587)10

    2 positivo - 0 1 0 . . . 0 1 1 1 1 1 1 = (0,0000152885)10

    Ex. 21: Caso uma operao aritmtica gere o nmero (0,00001527)10, como ele ser representado?

    Como o valor acima no tem representao binria exata, ele ser representado pelo valor discreto mais prximo, no caso (0,0000152587)10 que o menor positivo representvel (mp).

    Pode-se notar que a distribuio de nmeros representveis de F(, t, I, S) no uniforme em , e que para cada potncia da base existe uma quantidade fixa de nmeros representveis dada por:

    NC = ( - 1) . t - 1

    Ex. 22: Em F(2, 3, -1, +2) temos as seguintes representaes possveis:

    a) mantissas possveis: b) expoentes possveis: 0,100 2-1 0,101 20 0,110 2+1 0,111 2+2

    A combinao de quatro possibilidades de mantissas em cada potncia da base (( - 1).t-1 = 4 para = 2 e t = 3 ), com as quatro possibilidades de expoentes (S - I + 1 = 4 para S = 2 e I = -1) define o nmero total de positivos representveis (NP = 16). Desta forma o nmero total de elementos representveis em uma mquina genrica F(, t, I, S) dado por:

    NF(, t, I, S) = 2.(S - I + 1).( - 1).t-1 + 1

    incluindo os positivos, negativos e o zero.

    Ex. 23: Em F(2, 10, -15, +15) (mquina de 16 bits) temos: NF = 2 . (2 - 1) . (15 - ( - 15) + 1) . 210-1 = 31745 elementos incluindo os positivos, negativos e o zero.

    Ex. 24: Em F(10, 10, -99, +99) (calculadora cientfica comum) temos: NF = 2 . (10 - 1) . (99 - (- 99) + 1) . 1010-1 + 1 = 3,582 . 1012 elementos

    Esta representao da mquina padro de 16 bits evoluiu, juntamente com os computadores, e atingiu uma forma mais otimizada de representao, incluindo a polarizao dos expoentes, mais flexibilidade na normalizao da mantissa, dentre outras. Mais tarde surgiu o padro IEEE 754 (1985), que amplamente utilizado no armazenamento de variveis (vide seo 4.1).

  • 13

    e). Polarizao na Representao em Ponto Flutuante

    Polarizao (ou Excesso) um valor acrescentado (em Excesso) a todos expoentes de um sistema de representao em ponto flutuante com o objetivo de tornar todos os expoentes positivos e ampliar a representao do expoente superior (S). Naturalmente todas as operaes aritmticas devem considerar esta polarizao introduzida.

    Ex. 25: Na mquina de 16 bits F(2, 10, -15, 15) podemos usar uma polarizao p = + 15.

    p = +15 = + (1111)2 I + p = - (15)10 + p = - (1111)2 + p = - (1111)2 + (1111)2 = (00000)2 S + p = +(15)10 + p = + (1111)2 + p = + (1111)2 + (1111)2 = (11110)2 5 bits

    Como I e S tm agora o mesmo sinal, (+), podemos usar todos os registros binrios reservados ao expoente, inclusive a posio do sinal, para representar o expoente polarizado (sem o sinal). Assim, os limites polarizados do expoente so: I = (00000)2 = (0)10 S = (11110)2 = (30)10 Podemos aqui aproveitar melhor os 5 bits reservados ao expoente tomando o maior valor possvel, adotando S = (11111)2 = (31)10.

    Na forma polarizada qualquer nmero v representado nesta mquina dever seguir a forma abaixo:

    s1 t dgitos significativos da mantissa expoente

    v = (-1)s . (0, mantissa)2 . 2exp - 15

    Ex. 26: Na representao

    0 1 1 0 1 0 0 0 0 0 0 1 0 0 1 0

    tem-se: s = 0 , m = 110100000 e exp = (10010)2 = (18)10

    v = (-1)0 . (0, 1101000000)2 . 218 - 15 = +(110,1)2

    Outra otimizao adotada no padro IEEE 754 foi o no armazenamento do primeiro bit da mantissa, que sempre unitrio, ou seja, usa-se a representao implcita do primeiro bit e abre-se uma posio binria para armazenamento de um novo bit:

    v = (-1)s . (1, mantissa)2 .2exp

    15

    que veremos em detalhes na seo 4.1.

    Exerccios:

    2.1 - Na mquina F(2, 3, -3, +3) com d10 (no polarizada) calcule:

    a) O nmero de elementos representveis; b) Esquematize a representao de todos os elementos positivos na base 2; c) Defina as regies de underflow e overflow; d) Estime a preciso decimal equivalente;

  • 14

    e) Proponha uma transformao da mquina F apresentada em uma mquina com polarizao que utilize os limites dos 3 bits totais reservados ao sinal.

    2.2 - Na mquina F(2,3,0,7) com d10 e polarizao p = +3 calcule:

    a) O nmero de elementos representveis; b) Esquematize a representao de todos os elementos positivos na base 2; c) Defina as regies de underflow e overflow; d) Estime a preciso decimal equivalente;

  • 15

    2.3). Preciso versus Exatido

    - PRECISO: um conceito objetivo que estabelece a quantidade de algarismos significativos que representam um nmero. A preciso de uma mquina digital definida como o nmero de dgitos t da mantissa na base , e a preciso decimal d equivalente pode ser definida baseada na equivalncia entre as variaes dos dgitos menos significativos em cada base, da seguinte forma:

    10 1 - d = 1 - t log (10 1 - d) = log ( 1 - t ) 1 - d = (1 - t) log d = 1 + ( t - 1) log

    Ex. 27: Calcule a preciso decimal equivalente da mquina de 16 bits F(2, 10, -15, 15) = 2 t = 10 d = 1 + (10 - 1) log 2 d = 1 + 9. (log 2) d = 3,71 d = 3 4 dgitos (ou seja, pode representar entre 3 e 4 dgitos)

    Ex. 28: Considere uma mquina F(2, 27, -20, 20) 2-26 = 10 - d + 1 log2 -26 = log10-d +1

    - d + 1 = - 26 log2 d = 1 + 26 log2 8,8

    Assim, esta ltima mquina tem entre 8 e 9 dgitos significativos equivalentes. Isto no significa que todas as fraes decimais de 8 dgitos possam ser representadas precisamente em 27 bits, visto que a representao discreta (com espaos vazios entre dois nmeros consecutivos) e nem todas as fraes decimais tm representao binria finita. Isto significa que todos as representaes binrias da mquina esto corretas para 8 dgitos significativos na base 10, ou seja, apresentam decimais equivalentes com pelo menos 8 dgitos corretos.

    - EXATIDO: conceito relacionado com a forma que melhor representa uma grandeza numrica, ou seja, uma representao mais exata quando tem o menor desvio (erro) em relao ao valor exato.

    Ex. 29: Representar o pi (3,1415926535) por:

    (a) 3,14 preciso de trs dgitos (b) 3,151 preciso de quatro dgitos (c) 3,1416 preciso de cinco dgitos

    Obs.: Note que se fossemos classificar o nmeros acima quanto a exatido teramos o seguinte: a) mais exato que (b) (ou seja, (a) est mais prximo de pi do que (b)); b) menos exato que (c); c) mais exato que (a).

  • 16

    3 REPRESENTAO NUMRICA SEGUNDO O PADRO IEEE 754 (1985)

    Este padro utilizado em linguagens comerciais como o Pascal e C, e ser apresentado a seguir na sua forma esquemtica para representao em ponto flutuante e na forma de variveis inteiras.

    4.1). VARIVEL SINGLE DO PASCAL (OU FLOAT DO C):

    Padro: 4 bytes ou 32 bits (preciso de 7 a 8 dgitos significativos equivalentes).

    Neste padro um nmero real v pode ser representado por:

    1 8 23 s e f msb lsb msb lsb

    onde s = 0 v positivo e s = 1 v negativo e = expoente f = mantissa polarizao = (127)10 = 27 - 1 = (01111111)2 msb = bit mais significativo e lsb = bit menos significativo

    Um nmero v armazenado no registro acima interpretado da seguinte forma:

    Se 0 < e < 255, ento v = (-1)s . 2(e-127) . (1,f) 2

    Se e = 0 e f 0, ento v = (-1)s . 2-126 . (0,f)2

    Se e = 0 e f = 0, ento v = (-1)s . 2-126 . (0,) = (-1)s . 0 (zero)

    Se e = 255, ento v pertence a regio de overflow.

    Obs.:

    (i). A representao destes registros binrios em computadores digitais feita em grupos de bytes (8 bits) escritos de forma invertida (de traz para frente) em relao ao esquema binrio apresentado acima. Neste exemplo tem-se quatro bytes, onde cada byte composto por dois registros hexadecimais (8 bits).

    A seguir apresenta-se um exemplo desta representao para a frao 1/10, que representada na varivel SINGLE do Pascal gera:

    x = 0.10000000149 - (representao decimal, note o erro de arredondamento) .

    (ii). Se na janela watch do Pascal, onde se pode visualizar as variveis na base hexadecimal escrevendo 'x,m', tem-se a seguinte representao hexadecimal de uma varivel SINGLE:

    x,m = CD CC CC 3D - (representao hexadecimal no computador)

    Esta deve ser interpretada na forma de bytes em ordem invertida, para compor o registro binrio correspondente. Para obter este registro procede-se da seguinte forma:

    a). Invertemos os bytes (grupos de dois hexadecimais):

    3D CC CC CD

    b). Efetua-se a converso direta para base binria:

  • 17

    3 D C C C C C D 0011 1101 1100 1100 1100 1100 1100 1101

    c). Distribui-se os bits no registro SINGLE:

    0 0 1 1 1 1 0 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 (CD CC CC 3D - representao hexadecimal no computador)

    d). Interpretando os 32 bits acima pode-se converter o registro para decimal, conforme segue:

    s = 0 e = (01111011)

    2 = (123)10 (0 e = (123) 10 = (01111011)2

    0 0 1 1 1 1 0 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 s e f

    e.2). Converter (0,10)10 diretamente para o padro 32 bits, considerando 0 < e < 255:

    (0,10)10 = (-1)s . 2(e-127) . (1,f) 2

    (e.2.1). s = 0 => para nmeros positivos +(0,10)10

    (e.2.2). Considerando que ainda temos 2 incgnitas, e e f, vamos considerar o valor Mnimo de f, f = 0, e calcular e:

    (0,10)10 = (-1)0 . 2(e-127) . (1,0) 2

    No caso, determina-se um valor de e maior que o verdadeiro, no caso, e= (123,6781...) 10 e

    toma-se o seu menor inteiro, e= (123)10 (DESCONSIDERAR A PARTE FRACIONARIA)

    (e.2.3). Agora determinamos o valor de f com os valores de s e e obtidos acima:

  • 18

    (0,10)10 = (-1)0 . 2(123-127) . (1,f)2

    (1,f)2 = (0,1) 10 / 2(123-127)

    (1,f)2 = (1,6)10 => (1,f deve ser um nmero entre 1 e 2, se 'e' foi escolhido corretamente)

    Convertendo (1,6)10 para binrio, temos: (1,6)

    10 = (1,10011001100110011001100 | 110011001100110011...)2 ARREDONDAMEMTO na mantissa f (0,110011001100110011...)2 > (0,5)10 +1

    (1,6)10 (1,10011001100110011001100)2 -------------------------------------------------------

    (1,6)10 (1,10011001100110011001101)2

    Resumindo: s = 0

    e = (123) 10 = (01111011)2

    (1,f)2 (1,10011001100110011001101)2

    0 0 1 1 1 1 0 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 s e f

    (ii). Note que a normalizao da mantissa uma otimizao decorrente da normalizao aplicada na mquina de 16 bits. No caso de mquinas binrias o primeiro dgito significativo no nulo sempre o bit unitrio, ento no necessrio reservar um registro para armazenar sempre o mesmo valor. Assim, adotou-se a normalizao padro IEEE com um bit unitrio antes da vrgula, que no armazenado na memria dos computadores. Armazena-se a partir do 2 bit significativo.

    (iii). Na representao especfica dos primeiros valores positivos (e negativos) adotou-se uma flexibilizao da normalizao, permitindo mantissas com primeiro(s) dgito(s) nulo, o que gerou uma diminuio da regio de underflow.

    Ex. 40: Limites da varivel SINGLE (ou FLOAT):

    i). Representao do Zero:

    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (00 00 00 00 - representao em hexadecimal) zero = (-1)0 2-126. (0, )

    ii). Menor positivo (mp):

    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 (01 00 00 00 - representao em hexadecimal)

    mp = (-1)0 . 2 -126 . (0,00000000000000000000001)2 (menor mantissa possvel) mp = 2-126 . 2-23 = 2-149

    =

    =

    =

    00000000000000000000000f00000000e0s

    =

    =

    =

    00100000000000000000000f00000000e0s

  • 19

    mp = 1,4012985 . 10-45

    iii). Maior positivo (MP):

    0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 (FF FF 7F 7F - representao em hexadecimal)

    MP = (-1)0 . 2 254-127 . (1,11111111111111111111111)2 MP = 2127 . (1,99999988)10 MP = (3,4028235 . 1038)10

    4.2) Varivel DOUBLE do Pascal (ou DOUBLE do C):

    Padro: 8 bytes ou 64 bits (preciso de 16 a 17 dgitos significativos equivalentes).

    1 11 52 s e f msb lsb msb lsb

    onde polarizao = (1023)

    10 = 210 - 1 = (01111111111)2

    Um nmero v armazenado no registro acima interpretado da seguinte forma:

    Se 0 < e < 2047, ento v = (-1)s . 2(e-1023) . (1,f)2

    Se e = 0 e f 0, ento v = (-1)s . 2-1022 . (0,f)2

    Se e = 0 e f = 0, ento v = (-1)s . 2-1022 . (0,) = (-1)s . 0 (zero)

    Se e = 2047 , ento v pertence a regio de overflow.

    4.3). VARIVEL EXTENDED DO PASCAL (OU LONG DOUBLE DO C):

    Padro: 10 bytes ou 80 bits (preciso de 19 a 20 dgitos significativos equivalentes).

    1 15 1 63 s e i f msb lsb msb lsb

    onde polarizao = (16383)

    10 = 214 - 1 = (011111111111111)2

    Um nmero v armazenado no registro acima interpretado da seguinte forma:

    Se 0 < e < 32767, ento v = (-1)s . 2(e-16383) . (i,f) 2 (onde i pode assumir 0 ou 1)

    (se e = 0 i = 1) Se e = 32767 e f = 0, ento v pertence a regio de overflow.

    4.4) Varivel REAL (padro BORLAND):

    =

    ==

    =

    11111111111111111111111 f)254()11111110(e

    0s

    102

  • 20

    Padro: 6 bytes ou 48 bits (preciso de 12 a 13 dgitos significativos equivalentes).

    1 39 8 s f e msb lsb msb lsb

    onde polarizao = (129)

    10 = 27 + 1 = (10000001)2

    Um nmero v armazenado no registro acima interpretado da seguinte forma:

    Se 0 < e

  • 21

    P1 = (-1)0 . 2 (104-127) . (1,00000000000000000000000)2 - valor normalizado

    P1 =

    0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (00 00 00 34 - representao em hexadecimal)

    Aps a 23a diviso de P1=1 por 2, P1 representar um nmero desprezvel na soma frente a unidade, pois 1 + P1 = 1.

    Exerccios:

    4.1). a). Avalie as regies de underflow e overflow de cada uma das variveis apresentadas acima e faa uma verificao em um compilador Pascal ou C;

    b). Avalie a preciso decimal equivalente de cada varivel, atravs da frmula de equivalncia;

    4.2). Simule o algoritmo do exemplo 41, em um compilador Pascal ou C, usando as variveis apresentadas e determine o menor valor binrio de p1 que pode ser adicionado a unidade sem perda total de significao (com operaes aritmticas em binrio), avaliando a preciso decimal equivalente. Acompanhe os resultados na janela 'watch' com as variveis registradas em hexadecimal.

    =

    ==

    00000000000000000000000f )104()01101000(e 102

  • 22

    4.5). REPRESENTAO DE VARIVEIS INTEIRAS

    Os formatos para representao de variveis do tipo inteiras podem seguir diversos padres:

    4.5.1). Shortint: so tipos inteiros limitados aos valores - 12810 e + 12710, sua representao interna feita em forma de byte (8 bits) com bit de sinal. Valores negativos so armazenados em forma de complemento de dois.

    Ex. 42: + 010 = 000000002 = 0016 + 12710 = 011111112 = 7F16

    - 12810 = 28 - 128 = 128 = 100000002 = 8016 - 510 = 28 5 = 123 = 111110112 = FC16

    Obs.: Veja como feito o complemento de dois no exemplo 32.

    Ex. 43: Se for efetuada a operao de adio entre + 12710 e -12710, em forma de complemento e dois, tem-se:

    00000000

    4.5.2). byte: so tipos inteiros sem bit de sinal (no permite armazenar negativos). Esto limitados aos valores 0 e 255.

    Ex. 44: 010 = 0000 00002 = 0016 25510 = 1111 11112 = FF16

    4.5.3). Integer: so tipos inteiros limitados faixa entre - 32768 e + 32767, correspondendo ao armazenamento como 2 bytes com bit de sinal ("negativos" so armazenados em forma de complemento de dois).

    Ex. 45: Zero 010 = 0000 0000 0000 0000 = 000016

    Maior Positivo +3276710 = 0111 1111 1111 1111 2 = 7FFF16

    -3276710 = -0111 1111 1111 11112 1000 0000 0000 00002 complemento de um de -3276710 + 1 1000 0000 0000 00012 complemento de dois de -3276710 = 800116

    Menor Negativo

    -3276810 = -1000 0000 0000 00002 0111 1111 1111 11112 complemento de um de -3276810

    + 1 soma 1 1000 0000 0000 00002 complemento de dois de -3276810

    = 800016

    Agora observe o que acontece se for executada a soma da 'unidade' com o 'maior positivo' da varivel Integer 3276710, ou seja, estamos calculando um nmero na regio de overflow:

    Unidade 110 = 0000 0000 0000 00012 = 000116 +

    Maior Positivo +3276710 = 0111 1111 1111 11112 = 7FFF16 110 +3276710 = 1000 0000 0000 00002 = 800016 Complemento de 2 (inicia com 1)

    +

    127127

    0111111110000001

  • 23

    Precisamos obter o complemento de 2 novamente para obter o nmero 'negativo' armazenado: 0111 1111 1111 11112 complemento de 1 de 1000 0000 0000 00002

    + 1 soma 1 -1000 0000 0000 00002 complemento de 2 de 1000 0000 0000 00002

    = -800016 = -3276810 Ento, cuidado podemos achar que 110 +3276710 = +3276810, mas estamos armazenando -3276810.

    4.5.4). Word: armazenamento de 2 bytes sem bit de sinal limitado a faixa entre 0 e 65535.

    Ex. 46: 010 = 000016 6553510 = 1111 1111 1111 11112 = FFFF16 6553610 = 000016 = 010

    Obs.: Note que a representao de nmeros inteiros acima do limite superior acarreta uma grande perda de significao, cuja representao volta ao zero (vide ex. 45).

    4.5.5). Longint: corresponde ao double word (4 bytes) com bit de sinal. Limita-se entre -2147483648 (-231) e +2147483647 (231 - 1). Longint equivale ao 'Int' da linguagem C/C++.

    Ex. 47: 010 = 0000 0000 0000 0000 0000 0000 0000 00002 = 00 00 00 0016

    +214747364710 = 0111 1111 1111 1111 1111 1111 1111 11112 = 7F FF FF FF16

    -214748364710 = - 0111 1111 1111 1111 1111 1111 1111 11112 1000 0000 0000 0000 0000 0000 0000 00002 complemento de 1 + 1 1000 0000 0000 0000 0000 0000 0000 0001 = 8000000116 complemento de 2

    -214748364810 = -1000 0000 0000 0000 0000 0000 0000 00002 0111 1111 1111 1111 1111 1111 1111 11112 complemento de 1 + 1 1000 0000 0000 0000 0000 0000 0000 00002 = 8000000016 complemento de 2

    Observe novamente que se for executada a soma da 'unidade' com o 'maior positivo' da varivel Longint 214747364710, estaremos calculando um nmero na regio de overflow da varivel Longint:

    Unidade 110 = 0000 0000 0000 0000 0000 0000 0000 00012 = 00 00 00 0116 +

    Maior Positivo +214747364710 = 0111 1111 1111 1111 1111 1111 1111 11112 = 7F FF FF FF16 110 +214747364710 = 1000 0000 0000 0000 0000 0000 0000 00002 = 80 00 00 0016 um complemento de 2 (inicia com 1) Precisamos obter o complemento de 2 novamente para obter o nmero 'negativo' armazenado:

    1000 0000 0000 0000 0000 0000 0000 00002 0111 1111 1111 1111 1111 1111 1111 11112 complemento de 1 + 1 soma 1 -1000 0000 0000 0000 0000 0000 0000 00002 complemento de 2

    = -80 00 00 00 00 00 0016 = -214748364810 Ento, cuidado podemos achar que 110 +214748364710 = +214748364810, mas estamos armazenando -214748364810.

  • 24

    Obs.: Note que o armazenamento de inteiros negativos sempre feito em forma de complemento de dois. Isto uma vantagem do ponto de vista de operaes aritmticas, pois o carregamento na unidade aritmtica j est na sua forma final com expoentes iguais (alinhados) para efetuar as operaes de adio (ou subtrao). Note que isto s possvel, pois os expoentes equivalentes na notao de Tipos Inteiros so todos iguais a zero.

    Por exemplo, tem-se a seguinte nomenclatura em C:

    Type Bytes Bits Range

    short int 2 16 -32,768 -> +32,767 (16kb) unsigned short int 2 16 0 -> +65,535 (32Kb) unsigned int 4 16 0 -> +4,294,967,295 ( 4Gb) int 4 32 -2,147,483,648 -> +2,147,483,647 ( 2Gb) long int 4 32 -2,147,483,648 -> +2,147,483,647 ( 2Gb) signed char 1 8 -128 -> +127 unsigned char 1 8 0 -> +255 float 4 32 double 8 64 long double 12 96

    4). TIPOS DE ERROS EXISTENTES EM MQUINAS DIGITAIS

    muito importante conhecer as possibilidades de erros na representao numrica em mquinas digitais e entender as suas causas para se poder estabelecer a confiabilidade de um software. Todo estudo apresentado neste captulo necessrio para que se possa entender as causas de cada tipo de erro existente em mquinas digitais. Pode-se classificar os erros nos seguintes tipos principais:

    5.1) Erros Inerentes:

    So aqueles existentes nos dados de entrada de um software numrico. Decorre, por exemplo, de medies experimentais, de outras simulaes numricas, ...

    5.2) Erros de truncamento:

    Ocorrem quando quebramos um processo matematicamente infinito, tornando-o finito, por incapacidade de execuo ou armazenamento. A seguir sero apresentados exemplos de fontes de erro de truncamento:

    Ex. 48: Veja a seguinte expanso em srie infinita para ex:

    ...

    !...

    !3!2!11

    32

    ++++++=n

    xxxxe

    nx

    Sabe-se que no possvel usar infinitos termos para avaliar uma funo, ento necessrio estabelecer um limite para o nmero de parcelas utilizadas. Esta limitao nas parcelas gera um erro de truncamento na srie, que corresponde ao somatrio dos termos abandonados.

    Obs.: A representao de f(x) em srie ser mostrada de forma ilustrativa a seguir,

    possvel representar, de forma exata, uma funo f(x) em um ponto qualquer x0+x a partir de sua representao em x0, atravs de expanso em Sries de Taylor, dada genericamente por:

    ...

    !).(...

    !3).('''

    !2).(''

    !1).(')()( 0)(

    3

    0

    2

    0000 ++++++=+n

    xxfxxfxxfxxfxfxxf

    nn

    Expandindo a funo, por exemplo, em torno de x0 = 0 (quando x0=0, temos o caso particular da srie Maclaurin), tem-se:

  • 25

    Gerando ento,

    )(!

    ...

    !3!2!11)0( )1(

    320 ++ ++++++==+ n

    nx xO

    n

    xxxxexf

    Se aproximamos xe com 'n' termos, estamos desprezando ...)!2()!1()(21

    )1( ++

    ++

    =

    +++

    n

    x

    n

    xxO

    nnn

    !...

    !3!2!11

    32

    n

    xxxxe

    nx +++++

    Assim, o termo )( )1( +nxO caracteriza o Erro de Truncamento da aproximao, lembrando que x, nesse caso, representa o incremento de x entre o ponto inicial x0 e o novo ponto x0+x.

    Ex. 49: Aproximaes numricas de limites de funes,

    Por definio f'(x) dada por,

    Porm, se este limite exato no puder ser obtido, pode-se promover uma aproximao numrica deste, tomando o incremento h como finito e promovendo sucessivos refinamentos. Assim, pode-se obter uma seqncia de aproximaes sucessivas de f'(x), com incremento cada vez menor, mas no se pode chegar ao incremento nulo (h 0). Ento, tambm se quebra o processo matemtico, de refinamentos sucessivos, gerando um erro de truncamento do processo, que era matematicamente infinito, tornando-o finito.

    Ex. 50: Aproximaes de derivadas

    Para avaliar numericamente a partir de trs pontos vizinhos de f(x):

    f(x0 - h) f(x0) f(x0 + h) | | | x0 - h x0 x0 + h

    Pode-se subtrair f(x0 - h) de f(x0 + h):

    -

    _______________________________________________________________________

    f x ex( ) =f x e( )0 00 1= = =f x e'( )0 00 1= = =f x e' '( )0 00 1= = =

    M

    f x en( )0 00 1= = =

    f xf x h f x

    hh' ( ) lim ( ) ( )= +

    0

    f x'( )0

    f x h f x f x h f xh

    f xh

    f xh

    f xhn

    iv nn

    ( ) ( ) '( ) ' ' ( )!

    ' ' ' ( )!

    ( )!

    ... ( )!0 0 0 0

    2

    0

    3

    0

    4

    02 3 4+ = + + + + + +

    f x h f x f x h f xh

    f xh

    f xh

    f xhn

    iv nn

    ( ) ( ) ' ( ) ' ' ( )!

    ' ' ' ( )!

    ( )!

    ... ( )!0 0 0 0

    2

    0

    3

    0

    4

    02 3 4 = + + +

    f x h f x h f x h f xh

    f xhIV( ) ( ) ' ( )( ) . ' ' ' ( )

    !. ( )

    !...0 0 0 0

    3

    0

    4

    2 2 3 2 4+ = + + +

  • 26

    onde o termo de segunda ordem representa o somatrio de todos os termos decorrentes da aproximao em srie, e definido como Erro de Truncamento da aproximao.

    Ento, desprezando o termo O(h2), assumindo assim um erro de truncamento de segunda ordem, tem-se uma aproximao para f'(x0) dada por,

    e

    5.3). Erros de Arredondamento

    Ocorrem quando so desprezados os ltimos dgitos que, ou no so fisicamente significativos na representao numrica, ou esto alm da capacidade de armazenamento na mquina digital.

    5.3.1). Arredondamento manual:

    Ex. 51: Representar os seguintes nmeros com quatro dgitos significativos:

    69,348 = 69,35 parcela descartada maior que 5 +1 no dgito anterior. 69,34433 = 69,34 parcela descartada menor que 500 dgito anterior inalterado. 69,335 = 69,34 parcela descartada igual a 5 e dgito anterior impar +1 no dgito anterior. 69,345 = 69,34 parcela descartada igual a 5 e dgito anterior par dgito anterior inalterado.

    No exemplo anterior o arredondamento foi feito de forma ponderada, baseado em critrios estatsticos para descartar parte dos dgitos do nmero. Pode-se seguir o seguinte raciocnio: Analisando estatisticamente um conjunto de nmeros que tero parcelas descartadas. Podemos admitir que, em uma distribuio normal de erros, 50% dos valores a descartar so maiores que 5 e que 50% so menores, ento - Se todos os dgitos a descartar forem simplesmente cancelados, sem nenhum critrio de compensao, o conjunto inicial de nmeros perde parte de seu significado, gerando um erro de arredondamento global. - Se, por outro lado, procurar-se distribuir o erro de arredondamento entre os nmeros do conjunto escolhido, pode-se minimizar os efeitos globais dos erros de arredondamento sobre este conjunto. Assim, promove-se uma atualizao do dgito anterior ao descartado nos 50% dos casos cuja parcela descartada maior que 5, adicionando-se uma unidade. Nos demais casos simplesmente descarta-se a parcela indesejada, sem nenhuma atualizao no dgito anterior. Desta forma distribui-se, estatisticamente, a parcela perdida entre os elementos do conjunto.

    No caso especfico de parcelas descartadas iguais a 5, tem-se um impasse que deve tambm ser decidido estatisticamente. Nestes casos tambm dividem-se as possibilidades em dois grupos, um com parcela anterior par e outro com parcela anterior impar. No primeiro grupo simplesmente descartam-se os dgitos indesejados, sem nenhuma atualizao no dgito anterior, e segundo grupo, com parcela anterior impar, atualiza-se este dgito adicionando-lhe uma unidade. Tambm nesta situao procurou-se distribuir estatisticamente o erro devido as parcelas descartadas.

    O arredondamento tambm pode ser feito por cancelamento puro, onde a parte indesejada

    f xf x h f x h

    h hf x

    hh

    f xhV

    ' ( ) ( ) ( ) . ' ' ' ( )!

    . ( )!

    ...00 0

    0

    3

    0

    5

    21

    31

    5=+

    +

    f xf x h f x h

    hO h'( ) ( ) ( ) ( )0 0 0 22=

    +

    O h( )2

    O h f xh

    f xhV( ) ' ' ' ( )

    !( )

    !...

    20

    2

    0

    4

    3 5= + +

    f xf x h f x h

    h' ( ) ( ) ( )0 0 02

    +

  • 27

    do nmero simplesmente cancelada, independente do seu valor, assumindo um erro de arredondamento global para valores menores em todos os elementos de um conjunto de nmeros.

    5.3.2). Arredondamento em mquinas digitais:

    Neste caso o arredondamento pode ocorrer nas seguintes situaes bsicas:

    (i). Armazenamento de racionais ilimitados:

    Ex. 52: Representar a frao (1/3)10 em F(10,6,-99,+99) (normalizao: vrgula antes do 1 dgito).

    (1/3)10 (0,333333.100)10 Representao arredondada de (1/3)10.

    Ex. 53: Representar a frao decimal (1/10)10 na mquina binria F(2,10,-15,+15).

    dzima peridica em base binria

    (0,1100110011)2.2-3

    Obs.: Note que uma frao decimal exata (1/10 = 0,1) quando armazenada em uma mquina binria se transforma em uma frao binria peridica, que deve ser aproximada devido limitao do registro em ponto flutuante utilizado no armazenamento.

    (ii). Armazenamento de Irracionais:

    O conjunto dos nmeros irracionais compreende todas as representaes atravs de dzimas no peridicas e infinitas. Conjuntos:

    N - Naturais

    Z - Inteiros

    Q - Racionais

    I - Irracionais

    R - Reais

    C - Complexos

    Obs.: Existem representaes que generalizam todos os nmeros como complexos, de modo que um complexo com parte imaginria nula se torna um real.

    100

    6t10 )10....333333333,0()3/1( 321

    =

    =

    110

    11010

    0 0001100110011001110 2

    2

    =

    = ( , ...)

    ( / ) ( , ...) .1 10 0 11001100110011 21010

    23

    =

    =

    t1 24 34

    110 10

  • 28

    Ex. 54: Representar em F(10,6,-99,+99),

    (a). pi 3.141592653589... pi (0,3141592653589...)10 .10+1

    pi (0,314159)10 .10+1 (b) 1.414213562373... (0,1414213562373...)10 . 10+1 (0,141421)10 . 10+1

    (iii). Abrangncia limitada da notao em ponto flutuante:

    Ex. 55: Efetue a soma de a = 0,0135 e b = 10,51 em F(10,4,-10,+10) e g = 0.

    Representao em ponto flutuante:

    a = 0,1350 . 10-1 b = 0,1051 . 102

    Vamos implementar a soma, de forma simplificada, usando alinhamento pelo maior expoente

    a = 0,1350 . 10-1 b = 0,1051 . 102

    a = 0,000135 . 102 +

    b = 0,1051 . 102

    a + b = 0,1052 . 102

    Ex. 56: Efetue a soma de a = (10,01)2 e b = (0,0101)2 em F(2,4,-15,+15) e g = 0.

    Representao em ponto flutuante: a = (0,1001)2 . 22 b =(0,1010)2 . 2-1

    Vamos novamente implementar a soma, de forma simplificada,

    a = (0,1001)2 . 22

    b =(0,0001010)2 . 22

    a + b = (0,1010)2 . 22

    Obs.: Estes fatos ocorrem, geralmente, na soma de nmeros com potncias muito diferentes. Neste caso o nmero de menor potncia pode perder significao, total ou parcial, frente ao nmero de maior potncia. Ou seja, devido a faixa limitada de abrangncia dos registradores em ponto flutuante, o nmero menor perde dgitos significativos quando comparado com o nmero maior.

    (iv). Mudana de base para armazenamento e operaes aritmticas

    Sabe-se que a representao de nmeros em base binria amplamente utilizada em mquinas digitais (computadores), devido as suas vantagens no armazenamento e implementao de operaes aritmticas. O que ocorre na prtica que a interface entre o usurio e os computadores deve ser feita

    22

    2

  • 29

    em base decimal, para que a representao de grandezas fsicas seja naturalmente entendida pelos usurios dos computadores. Ento toda grandeza fsica expressa inicialmente em base decimal, e o seu efetivo armazenamento nos computadores feito em base binria, por isso necessria uma converso entre as bases decimal e binria e vice-versa.

    Ex. 57: Representar (0,1)10 em F(2,10,-15,+15).

    frao decimal exata gerou dzima peridica binria

    24

    10 ....)0011.100110011,1.(2)1,0( = representao exata, anterior ao arredondamento

    24

    10 .)100110011,1.(2)1,0( (0,099975585)10 representao aproximada, ps arredondamento Nesse caso, o Erro de Arredondamento pode ser calculado, pois temos o Valor Exato (VE) original e o Valor Aproximado (VA) , ps arredondamento: VE= 10)1,0( VA= 102

    4 )099975585,0(.)100110011,1.(2 = =%100.

    VEVE-VA

    = % Relativo Erro -0,02441%

    Conseqncias:

    Os erros de arredondamento podem causar:

    (a). Perda de significao:

    Esta uma conseqncia de erros de arredondamento, que gera perda, total ou parcial, de dgitos significativos. Esta perda de dgitos significativos pode ocorrer nos seguintes casos:

    (a1). Soma de parcelas de grandezas muito diferentes:

    Vide exemplos 55 e 56 apresentados anteriormente.

    (a2). Subtrao de parcelas de grandezas muito prximas: Ex. 58: Efetuar a - b com a = 0,1351 e b = 0,1369 em F(10,4,-10,+10) e g = 0.

    Efetuando a subtrao de forma simplificada tem-se:

    a = 0,1351 - b = - 0,1369 a - b = - 0,0018 = - 0,1800.10-2

    Note que o resultado final no sofreu arredondamentos, mas perdeu dgitos significativos, pois as parcelas a e b tem quatro dgitos significativos e a subtrao a - b tem apenas dois dgitos significativos.

    Obs.: A expresso de Baskara, para a soluo exata da equao de segundo grau, muitas vezes, aparece expressa de forma alternativa para minimizar perdas de significao:

    Para a x2 + b x + c = 0, tem-se as seguintes razes:

    (Formula de Baskara)

    ( )0 1 0 0001100110011001110 2, ( , ...)=

    xb b ac

    a1 2

    2 42,

    =

  • 30

    (Frmula obtida da racionalizao do numerador da expresso anterior)

    Pode-se observar que as duas formas formas apresentadas para a soluo podem

    apresentar perdas de significao, quando a parcelas b e forem de magnitudes prximas e estiverem sujeitas a uma operao de subtrao. Assim, recomenda-se utilizar as expresses propostas acima, escolhendo o sinal do

    radicando de modo que as parcelas b e fiquem sujeitas a operao de adio nas duas parcelas, em uma expresso obtendo x1 e em outra obtendo x2.

    Exerccios:

    5.1). Achar as duas razes de x2 + 62,10 x + 1 = 0, utilizando o operador aritmtico F(10,4,-99,+99) e g = 0 (quatro dgitos significativos nas operaes).

    a). Use a frmula de Baskara normal; b). Use a frmula de Baskara racionalizada; c). Avalie os erros relativos nas duas formas de avaliao das razes, sabendo que os seus valores exatos so x1 = - 0,01610 e x2 = - 62,08.

    (a3). Nas operaes de diviso:

    Em geral, nas operaes de diviso entre duas parcelas quaisquer, normalmente, so gerados resultados com um nmero de dgitos maior que o permitido na representao em ponto flutuante.

    Ex. 59: Efetuar a / b, com a = 1332 e b = 0,9876, no operador F(10, 4,-99,+99) e g = 0.

    Efetuando esta operao em uma calculadora de 10 dgitos, tem-se, a / b = 1348,72418

    Porm, se esta operao est sujeita a apenas 4 dgitos significativos (F10,4,-99,+99), o resultado ser, a / b = 1348

    Causando desta forma uma perda de dgitos significativos.

    (b). Instabilidade Numrica:

    A acumulao sucessiva de erros de arredondamento pode conduzir um algoritmo de repetio a resultados absurdos, por exemplo,

    A avaliao sucessiva de x = f(x) com f(x) = (N+1) x - 1 uma constante x=1/N (na ausncia de arredondamentos)

    Verifique esta afirmao, implementando o exerccio 4.2 em computador.

    Existem tambm outras formas de instabilidade, como aquelas associadas ao modelo matemtico, por exemplo,

    Ex. 60: Dada a funo Avalie f(x) em x = 3 e em x = 3,00001 utilizando uma calculadora cientfica com representao de 10 dgitos.

    f(3) = 279850 f(3.00001) = 280018,0108

    xc

    b b ac1 2 22

    4,=

    b ac2 4

    b ac2 4

    f xx

    ( ),

    =

    279859 1 2

  • 31

    Note que uma variao de 0,0003333% na varivel independente x gera uma variao de 0,06% no resultado final de f(x), ou seja, uma variao no resultado de cerca de 180 vezes superior. Isto carateriza uma instabilidade intrnseca do modelo matemtico em relao aos seus dados de entrada.

    Ex. 61: Avaliar f(x) = 1 - cos(x) para x = 10-4 (radianos), na mesma calculadora cientfica (10 dgitos).

    f(10-4) = 4,9 . 10-9

    Se for utilizada uma forma alternativa para o modelo da funo:

    g(x) = (1 - cos(x)) .

    +

    +

    )cos(1)cos(1

    x

    x =

    + )cos(1)(2x

    xsen

    tem-se ento,

    g(10-4) = 5 . 10-5

    Note que devido a perda de dgitos significativos por arredondamento, duas representaes idnticas da mesma funo geram respostas diferentes. Neste caso, tambm tem-se um exemplo de instabilidade do modelo, porm neste exemplo especfico, se tem a possibilidade de reformular a sua representao, gerando uma forma com menor perda de significao (g(x)).

    Consideraes finais:

    (i). A avaliao de erros numricos em mquinas digitais pode ser feita caso se tenha disponibilidade de uma estimativa do valor exato para o resultado desejado. Desta forma pode-se avaliar o Erro Numrico atravs das seguintes formas:

    - Erro absoluto = | Valor obtido - Valor exato |

    - Erro relativo = Erro absoluto Valor exato

    - Erro percentual = Erro relativo . 100%

    A representao dos erros numricos em forma de Erro relativo (ou percentual) mais realstica (vide exerccio 4.3)

    (ii). A estimativa de valores exatos, ou mais prximos do exato, para os resultados de algoritmos numricos, podem ser obtidas das seguinte formas:

    - Estimar o valor mais exato como sendo aquele obtido com o algoritmo numrico operando em dupla preciso, ou seja, reavalia-se o valor obtido numericamente, mas agora com preciso superior, na expectativa de que os resultados sejam mais exatos.

    - Tentar estimar o valor mais exato atravs de simulao do algoritmo numrico em Sistemas de Computao Algbrica (SCA). Nestes sistemas pode-se recorrer a simulaes com preciso ilimitada e alguns casos especiais possvel se proceder a simulao exata do algoritmo.

    Obs.: Existem outras alternativas, como por exemplo, proceder simulaes numricas utilizando matemtica intervalar, de forma que se possa limitar o erro existente a um intervalo aritmtico. Outra possibilidade o tratamento do erro como uma varivel de comportamento estatstico, deste modo pode-se prever os limites do erro, segundo um tratamento estatstico de variveis.

    Exerccios:

    5.2). Implemente o algoritmo abaixo em um compilador com aritmtica numrica para P1 e P2 tipo real (Pascal, C, Fortran, ...)

    p1:= 1;

  • 32

    i:= FALSE; j:= 1; Repita p1:= p1/2; p2:= p1 + 1; j=j+1; SE p2

  • 33

    no momento de programar a resoluo de um modelo matemtico. Para resolver um determinado modelo o analista numrico deve se preocupar com:

    a escolha de mtodos de resoluo com menor nmero de operaes aritmticas envolvidas;

    a escolha de um algoritmo com menor nmero de recursividade; a escolha de um compilador, para implementar o algoritmo, que represente

    as variveis envolvidas com preciso suficientemente grande;

    No final de todo o processo o analista numrico deve ser capaz de:

    obter uma soluo de custo mnimo, ou seja, com menor demanda de memria e menor tempo de CPU;

    dimensionar o grau de confiabilidade dos resultados obtidos como soluo do modelo matemtico.

    Pois obter resultados em um programa de computador muito fcil, qualquer programa compilado gera resultados numricos, mas da a se dizer que estes resultados so as respostas para a soluo de um modelo matemtico, tem-se um longo caminho. necessrio que se faa um minucioso processo de anlise numrica dos resultados obtidos, para depois atribui-los soluo de um modelo matemtico.

  • 34

    2. SISTEMAS DE EQUAES LINEARES

    2.1 - INTRODUO

    Uma equao considerada linear quando as operaes envolvidas entre incgnitas so apenas operaes lineares. Por exemplo:

    a). x y z+ =/ 4 0 equao linear

    b). x y2 2 1 0+ + = equao no linear

    c). 1 0/ x y z+ + = equao no linear

    Quando vrias equaes lineares so agrupadas, de modo que todas devam ser satisfeitas simultaneamente por uma mesma soluo, tem-se um sistema de equaes lineares. Existem aplicaes de sistemas de equaes lineares nos mais variados segmentos da cincia e tecnologia.

    Def.: Um sistema de ordem n, constitudo por n equaes lineares a n incgnitas, toda expresso do tipo:

    A x b=

    a a a

    a a a

    a a a

    x

    x

    x

    bb

    b

    n

    n

    n n nn n n

    11 12 1

    21 22 2

    1 2

    1

    2

    1

    2

    L

    L

    M M L M

    L

    M M

    =

    (1)

    onde A a matriz de coeficientes, x o vetor de incgnitas e b o vetor de termos independentes.

    Exemplos de sistemas de equaes lineares:

    a). x xx x

    1 2

    1 2

    204

    + =

    =

    b). 1 11 1

    204

    1

    2

    =

    .

    x

    x Representao matricial do sistema (a).

    A resoluo de sistemas de equaes lineares pode ser obtida atravs de mtodos diretos, iterativos ou de otimizao.

    2.2). Mtodos Diretos:

    So mtodos que permitem obter a soluo do sistema realizando-se um nmero finito de operaes aritmticas. Portanto, o esforo computacional necessrio para se obter uma soluo do sistema perfeitamente previsvel. Esta soluo seria exata se no fosse a presena de erros de arredondamento.

  • 35

    So normalmente empregados a sistemas lineares com matrizes de coeficientes densas e de porte mdio (at 1000 equaes). Dentre os mtodos diretos mais comuns esto:

    2.2.1). Mtodo de Eliminao de Gauss:

    Consiste na transformao da matriz expandida (matriz de coeficientes acrescida da coluna de termos independentes) em matriz triangular, superior ou inferior, seguida de um processo de substituies sucessivas para explicitar a soluo do sistema. Esta transformao em matriz triangular (ou escalonamento) conseguida atravs da aplicao sucessiva de operaes elementares sobre linhas (ou sobre colunas) na matriz expandida, buscando a eliminao seletiva de elementos no nulos para torna-la uma matriz triangular. Podemos associ-lo a um processo de pivotamento, parcial ou total, que promove uma troca seletiva de linhas (ou colunas), visando tomar pivs (elementos da diagonais principais) com maior mdulo possvel, e assim procurando evitar a presena de pivs nulos.

    Ex. 1): Resolver o seguinte sistema de equaes lineares pelo mtodo de eliminao de Gauss sem pivotamento adotando operaes aritmticas com 4 (quatro) dgitos significativos e arredondamento ponderado.

    =++

    =+

    =++

    0279.0784.0421.00207.0784.0421.0 1193.0832.0448.0

    321

    321

    321

    xxx

    xxx

    xxx

    Na forma matricial tem-se

    =

    001

    279.0784.0421.0207.0784.0421.0

    193.0832.0448.0

    3

    2

    1

    x

    x

    x

    1). Gerao da matriz expandida:

    001

    279.0784.0421.0207.0784.0421.0

    193.0832.0448.0

    M

    M

    M

    2). Triangularizao correspondente a primeira coluna (k = 1):

    k = 1

    133133

    122122

    9397.0)448.0/()421.0(.9397.0)448.0/(421.0

    001

    279.0784.0421.0207.0784.0421.0

    193.0832.0448.0

    LLLLLLLLLLLL

    +

    M

    M

    M

  • 36

    0.939730.93973-

    1

    46037.056586.1038837.0002143.00193.0832.0448.0

    M

    M

    M

    3). Triangularizao correspondente a segunda coluna (k = 2):

    k = 2

    233233 7046.730)002143.0/5659.1(0.939730.93973-

    1

    46037.056586.1038837.0002143.00193.0832.0448.0

    LLLLLL

    M

    M

    M

    687.633330.93973-

    1

    25403.2840038837.0002143.00193.0832.0448.0

    M

    M

    M

    4). Processo de retrosubstituio sucessiva:

    Aps a triangularizao analisa-se o sistema de equaes equivalente, gerado a partir do processo de eliminao empregado:

    687.63333 .25403.2840 0 93973.038837.0002143.00

    1 193.0 832.0448.0

    321

    321

    321

    =++

    =+

    =++

    xxx

    xxx

    xxx

    Obs.: Note-se que o valor de x3 pode ser diretamente obtido a partir da equao 3, uma vez que esta equao independe de x1 e x2. Posteriormente os valores de x2 e x1 so obtidos das equaes 2 e 1, respectivamente.

    x3 = 687.63333/284.25403 x3 = 2.41908

    x2 = 002143.0/)) 38837.0(93973.0( 3x x2 = -0.10821

    x1 = ( 1- 0.832.x2 0.193.x3 ) /(0.448) x1 = 1.39629

    Portanto, a soluo do sistema correspondente ao exemplo 1 :

    S = { 1.39629, -0.10821, 2.41908}

    Se os resduos ( r = | b - A x | ) de cada uma das equaes do sistema linear proposto forem avaliados, normalmente so obtidos valores residuais no nulos das equaes, decorrentes de erros de arredondamento. Por exemplo,

  • 37

    0.00000 | 0x279.0x784.00.421x- | r0.00001 | 0x207.00.784x 0.421x | = r0.00000 | 1x193.00.832x 0.448x | r

    3213

    3212

    3211

    =++=

    =+

    =++=

    Neste caso, tambm pode ser calculado o erro exato, dado por erro = | Xexato - Xaproximado |. A soluo exata estimada abaixo foi encontrada atravs do OCTAVE (cgs(A, b)), com 16 dgitos significativos :

    Xexato1 = 1.396286256155218 Xexato2 = -0.111080218034935 Xexato3 = 2.419080303873203

    Ex. 2): Resolver o seguinte sistema de equaes lineares pelo mtodo de eliminao de Gauss com pivotamento parcial utilizando operaes aritmticas com 4 (quatro) dgitos significativos e arredondamento ponderado.

    =++

    =+

    =++

    1193.0832.0448.0 0207.0784.0421.0 0279.0784.0421.0

    321

    321

    321

    xxx

    xxx

    xxx

    Na forma matricial tem-se

    =

    =

    100

    193.0832.0448.0207.0784.0421.0

    279.0784.0421.0

    3

    2

    1

    x

    x

    x

    1). Gerao da matriz expandida:

    100

    193.0832.0448.0207.0784.0421.0

    279.0784.0421.0

    2). Pivotao parcial, correspondente ao primeiro piv (k=1):

    (i). Busca do maior elemento em mdulo da coluna k = 1:

    k=1

    = 100

    193.0832.0)448.0( 207.0784.0421.0

    279.0784.0421.0

    3i

    (maior mdulo da coluna k=1 est na linha i = 3).

    (ii). troca de linhas:

    13

    31

    100

    193.0832.0)448.0( 207.0784.0421.0

    279.0784.0421.0

    LL

    LL

    (Troca da linha L1 com L3 e vice-versa)

  • 38

    (iii). Matriz pivotada:

    001

    279.0784.0421.0207.0784.0421.0

    193.0832.0)448.0(

    M

    M

    M

    3). Processo de triangularizao, correspondente ao primeiro piv (k=1):

    133133

    122122

    9397.0)448.0/421.0(L9397.0)448.0/421.0(L

    001

    279.0784.0421.0207.0784.0421.0

    193.0832.0)448.0(

    LLLLLLLLLL

    +

    M

    M

    M

    0.93970.9397-

    1

    4604.05659.103884.0002143.00193.0832.0)448.0(

    M

    M

    M

    Obs.: Note que as operaes elementares aplicadas acima eliminam os elementos abaixo da diagonal principal na primeira coluna k=1. A operao de eliminao acontece sempre que subtrai-se de cada linha i, a linha do piv i=k multiplicada pelo elemento a ser eliminado divida pelo elemento piv.

    4). Pivotao Parcial, correspondente ao segundo piv (k=2):

    (i). Busca parcial do maior mdulo da coluna k = 2 (busca a partir da segunda linha e da segunda coluna, pois a primeira coluna j foi anulada)

    k=2

    0.93970.9397-

    1

    4604.0)5659.1(03884.0002143.00193.0832.0)448.0(

    M

    M

    M

    23

    32

    LLLL

    0.93970.9397-

    1

    4604.0)5659.1(03884.0002143.00193.0832.0)448.0(

    M

    M

    M

    0.9397-0.9397

    1

    3884.0002143.004604.0)5659.1(0193.0832.0)448.0(

    M

    M

    M

    (maior mdulo da coluna k=2 est na linha i = 3).

    (ii). Observe que o pivo antigo, a22=0,002143 era um valor pequeno e poderia propagar erros nas prximas operaes de eliminao.

    5). Processo de triangularizao, correspondente ao segundo piv (k=2):

  • 39

    23233 .00136767.0)5659.1/002143.0(L

    0.9397-0.9397

    1

    3884.0002143.004604.0)5659.1(01930.0832.0)448.0(

    LLLL

    M

    M

    M

    0.9410-0.9397

    1

    3884.0004604.0)5659.1(01930.0832.0)448.0(

    M

    M

    M

    6). Processo de retrosubstituio sucessiva:

    Primeiramente analisa-se o sistema de equaes equivalente, gerado a partir do processo de eliminao empregado:

    0.9410- 3890.00 0 9397.04604.05659.10

    1 193.0 832.0448.0

    321

    321

    321

    =+

    =++

    =++

    xxx

    xxx

    xxx

    Obs.: Note-se que o valor de x3 pode ser diretamente obtido a partir da equao 3, e posteriormente x2 e x1 a partir dos valores obtidos anteriormente.

    x3 = -0.9410/ (-0.3890) x3 = 2.41908

    x2 = ( 0.9397 0.4604x3 ) / 1.5659 x2 = -0.11115

    x1 = ( 1 0.832 x2 0.193 x3 ) /0.448 x1 = 1.39629

    Portanto a soluo do sistema dado no exemplo 2 :

    S = { 1.39629, -0.11115, 2.41908}

    Os resduos ( r = | b - A x | ):

    0.0001 = | 1x193.00.832x 0.448x | = r0.0000 = | 0x207.00.784x 0.421x | = r0.0002 | 0x279.0x784.00.421x- | r

    3213

    3212

    3211

    ++

    +

    =++=

    Neste caso, tambm pode ser calculado o erro exato, dado por erro = | Xexato - Xaproximado |, atravs da soluo exata encontrada atravs do OCTAVE (cgs(A, b)):

    Xexato1 = 1.396286256155218 Xexato2 = -0.111080218034935 Xexato3 = 2.419080303873203

    Obs.: Note que com o processo de pivotamento parcial: Eliminam-se os possveis pivs nulos, caso a matriz de coeficientes seja no

    singular (determinante zero);

  • 40

    Tambm consegue-se uma reduo nos efeitos de erros de arredondamento (diminuio da perda de significao), imperceptivel para sistemas pequenos (poucas equaes).

    Alternativamente, pode-se implementar o mtodo de eliminao de Gauss usando a pivotao total, que computacionalmente 'um pouco' mais eficiente, induzindo um menor erro de arredondamento acumulado, de forma a se obter solues computacionalmente mais estveis em relao s perturbaes introduzidas por erros de arredondamento. No pivotamento total, ou completo, procura-se o elemento de maior mdulo dentre todos os elementos disponveis na matriz de coeficientes, promovendo trocas de linhas e/ou colunas conforme a necessidade. Para avaliar as consequncias destas trocas de linhas e colunas deve-se interpretar os elementos da matriz expandida em termos das equaes do sistema, assim:

    Troca de linhas implica apenas em trocar a ordem na apresentao das equaes; Troca de colunas implica na troca da ordem de apresentao das variveis (incgnitas) do sistema.

    Ex. 3): Resolver o seguinte sistema de equaes lineares, usando a pivotao total e operaes aritmticas com 4 (quatro) dgitos significativos e arredondamento ponderado.

    =+

    =++

    =++

    0x207.0x784.0x421.0 1x193.0x832.0x448.0 0x279.0x784.0x421.0

    321

    321

    321

    Na forma matricial tem-se

    =

    010

    207.0784.0421.0193.0832.0448.0279.0784.0421.0

    3

    2

    1

    x

    x

    x

    1). Gerao da matriz expandida:

    010

    207.0784.0421.0193.0832.0448.0279.0784.0421.0

    M

    M

    M

    2). Pivotao total, correspondente ao primeiro piv (k=1):

    (i). Busca do maior mdulo dentre todos os elementos da matriz:

    3 2 1 010

    207.0784.0421.0193.0)832.0(448.0279.0784.0421.0

    2i

    2=j

    =

    M

    M

    M

    (o elemento de maior mdulo est na coluna j = 2 e na linha i = 2).

  • 41

    Obs.: Observa-se que foi acoplada uma linha adicional na matriz de coeficientes para o armazenamento da ordem de apresentao das variveis envolvidas. Ento, inicialmente tem-se a ordem natural das variveis x1, x2 e x3, cujos coeficientes multiplicadores so, respectivamente, os elementos da primeira, segunda e terceira colunas.

    (ii). Efetua-se a troca de linhas e colunas:

    1

    2

    2

    1

    12

    21

    C

    C

    C

    C

    3 2 1

    LLLL

    010

    207.0784.0421.0193.0832.0448.0279.0784.0421.0

    M

    M

    M

    (Troca da linha L1 com a linha L2 e vice-versa, e troca dos elementos da coluna 1 com os elementos da coluna 2 e vice-versa).

    (iii). Matriz pivotada:

    3 1 2 001

    207.0421.0784.0279.0421.0784.0193.0448.0)832.0(

    M

    M

    M

    Obs.: Note no processo de pivotamento total, a ordem de apresentao das variveis xi envolvidas podem ser alteradas.

    3). Processo de triangularizao, correspondente ao primeiro piv (k=1):

    3 1 2 L9423.0LLL0.832)/784.0(LLL9423.0LLL )832.0/784.0(LL

    001

    207.0421.0784.0279.0421.0784.0193.0448.0)832.0(

    133133

    122122

    M

    M

    M

    3 1 2

    0.9423-0.9423-

    1

    3839.00012.00097.08432.00193.0448.0)832.0(

    M

    M

    M

    4). Pivotao total, correspondente ao segundo piv (k=2):

    (i). Busca do maior mdulo dentre os elementos da matriz, a partir da segunda linha e segunda coluna.

  • 42

    3 1 2 0.9423-0.9423-

    1

    3889.00012.000971.0)8432.0(0193.0448.0832.0

    2i

    2=j

    =

    M

    M

    M

    (Elemento de maior mdulo localizado na coluna j=2 e linha i=2).

    (ii). No h troca de linhas e colunas, a matriz j est naturalmente pivotada:

    5). Processo de triangularizao, correspondente ao segundo piv (k=2):

    233233 L001423.0LLL)8432.0/0012.0(LL0.9423-0.9423-

    1

    3889.00012.000971.0)8432.0(0193.0448.0832.0

    M

    M

    M

    3 1 2 0.9410-0.9423-

    1

    3890.0000971.0)8432.0(0193.0448.0832.0

    M

    M

    M

    6). Retrosubstituio:

    3 1 2 0.9410-0.9423-

    1

    3890.0000971.0)8432.0(0193.0448.0832.0

    M

    M

    M

    Retornando a forma matricial (note a nova ordem das variveis):

    =+

    =+

    =++

    0.9410- 3890.00 09423.0 0971.0 8432.00

    10.193 0.448 832.0

    312

    312

    312

    xxx

    xxx

    xxx

    x3 = -0.9410/ -0.3890 x3 = 2.419

    x1 = ( -0.9423 0.0971x3 ) / -0.8432 x1 = 1.396

    x2 = ( 1 0.448 x1 0.193 x3 ) /0.832 x2 = - 0.1106

    S = {1.396,-0.1106, 2.419}

    Os resduos ( r = | b - A x | ) so:

    0.0003 = | 0x207.00.784x 0.421x | = r0.0003 = | 1x193.00.832x 0.448x | = r0.0005 | 0x279.0x784.00.421x- | r

    3213

    3212

    3211

    +

    ++

    =++=

  • 43

    E o erro exato obtido foi:

    Erro1= | 1.396 - 1.396 | = 0.0000 Erro2= | -0.1111 - (-0.1106) | = 0.0005 Erro3= | 2.419 - 2.419 | = 0.0000

    Consideraes:

    - Observando os resduos encontrados nos exemplos acima, nota-se que o resduo nem sempre um bom elemento para certificarmos a exatido da soluo, pois embora encontremos resduos menores no mtodo sem o uso do pivotamento, comparativamente aos mtodos que se utilizaram de pivotamento parcial e total, a soluo do sistema normalmente mais exata nos mtodos com pivotao. Pode-se observar que em sistemas de mdio porte os mtodos com pivotao total fornecem solues mais exatas.

    - Pode-se observar que nas operaes elementares sobre linhas aplicadas no mtodo de Gauss, aparece uma operao de diviso pelo piv. Sabe-se que na maioria das operaes de diviso so gerados erros de arredondamentos (vide captulo de erros numricos), ento ao longo do processo de eliminaes sucessivas, estes erros de arredondamento vo se acumulando, pois os resultados obtidos em um estgio do processo de eliminao sero usadas no estgio seguinte.

    Para minimizar este efeito cumulativo dos erros de arredondamento, pode-se modificar as operaes elementares do processo de escalonamento da seguinte forma:

    Substitui-se a linha corrente pelo produto entre a prpria linha e o elemento piv subtrado do produto entre a linha do piv e o elemento a ser eliminado.

    Por exemplo:

    Se a linha L3 sofre a seguinte operao de eliminao do elemento a31 com o piv da primeira linha a11:

    L 3 L - a

    a L 3

    31

    111

    Sabendo-se que o objetivo desta operao anular o elemento a31, pode-se modificar esta operao, desde que se mantenha o resultado nulo na primeira coluna. Assim, se

    L - a

    a L = 03

    31

    111 (para a primeira coluna k = 1)

    Ento, pode-se multiplicar a equao acima pelo elemento piv a11, resultando numa forma alternativa, que mantm o resultado nulo para primeira coluna da matriz.

    a L - a L = 011 3 31 1

    Assim, com esta forma alternativa de aplicar as operaes de eliminao tem-se um menor acmulo de erros de arredondamento, pois no haver divises ao longo do processo de eliminao. Ser necessria apenas uma diviso em cada equao no momento de

  • 44

    determinar as variveis xi. Este procedimento alternativo pode gerar erros por perda de significao quando tem-

    se pivs de grande magnitude, ou quando o nmero de equaes elevado, pois nestes casos o acmulo de operaes de multiplicao em cada linha do sistema, especialmente nas ltimas linhas, pode conduzir a coeficientes muito grandes, podendo gerar valores que no possam ser representados (valores podem cair na regio de overflow).

    Exerccios:

    1). Monte um algoritmo para resolver um sistema de equaes lineares pelo mtodo de Gauss utilizando: Pivotao Parcial; Pivotao Total. 2). Como voc avaliaria o determinante da matriz de coeficientes utilizando o processo de eliminao adotado pelo mtodo de Gauss?

    2.2.2). Mtodo de Gauss-Jordan:

    Consiste na transformao da matriz expandida em matriz diagonal (normalizada com coeficientes unitrios), que equivalente a matriz identidade. Esta transformao obtida atravs da aplicao sucessiva de operaes elementares sobre linhas (ou sobre colunas), buscando a eliminao seletiva dos elementos no nulos externos a diagonal principal. Tambm pode-se associar este mtodo a um processo de pivotamento, parcial ou total.

    Ex. 3): Resolver o seguinte sistema de equaes lineares usando o mtodo de Gauss-Jordan com pivotamento parcial:

    3 15 4 75 84 2 3 72 5 3 12

    1 2 3

    1 2 3

    1 2 3

    x x x

    x x x

    x x x

    + + =

    + + =

    + + =

    . .

    adota-se tambm, operaes aritmticas com 4 (quatro) dgitos significativos e arredondamento ponderado.

    Na forma matricial tem-se

    3 15 4 754 2 32 5 3

    8712

    1

    2

    3

    . .

    =

    x

    x

    x

    1). Gerao da matriz expandida:

    3 15 4 754 2 32 5 3

    . .

    87

    -12

    M

    M

    M

  • 45

    2). Pivotao parcial, correspondente ao primeiro piv (k = 1):

    (i). Busca do maior mdulo da coluna k = 1

    k=1

    i = 2 ( )3 15 4 754 2 32 5 3

    . .

    87

    - 12

    M

    M

    M

    (o elemento de maior mdulo est na linha i = 2).

    (ii). troca de linhas:

    ( )3 15 4 754 2 32 5 3

    1 2

    2 1

    . .

    87

    - 12

    M

    M

    M

    L LL L (Troca da linha L1 com a linha L2 e vice-versa)

    (iii). Matriz pivotada:

    ( ). .

    4 2 33 15 4 752 5 3

    78

    - 12

    M

    M

    M

    Obs.: Note que at aqui tem-se um processo idntico a eliminao de Gauss.

    3). Processo de normalizao do primeiro piv (k=1):

    ( ). .

    /4 2 33 15 4 752 5 3

    41 1

    78

    - 12

    M

    M

    M

    L L

    1 0 5 0 753 15 4 752 5 3

    . .

    . .

    1.758

    - 12

    M

    M

    M

    4). Processo de diagonalizao, correspondente ao primeiro piv (k = 1):

    1 0 5 0 753 15 4 752 5 3

    32

    2 1

    3 1

    . .

    . .

    1.758

    - 12 L

    L2

    3

    M

    M

    M

    L LL L

    1 0 5 0 750 0 2 50 4 15

    . .

    .

    .

    1.752.75- 15.5

    M

    M

    M

    5). Pivotao Parcial, correspondente ao segundo piv (k=2):

    (i). Busca parcial do maior mdulo da coluna k = 2 (busca a partir da segunda linha e segunda coluna, pois a primeira coluna j foi anulada)

  • 46

    k=2

    1.752.75- 15.5

    LL

    2

    3

    1 0 5 0 750 0 2 50 4 15

    3

    2

    . .

    .

    ( ) .

    M

    M

    M

    LL

    (elemento de maior mdulo da coluna k=2 est na linha i = 3).

    (ii). troca de linhas:

    1.75- 15.52.75

    1 0 5 0 750 4 150 0 2 5

    . .

    ( ) ..

    M

    M

    M

    (Troca da linha L2 com a linha L3 e vice-versa)

    6). Processo de normalizao do segundo piv (k=2):

    1 0 5 0 750 4 150 0 2 5

    42

    . .

    .

    .

    / 1.75- 15.52.75

    L2

    M

    M

    M

    L

    1 0 5 0 750 1 0 3750 0 2 5

    . .

    .

    .

    1.75- 3.875

    2.75

    M

    M

    M

    7). Processo de diagonalizao, correspondente ao segundo piv (k = 2):

    1 0 5 0 750 1 0 3750 0 2 5

    0 5

    0

    1 2

    3 2

    . .

    .

    .

    .

    1.75- 3.875

    2.75

    L L

    L L

    1

    3

    M

    M

    M

    L

    L

    1 0 0 56250 1 0 3750 0 2 5

    .

    .

    .

    3.6875- 3.875

    2.75

    M

    M

    M

    9). Processo de normalizao do terceiro piv (k = 3):

    1 0 0 56250 1 0 3750 0 2 5 2 53

    .

    .

    . / .

    3.6875- 3.875

    2.75

    L3

    M

    M

    M

    L

    1 0 0 56250 1 0 3750 0 1

    .

    .

    3.688- 3.875

    1.1

    M

    M

    M

    10). Processo de diagonalizao, correspondente ao terceiro piv (k = 3):

  • 47

    1 0 0 56250 1 0 3750 0 1

    0 56250 375

    1 1 3

    2 2 3

    .

    .

    .

    .

    3.688- 3.875

    1.1

    M

    M

    M

    L L LL L L

    1 0 00 1 00 0 1

    3.069- 4.288

    1.1

    M

    M

    M

    Analisando o sistema de equaes equivalente, gerado a partir do processo de eliminaes sucessivas, tem-se o seguinte sistema:

    x x x

    x x x

    x x x

    1 2 3

    1 2 3

    1 2 3

    0 00 0 4 2880 0

    + + =

    + + =

    + + =

    3.069

    1.1 .

    Obs.: Note que cada equao representa explicitamente uma incgnita, ou seja, o vetor b de termos independentes modificado guarda a prpria soluo do sistema. Assim,

    x1 = 3.069 x2 = - 4.288 x1 = 1.100

    A soluo obtida

    S = {3.069,- 4.288,1.100}

    Exerccios:

    3). Elabore um algoritmo para resolver um sistema de equaes lineares pelo mtodo de Gauss-Jordan utilizando pivotao parcial;

    2.2.3 - Mtodo da Inverso de Matrizes:

    Seja o sistema dado pela eq. (1), A.x = b,

    onde A a matriz de coeficientes, x o vetor de incgnitas e b o vetor de termos independentes.

    Multiplicando a equao (1) pela matriz inversa A-1 de A, obtida a partir de um mtodo qualquer, tem-se,

    A-1.(A.x) = A-1.(b)

    Utilizando a associatividade do produto matricial resulta:

    (A-1.A).x = A-1.b I.x = A-1.b

  • 48

    x = A-1.b

    Portanto, pode-se obter o vetor de incgnitas x multiplicando a matriz inversa A-1 pelo vetor b. Trata-se de um mtodo eficiente quando dispomos da inversa da matriz A, caso contrrio temos o custo adicional da determinao da inversa.

    Ex. 4): Resolva o sistema de equaes lineares indicado abaixo usando o mtodo de inverso de matrizes. Utilize o processo de pivotamento parcial para evitar pivs nulos.

    3 15 4 75 84 2 3 72 5 3 12

    1 2 3

    1 2 3

    1 2 3

    x x x

    x x x

    x x x

    + + =

    + + =

    + + =

    . .

    Adota-se tambm operaes aritmticas com 4 (quatro) dgitos significativos e arredondamento ponderado.

    Na forma matricial tem-se

    3 15 4 754 2 32 5 3

    8712

    1

    2

    3

    . .

    =

    x

    x

    x

    1). Gerao da matriz inversa de A.

    Adota-se um mtodo prtico clssico para se obter a matriz inversa: (i). Primeiramente gera-se a matriz aumentada [ A | I ], composta pela matriz A e pela matriz identidade I da mesma ordem de A:

    3 15 4 754 2 32 5 3

    1 0 0. . 0 1 0

    0 0 1