Ficha1
Ficha1
Ficha1
Ficha 1
Nota: Quando não se especica o sistema PF, assume-se que se está a usar o sistema em base
decimal.
Comente os resultados.
Solução:
x = 10000, x̃ = 9999, ex̃ = 1,
y = 10 ỹ = 9, eỹ = 1.
Contudo, δx̃ ≃ 0.0001 = 10
−4 = 0.01% e δỹ ≃ 0.1 = 10%
(a) Determine os números positivos do sistema. Comece por notar que os elementos posi-
tivos do sistema têm a forma:
(0.a1 a2 a3 )2 × 2t , t ∈ {−1, 0, 1, 2}, onde a1 = 1 (por ser a1 ̸= 0) e os outros ai podendo
tomar os valores 0 e 1.
Solução:
Por exemplo, com a mantissa (0.100)2 e variando o expoente t:
(0.100)2 × 2−1 , (0.100)2 × 20 , (0.100)2 × 21 , (0.100)2 × 22 . No total, deve obter 16 números.
3. Represente x no sistema PF(10, 4, −10, 10), com arredondamento simétrico, nos seguintes
casos:
Solução:
1
4. Considere um sistema que utiliza 4 dígitos na mantissa e arredondamento simétrico. Deter-
mine, nesse sistema, uma aproximação da área dum círculo de raio r = 1.
Solução: A = πr2 =⇒ Ã = 0.3142 × 101 .
1
5. Considere a operação
3 + 23 , num sistema de ponto utuante com 4 dígitos e arredondamento
1 2
por corte. Verique se a igualdade seguinte é válida:
3 + 3 = 1.
Solução:
w1 = f l(1/3) = 0.3333 × 100 , w2 = f l(2/3) = 0.6666 × 100 , w3 = f l(w1 + w2 ) = 0.9999 × 100 .
0
A solução é w3 = 0.9999 × 10 ̸= 1.
8. [Matlab] Recorde que PF(2, 53, −1021, 1024), com arredondamento simétrico, é o sistema de
ponto utuante no Matlab, com precisão dupla (64 bits).
(b) [Não aval.] Verique se a condição lógica 3z = 0.3 dá verdadeira ou falsa. Justique.
(c) Indique quais são o maior e o menor números positivos representados no sistema.
2
9. [Matlab]. Considere a sequência de instruções
a = 1; b = a; count = 0;
while a + b ̸= a
b = b/2, count = count + 1
(a) Assumindo precisão total nos cálculos, o que espera quanto ao valor nal de count?
(b) Ajustando a sintaxe para Matlab, implemente as instruções acima num script com o
nome exemplo.m. Execute o script utilizando o Matlab e justique o resultado obtido
comparando com o que previu na alínea anterior.
10. [Matlab]. Considere a equação x2 + 2bx −√1 = 0, com b ≫ 1 e a fórmula (resolvente) que
permite obter a solução positiva x = −b + b2 + 1. Para b = 10
10 a solução é x = 5 × 10−11 ,
um valor muito acima do menor número representado pelo sistema de ponto utuante. No
√
entanto, se aplicarmos a fórmula x = −b + b2 + 1 obtemos um resultado distinto. Explique
porquê.
√
i) f (x) = x
ii) f (x) = exp(x)
iii) f (x) = sin(x)
iv) f (x) = xn , n ∈ N.
Solução:
iv) condf (x) = n, que não depende de x, apenas da potência n (xada). Logo o bom ou mau
condicionamento de f depende de n ≥ 1 ser pequeno ou grande. Se n igual ou próximo
de 1, f é obviamente bem condicionada para qualquer x.
2. Considere novamente a função f (x) = sin(x), cujo condicionamento foi estudado na alínea
anterior.
(a) [Matlab]. Utilizando um script em Matlab, recorra à função plot, para representar a
função f (x) = sin(x) bem como o respetivo número de condição condf (x) (questão
acima) no intervalo [−0.95π; 0.95π]. Na denição do domínio, utilize um espaçamento
de 0.01. Represente o gráco de f a linha tracejada e a vermelho. Represente o gráco de
condf a verde, utilizando marcadores do tipo circular. Ative a opção grid on. Distinga
ambos os grácos incluindo uma legenda. Comente o aumento do condicionamento em
relação com o comportamento do gráco de f.
(b) Determine uma estimativa para o erro relativo que se comete no cálculo de sin(x̃) sendo
x̃ uma aproximação para x = 3.14149 com um erro relativo |δx̃ | < 0.00005.
Solução: condf (x) = 30602.8 =⇒ |δf (x̃) | ≈ (30602.8) × (0.00005) ≈ 1.53 = 153%
3
1
3. (a) Estude a função ψ(x) = no que respeita ao condicionamento.
1−x
(b) Determine uma estimativa para o erro relativo de ψ(x̃), sendo x̃ uma aproximação para
x = 1.00000333... com um erro relativo |δx̃ | < 0.00005.
Comente o resultado.
4. Sob certas hipóteses, a velocidade de um pára-quedas pode ser determinada pela equação
gm
1 − e−(c/m)t ,
v(t) =
c
onde g designa a aceleração da gravidade, m a designa a massa, e c é o coeciente de
resistência ao ar. Calcule o valor de v(t) em t = 6, se g = 9.8 m/s2 , m = 50 Kg e c = 12.5.
Considerando c = 12.5 como o valor correto para esse parâmetro, estime o erro relativo no
cálculo da velocidade se apenas conhecermos uma aproximação c̃ vericando |c − c̃| ≤ 2.
Sugestão: Fixe o valor t=6 e considere o lado direito de v(6) como uma função de c.
√
π(1 − 3
|δPθ̄ | ≃ √ δθ̄ ,
3(3 + 3)
6. Mostre que as estimativas de erro relativo nas operações x·y e x/y podem ser dadas por
e
δx̃/ỹ ≈ δx̃ − δỹ
respetivamente.
n ∂f
X xk ∂x k
(x)
δf (x̃) ≈ pf,k (x)δx̃k , pf,k (x) := .
f (x)
k=1
ȳ = tan(ā + b̄)/2.
4
8. Sejam x = π = 3.1415926... e y = 2199/700 = 3.1414285....
Solução: Tem-se Us = 0.5 × 10−3 . Erros relativos: |δx̃ | ≃ 0.131 × 10−3 , |δỹ | ≃
0.137 × 10−3 .
Note que estes erros não excedem Us , como seria de esperar.
(c) Calcule os erros absoluto e relativo dez̃ em relação a z = x − y .
Solução: Tem-se |δz̃ | ≃ 5.10, ou seja, z̃ = x̃ − ỹ apresenta 510% de erro! Houve um
grande aumento do erro relativo comparativamente aos erros de x̃ e ỹ .
(d) Obtenha agora representações em vírgula utuante com 6 algarismos na mantissa de xe
y. Determine f l ( f l(x)−f l(y) ) e o respetivo erro relativo. Note que houve melhoria nos
resultados em relação a b) pelo facto de se terem utilizado mais algarismos na mantissa
(ou seja uma maior precisão).
9. Dada a função f (x) = 1 − cos(x), pretende-se determinar uma aproximação para f (10−2 ),
num sistema decimal de vírgula utuante, com 4 dígitos na mantissa e arredondamento por
corte. Calcule (use radianos) um valor aproximado para cos(10−2 ) = 0.9999500004166...
nesse sistema. Use esse valor para calcular uma aproximação para f (10
−2 ) (representando-a
Solução: Deve obter a aproximação: f (10−2 ) ≃ 0.1000 × 10−3 , com erro relativo ≃ 1.
10. Considere um sistema de ponto futuante de base 10 e 4 dígitos na mantissa, com arredonda-
√ √
mento simétrico. Dados x = 8.765 e y = 8.766, calcule uma aproximação para x− y
nesse sistema. Calcule o erro relativo dessa aproximação e compare com a estimativa obtida
utilizando a fórmula de propagação de erros.
√ √
Sugestão: Comece por obter o valor exato: f (x, y) = x− y = −1.6888 × 10−4 . Para
obter uma aproximação, comece por calcular
p
f l(x) = 0.8765 × 10 =⇒ p f l(x) = 2.96057...
p = 0.8766 × 10 p
f l(y) =⇒ f l(y) = 2.96074...
f l( f l(x)) = ..., f l( f l(y)) = ...
Complete os cálculos.
(b) Diga se a função ψ(a, b) = sin(ab) é bem condicionada para pontos (a, b) ̸= (0, 0) tais
que ab ≃ 2kπ , dado k > 0. Justique a sua resposta começando por calcular o número de
condição da função ψ(a, b).
5
1 1
12. Considere a função ϕ(x) = − .
1+x x
(a) Determine o número de condição de ϕ(x). Que pode dizer sobre o condicionamento
para valores de x muito grandes?
z1 = 1 + x, z2 = 1/x, z3 = 1/z1 , z4 = z3 − z2
i. Utilizando este algoritmo, num sistema decimal de ponto utuante com 3 algarismos
na mantissa, calculeϕ(10000).
ii. Considerando o valor exato ϕ(10000) = −9.999000099990002 × 10
−9 , calcule o erro
relativo do valor obtido na alínea anterior. Comente o resultado.
iii. Apresente uma forma alternativa de calcular ϕ(10000) que não conduza a esse tipo
de erros. Conrme efetuando os cálculos.
Solução:
(a) Tem-se
1 1
xϕ′ (x) x − (1+x) 2 + x2
1 1
x
Condϕ(x) = = 1 1 =x + = 1+ ≈ 2,
ϕ(x) 1+x − x
1+x x 1+x
x ≫ 1. Efetuando os cálculos:
z1 = f l(1 + 10000) = 0.1 × 105 z2 = 0.1 × 105 × 0.1 × 105 = 0.1 × 109
z3 = −10−8 = −0.1 × 10−7
|−9.999000099990002×10−9 −(−10−8 )|
Erro relativo:
|−9.999000099990002×10−9 |
= 10−4 = 0.01%
Este exemplo ilustra a noção de instabilidade numérica (de um algoritmo).
13. Considere uma máquina de calcular que usa o sistema de ponto utuante
Ao calcular vários valores f (x) de uma função f nessa máquina usando o algoritmo
√
z 1 = x2 , z2 = z1 − 1, z3 = z2 , z4 = x − z3 ,
vericou-se que, para valores de x muito grandes, o erro relativo era elevado.
6
(a) Identique a função f.
(b) Verique que o erro é 100% para f (2000.0045) calculado em F pelo algoritmo dado.
(c) Qual a razão desse erro relativo elevado: o problema é mal condicionado ou há insta-
bilidade numérica? Justique.
(d) Apresente uma forma de calcular f (x) que não apresente erros relativos tão elevados
quando x é muito grande.
1
pf,1 (x, y) = , pf,2 (x, y) = ...
ln(x) − ln(y)
Solução:
z = x − y = 3.4633 × 106 ,
z̃ = f l(f l(x) − f l(y)) = ...
|δz̃ | ≃ 0.000952 = 0.0952%
Matéria Problema