Baixe o app para aproveitar ainda mais
Prévia do material em texto
Exercício 3 - Encontrando as regiões de underflow e overflow Para estudar as regiões limites do conjunto de ponto flutuante, escreva um programa onde o usuário solicita um número(float) e realize dois tipos de cálculo: (i) deve-se multiplicar o número por ele mesmo até que o valor extrapole o maior número de ponto flutuante, contando quantas vezes este processo ocorreu (a multiplicação do número por ele mesmo); (ii) de maneira semelhante, deve-se dividir o número por ele mesmo, até que o valor extrapole o limite do menor número representado na máquina, contando quantas vezes este processo ocorreu (a divisão do número por ele mesmo). Para saber quais são os maiores e menores números faça os comandos: import sys print(sys.float_info) A saída do programa tem o formato print("n = ",n, "\tinf", "\nm = ",m, "\t0.0") onde n é o contador do caso (i) e m é o contador do caso (ii). Teste 1 Entrada: 6.78 Saída: n = 370 inf m = 391 0.0 Teste 2 Entrada: 72.83 Saída: n = 165 inf m = 175 0.0 Teste 3 Entradas: 254.89 Saída: n = 128 inf m = 136 0.0 Exercício 1 - Área do retângulo Deseja-se calcular a área de um retângulo de duas maneiras: (i) da forma tradicional area1=LH, onde L e H são os lados do retângulo; (ii) area2=k=1nL Hn, onde n é o número de retângulos com lados L e Hn. Este programa tem como objetivo evidenciar a propagação dos erros de arredondamento, na obtenção de um resultado numérico (no primeiro caso uma operação de multiplicação, e no segundo caso centenas de operações de multiplicação e soma). Crie um programa que solicite os lados L (float) e H (float), e o número de intervalos n (int). Calcule o módulo da diferença entre área 1 e a área 2, para todos os valores com lados L e Hn+i, para i = -50, …, 50, ou seja, no intervalo entre n - 50 até n+50. Imprima como saída do programa a máxima diferença em módulo (dif_max), assim como o valor n + i onde ocorre a máxima diferença (n_max). A formatação de saída é a seguinte: print("n_max = {0:d}\nerro_maximo = {1:.14f}".format(n_max,dif_max)) obs: utilize apenas a biblioteca padrão math e as funções associadas a esta biblioteca. Teste 1 Entradas (L, H, n): 1190.27693873 9725697.89764096 1000 Saída: n_max = 1040 erro_maximo = 0.00030899047852 Teste 2 Entradas (L, H, n): 8907.47864032 7958946.86543668 981 Saída: n_max = 1014 erro_maximo = 0.00189208984375 Teste 3 Entradas (L, H, n): 1907.90439127 588974046.89507231 901 Saída: n_max = 928 erro_maximo = 0.02734375000000
Compartilhar