Ficha 1

Propaganda
Exercícios de
MATEMÁTICA COMPUTACIONAL
Mestrado Integrado em Engenharia Química
Licenciatura Bolonha em Ciências de Engenharia - Engenharia
de Materiais
1o Semestre de 2007/2008
Notações
Capítulo I
Teoria dos erros
No que se segue, x designa um número real e x̃ um valor aproximado de
x, x ' x̃.
|ex | = |x − x̃| é o erro absoluto de x̃ em relação a x.
se x 6= 0, então
Seja δx = x−x̃
x
|δx | é o erro relativo de x̃ em relação a x.
O valor 100 |δx |, em percentagem, representa a percentagem de erro
Nos exercícios deste capítulo os números são representados em base decimal.
1. Represente x em vírgula utuante com 4 dígitos e arredondamento
simétrico, nos seguintes casos
a) x = 1/6
b) x = 1/3
c) x = −83784
d) x = −83785 e) x = 83798 f) x = 0.0013296
Cancelamento subtractivo
2. Deduza a seguinte fórmula para δz , onde z = x−y , sendo x e y números
reais
ez
x ex y
ey
x ex
y ey
=
−
=
−
δz =
z
x−y x
x−y y
x−y x
x−y y
Conclua que o erro relativo de z , |δz |, pode ser muito grande, mesmo
que o erro absoluto seja pequeno quando x e y são próximos. Como
ilustração, considere os dois exercícios seguintes.
1
3. Considere os números x = π e y = 2199/700.
a) Pretendem-se aproximações x̃ e ỹ de x e y , respectivamente, com
erros absolutos não excedendo 0.0005. Escolha x̃ e ỹ com 4 dígitos na
mantissa, usando arredondamento simétrico. Obtenha ainda x̃ − ỹ .
b) Calcule os erros absolutos e relativos de x̃, ỹ e de x̃ − ỹ , bem como
as percentagens de erro. Comente.
c) Com o objectivo de ilustrar a inuência nos resultados da precisão
utilizada, represente em vírgula utuante com 6 algarismos na mantissa
os números x e y . Determine f l ( f l(x) − f l(y) ) e o respectivo erro
relativo. Houve melhoria nos resultados em relação a b) ?
4. Considere os valores
A = 0.492, B = 0.603, C = −0.494, D = −0.602, E = 10−5
Com a nalidade de calcular
F =
A+B+C +D
,
E
dois indivíduos, usando uma máquina com 3 dígitos na mantissa e com
arredondamento simétrico, efectuaram esse cálculo de forma distinta,
mas aritmeticamente equivalente. O indivíduo X calculou A+B , depois
C + D, somou os valores, e dividiu por E , obtendo F = 0. Por seu
turno, o indivíduo Y calculou A + C , depois B + D, somou os valores,
e dividiu por E , tendo obtido F = −100.
Verique os cálculos efectuados pelos dois indivíduos e comente a disparidade de resultados obtidos, atendendo a que se usaram processos
matematicamente equivalentes.
5. Considere a função real de variável real
f (x) =
1 − cos(x)
.
x2
a) Justique que, para valores de x próximos de 0, o cálculo de f (x)
constitui um problema bem condicionado.
b) Considere o seguinte algoritmo para o cálculo de f
z1 = cos(x),
z2 = 1 − z1 ,
z3 = z2 /x2 .
Mostre que o algoritmo é instável para x ∼ 0 (apesar de o problema
ser bem condicionado). (Sugestão: considere o cálculo de f (10−3 ) num
sistema de base 10, com 6 dígitos na mantissa).
2
c) Baseado na fórmula 1−cos(x)
= sin2 ( x2 ), proponha um algoritmo
2
equivalente que seja numericamente estável para x ∼ 0.
6. Ao calcular-se a expressão
f (x) = x −
√
x2 − 1
numa máquina usando o sistema de vírgula utuante VF(10,6,-30,30)
com arredondamento simétrico, vericou-se que para valores de x muito
grandes o erro relativo era também muito grande.
a) Verique que o erro relativo é de 100% para x = 2000. Qual o valor
do erro relativo para valores de x ainda maiores?
b) Qual a razão deste erro relativo grande: o problema é mal condicionado ou há instabilidade numérica? Justique e apresente uma
forma de calcular f (x) que não apresente erro relativo tão grande.
Exercícios com MATLAB
7. Provar que ii é um número real, e vericar em seguida este resultado
usando MATLAB.
8. Escrever as instruções de MATLAB para construir uma matriz triangular superior (respectivamente, inferior) de dimensão 10, tendo 2 na
diagonal principal e −3 na diagonal superior (respectivamente, inferior).
9. Escrever em MATLAB as instruções que permitem efectuar a troca
entre a terceira e a sétima linhas das matrizes construídas no Exercício
7., e em seguida as instruções que permitem a troca entre a quarta e a
oitava colunas.
10. Vericar se os seguintes vectores de R4 são linearmente independentes:
v1 = [0 1 0 1], v2 = [1 2 3 4], v3 = [1 0 1 0], v4 = [0 0 1 1].
11. Escrever as funções seguintes e calcular as suas primeiras e segundas
derivadas, bem como as suas primitivas, usando a toolbox symbolic de
MATLAB:
f (x) =
√
x2 + 1,
g(x) = sin(x3 ) + cosh(x).
3
12. Para um dado vector v de dimensão n, construir com
c=
P o comando
n+1−k
poly(v) os n + 1 coecientes do polinómio p(x) = n+1
c(k)x
k=1
que é igual a Πnk=1 (x − v(k)). Em aritmética exacta, deveria obterse v = roots(poly(c)). No entanto, isto não acontece devido a erros de arredondamento. Vericar este resultado, usando o comando
roots(poly([1:n])), onde n varia entre 2 e 25.
13. Escrever um programa para calcular a seguinte sucessão:
I0 = 1e (e − 1),
In+1 = 1 − (n + 1)In , for n = 0, 1, . . . .
Comparar o resultado numérico com o limite exacto In → 0 quando
n → ∞.
14. Considerar o seguinte algoritmo para calcular π . Gerar n pares {(xk , yk )}
de números aleatórios no intervalo [0, 1] e calcular em seguida o número
m dos que se encontram no primeiro quadrante do círculo unitário. Naturalmente, π é o limite da sucessão πn = 4m/n. Escrever um programa
em MATLAB para calcular esta sucessão e observar a evolução do erro
para valores crescentes de n.
15. Sendo π a soma da série
π=
∞
X
−m
16
m=0
2
1
1
4
−
+
+
,
8m + 1 8m + 4 8m + 5 8m + 6
podemos calcular uma aproximação de π somando os n primeiros termos, para n sucientemente grande. Escrever uma função de MATLAB
para calcular as somas parciais desta série. Para que valores de n é que
se obtém uma aproximação de π com a mesma precisão da variável π ?
16. Escrever um programa para calcular os coecientes binomiais ( nk ) =
n!/(k!(n − k)!), onde n e k são dois números naturais com k ≤ n.
17. Escrever em MATLAB uma função recursiva que calcule o n-ésimo
elemento fn da sucessão de Fibonacci. Sabendo que
fi
fi−1
=
1 1
1 0
fi−1
fi−2
(1)
escrever uma outra função que calcule fn com base nesta forma recursiva. Finalmente, calcular o tempo de CPU correspondente.
4
Download