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