Baixe o app para aproveitar ainda mais
Prévia do material em texto
DEPARTAMENTO DE ENGENHARIA MECÂNICA MatemáticaComputacional Colectânea de Exercícios • Propostas de resolução • Conceitos fundamentais • Algoritmos básicos • Gráficos ilustrativos Leonel Fernandes Miguel Matos Neves Virgínia Infante José Viriato Licenciaturas em Engenharia Mecânica, Engenharia Aeroespacial e Engenharia e Arquitectura Naval - Ano Lectivo 2007/08 Para uma melhor leitura imprimir este documento em frente e verso. ÍNDICE TERMINOLOGIA v 2 1 2.1 NÚMEROS INTEIROS: Conversão da base b para a base 10 . . . . . . . . . . . . . . . . . . . . 1 2.2 NÚMEROS INTEIROS: Conversão da base b1 para a base b2 . . . . . . . . . . . . . . . . . . . 2 2.3 NÚMEROS REAIS: Conversão da base 10 para a base b < 10 . . . . . . . . . . . . . . . . . 3 2.4 NÚMEROS REAIS: Conversão da base b1 para a base b2 (b1 6= 10, b2 6= 10 e ambas > 2) . . . . . . . . . . . . . . . . . . . . . . 4 2.5 NÚMEROS REAIS: Conversão da base 10 para base b > 10 . . . . . . . . . . . . . . . . . . 6 2.6 SISTEMAS DE PONTO FLUTUANTE: Erros de representação, Unidade de arredondamento, Overflow e Un- derflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3 11 3.1 ARITMÉTICA EM SISTEMAS FP: Cancelamento subtractivo . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.2 FORMATO SIMPLES IEEE 754: Erros de representação . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.3 FORMATO SIMPLES IEEE 754: Erros de representação e Operações 0/0 e 1/0 . . . . . . . . . . . . . . 17 4 19 4.1 CONDICIONAMENTO DE UMA FUNÇÃO . . . . . . . . . . . . . . 19 4.2 CONDICIONAMENTO DE UMA FUNÇÃO E CANCELAMENTO SUBTRACTIVO . . . . . . . . . . . . . . . . . . 20 4.3 INTERPOLAÇÃO POLINOMIAL: Formas de Lagrange e Newton . . . . . . . . . . . . . . . . . . . . . . 22 4.4 INTERPOLAÇÃO POLINOMIAL: Algoritmo de Horner . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 5 27 5.1 INTERPOLAÇÃO POLINOMIAL: Máximos e mínimos locais, Pontos de inflexão . . . . . . . . . . . . . . 27 ii ÍNDICE 5.2 INTERPOLAÇÃO POLINOMIAL: Interpolação de Hermite, Nós duplos e diferença dividida confluente . 31 5.3 INTERPOLAÇÃO POLINOMIAL: Interpolação de Hermite, Nós triplos e diferença dividida confluente . . 33 6 35 6.1 INTERPOLAÇÃO POLINOMIAL: Spline quadrático . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 6.2 INTERPOLAÇÃO POLINOMIAL: Spline cúbico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 6.3 INTERPOLAÇÃO POLINOMIAL: Erros em splines cúbicos . . . . . . . . . . . . . . . . . . . . . . . . . . 41 7 43 7.1 DIFERENCIAÇÃO NUMÉRICA: Diferenças finitas de primeira e segunda ordens . . . . . . . . . . . . . 43 7.2 DIFERENCIAÇÃO NUMÉRICA: Majorante do erro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 7.3 DIFERENCIAÇÃO NUMÉRICA: Espaçamento óptimo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 7.4 DIFERENCIAÇÃO NUMÉRICA: Ponto de inflexão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 7.5 DIFERENCIAÇÃO NUMÉRICA: Espaçamento desigual . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 8 57 8.1 INTEGRAÇÃO NUMÉRICA: Regras do trapézio simples e de Simpson simples e composta . . . . . 57 8.2 INTEGRAÇÃO NUMÉRICA: Regra de Gauss-Legendre e de Gauss-Legendre-Lobatto . . . . . . . . 60 8.3 INTEGRAÇÃO NUMÉRICA: Regras de Gauss-Legendre e do trapézio composta . . . . . . . . . . . 61 9 65 9.1 INTEGRAÇÃO NUMÉRICA: Dedução e grau de regras de integração . . . . . . . . . . . . . . . . . 65 9.2 INTEGRAÇÃO NUMÉRICA: Regra do trapézio corrigida . . . . . . . . . . . . . . . . . . . . . . . . 66 9.3 INTEGRAÇÃO NUMÉRICA: Regra de Simpson adaptativa iterativa . . . . . . . . . . . . . . . . . . 68 10 75 10.1 DETERMINAÇÃO DE ZEROS DE EQUAÇÕES NÃO-LINEARES: Métodos da Bissecção, Falsa Posição e Secante . . . . . . . . . . . . . 75 10.2 EQUAÇÕES NÃO-LINEARES: Método da Bissecção e zeros múltiplos . . . . . . . . . . . . . . . . . . 79 ÍNDICE iii 10.3 EQUAÇÕES NÃO-LINEARES: Método da Falsa Posição . . . . . . . . . . . . . . . . . . . . . . . . . . 80 11 83 11.1 EQUAÇÕES NÃO-LINEARES: Natureza e localização de zeros de polinómios (metodologia) . . . . . . 83 11.2 EQUAÇÕES NÃO-LINEARES: Método de Newton-Raphson . . . . . . . . . . . . . . . . . . . . . . . . 86 11.3 EQUAÇÕES NÃO-LINEARES: Método do Ponto Fixo. Localização de zeros de polinómios e aceleração de Aitken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 12 95 12.1 SISTEMAS DE EQUAÇÕES LINEARES: Método de Gauss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 12.2 SISTEMAS DE EQUAÇÕES LINEARES: Método de Gauss com escolha de pivot total . . . . . . . . . . . . . . . 97 12.3 SISTEMAS DE EQUAÇÕES LINEARES: Método de Gauss com escolha de pivot parcial . . . . . . . . . . . . . 101 13 107 13.1 SISTEMAS DE EQUAÇÕES LINEARES: Métodos de Doolittle e Crout. Factorização LU . . . . . . . . . . . . . 107 13.2 SISTEMAS DE EQUAÇÕES LINEARES: Factorização LU. Cálculo do determinante . . . . . . . . . . . . . . . 111 13.3 SISTEMAS DE EQUAÇÕES LINEARES: Método de Choleski e factorização LDLT . . . . . . . . . . . . . . . . 113 13.4 SISTEMAS DE EQUAÇÕES LINEARES: Método de Doolittle. Inversa, determinante e número de condição . . . 115 REFERÊNCIAS 119 TERMINOLOGIA Listamos seguidamente as principais abreviaturas, símbolos e notação matemática usados neste texto. No que respeita a matrizes e vectores, ambos são grafados a negro: os primeiros em maiúsculas e os segundos em minúsculas. Também incluímos uma tabela com as funções elementares, seus significados e respectivas expressões usadas pela maior parte das linguagens de cálculo científico, nomeadamente em MATLAB. Tabela de funções elementares SÍMBOLO SIGNIFICADO EXPRESSÃO expx ≡ ex Exponencial de x exp(x) lnx ≡ loge x Logaritmo natural (base e) de x log(x) ou ln(x) cosx Co-seno de x cos(x) coshx ≡ (ex + e−x)/2 Co-seno hiperbólico de x cosh(x) sinx ≡ sen x Seno de x sin(x) sinhx ≡ (ex − e−x)/2 Seno hiperbólico de x sinh(x) tanx ≡ tg x Tangente de x tan(x) √ x ≡ x1/2 Raiz quadrada de x sqrt(x) |x| Valor absoluto de x abs(x) 2 TÓPICOS: Números Inteiros: Conversão da base b para a base 10; Conversão da base b1 para a base b2. Números Reais: Conversão da base 10 para a base b < 10; Conversão da base b1 para a base b2 (b1 6= 10, b2 6= 10 e ambas > 2); Conversão da base 10 para base b > 10. Sistemas de Ponto Flutuante: Erros de representação, Unidade de arredondamento, Overflow e Underflow. LEITURAS RECOMENDADAS: Capítulo 1 (pp. 1–12) do livro [Pina(1995)] 2.1 NÚMEROS INTEIROS: Conversão da base b para a base 10 Ache a representação decimal dos seguintes números inteiros: a) (101101)2; b) (221)3; c) (427)8 CONCEITOS TEÓRICOS Números inteiros positivos: Conversão da base b ≥ 2 para a base 10† (exp. (1.2.2), p. 4, [Pina(1995)]): (dndn−1 . . . d1d0)b = dnbn + dn−1bn−1 + · · ·+ d1b1 + d0b0 com 0 6 di < b− 1, i = 0, 1, . . . , n. Assim, existem (n+ 1) dígitos. ¤ RESOLUÇÃO a) (10110¸ d0 1)2 = 1× 25 + 0× 24 + 1× 23 + 1× 22 + 0× 21 + 1× 20 = 32 + 8 + 4 + 1 = (45)10 = 45 No MATLAB escrevemos bin2dec(’101101’), resultando ans = 45. b) (221)3 = 2× 32 + 2× 31 + 1× 30 = 25 †Para representar os inteiros de 0 a 10 necessitamos de quantos bits? Necessitamos de 4 bits ou 16 configurações, pois 23 < 10 < 24. 2 SEMANA 2 No MATLAB escrevemos base2dec(’221’,3), resultando ans = 25. c) (427)8 = 4× 82 + 2× 81 + 7× 80 = 4× 64 + 16 + 7 = 256 + 23 = 279 No MATLAB escrevemos base2dec(’427’,8), resultando ans = 279. ¥ 2.2 NÚMEROS INTEIROS: Conversão da base b1 para a base b2 Obtenha a representação octal (base 8) dos números inteiros: a) (101001)2; b) (1000111)2 CONCEITOS TEÓRICOSNúmeros inteiros positivos: Conversão da base 10 para a base b > 2 (p. 5, [Pina(1995)]): dnb n + dn−1bn−1 + · · ·+ d1b + d0 b = dnbn−1 + dn−1bn−2 + · · ·+ d1 + d0 b sendo d0 o resto da divisão. ¤ RESOLUÇÃO a) Apresentamos duas resoluções alternativas: Resolução 1: Converter da base 2 para a base 10 e posteriormente para a base octal, ou seja, (101001)2 → ( )10 → ( )8. ( )2 → ( )10: Aplicamos a exp. (1.2.2), p. 4, [Pina(1995)], pelo que (101001)2 = (41)10 = 41. ( )10 → ( )8: (101001)2 = 41 = (51)8, pois efectuamos as divisões (inteiras) e tomamos os restos na ordem inversa: 41 |8 1 5 |8 5 0 Resolução 2: Converter da base 2 para a base 2n, com n ≥ 2 e inteiro, através de agrupamentos de n dígitos. Neste caso n = 3, pois na base 8 temos os dígitos 0, 1, 2, . . . , 6, 7, que se representam na base 2 como (000)2, (001)2, (010)2, . . . , (110)2, (111)2, respectiva- mente. Por outras palavras, necessitamos de 3 bits para representar os algarismos 0 a 7. Esquematicamente temos (101001)2 → ( )8. EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 3 Assim, (101 | 001)2 → (22 + 20 | 20)8 → (5 | 1)8, ou seja, (101001)2 = (51)8 b) À semelhança do que fizemos na alínea a), obtemos Resolução 1: (1000111)2 → (26 + 22 + 21 + 20)10 = 64 + 4 + 2 + 1 = 71→ 71 |8 7 8 |8 0 1 |8 1 0 (1000111)2 = (107)8 Resolução 2: (001 | 000 | 111)2 → (20 | 0 | 22 + 21 + 20)8 → (1 | 0 | 7)8, ou seja (101001)2 = (107)8 ¥ 2.3 NÚMEROS REAIS: Conversão da base 10 para a base b < 10 Determine a representação binária do número real (0.5)10. CONCEITOS TEÓRICOS Números reais: Conversão da base 10 para a base b (p. 7, [Pina(1995)]): Para converter um real da base 10 para a base b procede-se segundo 4 passos: i) Separar a parte inteira da parte não-inteira; ii) Converter a parte inteira; iii) Converter parte não-inteira, multiplicando sucessivamente por b, usando a componente não-inteira do resultado para continuar e guardando a parte inteira para a representação; iv) Reunir as duas partes. ¤ RESOLUÇÃO Aplicando os conceitos teóricos acima, teremos i) Parte inteira: 0; Parte não-inteira: .5 ii) Converter a parte inteira: (0)10 = (0)2 iii) Converter parte não-inteira: 0.5× 2 = 1.0 −→ 1 0.0× 2 = 0. Portanto, obtemos (.1)2 como representação de (0.5)10 = 12 iv) Reunindo vem (0.5)10 = (0)2 + (.1)2 = (.1)2 ¥ Facilmente de verifica que (0.1)2 = 0× 20 + 1× 2−1 = 12 = (0.5)10 ¡ 4 SEMANA 2 2.4 NÚMEROS REAIS: Conversão da base b1 para a base b2 (b1 6= 10, b2 6= 10 e ambas > 2) Dado o número real 437.125 na base octal, determine a sua representação binária com 7 dígitos após a vírgula. CONCEITOS TEÓRICOS Ver pp. 7–8, [Pina(1995)] e resolução do Exercício 2.3. Números reais: Conversão da base b para a base 10 (exp. (1.3.2), p. 7, [Pina(1995)]): (dndn−1 . . . d1d0.d−1d−2 . . . d−k)b =dnbn + dn−1bn−1 + · · ·+ d1b1 + d0b0 +d−1b−1 + d−2b−2 + · · ·+ d−kb−k, sendo (dndn−1 . . . d1d0)b e (d−1d−2 . . . d−k)b os dígitos das parte inteira e não-inteira do número, respectivamente. ¤ RESOLUÇÃO Este Exercício pode ser resolvido de duas formas, indicadas de seguida. Resolução 1: Esquematicamente, temos dois passos principais (437.125)8 → ( )10 → ( )2 Conversão da base octal para a base 10: Aplica-se a exp. (1.3.2), p. 7, [Pina(1995)], ou seja 4× 82 + 3× 81 + 7× 80 + 1× 8−1 + 2× 8−2 + 5× 8−3 = 287 + 0.166015625 = 287.166015625 Dado que devemos considerar somente 7 dígitos após a vírgula (437.125)8 ≈ 287.1660156. Conversão da base 10 para a base binária: i) Parte inteira: 287; Parte não-inteira: .1660156 ii) Converter a parte inteira: EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 5 287 | 2 1 143 | 2 1 71 | 2 1 35 | 2 1 17 | 2 1 8 | 2 0 4 | 2 0 2 | 2 0 1 | 2 1 0 287 = (100011111)2 iii) Converter a parte não-inteira: 0.1660156× 2 = 0.3320312 −→ 0 0.3320312× 2 = 0.6640624 −→ 0 0.6640624× 2 = 1.3281248 −→ 1 0.3281248× 2 = 0.6562496 −→ 0 0.6562496× 2 = 1.3124992 −→ 1 0.3124992× 2 = 0.6249984 −→ 0 0.6249984× 2 = · · · (0.125)8 = (0.0010101 . . .)2 iv) (437.125)8 = (100011111.0010101 . . .)2 Considerando 7 dígitos após a vírgula, o resultado é (437.125)8 ≈ (100011111.0010101)2 Resolução 2: Uma vez que necessitamos de 3 bits para representar os números 0 a 7 (ver Reso- lução 2 do Exercício 2.2), cada dígito do número (437.125)8 corresponde a um grupo de 3 dígitos (3 bits) na base 2. Assim, (437.125)8 = (4 | 3 | 7 | . | 1 | 2 | 5)8 → (100 | 011 | 111 | . | 001 | 010 | 101)2 Como são pedidos 7 dígitos após a vírgula, ficamos com (437.125)8 ≈ (100011111.0010101)2 ¥ Verificação da parte não-inteira: (.0010101)2 = 1 × 2−3 + 1 × 2−5 + 1 × 2−7 = 0.1640625. Existe então um erro na representação da parte não-inteira, que deveria ser 0.166015625. Isto deve-se a termos truncado após o dígito d−7, quando seriam necessários 9 dígitos. ¡ 6 SEMANA 2 2.5 NÚMEROS REAIS: Conversão da base 10 para base b > 10 Dado o número real 539.125 na base decimal, achar a sua representação na base hexadecimal. CONCEITOS TEÓRICOS Quando a base é tal que b > 10, há que recorrer a outros símbolos para represen- tar os dígitos 10, 11, 12, . . . Uma possibilidade é recorrer às letras do alfabeto latino A,B,C, . . . No caso da base hexadecimal ou base 16, resulta, 0, 1, . . . , 9, A,B,C,D,E, F , cor- respondendo as letras aos dígitos A = 10, B = 11, C = 12, D = 13, E = 14, F = 15. ¤ Após esta ressalva, a conversão da base 10 para a base b > 10 processa-se segundo os quatro passos referidos nos Conceitos Teóricos do Exercício 2.3. RESOLUÇÃO Esquematicamente (539.125)10 → ( )16 i) Parte inteira: 539; Parte não-inteira: .125 ii) Converter a parte inteira: 539 |16 59 33 |16 11 1 2 |16 2 0 539 = (21B)16 iii) Converter a parte não-inteira: 0.125× 16 = 2.0 −→ 2 0.000× 16 = 0.0 −→ 0 (0.125)10 = (0.2)16 iv) Reunindo a parte inteira à parte não-inteira fica (539.125)10 = (21B.2)16 obtendo-se uma representação exacta. ¥ EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 7 2.6 SISTEMAS DE PONTO FLUTUANTE: Erros de representação, Unidade de arredonda- mento, Overflow e Underflow Considere os sistemas de ponto flutuante FP (10, 5, 2, A) e FP (10, 5, 2, T ). a) Represente o número −327.258 nesses sistemas. b) Qual o maior número em módulo representável nesses sistemas? c) Qual o menor número em módulo representável nesses sistemas? c) Calcule os erros relativos de representação e compare-os com as respectivas unidades de arredondamento. CONCEITOS TEÓRICOS Um sistema FP (b, p, q) é constituído por todos os números reais x da forma ([Pina(1995)], pp. 9-10) x = ±mbt em que b−1 6 m 6 1− b−p |t| 6 bq − 1 e ainda x = 0. Portanto, x = ±(.d−1d−2d−3 . . . d−p)b±(tq−1...t1t0), sendo p um número finito de dígitos para a mantissa e q um número finito de dígitos para o expoente, denominando-se b por base. Salvo indicação em contrário, considera-se que a mantissa é normalizada, i.e., d−1 6= 0, exceptuando a representação do zero. Truncatura (T ): Desprezam-se os dígitos do número real x que não cabem na mantissa, i.e., os dígitos para além dos p primeiros não são incluídos na representação. ([Pina(1995)], p. 10) Arredondamento (A): O número real x é representado pelo número do sistema que lhe está mais próximo. ([Pina(1995)], pp. 10-11) Limite de overflow: Maior número em módulo representável nesses sistemas, ou seja, em termos computacionais, maior número que posso guardar em memória. Este número não depende de se fazer arredondamento ou truncatura. Limite de underflow: Menor número em módulo representável nesses sistemas. Este número depende de se considerar a mantissa normalizada ou não. Unidade de arredondamento, u: Majorante do erro relativo na representação de um número num dado sistema FP (b, p, q),tal que ([Pina(1995)], p. 12) u = 1 2b 1−p em FP (b, p, q, A) b1−p em FP (b, p, q, T ) ¤ 8 SEMANA 2 RESOLUÇÃO a) Concretizando para o caso em análise ficamos com FP (10, 5, 2) : fl(x) = ±mb±t = ±(.d−1d−2d−3d−4d−5)10±(t1t0) com 0 6 di 6 9, para i = −1,−2,−3,−4,−5. Normalizando o número dado obtemos x = −(.327258)10+3 verificando-se que tem 6 dígitos na mantissa. Nos sistemas de ponto flutuante referidos teremos fl(−327.258) = −(.32726)10+03 em FP (10, 5, 2, A) fl(−327.258) = −(.32725)10+03 em FP (10, 5, 2, T ) b) O número limite de overflow é (0.99999)10+99 em FP (10, 5, 2, A) (0.99999)10+99 em FP (10, 5, 2, T ) sendo igual para T ou A. c) Para o formato normalizado, o número limite de underflow é (0.10000)10−99 em FP (10, 5, 2, A) (0.10000)10−99 em FP (10, 5, 2, T ) sendo igual para T ou A. Se tivermos um formato não normalizado este número é (0.00001)10−99. Neste caso falamos em underflow gradual. d) Atendendo à definição de unidade de arredondamento teremos neste caso u = 1 210 1−5 = (0.50000)10−4 em FP (10, 5, 2, A) 101−5 = (0.10000)10−3 em FP (10, 5, 2, T ) O erro relativo de representação é e = x˜− x x , EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 9 onde x˜ = fl(x) é a representação no sistema de ponto flutuante e x é o número real a representar. Assim, os erros relativo neste caso são∣∣∣−(0.32726)103−(−327.258)−327.258 ∣∣∣ = (.61114)10−7 < (0.50000)10−4 em FP (10, 5, 2, A)∣∣∣−(0.32725)103−(−327.258)−327.258 ∣∣∣ = (.24446)10−6 < (0.10000)10−3 em FP (10, 5, 2, T ) ¥ 3 TÓPICOS: Aritmética em Sistemas FP: Cancelamento Subtractivo. For- mato Simples IEEE 754: Erros de representação; Erros de representação e Ope- rações 0/0 e 1/0. LEITURAS RECOMENDADAS: Capítulo 1 (pp. 12–27) do livro [Pina(1995)] 3.1 ARITMÉTICA EM SISTEMAS FP: Cancelamento subtractivo Determine no sistema FP (10, 4, 2, T ) as raízes da equação x2 + 0.7341x+ (0.600)10−4 = 0 considerando que não existem dígitos de guarda† no processamento das operações em ponto flutuante. a) Usando a fórmula resolvente. Indique os erros absolutos Ex1 e Ex2 . b) Justifique a origem do erro relativo obtido na menor raiz (em módulo) e sugira uma forma de melhoria numérica para a resolução deste problema. CONCEITOS TEÓRICOS As operações aritméticas no sistema de ponto flutuante FP desenvolvem-se de acordo com os seguintes passos (DAONA):‡ 1. Decomposição dos operandos nas respectivas mantissas e expoentes: (mbt); 2. Alinhamento das mantissas, no caso de soma ou subtracção. Por exemplo, para t1 > t2 m1b t1 +m2bt2 = (m1 +m2bt2−t1)bt1 (.1)10−1 + (.5)10−2 = [(.1) + (.5)10−2+1]10−1; 3. Operação com mantissas e expoentes; 4. Normalização da mantissa. Por exemplo, (1.1)10−1 = (0.11)100; 5. Arredondamento ou truncatura na mantissa. †O processador pode ter mais dígitos que a memória, designando-se os dígitos adicionais por dígitos de guarda. ‡Em geral, as operações em FP não respeitam as propriedades comutativa, distributiva ou asso- ciativa. 12 SEMANA 3 Cancelamento subtractivo: Verifica-se quando se subtraem números muito próxi- mos no sistema de ponto flutuante utilizado. ¤ RESOLUÇÃO a) Sabemos que ax2 + bx+ c = 0⇔ x1,2 = −b± √ b2 − 4ac 2a e para a = 1, é matematicamente equivalente utilizar x2 + bx+ c = 0⇔ x1,2 = −b± √ b2 − 4c 2 . A sequência de realização deste cálculo em ponto flutuante é: fl(b) = (.7341)100 fl(b2) = (.7341× .7341)× (100 × 100) = (.5389 *Truncar028)100 = (.5389)100 fl(c) = (.6000)10−4 fl(4) = (.4000)10+1 fl(2) = (.2000)10+1 fl(4c) = (.4000× .6000)× (10−4 × 10+1) = (.2400)10−3 fl(b2 − 4c) = (.5389)100 − (.2400)10−3 = (.5389− .0002 *10 0 em evidencia e truncar 400)100 = (.5387)100 fl (√ b2 − 4c ) = [(.5387)100]1/2 = (.7339 : Truncar 618519)100 = (.7339)100 No cálculo de √ b2 − 4c assumimos que √x = x1/2 é uma função implementada, não sendo necessário decompô-la em funções elementares. Para a primeira raiz: fl ( −b− √ b2 − 4c ) = −(.7341)100 − (.7339)100 = −(1.4680) º Normalizar e truncar |100 = −(.1468)101 fl ( −b−√b2 − 4c 2 ) = −(.1468)101 (.2000)101 = −(.7340)100 = fl(x1) EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 13 Para a segunda raiz: fl ( −b+ √ b2 − 4c ) = −(.7341)100 + (.7339)100 = −(0.0002) º Normalizar |100 = −(.2000)10−3 fl ( −b+√b2 − 4c 2 ) = −(.2000)10−3 (.2000)101 = −(1.) º Normalizar |10−4 = −(.1000)10−3 = fl(x2) Para calcular os erros cometidos em aritmética FP é necessário conhecermos os valores exactos das raízes, com 5 dígitos na mantissa: x1,2 = −b±√b2 − 4c 2 = −0.7341±√0.73412 − 4× 0.00006 2 x1 = −(0.73402)100 ∨ x2 = −(0.81742)10−4 pelo que os erros absolutos e relativos efectivamente cometidos são: |Ex1 | = ∣∣−(0.7340)100 − [−(0.73402)100]∣∣ = (0.20000)10−4 |Ex2 | = ∣∣−(0.1000)10−3 − [−(0.81742)10−4]∣∣ = (0.18258)10−4, |ex1 | = ∣∣∣∣Ex1x1 ∣∣∣∣ = ∣∣∣∣ (0.2000)10−4−(0.73402)100 ∣∣∣∣ = (0.27247)10−4 |ex2 | = ∣∣∣∣Ex2x2 ∣∣∣∣ = ∣∣∣∣ (0.18258)10−4−(0.81742)10−4 ∣∣∣∣ = (0.22336)100 ≡ 22.3%. Apesar dos erros absolutos serem praticamente iguais, verificamos que o mesmo não acontece com o erro relativo. A segunda raiz apresenta um erro relativo superior em quatro ordens de grandeza ao correspondente erro da primeira raiz. b) Onde ocorreu o erro? Não aplicamos nós o mesmo processo a x1 e a x2!? Então, o que terá sucedido? Sabemos que entre as operações +,−,×,÷, em FP existe um cálculo perigoso que é a subtracção de valores muito próximos, já que os primeiros dígitos da mantissa se anulam e após a normalização surgem zeros à direita que, possivelmente, o não seriam caso se utilizasse um maior número de dígitos. De facto, há uma subtracção de valores muito próximos quando calculamos x2 em FP (10, 4, 2, T ), fl ( −b+ √ b2 − 4c ) = −(.7341)100 + (.7339)100 = −(0.0002)100 = −(.2000)10−3 14 SEMANA 3 Mas em aritmética com um maior número de dígitos na mantissa teríamos fl ( −b+ √ b2 − 4c ) = −.7341 + √ .73412 − 4× 0.0006 = −(0.16348)10−3 Dividindo este número por 2 obteríamos um valor mais próximo do valor exacto. Portanto, a origem do problema no cálculo de x2 foi o cancelamento subtrac- tivo, que se verifica quando subtraímos números muito próximos em FP. Como contornar o problema? Sabendo nós que o problema é a subtracção, o que há a fazer é evitá-la. Existem duas alternativas: Alternativa 1: Manipulando simbolicamente a equação de segundo grau genérica, obtemos ax2 + bx+ c = a(x− x1)(x− x2) = a(x2 − x1x− x2x+ x1x2) = ax2 − a(x1 + x2)x+ ax1x2, e concluímos que c = ax1x2 ⇔ x2 = c ax1 . Substituindo pelos valores conhecidos, c, a e x1, no sistema FP dado, obtemos fl ( c x1 ) = (.6000)10−4 −(.7340)100 = −(.8174 > Truncar 38)10−4 = −(.8174)10−4 = x2. Alternativa 2: Neste caso manipulamos a fórmula resolvente, tal que x2 = −b+√b2 − 4c 2 = −b+√b2 − 4c 2 × −b− √ b2 − 4c −b−√b2 − 4c = b2 − (b2 − ¸ 2 4c) 2(−b−√b2 − 4c) = 2c −b−√b2 − 4c = c x1 . Notar que obtemos a mesma expressão da alternativa 1, pois a = 1. ¥ 3.2 FORMATO SIMPLES IEEE 754: Erros de representação a) Represente o número 512.15 em formato simples IEEE 754 com truncatura. b) Determine o erro de representação cometido na alínea anterior. Se preferir indique um majorante adequado do erro cometido. c) Será possível representar 10−32 e −10+42 no formato simples? Justifique. CONCEITOS TEÓRICOS Na norma IEEE 754 a mantissa é normalizada, ou seja, o primeiro bit é sempre 1 e diz-se implícito. O expoente é enviesado, isto é, é dado por e− 127. EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 15 O maior expoente é 11111110 e o menor 00000001, estando os expoentes 11111111e 00000000 reservados para: 00000000 → Número desnormalizado, prevendo underflow gradual. x = (−1)s(0.d−1 . . . d−23)2e−126 → Limite de underflow gradual : 2−23 × 2−126 = 2−149 = 1.4× 10−45 11111111 → Ocorrência de overflow. Neste caso podem surgir duas mensagens: Se m = 0→ NaN Se m 6= 0→ +INF ¤ RESOLUÇÃO a) Esquematicamente (512.15)10 → FP (2, 24, 8, T ) pois segundo a norma IEEE 754, no formato simples, b = 2, p = 24 e q = 8. Representar a parte inteira da mantissa: 512 | 2 0 256 | 2 0 128 | 2 0 64 | 2 0 32 | 2 0 16 | 2 0 8 | 2 0 4 | 2 0 2 | 2 0 1 | 2 1 0 512 = (1000000000)2 Representar a parte fraccionária da mantissa: 0.15× 2 = 0.30 −→ 0 0.30× 2 = 0.60 −→ 0 0.60× 2 = 1.20 −→ 1| 0.20× 2 = 0.40 −→ 0| 0.40× 2 = 0.80 −→ 0| 0.80× 2 = 1.60 −→ 1| 0.60× 2 = 1.20 −→ 1 · · · 16 SEMANA 3 0.15 = (0.001001 . . .)2 Representar toda a mantissa: 512.15 = (1 000 000 000.00 1001 1001 1001 . . .)2 A norma IEEE 754 requer um bit implícito de valor 1 e o expoente enviesado: x = (−1)s2e−127(1.d−1d−2d−3 . . . d−23)2 Assim, 512.15 = (1.000 000 000 00 1001 1001 1001 : Truncar 1001 . . .)2 × 29 = (1.000 000 000 00 1001 1001 1001)2 × 29 Representar o expoente (enviesado): e− 127 = 9⇔ e = 136 136 | 2 0 68 | 2 0 34 | 2 0 17 | 2 1 8 | 2 0 4 | 2 0 2 | 2 0 1 | 2 1 0 136 = (10001000)2 Temos então a seguinte alocação dos 32 bits, no formato simples IEEE 754: 0 10001000 00000000000100110011001 Sinal Expoente Mantissa 1 bit 8 bits 23 bits b) Erro de representação cometido: O valor exacto é (512.15) = (1.000 000 000 00 1001 1001 1001 |1001 1001 1001 1001 . . .)2 × 29 Na norma IEEE 754 teremos o valor (512.15)IEEE 754 = (20 + 2−12 + 2−15 + 2−16 + 2−19 + 2−20 + 2−23)× 29 = 512.1499634 EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 17 e o erro em valor absoluto é |E| = |512.1499634− 512.15| = (3.7)10−5 ou, em alternativa, podemos realizar o cálculo estimando o valor truncado |E| = (2−24 + 2−27 + 2−28 + 2−31 + 2−32 + . . .)× 29 = (3.7)10−5 O majorante do erro cometido em truncatura é† |E|maj = bt−p = 210−24 = 2−14 = (6.10)10−5 c) Para responder à pergunta colocada temos que determinar os limites de overflow e underflow: Limite de overflow : (1.111 . . . 1)× 2(11111110)2−127 = (1.111 . . . 1)× 2(254−127) = (2− 2−23)× 2127 = (3.4)10+38 Limite de underflow : (1.000 . . . 0)× 2(00000001)2−127 = (1.000 . . . 0)× 2(1−127) = 20 × 2−126 = (1.2)10−38 Portanto, 10−32 tem representação aproximada no formato simples IEEE 754, dado que 1.2× 10−38 < 10−32 < (3.4)10+38. 10+42 não tem representação aproximada no formato simples IEEE 754, originando overflow, pois 10+42 > (3.4)10+38. ¥ 3.3 FORMATO SIMPLES IEEE 754: Erros de representação e Operações 0/0 e 1/0 a) Estime o erro cometido na representação do número (0.1)10 no sistema de ponto flutuante FP (2, 24, 8, T ). b) Determine o número limite de overflow e a unidade de arredondamento do sistema de ponto flutuante em formato simples na norma IEEE 754. Indique a mensagem gerada em aritmética IEEE 754 pelas operações 0/0 e 1/0. RESOLUÇÃO †O expoente t refere-se à representação em FP. Não esquecer que o formato IEEE 754 considerado tem um bit implícito, o que não acontece em FP. Por essa razão o expoente é 10 e não 9. 18 SEMANA 3 Representação de (0.1)10 em FP (2, 24, 8, T ): 0.1× 2 = 0.2 −→ 0 0.2× 2 = 0.4 −→ 0| 0.4× 2 = 0.8 −→ 0| 0.8× 2 = 1.6 −→ 1| 0.6× 2 = 1.2 −→ 1| 0.2× 2 = 0.4 −→ 0 · · · Detectamos a presença de um padrão repetitivo, ou seja, 0.1 = (0.0 0011 0011 0011 0011 0011 . . .)2 = (0.1100 1100 1100 1100 1100 1100)2 × 2−3 e pelo facto de truncar no dígito −24 obtemos um erro de representação de: |E| = |fl(x)− x| ≈ bt−p = 2−3−24 = (7.4506)10−9 b) Limite de overflow : (20 + 2−1 + . . .+ 2−23)× 2(27+26+...21+20−127) = (2− u)× 2127 ≈ 2128 = (3.402823)10+38 Unidade de arredondamento para truncatura : u = 21−24 = (1.192092)10−7 A 0/0 corresponde a mensagem NaN (Not a Number) e a 1/0 corresponde a men- sagem INF. ¥ A resposta na janela de comando do MATLAB para cada um dos casos é: » 0/0 Warning: Divide by zero. (Type "warning off MATLAB:divideByZero" to suppress this warning.) ans = NaN » 1/0 Warning: Divide by zero. (Type "warning off MATLAB:divideByZero" to suppress this warning.) ans = Inf ¡ 4 TÓPICOS: Condicionamento de uma Função. Condicionamento de uma Função e Cancelamento Subtractivo. Interpolação Polinomial: Formas de Lagrange e Newton; Algoritmo de Horner. LEITURAS RECOMENDADAS: Capítulo 1 (pp. 23–27) e Capítulo 2 (pp. 35– 52) do livro [Pina(1995)] 4.1 CONDICIONAMENTO DE UMA FUNÇÃO Estime o número de condição da função f (x) = tg(x2) na origem. A função é bem ou mal condicionada nesse ponto? Justifique. CONCEITOS TEÓRICOS Número de condição da função f (x): Para analisar em aritmética de Ponto Flu- tuante a influência do erro de representação do argumento x no cálculo de uma dada função f (x), a Análise de Erros Directa pode não ser a mais adequada. A alternativa é uma Análise de Erros Indirecta, a qual fornece uma indicação do factor de ampli- ficação dos erros relativos baseada no número de condição de uma função num dado ponto. Considerando que x sofre um erro de representação, o argumento utilizado no cálculo será x˜ e o erro de representação (erro absoluto) será E = x˜− x. Do teorema do valor médio, e dado que x e x˜ podem considerar-se suficientemente próximos e f suficientemente regular, obtém-se a seguinte relação: f (x˜)− f (x) = f ′ (ξ)× (x˜− x)⇒ f (x˜)− f (x) f (x) = f ′ (ξ)× (x˜− x) f (x) × x x ξ ∈ {[xmin − xmax] : xmin = min (x˜, x) e xmax = max (x˜, x)} ∣∣∣∣f (x˜)− f (x)f (x) ∣∣∣∣ ≈ ∣∣∣∣f ′ (x)× xf (x) ∣∣∣∣× ∣∣∣∣ x˜− xx ∣∣∣∣ ou, por outras palavras, ef ≈ condf (x)× ex, 20 SEMANA 4 considerando-se geralmente no lugar de ex o valor da unidade de arredondamento u. Diz-se que uma função é bem condicionada se condf (x) for pequeno e diz-se mal condicionada nos restantes casos. Para exemplificar melhor a distinção, recorre-se à seguinte comparação baseada num cálculo em FP (2, 24, 8, A) onde a unidade de arredondamento é: u = 1 2 b1−p = 1 2 21−24 ≈ (0.6) 10−7. Com este valor de erro relativo de representação, obtém-se no caso de condf (x) = 104 um ef = 10−3 ou seja 0.1% (f(x) é bem condicionada) e no caso de condf (x) = 106 um ef = 10−1 ou seja 10% (f(x) é mal condicionada). Portanto, uma função ser bem condicionada ou mal condicionada é uma caracte- rística relativa. ¤ RESOLUÇÃO condf (x) = ∣∣∣∣f ′ (x)× xf (x) ∣∣∣∣ = ∣∣∣∣∣2× x× ( 1 + tg2(x2) )× x tg(x2) ∣∣∣∣∣ Lembrando-nos que na vizinhança de x = 0 se tem tg(x2) ≈ (x)2 facilmente se conclui que condf(x = 0) = 2. Uma via mais trabalhosa é fazer o que se segue! Em x = 0, teremos condf (x = 0) = ∣∣∣∣∣2× 02 × ( 1 + tg2(02) ) tg(02) ∣∣∣∣∣ = 00 A indeterminação pode ser levantada aplicando sucessivamente a Regra de L’Hôpital- Cauchy: condf (x = 0) = lim x→0 ∣∣∣∣2x2 + 2x2tg2(x2)tg(x2) ∣∣∣∣ = lim x→0 ∣∣∣∣∣4x + 4xtg2(x2) + 8x3tg(x2) ( 1 + tg2(x2) ) 2x ( 1 + tg2(x2) ) ∣∣∣∣∣ = 4 2 = 2 A função é bem condicionada em torno da origem, pois os erros são apenas ampli- ados para o dobro. Por exemplo, em precisão simples — onde o majorante do erro relativo de repre- sentação de x é de aproximadamente u = (0.6)10−7 — o erro relativo no cálculo da função em FP será cerca de (1.2)10−7, ou seja, aproximadamente 0.000012%. ¥ 4.2 CONDICIONAMENTO DE UMA FUNÇÃO E CANCELAMENTO SUBTRACTIVO a) Mostre que f(x) = sin(x)− x é bem condicionada na vizinhança da origem. EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 21 b) Calcule o valor de f(10−2) em FP (10, 3, 2, T ). c) Determine os erros absolutos e relativos cometidos. d) Em face do resultadoda alínea c) proponha uma forma alternativa para o cálculo de f(10−2). RESOLUÇÃO a) A aplicação directa da expressão origina uma indeterminação que se pode levan- tar aplicando sucessivamente a regra de L’Hôpital-Cauchy, em três aplicações. Uma alternativa é utilizar a expansão em série cond (f) = ∣∣∣∣f ′ (x)xf (x) ∣∣∣∣ = ∣∣∣∣ (cos (x)− 1)xsin (x)− x ∣∣∣∣ = ∣∣∣∣∣∣ ([ 1− x22! +O ( x4 )]− 1)x[ x− x33! +O (x5) ]− x ∣∣∣∣∣∣ = ∣∣∣∣∣ x 3 2! +O ( x5 ) x3 3! +O (x5) ∣∣∣∣∣ = ∣∣∣∣∣ 12 +O ( x2 ) 1 6 +O (x2) ∣∣∣∣∣ ≈ 121 6 = 3 A função é bem condicionada em torno da origem pois os erros são apenas ampli- ados para o triplo. Por exemplo, em precisão simples — onde o majorante do erro relativo de representação de x é de u = (0.6)10−7 — o erro relativo no cálculo da função em FP será cerca de (1.8)10−7, ou seja, aproximadamente 0.000018%. b) Para calcular f(x) = sin(x)− x no ponto x = 10−2 em FP (10, 3, 2, T ) tem-se: fl(x) = fl(10−2) = +(0.100)10−01 Assumindo que sin(x) esteja implementada computacionalmente como função: fl(sin(x)) = sin(0.100× 10−01) = 0.999 :Truncar9833× 10−02 = +(0.999)10−02 fl(sin(x)− x) = 0.999× 10−02 − 0.100× 10−01 = (0.099− 0.100)º Alinhar× 10−01 = −0.001× 10−01 = −(0.100)10−03 Como iremos ver de seguida, a truncatura para um número reduzido de dígitos, seguidamente agravada por um alinhamento das mantissas, é potencialmente perigosa para a precisão dos resultados, ocorrendo cancelamento subtractivo. c) O valor exacto, na precisão da calculadora,† é f(10−2) = sin(10−02)− 10−02 = −(0.16666)10−6 pelo que E = −0.100× 10−03 − (−0.166× 10−06) = −0.000099834 †Não esquecer de efectuar os cálculos em radianos e não em graus ou grados! 22 SEMANA 4 |e| = ∣∣∣∣ Ef(10−2) ∣∣∣∣ = 0.000099834/(0.16666× 10−06) = 599.03 ≡ 59903% Obtemos, assim, um valor muito elevado. Observa-se que f ser bem condicionada na vizinhança deste ponto não significa imune ao cancelamento subtractivo, realçando-se neste exemplo que se tratam de dois conceitos diferentes. d) Para evitar o cancelamento subtractivo quando x é pequeno, pode utilizar- se neste caso a expansão em série da função seno: sin (x)− x = [ x− x 3 3! + x5 5! −O (x7)]− x ≈ −x3 6 fl(sin(x) − x) = fl(−x3/6) = −(0.100 × 10−01)/(0.600 × 10+01) = 0.166 × 10−06 obtendo-se a máxima precisão em FP (10, 3, 2, T ). ¥ No caso de f(x) = ln(1+x) com x < |u|, para evitar erros de FP usa-se o primeiro termo da expansão ln(1 + x) = x− x2/2 + x3/3− x4/4 + . . . Em MATLAB temos os logaritmos natural, log, de base 10, log10 e de base 2, log2, enquanto u é obtido por eps. ¡ 4.3 INTERPOLAÇÃO POLINOMIAL: Formas de Lagrange e Newton Determine o polinómio interpolador dos valores (0, 1); (1, 3) e (2, 2). a) Na forma de Lagrange. b) Na forma de Newton com centros nos nós. RESOLUÇÃO a) Na forma de Lagrange este polinómio obtém-se como se segue: n é o número de pontos, ou nós, menos 1, ou seja o grau do polinómio (desde que os pontos (xk, yk) dados não sejam colineares). pn (x) = n∑ k=0 Lk (x) yk com Lk = n∏ i=0 i 6=k x− xi xk − xi L0 = x− x1 x0 − x1 x− x2 x0 − x2 = ( x− 1 −1 )( x− 2 −2 ) L1 = x− x0 x1 − x0 x− x2 x1 − x2 = −x (x− 2) L2 = x− x0 x2 − x0 x− x1 x2 − x1 = x 2 (x− 1) EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 23 Obtemos: p2(x) = L0y0 + L1y1 + L2y2 p2(x) = (x− 1) (x− 2) 2 − 3x (x− 2) + x (x− 1) Podemos verificar rapidamente que p2(0) = 1 sendo L1 = L2 = 0; p2(1) = 3 com L0 = L2 = 0 e p2(2) = 2 com L0 = L1 = 0. Tal é ilustrado pela representação gráfica dos polinómios na Figura 4.3.1. 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 −0.5 0 0.5 1 1.5 2 2.5 3 3.5 p(x) L0(x) L1(x) L2(x) Figura 4.3.1: Polinómio interpolador e polinómios de Lagrange b) Na forma de Newton com centros nos nós o polinómio é obtido por: pn (x) = y [x0] + y [x0, x1]W0 + y [x0, x1, x2]W1 + ...+ y [x0, x1, ..., xn]Wn−1 com y [xk] = yk e y [xi, xi+1, ..., xk−1, xk] = y [xi+1, ..., xk]− y [xi, ..., xk−1] xk − xi onde as diferenças divididas se obtêm como indicado na tabela seguinte: x y[·] y[·, ·] y[·, ·, ·] 0 1 2 1 3 −3/2 −1 2 2 e Wi = (x− x0) . . . (x− xi−1) são os polinómios nodais. 24 SEMANA 4 O polinómio que se obtém na forma de Newton com centros nos nós é p2(x) = 1 + 2x− 32x(x− 1) Podemos verificar rapidamente que p2(0) = 1 sendo W0 =W1 = 0, p2(1) = 3 com W1 = 0 e p2(2) = 1 + 4− 3 = 2. Na Figura 4.3.2 observa-se a representação de p(x) e dos polinómios nodais Wi. 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 −3 −2 −1 0 1 2 3 4 p(x) 2x 1 − 3 2 x(x− 1) Figura 4.3.2: Polinómio interpolador e respectivas parcelas ¥ As diferentes representações polinomiais obtidas nas alíneas a) e b) são exacta- mente o mesmo polinómio interpolador, pois este é único (ver Teorema 2.2.2. da Unicidade, na p. 44 em [Pina(1995)]). ¡ 4.4 INTERPOLAÇÃO POLINOMIAL: Algoritmo de Horner Determine o polinómio interpolador dos valores (0, -1); (1, 1); (2, 4) e (3, 2). a) Na forma de Newton com centros nos nós. b) Na forma de Lagrange. c) Calcule p(4) pelo algoritmo de Horner. ALGORITMOS Cálculo do valor do polinómio num dado ponto x através de 3 algoritmos distintos Algoritmo 1 - Cálculo do valor de polinómios num dado ponto x: Ler/Introduzir valor de n, a0, a1, . . ., an Ler/Introduzir valor de x Inicializar p = a0 Ciclo de i = 1 até n p = p + ai× xi (1 flop soma + 1 flop produto + (i− 1) flops potência) Repetir ciclo Escrever p Logo o número de flops é (2+ 3+ 4+ . . .+ (n+ 2)) = n[(n+ 2) + 2]/2 = n2/2+ 2n. EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 25 Algoritmo 2 - Técnica de Horner para cálculo do valor de um polinómio num dado ponto x: Ler/Introduzir valor de n, a0, a1, . . ., an Ler/Introduzir valor de x Inicializar p = an Ciclo de i = n - 1 até 0 p = ai + p × x (1 flop soma + 1 flop produto) Repetir ciclo Escrever p Logo o número de flops é 2[(n− 1) + 1] = 2n, o que torna o algoritmo 1 «impró- prio» em termos de métodos computacionais, porque sendo o número de operações aritmé- ticas maior, considera-se também menos preciso. Algoritmo 3 - Algoritmo de Horner para polinómios na forma de Newton com centros nos nós: Ler/Introduzir valor de n, a0, a1, . . ., an, c1, . . ., cn Ler/Introduzir valor de x Inicializar p = an Ciclo de i = n - 1 até 0 p = ai + p × (x - ci+1) (2 flops soma + 1 flop produto) Repetir ciclo Escrever p Logo o número de flops é 3[(n− 1) + 1] = 3n. ¤ RESOLUÇÃO a) O polinómio interpolador na forma de Newton determina-se recorrendo à tabela de diferenças divididas x y[·] y[·, ·] y[·, ·, ·] y[·, ·, ·, ·] 0 −1 2 1 1 1/2 3 −1 2 4 −5/2 −2 3 2 p3(x) = −1 + 2x+ 12x(x− 1)− x(x− 1)(x− 2) b) A expressão para determinar o polinómio interpolador na forma de Lagrange é pn (x) = n∑ k=0 Lk (x) yk com Lk = n∏ i=0 i 6=k x− xi xk − xi 26 SEMANA 4 pelo que L0 = ( x− 1 −1 )( x− 2 −2 )( x− 3 −3 ) L1 = x 2 (x− 2)(x− 3) L2 = − x 2 (x− 1) (x− 3) L3 = x 6 (x− 1) (x− 2) obtendo-se p3(x) = (x− 1)(x− 2)(x− 3) 6 + x 2 (x− 2)(x− 3) − 2x(x− 1)(x− 3) + x 3 (x− 1)(x− 2) c) Aplica-se aqui o Algoritmo 3 ao polinómio da alínea a) p3 (x) = −1 + 2x+ 1 2 x (x− 1)− x (x− 1) (x− 2) Logo n = 3 e x = 4. Precisamos também de C1 = 0, C2 = 1 e C3 = 2. Os centros contam-se de 1 a n, não existindo C0. Seguindo o algoritmo, obtém-se sucessivamente: p = a3 = −1 p = a2 + p(x− C3) = (1/2) + (−1)(4− 2) = −(3/2) p = a1 + p(x− C2) = 2− (3/2)(4− 1) = −(5/2) p = a0 + p(x− C1) = −1− (5/2)(4− 0) = −11 Pelo que, o valor de p em x = 4 é p(4) = −11. ¥ 5 TÓPICOS: Interpolação Polinomial: Máximos e mínimos locais, Pontos de inflexão;Interpolação de Hermite, Nós duplos e triplos e diferença dividida confluente. LEITURAS RECOMENDADAS: Capítulo 2 (pp. 52–73 excepto secção 2.5 e pp. 77–80) do livro [Pina(1995)] 5.1 INTERPOLAÇÃO POLINOMIAL: Máximos e mínimos locais, Pontos de inflexão Considere a tabela de valores de uma função y = f(x): x 0 1 3 4 y −21 5 −15 35 a) Determine as aproximações no intervalo [0, 4] para a localização de um máximo local, um mínimo local e um ponto de inflexão da função. b) Obtenha uma interpolante de f(x) na forma de Newton com centros em x0 = 1/2, x1 = 1 e x2 = 3/2. c) Se a tabela tivesse um maior número de pontos, por exemplo superior a 5, o método da alínea a) seria recomendável? Justifique. RESOLUÇÃO a) As aproximações são aqui obtidas por interpolação polinomial na forma de Newton, com centros nos nós. x y[·] y[·, ·] y[·, ·, ·] y[·, ·, ·, ·] 0 −21 26 1 5 −12 −10 8 3 −15 20 50 4 35 O polinómio obtido é p3(x) = −21 + 26(x− 0)− 12(x− 0)(x− 1) + 8(x− 0)(x− 1)(x− 3) = −21 + 62x− 44x2 + 8x3 28 SEMANA 5 Há que ter cuidado em colocar como coeficientes do polinómio os elementos da primeira diagonal (a negro), na ordem indicada. Por exemplo, se escolhêssemos os elementos da diagonal inferior 35, 50, 20, 8 obte- ríamos o polinómio 35 + 50(x− 4) + 20(x− 3)(x− 4) + 8(x− 3)(x− 4)(x− 1) que é uma interpolante correcta (Porquê? Que centros foram agora utilizados?). Deste modo, se pretendermos que os centros sejam 1, 3 e 4, deixando de fora o 0, teremos de construir uma nova tabela de diferenças divididas, tal que x y[·] y[·, ·] y[·, ·, ·] y[·, ·, ·, ·] 1 5 −10 3 −15 20 50 8 4 35 12 14 0 −21 obtendo-se o polinómio: p3(x) = 5−10(x−1)+20(x−1)(x−3)+8(x−1)(x−3)(x−4), que após expansão na forma de potências simples fica p3(x) = −21+62x− 44x2+8x3. Como esperávamos, o polinómio é o mesmo. Podemos verificar rapidamente que as condições de interpolação são verificadas para o polinómio obtido, pois, por exemplo, p3(0) = −21 e p3(1) = 70− 65 = 5. 0 0.5 1 1.5 2 2.5 3 3.5 4 −30 −20 −10 0 10 20 30 40 Figura 5.1.1: Polinómio interpolador As primeira e segunda derivadas do polinómio interpolador são: p′3(x) = 62− 88x+ 24x2, p′′3(x) = −88 + 48x EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 29 Donde se conclui que os pontos de estacionaridade são: p′3(x) = 62− 88x+ 24x2 = 0⇔ x = 88±√882 − 4× 24× 62 2× 24 ⇔ x1 = 0.95142 ∨ x2 = 2.7152 O ponto de inflexão é: p′′3(x) = −88 + 48x = 0⇔ x = 1.8333 Como p3 é de grau 3 e p′′3 é negativa para x < 1.8333 e positiva para x > 1.8333 então 0.95142 corresponde a um máximo local e 2.7152 a um mínimo local. b) Na alínea a) obteve-se o polinómio na forma de Newton com centros nos nós da tabela. Para considerar a sua representação nos nós 1/2, 1 e 3/2 há que proceder a uma mudança de nós. Alternativa 1 - Aplicar um algoritmo de mudança de nós. Algoritmo de Horner para mudança de centros de um polinómio (Algoritmo 2.2.2, p. 42 de [Pina(1995)]):† Introduzir o centro c e retirar o centro cn Ler/Introduzir valor de n, a0, a1, . . ., an, c1, . . ., cn Inicializar a ′ n = an Ciclo de i = n - 1 até 0 a ′ i = ai + a ′ i+1 × (c - ci+1) (2 flops soma + 1 flop produto) Repetir ciclo Escrever a ′ Utilize-se a representação com centros na origem: p3(x) = −21 + 62x− 44x2 + 8x3 e introduzam-se sucessivamente os centros pretendidos. Tal é feito introduzindo estes centros por ordem inversa à definida. Introdução do centro c = 3/2 (n = 3) a3 = 8 a′3 = 8 a2 = −44 c3 = 0 c = 3/2 −44 + 8× (3/2− 0) a′2 = −32 a1 = +62 c2 = 0 c = 3/2 +62− 32× (3/2− 0) a′1 = 14 a0 = −21 c1 = 0 c = 3/2 −21 + 14× (3/2− 0) a′0 = 0 p3(x) = 0 + 14 (x− 3/2)− 32 (x− 3/2) (x− 0) + 8 (x− 3/2) (x− 0)2 †O polinómio inicial deve estar na forma de potências simples. 30 SEMANA 5 Introdução do centro c = 1 (n = 3) a3 = 8 a′3 = 8 a2 = −32 c3 = 0 c = 1 −32 + 8× (1− 0) a′2 = −24 a1 = +14 c2 = 0 c = 1 +14− 24× (1− 0) a′1 = −10 a0 = 0 c1 = 3/2 c = 1 0− 10× (1− 3/2) a′0 = 5 p3(x) = 5− 10(x− 1)− 24(x− 1)(x− 3/2) + 8(x− 1)(x− 3/2)(x− 0) Introdução do centro c = 1/2 (n = 3) a3 = 8 a′3 = 8 a2 = −24 c3 = 0 c = 1/2 −24 + 8× (1/2− 0) a′2 = −20 a1 = −10 c2 = 3/2 c = 1/2 −10− 20× (1/2− 3/2) a′1 = 10 a0 = 5 c1 = 1 c = 1/2 5 + 10× (1/2− 1) a′0 = 0 p3(x) = 0 + 10(x− 1/2)− 20(x− 1/2)(x− 1) + 8(x− 1/2)(x− 1)(x− 3/2) Alternativa 2 - Como a representação polinomial é única, podemos fazer: p3(x) = −21 + 62x− 44x2 + 8x3 p3(0.5) = −21 + 62× 0.5− 44× 0.25 + 8× 0.125 = −21 + 31− 11 + 1 = 0 p3(1.0) = −21 + 62− 44 + 8 = 5 p3(1.5) = −21 + 62× 1.5− 44× 1.52 + 8× 1.53 = 0 Utilizamos, então, estes pontos para construir a nova representação, usando como ponto auxiliar x = 3: x y[·] y[·, ·] y[·, ·, ·] y[·, ·, ·, ·] 0.5 0 10 1 5 −20 −10 8 1.5 0 0 −10 3 −15 Obtemos exactamente a representação esperada devido à unicidade acima referida: p3(x) = 0 + 10(x− 1/2)− 20(x− 1/2)(x− 1) + 8(x− 1/2)(x− 1)(x− 3/2) Omesmo sucede com o ponto auxiliar x = 4, pois, neste caso, a tabela de diferenças divididas é x y[·] y[·, ·] y[·, ·, ·] y[·, ·, ·, ·] 0.5 0 10 1 5 −20 −10 8 1.5 0 8 14 4 35 ou o ponto auxiliar x = 0: EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 31 x y[·] y[·, ·] y[·, ·, ·] y[·, ·, ·, ·] 0.5 0 10 1 5 −20 −10 8 1.5 0 −24 14 0 −21 d) Se a tabela tivesse um maior número de pontos, por exemplo superior a 5, o método da alínea a) não seria recomendável porque: - obteríamos uma equação polinomial de elevado grau cuja derivada seria morosa de resolver. - as oscilações são maiores em polinómios interpoladores de elevado grau. Nesse caso seria preferível utilizar um método de diferenças finitas apropriado seguido de interpolação. ¥ 5.2 INTERPOLAÇÃO POLINOMIAL: Interpolação de Hermite, Nós duplos e diferença dividida confluente a) Construa o polinómio de menor grau que interpola a função f(x) = ln(1 + x) e a sua primeira derivada f ′(x) nos extremos do intervalo [0, 1]. b) Majore o erro cometido. RESOLUÇÃO a) Interpolar com valores de f e f ′ em cada nó corresponde à interpolação de Hermite, a qual se obtém aplicando as expressões do Exemplo 2.6.1, pp. 71–72 de [Pina(1995)], [U0, U1, V0 e V1] com f(0) = 0, f(1) = ln(2), f ′(0) = 1 e f ′(1) = 1/2. Contudo, podemos também utilizar a tabela de diferenças divididas com a técnica de nós múltiplos. De facto, da definição de diferença dividida podemos constatar que f [x0, x1, ..., xk] = 1 k! f (k) (ξ)→ f [x0, x1] = f (x0)− f (x1)(x0 − x1) , obtendo-se a diferença dividida confluente lim x1→x0 f [x0, x1] = f [x0, x0] = f ′ (x0) . De igual modo, obtemos f [x0, x0, x0] = f ′′ (x0) 2! . Podemos então construir a tabela seguinte: 32 SEMANA 5 x y[·] y[·, ·] y[·, ·, ·] y[·, ·, ·, ·] 0 0 1 0 0 ln(2)− 1 ln(2) 3/2− 2ln(2) 1 ln(2) 1/2− ln(2) 1/2 1 ln(2) p3(x) = x+ [ln(2)− 1]x2 + [ 3 2 − 2 ln(2) ] x2(x− 1) 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 (a) Polinómio 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1 (b) Primeira derivada Figura 5.2.1: Polinómio interpolador e respectiva primeira derivada b) Análise de Erros de Interpolação - Quanto é que no máximo um polinómio interpolador se afasta da respectiva função. Pelo Teorema 2.4.1, p. 55, [Pina(1995)], sabemos que en(x) ≡ f(x)− pn(x) = 1(n+ 1)!f (n+1) (ξ)Wn (x) Com base neste Teorema obtemos o majorante do erro dado por (2.4.3): ‖en‖∞ ≤ 1(n+ 1)!‖f (n+1)‖∞‖Wn‖∞ A estimativa do erro (2.4.4) ‖en‖∞ ≤ 14 (n+ 1)‖f (n+1)‖∞hn+1 = 14 (3 + 1)6× 1 = 6 16 = 3 8 = 0.3750, não deve ser utilizada quando se pede um majorante, porque, tratando-se de uma interpolação da função e da derivada, i.e., uma interpolação de Hermite,considera-se o número de pontos apenas 2, logo n = 1, e o grau do polinómio é 2n + 1, podendo mostrar-se que o erro é dado, neste caso, por (p. 73, [Pina(1995)]): EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 33 en (x) = (Wn(x)) 2 (2n+ 2)! f (2n+2) (ξ) ≤ max [xmin,xmax] W 2n (x) (2n+ 2)! ‖f (2n+2)‖∞. Concretizando para o caso presente, obtemos e (x) = W 21 (x) (2 + 2)! ‖f (2+2) (ξ)‖∞ ≤ max x∈[0,1] [ (x− 0)2 (x− 1)2 ] 24 ∥∥∥[−6 (1 + x)−4]∥∥∥ ∞ = 1 16 24 6 = 1 64 = 0.15625× 10−1, pois f(x) = ln(1 + x) f ′(x) = (1 + x)−1 ... f (iv) = −6(1 + x)−4 sendo ∥∥f (iv)∥∥ monótona decrescente em [−1,+∞] e, logo, no intervalo [0, 1] tem má- ximo em x = 0. ¥ 5.3 INTERPOLAÇÃO POLINOMIAL: Interpolação de Hermite, Nós triplos e diferença dividida confluente Construa o polinómio de menor grau que satisfaz as seguintes condições de interpo- lação: p(1) = 2, p′(1) = 0, p′′(1) = 2, p(2) = 2 e p(3) = 3. RESOLUÇÃO a) Tendo por base a definição de diferença dividida: f [x0, x1, ..., xk] = 1 k! f (k) (ξ) , verificamos que f [x0, x0, x0] = f ′′ (x0) 2! . Utilizando a tabela de diferenças finitas com a técnica de nós múltiplos (neste caso, nó triplo): 34 SEMANA 5 x y[·] y[·, ·] y[·, ·, ·] y[·, ·, ·, ·] y[·, ·, ·, ·, ·] 1 2 0 1 2 1 0 −1 1 2 0 5/8 0 1/4 2 2 1/2 1 3 3 obtemos a representação p4(x) = 2 + (x− 1)2 − (x− 1)3 + 58(x− 1) 3(x− 2) ¥ Como suplemento à resolução do problema, mostramos o gráfico do polinómio e as suas primeira e segunda derivadas, obtidas analiticamente (Figuras 5.3.1 e 5.3.2 ). Observamos que as condições de interpolação são respeitadas. 1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 2.8 3 1.8 2 2.2 2.4 2.6 2.8 3 Figura 5.3.1: Polinómio interpolador 1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 2.8 3 −0.5 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 (a) Primeira derivada 1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 2.8 3 −2 0 2 4 6 8 10 12 14 (b) Segunda derivada Figura 5.3.2: Derivadas analíticas do polinómio interpolador ¡ 6 TÓPICOS: Interpolação Polinomial: Spline quadrático; Spline cúbico; Erros em splines cúbicos. LEITURAS RECOMENDADAS: Capítulo 2 (pp. 77–87) do livro [Pina(1995)] 6.1 INTERPOLAÇÃO POLINOMIAL: Spline quadrático Construa o spline quadrático para f(x) = sin(pi/2× x) em [0, 1] com malha uniforme de 4 nós. Determine uma aproximação para f ′(0.5) e f ′′(0.5). Obtenha os respectivos erros absoluto e relativo. CONCEITOS TEÓRICOS Os splines correspondem a aproximações de funções por troços.† No caso de um spline quadrático esta aproximação é obtida entre cada dois pontos consecutivos através da expressão para cada subintervalo ou, mais prosaicamente, troço (Exp. (2.7.3), p. 80, [Pina(1995)]): x ∈ [xi−1, xi], i = 1, 2, . . . , n Si(x) = yi−1 +mi−1(x− xi−1) + Mi2 (x− xi−1)2 Mi = mi−mi−1 hi hi = xi − xi−1 mi = 2 ( yi−1−yi hi ) −mi−1 ¤ RESOLUÇÃO Construção do spline: Neste caso, f é contínua e continuamente diferenciável. Uma malha uniforme, isto é, nós igualmente espaçados, com quatro pontos no intervalo [0, 1] terá os nós 0, 1/3, 2/3 e 1. †Para uma definição mais rigorosa de splines ver p. 77 de [Pina(1995)]. 36 SEMANA 6 Podemos calcular os momentos mi se conhecermos o valor de um deles. Em geral m0 define-se comom0 = f ′(x0). Neste problema temosm0 = f ′(x0) = pi/2×cos(pi/2× x0) = pi/2 = 1.5708. Obtemos os restantes mi aplicando a fórmula recorrente mi = 2 ( yi−1−yi hi ) −mi−1. i xi−1 yi−1 xi yi mi−1 mi Mi 1 0 0 13 0.5 1.5708 1.4292 −0.42478 2 13 0.5 2 3 0.86602 1.4292 0.76695 −1.9868 3 23 0.86602 1 1 0.76695 0.036899 −2.1901 Então, ficamos com o spline: x ∈ [0, 1/3] : S1 = 0 + 1.5708(x− 0) + −0.424782 (x− 0) 2 = 1.5708x− 0.2124x2 x ∈ [1/3, 2/3] : S2 = 0.5 + 1.4292 ( x− 1 3 ) + −1.9868 2 ( x− 1 3 )2 = 0.5 + 1.4292 ( x− 1 3 ) − 0.99340 ( x− 1 3 )2 x ∈ [2/3, 1] : S3 = 0.86602 + 0.76695 ( x− 2 3 ) + −2.1901 2 ( x− 2 3 )2 = 0.86602 + 0.76695 ( x− 2 3 ) − 1.0950 ( x− 2 3 )2 A Figura mostra graficamente o spline. 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Figura 6.1.1: Spline constituído por três troços EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 37 Determinação de uma aproximação para f ′(x): E′(0.5) = f ′(0.5)− S′(0.5) = f ′(0.5)− S′2(0.5) = pi/2× cos(pi/2× 1/2)− 1.0981 = 0.012621 E′′(0.5) = f ′′(0.5)− S′′(0.5) = f ′′(0.5)− S′′2 (0.5) = −(pi/2)2 sin(pi/2× 1/2) + 1.9868 = 0.24208 e′(0.5) = E′(0.5)/f ′(0.5) = 0.012621/(pi/2× cos(pi/2× 1/2)) = 1.1363× 10−2, ou seja, 1.14%. e′′(0.5) = E′′(0.5)/f ′′(0.5) = 0.24208/(−(pi/2)2 sin(pi/2× 1/2)) = −0.13875, ou seja, 13.9%. f(x) e S(x) são praticamente coincidentes. Justifica-se um erro maior em S′′(0.5) do que em S′(0.5), porque nos splines quadráticos S′(x) é linear e S′′(x) é constante por troços (Ver Figura 6.1.2). 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 (a) Primeira derivada 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 −2.5 −2 −1.5 −1 −0.5 0 0.5 1 1.5 2 (b) Segunda derivada Figura 6.1.2: Derivadas dos três troços do spline ¥ 6.2 INTERPOLAÇÃO POLINOMIAL: Spline cúbico Construir o spline cúbico que interpole os pontos: (0, 0); (0.5, 0.0625); (1, 1); (1.5, 5.0625) e (2, 16). CONCEITOS TEÓRICOS Os splines correspondem a aproximações de funções por troços.† No caso de um spline cúbico esta aproximação é obtida entre cada dois pontos consecutivos através da expressão para cada subintervalo ou, mais prosaicamente, troço (Exp. (2.7.10), †Para uma definição mais rigorosa de splines ver p. 77 de [Pina(1995)]. 38 SEMANA 6 p. 82, [Pina(1995)]): x ∈ [xi−1, xi], i = 1, 2, . . . , n Si(x) =Mi−1 (xi−x)3 6hi +Mi (x−xi−1)3 6hi + ( yi−1 −Mi−1 h 2 i 6 ) xi−x hi + ( yi −Mi h 2 i 6 ) x−xi−1 hi hi = xi − xi−1 Mi = S′′i (xi) = S ′′(xi) Os Mi, designados momentos, são dados pela exp. (2.7.13), p. 82 de [Pina(1995)] obtida impondo S′(xi−) = S′(xi+), isto é, impondo continuidade da primeira deri- vada nos nós: hi 6 Mi−1 + hi + hi+1 3 Mi + hi+1 6 Mi+1 = yi+1 − yi hi+1 − yi − yi−1 hi , com i = 1, 2, . . . , n− 1 Obtemos então n − 1 equações com n + 1 incógnitas Mi, i. e., M0, . . . ,Mn, pelo que são necessárias duas condições suplementares. Há várias possibilidades, embora as três a seguir descritas sejam as mais usadas: 1) Spline completo: S′1(x0) = y′0, S′n(xn) = y′n. 2) Spline natural: S′′1 (x0) =M0 = 0, S′′n(xn) =Mn = 0. Este tipo de spline é indicado quando não conhecemos as derivadas y′0 e y′n. No en- tanto, estas condições podem reduzir a precisão do spline. 3) Spline periódico: y0 = yn, S′(x0) = S′(xn), M0 =Mn. ¤ RESOLUÇÃO Construção do spline: Neste caso vamos recorrer ao spline natural, n = 4 e hi = h = 0.5. Como o espaçamento h é constante, a expressão simplifica-se e com i = 1, 2, 3, ficamos com: M0 = 0 1 2 M0 + 2M1 + 1 2 M2 = 3 ( y2 − 2y1 + y0 h2 ) 1 2 M1 + 2M2 + 1 2 M3 = 3 ( y3 − 2y2 + y1 h2 ) 1 2 M2 + 2M3 + 1 2 M4 = 3 ( y4 − 2y3 + y2 h2 ) M4 = 0 EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 39 ou, na forma matricial, 1 0 0 0 0 1/2 2 1/2 0 0 0 1/2 2 1/2 0 0 0 1/2 2 1/2 0 0 0 0 1 M0 M1 M2 M3 M4 = 0 3 [ (y2 − 2y1 + y0)/h2 ] 3 [ (y3 − 2y2 + y1)/h2 ] 3 [ (y4 − 2y3 + y2)/h2 ] 0 Substituindoos valores de yi, i = 0, 1, 2, 3, 4 e eliminando as primeiras e últimas linhas e colunas obtemos sucessivamente,† 2 1/2 0 10.5 1/2 2 1/2 37.5 0 1/2 2 82.5 → 2 0.5 0 10.5 0 1.875 0.5 34.875 0 0.5 2 82.5 → → 2 0.5 0 10.5 0 1.875 0.5 34.875 0 0 1.8667 73.2 Portanto, os momentos são M3 = 73.2/1.8667 = 39.214 M2 = (34.875− 0.5M3)/1.875 = 8.1429 M1 = (10.5− 0.5M2)/2 = 3.2143 †O leitor poderá consultar o Capítulo 12 referente a Sistemas de Equações Lineares para compre- ender a obtenção dos valores M1, M2 e M3. 40 SEMANA 6 O primeiro troço do spline corresponde a x ∈ [x0, x1], sendo S1(x) =M0 (x1 − x)3 6h +M1 (x− x0)3 6h + ( y0 −M0h 2 6 ) x1 − x h + ( y1 −M1h 2 6 ) x− x0 h = 0 + 3.2143 (x− 0)3 6× 12 + (0− 0) 0.5− x1 2 +( 0.0625− 3.2143( 1 2 ) 2 6 ) x− 0 1 2 , ou seja, S1(x) = 1.0714x3 − 0.14286x para 0 6 x 6 0.5. Os restantes troços determinam-se da mesma forma, obtendo-se S2 = 1.6428x3 − 0.85714x2 + 0.2857x− 0.071428 para 0.5 6 x 6 1 S3 = 10.357x3 − 26.999x2 + 26.428x− 8.7857 para 1 6 x 6 1.5 S4 = −13.071x3 − 78.428x2 − 131.71x+ 70.286 para 1.5 6 x 6 2 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 −2 0 2 4 6 8 10 12 14 16 Figura 6.2.1: Spline cúbico natural resultante ¥ EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 41 6.3 INTERPOLAÇÃO POLINOMIAL: Erros em splines cúbicos Pretende-se interpolar por um spline cúbico numa malha uniforme no intervalo [0, 1] a função f(x) = exp(1 + x). Determine o número de nós necessário para obter um erro relativo em valor absoluto inferior a 10−3. CONCEITOS TEÓRICOS O cálculo de erros de interpolação com splines cúbicos tem por base o Teorema 2.7.4, p. 86, [Pina(1995)]: Teorema 2.7.4: Seja f ∈ C4(Ω¯) e S o spline cúbico satisfazendo qualquer das condições suplementares referidas nesta subsecção [pp. 82–83, [Pina(1995)]]. Então, ‖f − S‖∞ 6 5 384 ∥∥D4f∥∥∞ h4 ‖D(f − S)‖∞ 6 (√ 3 216 + 1 24 )∥∥D4f∥∥∞ h3∥∥D2(f − S)∥∥∞ 6 ( 112 + 13(h/h) )∥∥D4f∥∥∞ h2∥∥D3(f − S)∥∥∞ 6 12 (1 + (h/h)2) ∥∥D4f∥∥∞ h em que h = min 16i6n hi ¤ RESOLUÇÃO O erro relativo em valor absoluto é tal que |e(x)| = ∣∣∣∣f(x)− S(x)f(x) ∣∣∣∣ 6 maj |f(x)− S(x)|min |f(x)| sendo maj |f(x)− S(x)| ≡ ‖f − S‖∞. Pelo Teorema 2.7.4, fica 5 384 ∥∥D4f∥∥∞ h4 min |f(x)| 6 ² = 10 −3 → 5 384 ‖exp(1 + x)‖∞ h4 min | exp(1 + x)| 6 ² = 10 −3 ⇔ 5 384 maxx∈[0,1] |exp(1 + x)|h4 min x∈[0,1] |exp(1 + x)| 6 ² = 10 −3 ⇔ 5 384 exp(2)h 4 exp(1) 6 ² = 10−3, pois, ∣∣D4f ∣∣ = exp(1 + x) é monótona crescente no intervalo [0,+∞] e, logo, tem um mínimo em x = 0 e um máximo em x = 1 no intervalo [0, 1]. 42 SEMANA 6 Assim, resulta h < ( 10−3 exp(1) 5 384 exp(2) )1/4 h < 0.40998→ h = b− a N = 1− 0 N < 0.40998→ N > 2.43914, ou seja, 3 intervalos. Assim, são necessários pelo menos 4 nós. ¥ 7 TÓPICOS: Diferenciação Numérica: Diferenças finitas de primeira e segunda ordens; Majorante do erro; Espaçamento óptimo; Ponto de inflexão; Espaçamento desigual. LEITURAS RECOMENDADAS: Capítulo 3 (pp. 97–111) do livro [Pina(1995)] 7.1 DIFERENCIAÇÃO NUMÉRICA: Diferenças finitas de primeira e segunda ordens Considere a seguinte tabela de valores para a função y = coshx: x 0.1 0.2 0.3 0.4 y 1.0050 1.0201 1.0453 1.0811 Determine os valores de f ′(0.2) e f ′′(0.2) pelas várias fórmulas de diferenças finitas e compare os resultados com os valores exactos. CONCEITOS TEÓRICOS Consultar as Secções 3.2 e 3.3 de [Pina(1995)]. ¤ −4 −3 −2 −1 0 1 2 3 4 −15 −10 −5 0 5 10 15 Figura 7.1.1: Funções cosh(x) (—) e sinh(x) (- - -) 44 SEMANA 7 RESOLUÇÃO Valores exactos: y = coshx = ex + e−x 2 , y′ = sinhx = ex − e−x 2 , y′′ = coshx = ex + e−x 2 = y y′(0.2) = sinh(0.2) = 0.20134, y′′(0.2) = cosh(0.2) = 1.0201 Valores por diferenças finitas: Para o cálculo da primeira derivada, vamos usar diferenças finitas de primeira e segunda ordens. Diferenças finitas de 1.a ordem Dhf(x) com h = 0.1: Progressiva (exp. (3.2.8)) f(x+h)−f(x)h = f(0.2+0.1)−f(0.2) 0.1 = 0.2520 Regressiva (exp. (3.2.10)) f(x)−f(x−h)h = f(0.2)−f(0.2−0.1) 0.1 = 0.1510 Central (exp. (3.2.12)) f(x+h)−f(x−h)2h = f(0.2+0.1)−f(0.2−0.1) 2×0.1 = 0.2015 Diferenças finitas de 2.a ordem Dhf(x) com h = 0.1: Progressiva (Exp. (3.2.16)) −3f(x)+4f(x+h)−f(x+2h)2h = ... = 0.1990 Regressiva (Exp. (3.2.20)) 3f(x)−4f(x−h)+f(x−2h)2h = ... = 0.20150 Central (Exp. (3.2.12)) Expressão e valor iguais a 1.a ordem Para calcular a diferença finita regressiva de 2.a ordem precisamos de saber o valor da função em x = 0, que neste caso é f(0) = cosh(0) = 1. A Figura abaixo mostra as tangentes, isto é, polinómios de ordem um, dados pelas diferenças finitas de primeira ordem. EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 45 0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.96 0.98 1 1.02 1.04 1.06 1.08 1.1 R P C Figura 7.1.2: Diferenças Finitas: (P) Progressiva, (R) regressiva e (C) central A melhor aproximação foi obtida com a Diferença Finita Central, e com a Dife- rença Regressiva de 2.a ordem, mas esta última requer um maior número de pontos e inclusive um valor de f(x) que não está na tabela dada. Para a segunda derivada, vamos considerar apenas a diferença finita central (ob- viamente de segunda ordem). Exp. (3.3.1) com h = 0.1: D2hf(x) = f(x+ h)− 2f(x) + f(x− h) h2 = f(0.3)− 2f(0.2) + f(0.1) 0.12 = 1.0453− 2× 1.0201 + 1.005 0.12 = 1.0100, ou seja, sendo o valor exacto y′′(0.2) = 1.0201, esta aproximação dispõe de dois dígitos correctos. ¥ 7.2 DIFERENCIAÇÃO NUMÉRICA: Majorante do erro Obtenha o valor de f ′(1.0) para a função f(x) = exp(−x) usando diferenças finitas progressivas e passo h = 0.001. Determine o erro efectivamente cometido e compare-o com o majorante teórico. CONCEITOS TEÓRICOS Consultar as Secções 3.2 e 3.3 de [Pina(1995)]. ¤ 46 SEMANA 7 RESOLUÇÃO Valores aproximado e exacto: Dhf(x) = f(x+ h)− f(x) h = f(1.001)− f(1.0) 0.001 = e−1.001 − e−1 0.001 = −0.3676956 f ′(x) = −ex ⇒ f ′(1.0) = −e−1.0 = −0.3678794 Erro efectivamente cometido: E(1.0) = f ′(1.0)−Dhf(1.0) = −0.3678794− (−0.3676956) = −0.0001838 = −(1.838)10−4 O majorante teórico do erro (erro devido apenas à aproximação da derivada) é dado pela exp. (3.2.9), p. 100 de [Pina(1995)]: † e′1(x) = − 1 2 hf ′′(ξ) em que ξ ∈ [x0, x1] = Ω¯ |e′1(x)| 6 1 2 h ‖f ′′(x)‖∞ Neste problema, f ′′(x) = e−x em Ω¯ = [1.0, 1.0 + h]. Concretizando, e atendendo a que a função é monótona, o máximo encontra-se num extremo do intervalo (ver Figura 7.2.1), fica ‖f ′′(x)‖Ω¯∞ = f ′′(1.0) = f(1.0) = 0.367879 |e′1(1.0)| 6 1 2 × 0.001× 0.367879 = (1.839)10−4 Constatamos que, de facto, |E(1.0)| 6 |e′1(1.0)|, sendo praticamente igual. †Utiliza-se para o erro de interpolação a letra minúscula e de forma a manter a coerência com a nomenclatura utilizada no livro de [Pina(1995)]. Note-se no entanto que se trata de um erro absoluto e por isso deveríamos utilizar uma letra maiúscula. EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 47 −1.5 −1 −0.5 0 0.5 1 1.5 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 Figura 7.2.1: Funções exp(−x) (—) e exp(x) (- - -) ¥ 7.3 DIFERENCIAÇÃO NUMÉRICA: Espaçamento óptimo Dada a seguinte tabela de tempos e posições: t 0 1/3 2/3 1 y(t) 0 sen(pi/6) sen(pi/3) 1 a) Determine uma aproximação da velocidade e da aceleração nos 2 nós interiores usando diferenças finitas centrais. b) Deduza uma estimativa para o espaçamento óptimo no cálculo da aceleração por diferenças finitas centrais. RESOLUÇÃO a) Antes de mais, devemos observarque h = 1/3 e que os 2 pontos interiores são t = 1/3 e t = 2/3. Expressão para cálculo das velocidades por diferenças finitas centrais (p. 101, exp. (3.2.12)): Dhf(x) = f(x+ h)− f(x− h) 2h Expressão para cálculo das acelerações por diferenças finitas centrais (p. 103, exp. (3.3.1)): D2hf(x) = f(x− h)− 2f(x) + f(x+ h) h2 48 SEMANA 7 Concretizando para os valores dados na tabela e recorrendo à calculadora, obte- mos, sucessivamente: Dhf(1/3) = f(1/3 + 1/3)− f(1/3− 1/3) 2× 1/3 = f(2/3)− f(0) 2× 1/3 = sen(pi/3)− 0 2× 1/3 = 1.299 Dhf(2/3) = f(2/3 + 1/3)− f(2/3− 1/3) 2× 1/3 = f(1)− f(1/3) 2× 1/3 = 1− sen(pi/6) 2× 1/3 = 0.75 D2hf(1/3) = f(1/3− 1/3)− 2f(1/3) + f(1/3 + 1/3) (1/3)2 = f(0)− 2f(1/3) + f(2/3) (1/3)2 = 0− 2sen(pi/6) + sen(pi/3) (1/3)2 = −1.2057 D2hf(2/3) = f(2/3− 1/3)− 2f(2/3) + f(2/3 + 1/3) (1/3)2 = f(1/3)− 2f(2/3) + f(1) (1/3)2 = sen(pi/6)− 2sen(pi/3) + 1 (1/3)2 = −2.088457 b) Neste caso, o espaçamento h óptimo é desconhecido. O valor exacto da segunda derivada f ′′(x) relaciona-se com o valor por diferenças finitas centrais e o erro de aproximação, e′′2(x), inerente ao cálculo por este processo, do seguinte modo: f ′′(x) = f(x− h)− 2f(h) + f(x+ h) h2 − 1 12 h2f (4)(η) = f(x− h)− 2f(h) + f(x+ h) h2 − e′′2(x) Em representação em ponto flutuante, temos de contar ainda com os erros de arredondamento, e˜(x), no cálculo do valor da própria função, ou seja, f(x) = f˜(x) + e˜(x) e, portanto f ′′(x) = f˜(x− h)− 2f˜(h) + f˜(x+ h) h2 + e˜(x− h)− 2e˜(h) + e˜(x+ h) h2 − 1 12 h2f (4)(η) = f˜(x− h)− 2f˜(h) + f˜(x+ h) h2 + E onde E = e˜(x− h)− 2e˜(h) + e˜(x+ h) h2 − 1 12 h2f (4)(η) EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 49 Considerando∥∥∥f (4)∥∥∥ ∞ 6M4 e |e˜(x− h)− 2e˜(h) + e˜(x+ h)| 6 4² onde M4 é o majorante das quartas derivadas e ² é um parâmetro que depende da forma como a função f é calculada, ou seja, é da ordem de grandeza da unidade de arredondamento do computador utilizado, podemos fazer |E| 6 4² h2 + M4h 2 12 O segundo membro é mínimo quando a sua primeira derivada, em ordem a h, for nula, isto é, quando − 8² h3 + M4h 6 = 0⇒ h = ( 48² M4 )1/4 Portanto, o valor de h deduzido será a estimativa para o espaçamento óptimo no cálculo da aceleração por diferenças finitas centrais. ¥ Como complemento teórico à resolução deste problema, sugerimos a observação atenta da Figura 3.5.1, na p. 108. do livro [Pina(1995)]. ¡ 7.4 DIFERENCIAÇÃO NUMÉRICA: Ponto de inflexão Obtenha o ponto de inflexão de uma função f no intervalo [0, 1] sendo conhecidos os seguintes valores: x 0.00 0.25 0.50 0.75 1.00 f(x) 0.00 0.56 0.72 1.34 4.00 RESOLUÇÃO Podemos considerar os seguintes processos para resolver o problema: i) Determinar o polinómio interpolador e depois derivar analiticamente; ii) Determinar as derivadas aproximadasD2hf(x) pela tabela e interpolar os valores obtidos; iii) Determinar os splines, seguido de derivação analítica. Em qualquer dos casos obtemos uma equação polinomial a solucionar. De notar que existem outros processos, igualmente válidos para resolver este problema. Processo i: Esquematicamente temos pn(x)→ p′′n(x)→ p′′n(x) = 0 Assim, primeiro determinamos o polinómio interpolador p4(x) por diferenças di- vididas: 50 SEMANA 7 x y[·] y[·, ·] y[·, ·, ·] y[·, ·, ·, ·] y[·, ·, ·, ·, ·] 0.00 0.00 2.24 0.25 0.56 −3.2 0.64 9.17(3) 0.50 0.72 3.68 7.68 2.48 16.85(3) 0.75 1.34 16.32 10.64 1.00 4.00 O polinómio é então p(x) = 2.24x− 3.2x(x− 0.25) + 9.17(3)x(x− 0.25)(x− 0.50) + 7.68x(x− 0.25)(x− 0.50)(x− 0.75) que, desenvolvido e agrupado na forma de potências simples de x corresponde a p(x) = 3.4(6)x− 4.8x2 − 2.34(6)x3 + 7.68x4. Derivando sucessivamente, obtemos p′(x) = 3.4(6)− 9.6x− 7.04x2 + 30.72x3 p′′(x) = −9.6− 14.08x+ 92.16x2 O ponto de inflexão é tal que p′′(x) = 0⇔ x = −b± √ b2 − 4ac 2a ou seja, x = 0.408054 ∨ x = −0.255276 Portanto, o ponto de inflexão no intervalo [0, 1], obtido por este processo, é x ≈ 0.40805. Processo ii: Esquematicamente temos D2hf(x)→ p′′n(x)→ p′′n(x) = 0 A segunda derivada é obtida por diferenças finitas centrais: D2hf(x) = f(x− h)− 2f(x) + f(x+ h) h2 tal que h = 0.25. Assim, obtemos x 0.00 0.25 0.50 0.75 1.00 y 0.00 0.56 0.72 1.34 4.00 y′′ −6.4 7.36 32.64 e a correspondente tabela de diferenças divididas para determinar a interpolação de D2hf(x): EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 51 x y′′[·] y′′[·, ·] y′′[·, ·, ·] 0.25 −6.4 55.04 0.50 7.36 92.16 101.12 0.75 32.64 O polinómio que interpola a segunda derivada é, então p′′(x) = −6.4 + 55.04(x− 0.25) + 92.16(x− 0.25)(x− 0.50) que, desenvolvido e agrupado em potências de x corresponde a p′′(x) = −8.64− 14.08x+ 92.16x2 O ponto de inflexão é tal que p′′(x) = 0⇔ x = −b± √ b2 − 4ac 2a ou seja, x = 0.391960 ∨ x = −0.239182 Portanto, o ponto de inflexão no intervalo [0, 1], obtido por este processo, é x ≈ 0.39196. Processo iii: Esquematicamente temos Mi → S′′i (x)→ S′′i (x) = 0 Reparar que não necessitamos de determinar o próprio spline cúbico Si(x), bas- tando, para o que pretendemos, calcular S′′i (x). Dado que desconhecemos as derivadas y′ nos extremos x0 e x4, temos M0 =M4 = 0, isto é, impomos S′′1 (x0) = 0 =M0 e S′′4 (x4) = 0 =M4.† Para determinar M1, M3 e M3 faz-se h 6 Mi−1 + 2h 3 Mi + h 6 Mi+1 = yi+1 − 2yi + yi−1 h com i = 1, 2, 3 1 2 Mi−1 + 2Mi + 1 2 Mi+1 = 3 h2 (yi+1 − 2yi + yi−1) com i = 1, 2, 3 o que origina, na forma matricial, 2 1/2 01/2 2 1/2 0 1/2 2 M1M2 M3 = 3 h2 y2 − 2y1 + y0y3 − 2y2 + y1 y4 − 2y3 + y2 = −19.222.08 97.92 †Como veremos, ao impor estas igualdades, os resultados deterioram-se. 52 SEMANA 7 Resolvendo o sistema de equações, por exemplo, através do método de Gauss e substituição descendente, obtemos M1M2 M3 = 48.61711.3714 −9.9428 Dado que S′′i =Mi, é de esperar que o ponto de inflexão esteja no segundo troço, pois M2 e M3 têm sinais diferentes. Então, como a segunda derivada do i-ésimo troço de spline é tal que (Exp. (2.7.7), p. 81, [Pina(1995)]) S′′i (x) =Mi−1 xi − x h +Mi x− xi−1 h obtemos para o segundo troço, isto é, para o subintervalo [0.25, 0.5] S′′2 (x) =M1 x2 − x h +M2 x− x1 h = −9.94280.50− x 0.25 + 1.3714 x− 0.25 0.25 O ponto de inflexão é tal que S′′2 (x) = 0⇔ −9.9428 0.50− x 0.25 + 1.3714 x− 0.25 0.25 = 0⇔ x = 0.469697. Portanto, o ponto de inflexão no intervalo [0, 1], obtido por este processo, é x ≈ 0.46970. Comparação entre os três processos: Observando as Figuras 7.4.1(a) e 7.4.1(b), que mostram o polinómio obtido pelo processo i), é possível concluirmos que o ponto de inflexão positivo se encontra na vizinhança de 0.4. No entanto, existe um outro ponto de inflexão negativo, perto de 0.25. −1 −0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 1 −3 −2 −1 0 1 2 3 4 5 (a) 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 (b) Figura 7.4.1: Polinómio de quarta ordem obtido pelo processo i Os valores do ponto de inflexão obtidos pelos processos i e ii são bastante seme- lhantes, pois os polinómios de grau 2 obtidos são quase coincidentes (Figura 7.4.2). EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 53 O resultado com o processo iii não será o melhor, dado que impusemos um va- lor nulo às segundas derivadas nas extremidades do intervalo (S′′i (0) = 0 = M0 e S′′i (1) = 0 =M4). 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 −20 −10 0 10 20 30 40 50 60 70 Processo i Processo ii Processo iii Figura 7.4.2: Polinómios obtidos por derivaçãoanalítica (Processos i e ii) e por spline cúbico natural (Processo iii) ) A título comparativo e para reflexão , mostramos o polinómio obtido pelo processo i e o spline cúbico natural na Figura 7.4.3.† Porque se verificam grandes discrepâncias nos intervalos [0, 0.25] e [0.75, 1]? 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.5 1 1.5 2 2.5 3 3.5 4 Processo iii Processo i Figura 7.4.3: Polinómios de quarta ordem (Processo i) e spline cúbico (Processo iii) ¥ †Relembramos que não é necessário construir o spline para calcular o ponto de inflexão. 54 SEMANA 7 7.5 DIFERENCIAÇÃO NUMÉRICA: Espaçamento desigual Dados 3 pontos, (x1, y1), (x2, y2), (x3, y3), com espaçamento desigual entre as suas abcissas, deduza uma fórmula para calcular uma aproximação da segunda derivada num ponto qualquer do intervalo [x1, x3]. Considerando os pontos (1, 1), (2, 4), (5, 5), utilize a fórmula para calcular y′′(2) e y′′(3). Em qual dos pontos, x2 ou (x1 + x3)/2, é de esperar um erro absoluto menor? Justifique (admita que as derivadas de y = f(x) se mantêm na mesma ordem de grandeza em [x1, x3]). RESOLUÇÃO Pretendemos deduzir uma fórmula para calcular D2hf ≈ f ′′(x) = y′′. De entre as várias possibilidades, a dedução da diferença finita com espaçamento desigual é a mais simples. De notar que o recurso a splines não é o mais adequado, pois não se conhece a função e estes requerem o conhecimento de m0 (splines quadráticos) ou M0 e Mn (splines cúbicos). Assim, D2h = p ′′ 2(x) = 2f [x1, x2, x3] = 2 f [x1, x2]− f [x2, x3] x1 − x3 = 2 f(x1)−f(x2) x1−x2 − f(x2)−f(x3) x2−x3 x1 − x3 Como D2h não depende de x, temos f ′′(2) ≡ f ′′(3) ≈ 2 1−4 1−2 − 4−52−5 1− 5 = − 4 3 A expressão do erro de D2h é e′′2 = f [x1, x2, x3, x, x, x]W2(x) + 2f [x1, x2, x3, x, x]W ′2(x) + f [x1, x2, x3, x]W ′′2 (x) onde, usando f [x1, x2, x3, . . . , xk] = f (k)(ξ) k! vem e′′2 = f (5)(r) 120 W2(x) + f (4)(ξ) 12 W ′2(x) + f (3)(η) 6 W ′′2 (x) EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 55 Como as derivadas mantêm a mesma ordem de grandeza, ficamos com e′′2 6 M 12 ( 1 10 |W2(x)|+ |W ′2(x)|+ 2|W ′′2 (x)| ) onde W2 = (x− x1)(x− x2)(x− x3) = (x− 1)(x− 2)(x− 5) W ′2 = (x− x2)(x− x3) + (x− x1)(x− x3) + (x− x1)(x− x2) W ′′2 = 2(x− x3) + 2(x− x2) + 2(x− x1) = 6x− 16 Compilando os valores numa tabela, obtemos x |W2(x)| |W ′2(x)| |W ′′2 (x)| e′′2 x = x2 = 2 0 3 4 1112M x = (x1 + x3)/2 = 3 4 4 2 8.412M Concluímos então que é de esperar um erro absoluto menor em x, embora em termos de majorante a diferença encontrada não seja significativa. ¥ 8 TÓPICOS: Integração Numérica: Regras de Newton-Cotes simples e com- postas; Regra de Gauss-Legendre-Lobatto; Regras de Gauss-Legendre e do trapézio composta. Erros absoluto e relativo. Estimativa e majorante do erro. LEITURAS RECOMENDADAS: Capítulo 4 (pp. 115–139) do livro [Pina(1995)] 8.1 INTEGRAÇÃO NUMÉRICA: Regras do trapézio simples e de Simpson simples e composta (a) Calcule, pela regra do trapézio simples e pela regra de Simpson simples, o valor aproximado do integral I = ∫ 3 2 exp (1 + cosx)dx. (b) Idem pela regra de Simpson composta com 2 subintervalos. (c) Estime o erro absoluto cometido na alínea anterior. RESOLUÇÃO (a) As regras referidas correspondem, respectivamente, às expressões (4.2.6) e (4.2.7), p. 120, de [Pina(1995)]: TIh(f) = b− a 2 [f(a) + f(b)] SIh(f) = b− a 6 [ f(a) + 4f( a+ b 2 ) + f(b) ] onde a e b são os limites de integração. Concretizado para a função f(x) = exp (1 + cosx), com a = 2 e b = 3 obtemos TIh(f) = 3− 2 2 [f(2) + f(3)] = 1.401495675 SIh(f) = 3− 2 6 [ f(2) + 4f( 2 + 3 2 ) + f(3) ] = 1.280503052 (b) 58 SEMANA 8 Aplicação directa da exp. (4.5.10): A exp. para o cálculo com a regra de Simpson composta com N subintervalos é (Exp. (4.5.10), p. 138, de [Pina(1995)]): ScIh(f) = h 6 [ f(a) + f(b) + 2 N−1∑ i=1 f(ai) + 4 N∑ i=1 f(ai−1 + h/2) ] onde h = (b− a)/N . No caso presente, como N = 2 teremos ScIh(f) = h 6 [f(a) + f(b) + 2f(a1) + 4(f(a0 + h/2) + f(a1 + h/2))] com a = 2, b = 3, h = (3−2)/2 = 0.5, a0 = 2 = a, a1 = a0+h = 2.5, a2 = a1+h = b. Assim, vem, sucessivamente ScIh(f) = 0.5 6 {f(2) + f(3) + 2f(2.5) + 4[f(2 + 0.5/2) + f(2.5 + 0.5/2)]} = 0.5 6 {f(2) + f(3) + 2f(2.5) + 4[f(2.25) + f(2.75)]} = 1.279922906 Resolução alternativa e justificação da exp. (4.5.10): Neste caso conside- ramos 2 intervalos, usamos a regra de Simpson simples em cada um deles e somamos os valores obtidos, pois sabemos que I = ∫ b a f(x)dx = ∫ a1 a f(x)dx+ ∫ b a1 f(x)dx = ∫ a1 a0 f(x)dx+ ∫ a2 a1 f(x)dx = ∫ 2.5 2 f(x)dx+ ∫ 3 2.5 f(x)dx. Portanto, aplicando a regra de Simpson simples a cada um dos integrais acima, obtemos ScIh(f) = 2.5− 2 6 [f(2) + 4f(2.25) + f(2.5)] + 3− 2.5 6 [f(2.5) + 4f(2.75) + f(3)] = 1.279922906 (c) Antes de mais, há que notar que se pretende uma estimativa, pois desconhe- cemos o valor exacto do integral. Os erros de integração das regras de Simpson simples e composta são dados, res- pectivamente pelas expressões (4.2.18), p. 124 e (4.5.11), p. 138, de [Pina(1995)]: SEh(f) = − 12880f (4)(ξ)(b− a)5 = I − SIh(f) (8.1.1) ScEh(f) = −b− a2880 f (4)(ξ)h4 = I − ScIh(f) onde h = b− a N (8.1.2) A exp. (8.1.2) pode escrever-se da seguinte forma: ScEh(f) = −b− a2880 f (4)(ξ) ( b− a N )4 = − 1 N4 1 2880 f (4)(ξ) (b− a)5 (8.1.3) EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 59 pelo que, e como N = 2, fica I − SIh(f) = − 12880f (4)(ξ)(b− a)5 = −c (8.1.4) I − ScIh(f) = − 124 1 2880 f (4)(ξ) (b− a)5 = − 1 16 c (8.1.5) Subtraindo (4) a (5), membro a membro, fica I − SIh(f)− I + ScIh(f) = −c+ 124 c ⇔ ScIh(f)− SIh(f) = ( 1 16 − 1 ) c (8.1.6) ou seja, c = ( 1 16 − 1 )−1 [ ScIh(f)− SIh(f) ] = ( −15 16 )−1 [ ScIh(f)− SIh(f) ] = −16 15 [ ScIh(f)− SIh(f) ] (8.1.7) Substituindo c em (5), obtemos I − ScIh(f) = − 116 ( −16 15 )[ ScIh(f)− SIh(f) ] = ScIh(f)− SIh(f) 15 (8.1.8) Então, substituindo os valores calculados nas alíneas anteriores, obtemos uma estimativa de erro absoluto cometido na alínea b) de 3.9× 10−5.† ¥ A Figura 8.1.1 mostra a negro a diferença entre as áreas abaixo da curva da função f(x) = exp(1+cos(x)) e dos polinómios de grau 1 (Figura 8.1.1(a): Regra do trapézio simples) e grau 2 (Figura 8.1.1(b): Regra de Simpson simples). É notório o melhor desempenho da regra de Simpson que, recordamos, é de ordem 3. 2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3 0 0.5 1 1.5 2 2.5 (a) Regra do trapézio simples 2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3 0 0.5 1 1.5 2 2.5 (b) Regra de Simpson simples Figura 8.1.1: Diferenças entre integração exacta e com regras do trapézio e Simpson simples ¡ †Admitimos que a estimativa de f (4) é válida em ambos os casos, sendo o máximo no intervalo [2, 3]. 60 SEMANA 8 8.2 INTEGRAÇÃO NUMÉRICA: Regra de Gauss-Legendre e de Gauss-Legendre- Lobatto Pretende-se calcular o seguinte integral I = ∫ 2 0 sinh(x)dx. (a) Obtenha uma aproximação com 2 pontos de Gauss-Legendre. (b) Idem, com 3 pontos de Gauss-Legendre-Lobatto. (c) Calcule o erro absoluto e relativo cometido em cada caso. RESOLUÇÃO (a) Mudança de coordenadas (exp. (4.1.2), p. 116): T (ξ) = a(1− ξ) 2 + b(1 + ξ) 2 = 0(1− ξ) 2 + 2(1 + ξ) 2 = 1 + ξ J(ξ) = b− a 2 = 2 2 = 1 Então, I = ∫ 2 0 sinh(x)dx = ∫ 1 −1 sinh(1 + ξ)× 1dξ = ∫ 1 −1 sinh(1 + ξ)dξ. Com 2 pontos, temos as abcissas e os pesos (Tabela 4.4.1, p. 132) ξ1 = −0.5773502692, A1 = 1, ξ1 = +0.5773502692, A2 = 1. e, portanto I = ∫ 2 0 sinh(x)dx
Compartilhar