Buscar

Exercício 3

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

Continue navegando