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