Preview only show first 10 pages with watermark. For full document please download

Resolução Teste

Inserir Descrição

   EMBED


Share

Transcript

An´ alise Num´ erica I Resolu¸ c˜ ao do Teste 1 – 5/11/2007 Exerc´ıcio 1 a) M=magic(5) M = 17 23 4 10 11 24 5 6 12 18 1 7 13 19 25 8 14 20 21 2 15 16 22 3 9 24 6 12 18 1 13 19 25 8 20 21 2 15 22 3 9 576 25 36 144 324 1 49 169 361 625 64 196 400 441 4 225 256 484 9 81 b) i) N=M; N(2,:)=[] N = 17 4 10 11 ii) Q=M.^2 Q = 289 529 16 100 121 1 iii) dp=diag(M) dp = 17 5 13 21 9 iv) t=M(:) t = 17 23 4 10 11 24 5 6 12 18 1 7 13 19 25 8 14 20 21 2 15 16 22 3 9 2 (v) ds=diag(flipud(M)) ds = 11 12 13 14 15 c) n=5; k=(n^3+n)/2 k = 65 Verificar se a soma por colunas ´e constante (e igual a k = 65): isequal(sum(M),k*ones(1,5)) ans = 1 Verificar se a soma por linhas ´e constante (e igual a k = 65): isequal(sum(M,2),k*ones(5,1)) ans = 1 Verificar se a soma da diagonal principal ´e igual a k = 65: 3 sum(dp)==k ans = 1 Verificar se a soma da diagonal secund´ aria ´e igual a k = 65: sum(ds)==k ans = 1 Verificar se o vector t (com todos os elementos de M ) ´e formado pelos n´ umeros 1, 2, . . . , 25; ter em conta que h´ a que ordenar os elementos do vector t e transpor para comparar com o vector linha 1 : 25. isequal(sort(t)’,1:25) ans = 1 Nota: Se o aluno calculasse apenas sum(M) ans = 65 65 65 65 65 e comentasse que a soma por colunas era constante (e igual a 65), e procedesse de modo an´ alogo para a soma por linhas, soma da diagonal princial e soma da diagonal secund´ aria, a sua resposta seria considerada correcta. 4 Exerc´ıcio 2 a) i) 10^55*(10^154-10^154) ans = 0 a) ii) 10^155*10^154-10^155*10^154 ans = NaN b) Na al´ınea i), o c´ alculo de 10154 −10154 ´e efectuado em primeiro lugar, de maneira exacta, e d´ a o n´ umero 0 como resultado, o qual, ap´ os multiplica¸ca ˜o pelo n´ umero 10155 resulta no n´ umero 0 (resposta correcta); j´ a na al´ınea ii), ao efectuar-se 10155 × 10154 ´e ultrapassado o n´ıvel de overflow; note-se que no sistema de formato duplo IEEE, o n´ıvel de overflow ´e Ω = realmax ≈ 1.7977e + 308 ou seja, tem-se Ω < 10155 × 10154 = 10309 Assim, 10155 × 10154 resulta em Inf e Inf-Inf d´ a como resultado NaN (not a number). 5 Exerc´ıcio 3 a) N = 25 × (10 − (−10) + 1) × 2 + 1 = 26 × 21 + 1 = 1345 b) Ω = (1 − 2−6 )210 = 1008 ω = 2−11 Ent˜ ao: RF = [−1008, −2−11] ∪ {0} ∪ [2−11 , 1008]. c) Como 2−11 < 0.4 < 1008, ´e imediato concluir que x ∈ RF . Vejamos qual a representa¸ca ˜o bin´ aria de x = 0.4: 0.4 × 2 = 0.8; 0.8 × 2 = 1.6; 0.6 × 2 = 1.2; 0.2 × 2 = 0.4 Assim, a representa¸ca ˜o bin´ aria de x = 0.4 ´e: 0.4 = (0.0110011001100 . . .)2 = (0.01100)2 Vemos, assim que x ∈ / F , pois a sua representa¸ca ˜o bin´ aria requer mais de 6 d´ıgitos bin´ arios para a mantissa. Qual o valor de f l(x)? x = (0.0110011001100 . . .)2 = (0.110011001100 . . .)2 × 2−1 6 =⇒ f l(x) = (0.110011)2 × 2−1 = (2−1 + 2−2 + 2−5 + 2−6 ) × 2−1 = 0.3984. c) 128 = 27 = (0.1)2 × 28 Ent˜ ao, o n´ umero de m´ aquina imediatamente superior a 128 ser´ a (0.100001)2 × 28 = (2−1 + 2−6 ) × 28 = 27 + 22 = 128 + 4 = 132. Para concluir quanto vale f l(131), basta notar que 131 est´ a entre os dois n´ umeros de m´ aquina consecutivos 128 e 132, mas mais perto de 132, pelo que f l(131) = 132. Exerc´ıcio 4 a) Ver notas das aulas te´ oricas. b) i) x. cosh x = |x coth x|. cond(f (x)) = senhx g=@(x) abs(x.*coth(x)) ezplot(g) g = @(x)abs(x.*coth(x)) 7 abs(x coth(x)) 6 5 4 3 2 1 −6 −4 −2 0 x 2 4 6 Pela an´ alise de gr´ afico da fun¸ca ˜o cond(f (x)) = g(x) = |x coth(x)|, ´e imediato concluir que a fun¸ca ˜o f (x) = senh(x) ser´ a mal condicionada para valores de x cujo valor absoluto seja grande, sendo bem condicionada para os restantes valores de x. b) ii) x=[10^(-10) 10^(-12) 10^(-14)] format long g ytil=(exp(x)-exp(-x))/2 x = 1.0e-010 * 1.0000 0.0100 0.0001 ytil = Columns 1 through 2 1.00000008274037e-010 1.00003338943111e-012 8 Column 3 9.99200722162641e-015 b) iii) y=sinh(x); errosRel=abs((y-ytil)./y) errosRel = Columns 1 through 2 8.27403709626582e-008 3.33894311097739e-005 Column 3 0.000799277837359112 b) iv) Os resultados anteriores mostram um aumento significativo do erro relativo a ` medida que x se aproxima de zero; como vimos em (i), o c´ alculo de valores da fun¸ca ˜o senh(x) n˜ ao ´e mal condicionado para valores pequenos de x; o que se passa aqui ´e um problema de instabilidade da f´ ormula (1), a qual est´ a sujeita ao fen´ omeno de cancelamento subtractivo para valores de x pr´ oximos de zero; de facto, para esses valores de x, exp(x) e exp(−x) ser˜ ao valores muito pr´ oximos e h´ a cancelamento subtractivo no c´ alculo do numerador. b) (v) ex = 1 + x + e−x = 1 − x + x2 x3 + + O(h4 ) 2 3! x2 x3 − + O(h4 ) 2 3! =⇒ senh(x) = x + 9 x3 + O(h4 ) 3 ytil2=x+(x.^3)/3 errosRel2=abs((y-ytil2)./y) ytil2 = Columns 1 through 2 1e-010 1e-012 Column 3 1e-014 errosRel2 = 0 0 0 Como vemos, com o uso da expans˜ ao em s´erie de Taylor at´e a ` 3 a ordem, obtemos um erro relativo nulo (o que significa que as aproxima¸co ˜ees obtidas com esta f´ ormula tˆem precis˜ ao idˆentica a ` fornecida pela fun¸ca ˜o pr´e-definida no MATLAB); o que acontece, ´e que n˜ ao h´ a quaisquer problemas de cancelamento subtractivo no uso da f´ ormula baseada na s´erie de Taylor, sendo este um processo est´ avel de c´ alculo de valores se senh(x) (para valores de x pr´ oximos de zero)! Vemos, assim, que, embora teoricamente a f´ ormula senhx = ex − e−x 2 (1) seja uma f´ ormula exacta do c´ alculo de senhx e a express˜ ao dada pela expans˜ ao em s´erie de Taylor senhx ≈ x + x3 3 (2) nos forne¸ca apenas uma aproxima¸ca ˜o,do ponto de vista computacional e para valores de x pr´ oximos de zero, o uso da segunda f´ ormula ´e prefer´ıvel. Exerc´ıcio 5 a) 10 format short d=1:10; d1=10*ones(1,9); A=diag(d)+diag(d1,1) b=ones(10,1) A = 1 0 0 0 0 0 0 0 0 0 10 2 0 0 0 0 0 0 0 0 0 10 3 0 0 0 0 0 0 0 0 0 10 4 0 0 0 0 0 0 0 0 0 10 5 0 0 0 0 0 0 0 0 0 10 6 0 0 0 0 b = 1 1 1 1 1 1 1 1 1 1 b) x=A\b x = -134.1587 13.5159 -2.6032 0.8810 11 0 0 0 0 0 10 7 0 0 0 0 0 0 0 0 0 10 8 0 0 0 0 0 0 0 0 0 10 9 0 0 0 0 0 0 0 0 0 10 10 -0.2524 0.2262 -0.0357 0.1250 0 0.1000 c) Atil=A; Atil(10,1)=10^(-5); xtil=Atil\b erro=xtil-x xtil = -134.5295 13.5529 -2.6106 0.8832 -0.2533 0.2266 -0.0360 0.1252 -0.0001 0.1001 erro = -0.3707 0.0371 -0.0074 0.0022 -0.0009 0.0004 -0.0003 0.0002 -0.0001 0.0001 Como vemos, uma muito ligeira altera¸ca ˜o num dos elementos da matriz A provocou uma altera¸ca ˜o bastante significativa na solu¸ca ˜o do sistema; isto significa, 12 portanto, que o prolema da resolu¸ca ˜o do sistema Ax = b ´e um problema mal condicionado (isto ´e, muito sens´ıvel a altera¸co ˜es nos seus dados). 13