Baixe o app para aproveitar ainda mais
Prévia do material em texto
GEX114 - Ca´lculo Nume´rico Profa.Dra.Amanda Castro Oliveira Departamento de Cieˆncias Exatas - DEX/UFLA amanda@dex.ufla.br Aula 3 Conversa˜o de nu´meros nos sistemas decimal e bina´rio De bina´rio para decimal simplesmente escrevemos o nu´mero bina´rio como uma soma de poteˆncias da base De decimal para bina´rio temos que dividir o processo em duas partes: Parte inteira: diviso˜es sucessivas Parte fraciona´ria: multiplicac¸o˜es sucessivas. O computador armazena os nu´meros com um nu´mero finito de d´ıgitos. Este tipo de “problema” pode gerar erros bizarros! 1.4.1 Aritme´tica de ponto flutuante Ponto fixo e ponto flutuante Ate´ agora so´ vimos nu´meros em que a posic¸a˜o do ponto estava fixa indicando a separac¸a˜o da casa das unidades da primeira casa fraciona´ria. Mas e´ poss´ıvel variar a posic¸a˜o do ponto mantendo o seu valor apenas multiplicando-o por uma poteˆncia da base seja ela qual for. Vejamos o que ocorre no sistema decimal: (45.31)10 = 4.531 ∗ 101 = 0.4531 ∗ 102 = 453.2 ∗ 10−1 Chamamos isto de ponto flutuante, pois ao inve´s de deixarmos a posic¸a˜o do ponto entre as unidades e a 1a casa fraciona´ria flutuamos(variamos) o ponto e corrigimos com a poteˆncia de 10 adequada para mantermos o valor absoluto do nu´mero. 1.4.1 Aritme´tica de ponto flutuante Na representac¸a˜o bina´ria tambe´m podemos fazer o mesmo vejamos: (110101)2 = 110.101 ∗ 23 = 1.10101 ∗ 25 = 0.0110101 ∗ 27 Assim vemos que sempre poderemos escrever todo os nu´meros bina´rios da seguinte forma: 0.110101 ∗ 27 1.1 ∗ 2−3 = 0.11 ∗ 2−2 1.001 ∗ 2−1 = 0.1001 ∗ 20 Enta˜o para representar os nu´meros reais na base bina´ria e´ necessa´rio armazenar somente a mantissa e o expoente. 1.4.2 Sistema de ponto flutuante normalizado Uma ma´quina(computador ou calculadora), representa um nu´mero real no sistema denominado aritme´tica de ponto flutuante. Neste sistema, o nu´mero x sera´ representado na forma: ±(.d1d2 · · · dt) ∗ βe onde: β e´ a base em que a ma´quina trabalha; t e´ o nu´mero de d´ıgitos na mantissa,t ∈ N; 0 ≤ dj ≤ (β − 1),j = 1, · · · , t com d1 6= 0; e e´ o expoente no intervalo [l , u]. Seja qual for a ma´quina, apenas um subconjunto dos nu´meros reais sera´ representado exatamente, e portanto um dado nu´mero real sera´ representado atrave´s de uma aproximac¸a˜o de truncamento ou arredondamento. 1.4.2 Sistema de ponto flutuante normalizado A unia˜o de todos os nu´meros em ponto flutuante, juntamente com a representac¸a˜o do zero, constitui o sistema de ponto flutuante normalizado que e´ indicado por: SPF(β, t, l , u). Neste sistema, o zero e´ representado da seguinte maneira: zero : .000 · · · 000︸ ︷︷ ︸ t vezes ∗βl Considerando este sistema de ponto flutuante normalizado dado na forma gene´rica SPF(β, t, l , u), temos: a) O menor nu´mero positivo representa´vel, na˜o nulo, e´ o real formado pela menor mantissa multiplicada pela base elevada ao menor expoente, isto e´: m = .1 00 · · · 0︸ ︷︷ ︸ t−1 vezes ∗βl 1.4.2 Sistema de ponto flutuante normalizado b) O maior positivo exatamente representa´vel e´ o real formado pela maior mantissa multiplicado pela base elevada ao maior expoente, ou seja: M = . (β − 1)(β − 1) · · · (β − 1)︸ ︷︷ ︸ t vezes ∗βu c) O nu´mero ma´ximo de mantissas positivas poss´ıveis e´ dado por: mantissas+ = (β − 1)βt−1 d) O nu´mero ma´ximo de expoentes poss´ıveis e´ dado por: expposs = u − l + 1 1.4.2 Sistema de ponto flutuante normalizado e) O nu´mero de elementos positivos representa´veis e´ dado pelo produto do nu´mero ma´ximo de mantissas pelo ma´ximo de expoentes: NR+ = mantissas+ ∗ expposs Portanto o nu´mero total de elementos exatamente representa´veis num SPF e´ dado por: NRt = 2 ∗ NR+ + 1. 1.4.2 Sistema de ponto flutuante normalizado Exemplo:Considere o sistema de ponto flutuante normalizado SPF(2,3,-1,2), isto e´, de base 2, 3 d´ıgitos na mantissa, menor expoente l = −1 e maior expoente u = 2. zero:.000 ∗ 2−1 a) m = .100 ∗ 2−1 b) M = .111 ∗ 22 c) mantissas+ = (β − 1)βt−1, logo mantissas+ = 4 d) expposs = u − l + 1, enta˜o expposs = 4 e) NR+ = mantissas+ ∗ expposs , portanto NR+ = 16 Exerc´ıcio:Considere o sistema de ponto flutuante normalizado SPF(3,2,-1,2) descreva todos os nu´meros exatamente representa´veis. 1.4.2 Sistema de ponto flutuante normalizado Considere o conjunto dos nu´meros reais R e o seguinte conjunto: G = {x ∈ R|m ≤ |x | ≤ M} onde SPF(10,3,-5,5) Dado um nu´mero real x , podem ocorrer va´rios casos: 1 x ∈ G : por exemplo x = 250.78 = 0.25078 ∗ 103. Este nu´mero possui 5 d´ıgitos na mantissa!! Nesta ma´quina esta˜o representados exatamente os nu´meros 0.250 ∗ 103 e 0.251 ∗ 103. se for usado o truncamento, x sera´ representado pelo primeiro(0.250 ∗ 103), mas se for usado arredondamento sera´ pelo u´ltimo(0.251 ∗ 103). 2 x < m : se x = 0.345 ∗ 10−7. Este nu´mero na˜o pode ser representado nesta ma´quina pois seu expoente e´ menor que −5 nete caso temos UNDERFLOW. 3 x > M : se x = 0.751 ∗ 108. Como seu expoente e´ maior que 5 a ma´quina na˜o consegue representa´-lo e acusa OVERFLOW. 1.4.2 Sistema de ponto flutuante normalizado Considere o conjunto dos nu´meros reais R e o seguinte conjunto: G = {x ∈ R|m ≤ |x | ≤ M} onde SPF(10,3,-5,5) Dado um nu´mero real x , podem ocorrer va´rios casos: 1 x ∈ G : por exemplo x = 250.78 = 0.25078 ∗ 103. Este nu´mero possui 5 d´ıgitos na mantissa!! Nesta ma´quina esta˜o representados exatamente os nu´meros 0.250 ∗ 103 e 0.251 ∗ 103. se for usado o truncamento, x sera´ representado pelo primeiro(0.250 ∗ 103), mas se for usado arredondamento sera´ pelo u´ltimo(0.251 ∗ 103). 2 x < m : se x = 0.345 ∗ 10−7. Este nu´mero na˜o pode ser representado nesta ma´quina pois seu expoente e´ menor que −5 nete caso temos UNDERFLOW. 3 x > M : se x = 0.751 ∗ 108. Como seu expoente e´ maior que 5 a ma´quina na˜o consegue representa´-lo e acusa OVERFLOW. 1.4.2 Sistema de ponto flutuante normalizado Considere o conjunto dos nu´meros reais R e o seguinte conjunto: G = {x ∈ R|m ≤ |x | ≤ M} onde SPF(10,3,-5,5) Dado um nu´mero real x , podem ocorrer va´rios casos: 1 x ∈ G : por exemplo x = 250.78 = 0.25078 ∗ 103. Este nu´mero possui 5 d´ıgitos na mantissa!! Nesta ma´quina esta˜o representados exatamente os nu´meros 0.250 ∗ 103 e 0.251 ∗ 103. se for usado o truncamento, x sera´ representado pelo primeiro(0.250 ∗ 103), mas se for usado arredondamento sera´ pelo u´ltimo(0.251 ∗ 103). 2 x < m : se x = 0.345 ∗ 10−7. Este nu´mero na˜o pode ser representado nesta ma´quina pois seu expoente e´ menor que −5 nete caso temos UNDERFLOW. 3 x > M : se x = 0.751 ∗ 108. Como seu expoente e´ maior que 5 a ma´quina na˜o consegue representa´-lo e acusa OVERFLOW. 1.4.2 Sistema de ponto flutuante normalizado A precisa˜o dos nu´meros armazenados em cada ma´quina sempre dependera´ do tamanho da mantissa. Em algumas linguagens de programac¸a˜o e´ poss´ıvel escolher a precisa˜o dupla e a mantissa podera´ ter o dobro de d´ıgitos dispon´ıveis o que aumentara´ a precisa˜o. Em contrapartida o tempo de execuc¸a˜o e requerimentos de memo´ria aumentam de forma significativa. 1.4.3 Zero em ponto flutuante O zero em ponto flutuante e´, em geral, representado com o menor expoente poss´ıvel da ma´quina. Pois se representa´ssemos o zero por uma mantissa nula e um expoente qualquer para a base β poder´ıamos ter perda de d´ıgitos significativos no resultado da adic¸a˜o deste zero a um outro nu´mero. Exemplo: Considere o sistema de ponto flutuante normalizado SPF(10,4,-4,4) tome x = 0.0000 ∗ 104 e y = 0.8756 ∗ 10−2 x+y = 0.0000∗104+0.8756∗10−2 = (0.000000+0.00000087)∗104 = = 0.8700 ∗ 10−2 Sa˜o perdidos 2 d´ıgitos no valor exato de y . Isto ocorre devido a` maneira como efetuamos as operac¸o˜es em ponto flutuante. Este zero deixa de ser o elementoneutro da adic¸a˜o!! Ele na˜o serve! Pro´xima aula Ja´ vimos como uma ma´quina representa os nu´meros, agora precisamos saber como lidar com os erros gerados pelos nu´meros que ela na˜o consegue representar. Por que o estudante de Ca´lculo Nume´rico na˜o afunda? Pois ele usa ponto flutuante!! Por hoje e´ so´ pessoal!! Pro´xima aula Ja´ vimos como uma ma´quina representa os nu´meros, agora precisamos saber como lidar com os erros gerados pelos nu´meros que ela na˜o consegue representar. Por que o estudante de Ca´lculo Nume´rico na˜o afunda? Pois ele usa ponto flutuante!! Por hoje e´ so´ pessoal!! Pro´xima aula Ja´ vimos como uma ma´quina representa os nu´meros, agora precisamos saber como lidar com os erros gerados pelos nu´meros que ela na˜o consegue representar. Por que o estudante de Ca´lculo Nume´rico na˜o afunda? Pois ele usa ponto flutuante!! Por hoje e´ so´ pessoal!!
Compartilhar