Escolar Documentos
Profissional Documentos
Cultura Documentos
Um Livro Colaborativo
Verso Scilab
3 de agosto de 2017
Organizadores
ii
Licena
iii
Nota dos organizadores
http://www.ufrgs.br/numerico
iv
Prefcio
v
Sumrio
Capa i
Organizadores ii
Licena iii
Prefcio v
Sumrio x
1 Introduo 1
vi
SUMRIO vii
6 Interpolao 163
6.1 Interpolao polinomial . . . . . . . . . . . . . . . . . . . . . . . . . 164
6.2 Diferenas divididas de Newton . . . . . . . . . . . . . . . . . . . . 168
6.3 Polinmios de Lagrange . . . . . . . . . . . . . . . . . . . . . . . . 170
6.4 Aproximao de funes reais por polinmios interpoladores . . . . 171
6.5 Interpolao linear segmentada . . . . . . . . . . . . . . . . . . . . 175
6.6 Interpolao cbica segmentada - spline . . . . . . . . . . . . . . . . 177
6.6.1 Spline natural . . . . . . . . . . . . . . . . . . . . . . . . . . 179
6.6.2 Spline fixado . . . . . . . . . . . . . . . . . . . . . . . . . . 182
6.6.3 Spline not-a-knot . . . . . . . . . . . . . . . . . . . . . . . . 183
6.6.4 Spline peridico . . . . . . . . . . . . . . . . . . . . . . . . . 184
Colaboradores 337
Introduo
1
2 Clculo Numrico
y 0 + xy = x,
y(0) = 2,
y 0 + xy = ey ,
y(0) = 2,
no possvel.
Da mesma forma, resolvemos a integral
Z 2
2
xex dx
1
Representao de nmeros e
aritmtica de mquina
3
4 Clculo Numrico
dn bn + dn1 bn1 + + d0 b0 + d1 b1 + d2 b2 +
(301,2)4 = 3 42 + 0 41 + 1 40 + 2 41 = 49,5.
Verifique no computador!
Exemplo 2.1.4 (Sistema octal). No sistema octal a base b = 8. Por exemplo:
(1357,24)8 = 1 83 + 3 82 + 5 81 + 7 80 + 2 81 + 4 82
= 512 + 192 + 40 + 7 + 0,25 + 0,0625 = 751,3125.
Verifique no computador!
2
O uso do smbolo + opcional na representao de nmeros positivos.
Verifique no computador!
-->bin2dec('1001')
ans =
9.
-->hex2dec('451')
ans =
1105.
-->oct2dec('157')
ans =
111.
-->base2dec('BEBA',16)
ans =
48826.
X i = dn bn + + dn1 bn1 + d1 b1 + d0 b0
e
d1 d2
Xf =
+ 2 +
b1 b
Nosso objetivo determinar os algarismos {dn , dn1 , ...}.
Xi d0
= + d1 + d2 b1 + + dn1 bn2 + dn bn1 .
b b
9,625 = 9 + 0,625.
9=42+1
= (2 2 + 0) 2 + 1
= 23 + 1.
Ou seja, temos que 9 = (1001)2 . No Scilab, podemos usar os comandos fix (trun-
camento) e modulo (resto da diviso) para computar esta converso da seguinte
forma
-->x = 9
x =
9.
-->d0 = modulo(9,2), x = fix(x/2)
d0 =
1.
x =
4.
-->d1 = modulo(9,2), x = fix(x/2)
d1 =
1.
x =
2.
-->d2 = modulo(9,2), x = fix(x/2)
d2 =
1.
x =
1.
-->d3 = modulo(9,2), x = fix(x/2)
d3 =
1.
x =
0.
Converso da parte fracionria. Para converter a parte fracionria, fazemos
sucessivas multiplicaes por b = 2 obtendo
Ou seja, temos que 0,625 = (0,101)2 . No Scilab, podemos computar esta conver-
so da parte fracionria da seguinte forma
-->x = 0.625
x =
0.625
-->d = fix(2*x), x = 2*x - d
d =
1.
x =
0.25
-->d = fix(2*x), x = 2*x - d
d =
0.
x =
0.5
-->d = fix(2*x), x = 2*x - d
d =
1.
x =
0.
Concluso. Da converso das partes inteira e fracionria de 9,625, obtemos
9 = (1001)2 e 0,625 = (0,101)2 . Logo, conclumos que 9,625 = (1001,101)2 .
Observao 2.1.3. O Scilab oferece algumas funes para a converso de n-
meros inteiros em base decimal para uma dada base. Por exemplo, temos:
-->dec2base(9,2)
ans =
1001
-->dec2base(111,8)
ans =
157
-->dec2base(48826,16)
ans =
BEBA
Observao 2.1.4. Uma maneira de converter um nmero dado em uma base b1
para uma base b2 fazer em duas partes: primeiro converter o nmero dado na
base b2 para base decimal e depois converter para a base b1 .
Exerccios resolvidos
ER 2.1.1. Obtenha a representao do nmero 125,583 na base 6.
Soluo. Decompomos 125,583 nas suas partes inteira 125 e fracionria 0,583.
Ento, convertemos cada parte.
Converso da parte inteira. Vamos escrever o nmero 125 na base 6. Para
tanto, fazemos sucessivas divises por 6 como segue:
Verifique!
Converso da parte fracionria. Para converter 0,583 para a base 6, faze-
mos sucessivas multiplicaes por 6 como segue:
logo 0,583 = (0,33)6 . As contas feitas aqui, tambm podem ser computadas no
Scilab. Voc sabe como?
(1001,101)2 = 1 22 + 1 20 + 1 22 = 5,25.
Ento, convermetos 5,25 para a base 4. Para sua parte inteira, temos
5 = 1 4 + 1 = (11)4 .
0,25 = 1 41 = (0,1)4 .
Exerccios
a) (100)2
b) (100)3
c) (100)b
d) (12)5
e) (AA)16
f) (7,1)8
g) (3,12)5
a) (25,13)8
b) (101,1)2
c) (12F,4)16
d) (11,2)3
a) 7,6 na base b = 5
b) 29,16 na base b = 6
x = (1)s (M )b bE ,
-->-%pi
ans =
- 3.14159D+00
-->format('v',12); -%pi
ans =
- 3.141592654
-->format('e',12); -%pi
ans =
- 3.14159D+00
-->printf('%1.5f',-%pi)
-3.14159
-->printf('%1.5e',-%pi)
-3.14159e+00
Exerccios resolvidos
Em construo ... Gostaria de participar na escrita deste livro? Veja como em:
http://www.ufrgs.br/numerico/participe.html
Exerccios
x = d0 ,d1 d2 . . . dk 10e
x = d0 ,d1 d2 . . . dk 10e
finita, logo ( 3) 6= 3.
2
-->2^2 == 4
ans =
T
-->sqrt(3)^2 == 3
ans =
F
dn1 dn2 d1 d0
-->uint8( bin2dec('00000011') )
ans = 3
-->uint8( bin2dec('11111110') )
ans = 254
s dn2 d1 d0
dn1 dn2 d1 d0
Observao 2.4.1. Note que todo registro comeando com 1 ser um nmero
negativo.
[11111111] = 27 + 26 + + 2 + 1 = 1
..
.
[10000001] = 27 + 1 = 127
[10000000] = 27 = 128
[01111111] = 26 + + 2 + 1 = 127
..
.
[00000010] = 2
[00000001] = 1
[00000000] = 0
[10000000000000000000000000000000]
e
[00000000000000000000000000000000]
(d30 d29 d17 d16 )2 d31 (215 216 ) + (0,d15 d14 d1 d0 )2 se o sinal do n-
mero estiver representado por uma implementao em complemento de um.
Observe que o zero tambm possui duas representaes possveis:
[11111111111111111111111111111111]
e
[00000000000000000000000000000000]
(d30 d29 d17 d16 )2 d31 215 + (0,d15 d14 d1 d0 )2 se o sinal do nmero estiver
representado por uma implementao em complemento de dois. Nesse caso
o zero unicamente representado por
[00000000000000000000000000000000]
onde
a base (em geral 2 ou 10),
EM IN o menor expoente,
EM AX o maior expoente.
Considere uma mquina com um registro de 64 bits e base = 2. Pelo padro
IEEE754, 1 bit usado para o sinal, 11 bits para o expoente e 52 bits so usados
para o significando tal que
x = (1)s M 2cBIAS ,
e o significando por
M = (1.m1 m2 m51 m52 )2 .
representa o nmero
O expoente deslocado
Exemplo 2.4.7. Com 64 bits, pelo padro IEEE754, temos que |E| := 11. As-
sim, (100 0000 0000)2 = 210 = 1024. Como queremos que esta sequncia represente
o 1, definimos BIAS := 1023, pois
1024 BIAS = 1.
Com 32 bits, temos |E| := 8 e BIAS := 127. E com 128 bits, temos |E| := 15
e BIAS := 16383.
-->MINR=number_properties('tiny')
-->MAXR=number_properties('huge')
-->number_properties('tiniest')
Casos especiais
O zero um caso especial representado pelo registro
Assim, = 252 .
Observao 2.4.4. No Scilab, o psilon de mquina representado pela cons-
tante %eps. Observe os seguintes resultados:
-->1 + 1e-16 == 1
ans =
T
-->1 + %eps == 1
ans =
F
6
Note que poderamos definir nmeros um pouco menores que o M IN R.
Exerccios
a) [01100010].
b) [00011101].
c) [11100011].
a) [0110001001100010].
b) [0001110100011101].
c) [1110001011100011].
a) [0|10000000000|111000 . . . 0].
b) [1|10000000001|0111000 . . . 0].
x=1
while x+1>x
x=x+1
end
Explique se esta rotina finaliza em tempo finito, em caso afirmativo calcule a ordem
de grandeza do tempo de execuo supondo que cada passo do lao demore 107 s.
Justifique sua reposta.
Definio 2.5.1 (Erro absoluto e relativo). Seja x um nmero real e x sua apro-
ximao. O erro absoluto da aproximao x definido como
|x x|.
Exerccios
a) x = = 3,14159265358979 . . . e x = 3,141
b) x = 1,00001 e x = 1
c) x = 100001 e x = 100000
a) 1,7888544
b) 1788,8544
c) 0,0017888544
d) 0,004596632
e) 2,1754999 1010
f) 2,1754999 1010
a) 3276.
b) 42,55.
c) 0,00003331.
a) x = 2,5834 e x = 2,6
b) x = 100 e x = 99
e
|0,987624 0,987624|
= 0%,
|0,987624|
enquanto no lado direito o erro relativo enorme:
|0,100000 105 0,687925 106 |
= 45,36%.
0,687925 106
Exemplo 2.7.2. Considere o problema de encontrar as razes da equao de se-
gundo grau
x2 + 300x 0,014 = 0,
usando seis dgitos significativos.
Aplicando a frmula de Bhaskara com a = 0,100000 101 , b = 0,300000 103
e c = 0,140000 101 , temos o discriminante:
= b2 4 a c
= 0,300000 103 0,300000 103
+ 0,400000 101 0,100000 101 0,140000 101
= 0,900000 105 + 0,560000 101
= 0,900001 105
e as razes:
0,300000 103
x1 ,x2 =
0,200000 101
0,300000 103 0,900001 105
=
0,200000 101
0,300000 103 0,300000 103
=
0,200000 101
e
0,300000 103 + 0,300000 103
x2 = = 0,000000 100
0,200000 101
No entanto, os valores das razes com seis dgitos significativos livres de erros de
arredondamento, so:
x1 = 0,300000 103 e x2 = 0,466667 104 .
Observe que a primeira raiz apresenta seis dgitos significativos corretos, mas a
segunda no possui nenhum dgito significativo correto.
Observe que isto acontece porque b muito maior que 4ac, ou seja, b
2
b + b 4ac
x2 = 2b
2a
4ac
=
4ab
c 0,140000 101
= = = 0,466667 104
b 0,300000 103
e fornece uma estimativa de quanto os erros relativos na entrada x sero am-
x
plificados na sada y
y
.
Ou seja,
os erros na entradasero diminudos pela metade. De fato, usando
y = 2 = 1,4142136... e y = 1,999 = 1,41386..., obtemos
y 2 1,999
= 0,000250031...
y 2
Exemplo 2.8.2. Considere a funo f (x) = 10
1x2
e x = 0,9995 com um erro
absoluto na entrada de 0,0001.
Calculando y = f (x ) temos
10
y = 10002,500625157739705173
1 (0,9995)2
Mas qual a estimativa de erro nessa resposta? Quantos dgitos significativos
temos nessa resposta?
f (0,9995) 1998,5
y1 8335,83
y2 12520,50
f = |f 0 (x)|x .
f = |(1 + x)ex | x
= |3e2 | 0,05 = 1,1084.
bc b a2 b 2
A= = .
2 2
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com
34 Clculo Numrico
Exerccios
lim |xn | =
x
(1 + x) 1
f (x) = =1
x
Calcule o valor da expresso esquerda para x = 1012 , x = 1013 , x = 1014 ,
x = 1015 , x = 1016 e x = 1017 . Observe que quando x se aproxima do de
mquina a expresso perde o significado. Veja a figura 2.1 com o grfico de f (x)
em escala logartmica.
1
n
1+
n
n
Figura 2.2: Grfico de 1 + n1 em funo de n em escala linear-logartmica vari-
ando de 100 at 1018 . Veja o exemplo 2.9.3.
1
n
lim 1+ = e = 2,718281828459...
n n
1 1 1
1 2 3
1+ < 1+ < 1+ <
1 2 3
n n
n 1+ 1
n
n 1+ 1
n
-->1+%eps
ans =
1.0000000000000002220446
Quando somamos a 1 um nmero positivo inferior ao psilon de mquina, obtemos
o nmero 1. Dessa forma, o resultado obtido pela operao de ponto flutuante
1 + n para 0 < n < 2,22 1016 1.
Portanto, quando realizamos a sequncia de operaes dada em (2.1), toda
informao contida no nmero n perdida na soma com 1 quando 1/n menor
que o psilon de mquina, o que ocorre quando n > 5 1015 . Assim, (1 + 1/n)
aproximado para 1 e a ltima operao se resume a 1n , o que igual a 1 mesmo
quando n grande.
Um erro comum acreditar que o perda de significncia se deve ao fato de 1/n
ser muito pequeno para ser representado e aproximando para 0. Isto falso, o
sistema de ponto de flutuante permite representar nmeros de magnitude muito
inferior ao psilon de mquina. O problema surge da limitao no tamanho da
mantissa. Observe como a seguinte sequncia de operaes no perde significncia
para nmeros positivos x muito menores que o psilon de mquina:
n 1 + n (1 + n) 1. (2.3)
n
Finalmente, notamos que quando tentamos calcular 1 + n1 para n grande, existe
perda de significncia no clculo de 1+1/n. Para entendermos isso melhor, vejamos
o que acontece no Scilab quando n = 7 1013 :
-->n=7e13
n =
7.000000000000000000D+13
-->1/n
ans =
1.428571428571428435D-14
-->y=1+1/n
y =
1.000000000000014211D+00
Observe a perda de informao ao deslocar a mantissa de 1/n. Para evidenciar o
fenmenos, observamos o que acontece quando tentamos recalcular n subtraindo
1 de 1 + 1/n e invertendo o resultado:
-->y-1
ans =
1.421085471520200372D-14
-->1/(y-1)
ans =
7.036874417766400000D+13
Para entendermos isso melhor, vejamos o que acontece no Scilab quando n =
7 1013 :
>>> n=7e13; print("%1.15e" % n)
7.000000000000000e+13
>>> n=7e13; print("%1.20e" % n)
7.00000000000000000000e+13
>>> print("%1.20e" % (1/n))
1.42857142857142843451e-14
>>> y=1+1/n; print("%1.20e" % y)
1.00000000000001421085e+00
Observe a perda de informao ao deslocar a mantissa de 1/n. Para evidenciar o
fenmenos, observamos o que acontece quando tentamos recalcular n subtraindo
1 de 1 + 1/n e invertendo o resultado:
>>> print("%1.20e" % (y-1))
1.42108547152020037174e-14
>>> print("%1.20e" % (1/(y-1)))
7.03687441776640000000e+13
Exemplo 2.9.4 (Analogia da balana). Observe a seguinte comparao interes-
sante que pode ser feita para ilustrar os sistemas de numerao com ponto fixo e
flutuante: o sistema de ponto fixo como uma balana cujas marcas esto igual-
mente espaadas; o sistema de ponto flutuante como uma balana cuja distncia
entre as marcas proporcional massa medida. Assim, podemos ter uma ba-
lana de ponto fixo cujas marcas esto sempre distanciadas de 100g (100g, 200g,
300g, ..., 1Kg, 1,1Kg,...) e outra balana de ponto flutuante cujas marcas esto
distanciadas sempre de aproximadamente um dcimo do valor lido (100g, 110g,
121g, 133g, ..., 1Kg, 1,1Kg, 1,21Kg, ...) A balana de ponto fixo apresenta uma
resoluo baixa para pequenas medidas, porm uma resoluo alta para grandes
medidas. A balana de ponto flutuante distribui a resoluo de forma proporcional
ao longo da escala.
Seguindo nesta analogia, o fenmeno de perda de significncia pode ser inter-
pretado como a seguir: imagine que voc deseje obter o peso de um gato (apro-
ximadamente 4Kg). Dois processos esto disponveis: colocar o gato diretamente
na balana ou medir seu peso com o gato e, depois, sem o gato. Na balana
de ponto flutuante, a incerteza associada na medida do peso do gato (sozinho)
aproximadamente 10% de 4Kg, isto , 400g. J a incerteza associada medida da
uma pessoa (aproximadamente 70Kg) com o gato de 10% do peso total, isto ,
aproximadamente 7Kg. Esta incerteza da mesma ordem de grandeza da medida
a ser realizada, tornado o processo impossvel de ser realizado, j que teramos
uma incerteza da ordem de 14Kg (devido dupla medio) sobre uma grandeza
de 4Kg.
Exerccios resolvidos
ER 2.9.1. Deseja-se medir a concentrao de dois diferentes oxidantes no ar. Trs
sensores eletroqumicos esto disponveis para a medida e apresentam a seguintes
respostas:
De forma que
1
[A]
S11 S12 v1 1 S22 S12 v1
= =
S11 S22 S12 S21 S21 S11
[B] S21 S22 v2 v2
Portanto
S22 v1 S12 v2
[A] =
S11 S22 S12 S21
S21 v1 + S11 v2
[B] =
S11 S22 S12 S21
Usando derivao logartmica, temos
1 [A] S22
=
[A] S11 S11 S22 S12 S21
1 [A] v2 S21 [A] S22
= + =
[A] S12 S22 v1 S12 v2 S11 S22 S12 S21 [B] S11 S22 S12 S21
1 [A] S12
=
[A] S21 S11 S22 S12 S21
1 [A] v1 S11 [A] S12
= =
[A] S22 S22 v1 S12 v2 S11 S22 S12 S21 [B] S11 S22 S12 S21
e
1 [B] v2 S22 [B] S21
= =
[B] S11 S21 v1 + S11 v2 S11 S22 S12 S21 [A] S11 S22 S12 S21
1 [B] S21
=
[B] S12 S11 S22 S12 S21
1 [B] v1 S21 [B] S11
= + =
[B] S21 S21 v1 + S11 v2 S11 S22 S12 S21 [A] S11 S22 S12 S21
1 [B] S11
=
[B] S22 S11 S22 S12 S21
Analogamente, temos:
1 1 [B] [B]
" #
[B] = S21 S11 + S21 S11 + S11 S21 + S11 S22
[B] |det S| [A] [A]
1 1
[A] = [20 270 2% + 20 30 2% + 30 140 2% + 30 20 2%]
[A] 1200
216
= = 0.18 = 18%
1200
1 1
[B] = [140 270 2% + 140 30 2% + 270 140 2% + 270 20 2%]
[B] 1200
426
= = 0.355 = 35.5%
1200
1 1
[A] = [200 270 2% + 200 30 2% + 30 15 10% + 30 200 10%]
[A] 53550
1804,6
= 0.0337 = 3.37%
52550
1 1
[B] = [15 270 2% + 15 30 2% + 270 15 10% + 270 200 10%]
[B] 53550
5895
= 0.11 = 11%
53550
Exerccios
exp(1/)
1 + exp(1/)
e
1
exp(1/) + 1
com > 0. Verifique que elas so idnticas como funes reais. Teste no compu-
tador cada uma delas para = 0,1, = 0,01 e = 0,001. Qual dessas expresses
mais adequada quando um nmero pequeno? Por qu?
a) f (x) = 1cos(x)
x2
b) g(x) = 1+x1
c) h(x) = x + 106 103
d) i(x) = 1 + ex 2 Dica: Faa y = ex 1
de modo que seja possvel calcular seus valores para x = 100 utilizando a aritmtica
de ponto flutuante ("Double") no computador.
46
3.1. EXISTNCIA E UNICIDADE 47
f(a)
x b
a x
f(b)
(ou k (f (b), f (a))) existe x (a, b) tal que f (x ) = k. Ou seja, nestas notaes,
se f (a) f (b) < 0, ento f (a) < 0 < f (b) (ou f (b) < 0 < f (a)). Logo, tomando
k = 0, temos que existe x (a, b) tal que f (x ) = k = 0.
Exemplo 3.1.1. Mostre que existe pelo menos uma soluo da equao ex = x+2
no intervalo (2,0).
-->sign(f(-2)),sign(f(0))
ans =
1.
ans =
- 1.
Em outras palavras, para garantirmos que exista um nico zero de uma dada
funo diferencivel em um intervalo, suficiente que ela troque de sinal e seja
montona neste intervalo.
Exemplo 3.1.2. No exemplo 3.1.1, mostramos que existe pelo menos um zero de
f (x) = ex x 2 no intervalo (2,0), pois f (x) contnua e f (2) f (0) < 0.
Agora, observamos que, alm disso, f 0 (x) = ex 1 e, portanto, f 0 (x) < 0 para
todo x (2,0). Logo, da proposio 3.1.1, temos garantida a existncia de um
nico zero no intervalo dado.
Podemos inspecionar o comportamento da funo f (x) = ex x 2 e de sua
derivada fazendo seus grficos no Scilab. Para tanto, podemos fazer o seguinte
teste:
-->x = linspace(-2,0,50);
-->deff('y = f(x)','y=exp(x)-x-2') // define f
-->plot(x,f(x));xgrid // grafico de f
-->deff('y = fl(x)','y=exp(x)-1') // a derivada
-->plot(x,fl(x));xgrid // grafico de f'
Exerccios
E 3.1.2. Mostre que cos x = x tem uma nica soluo no intervalo [0, /2].
f (b)
a x(0)
x(1) b x
f (x(0) )
f (a)
segunda aproximao do zero de f (x) o ponto mdio do intervalo [a, x(0) ], isto
, x(1) = (a + x(0) )/2. Noutro caso, temos f (x(0) ) f (b) < 0 e, ento, tomamos
x(1) = (x(0) + b)/2. Repetimos este procedimento at obtermos a aproximao
desejada (veja figura 3.2).
De forma mais precisa, suponha que queiramos calcular uma aproximao com
uma certa preciso T OL para um zero x de uma dada funo contnua f : [a, b]
R tal que f (a) f (b) < 0. Iniciamos, tomando n = 0 e:
a(n) + b(n)
a(n) = a, b(n) = b e x(n) = .
2
Verificamos o critrio de parada, isto , se f (x(n) ) = 0 ou:
|b(n) a(n) |
< T OL,
2
ento x(n) a aproximao desejada. Caso contrrio, preparamos a prxima ite-
rao n + 1 da seguinte forma: se f (a(n) ) f (x(n) ) < 0, ento setamos a(n+1) = a(n)
e b(n+1) = x(n) ; noutro caso, se f (x(n) ) f (b(n) ) < 0, ento setamos a(n+1) = x(n) e
b(n+1) = b(n) . Trocando n por n + 1, temos a nova aproximao do zero de f (x)
dada por:
a(n+1) + b(n+1)
x(n+1) = .
2
Voltamos a verificar o critrio de parada acima e, caso no satisfeito, iteramos
novamente. Iteramos at obtermos a aproximao desejada ou o nmero mximo
de iteraes ter sido atingido.
Exemplo 3.2.1. Use o mtodo da bisseo para calcular uma soluo de ex = x+2
no intervalo [2, 0] com preciso T OL = 101 .
ba
|x(n) x | < , n 0,
2n+1
isto , x(n) x quando n .
f - funo objetivo
A varivel de sada :
end
end
error ('Num. max. de iter. excedido!')
endfunction
Exerccios
E 3.2.1. Considere a equao x = cos(x). Use o mtodo da bisseo com
intervalo inicial [a, b] = [0, 1] e x(1) = (a + b)/2 para calcular a aproximao x(4)
da soluo desta equao.
E 3.2.4. O polinmio f (x) = x4 4x2 + 4 possui razes duplas em 2 e 2.
O mtodo da bisseo pode ser aplicados a f ? Explique.
Use esta estimativa para iniciar o mtodo de bisseo e obtenha o valor da raiz
com pelo menos 6 algarismos significativos para v = 1, 2, 3, 4 e 5.
xex = t,
onde t um nmero real positivo. Mostre que esta equao possui uma nica
soluo x que pertence ao intervalo [0, t]. Usando esta estimativa como intervalo
inicial, quantos passos so necessrio para obter o valor numrico de x com erro
absoluto inferior a 106 quando t = 1, t = 10 e t = 100 atravs do mtodo da
bisseo? Obtenha esses valores.
vd
Id = IR exp 1 ,
vt
a) V = 30 V e R = 1 k.
b) V = 3 V e R = 1 k.
c) V = 3 V e R = 10 k.
d) V = 300 mV e R = 1 k.
e) V = 300 mV e R = 1 k.
f) V = 30 V e R = 1 k.
g) V = 30 V e R = 10 k.
Dica: V = RId + vd .
y
y=x
y = g(x)
x x
Ou seja, temos:
ex = x + 2 ex x 2 = 0 ex 2 = x
Dada uma funo g(x), a iterao do ponto fixo consiste em computar a
seguinte sequncia recursiva:
x(n+1) = g(x(n) ), n 1,
onde x(1) uma aproximao inicial do ponto fixo.
Exemplo 3.3.2 (Mtodo babilnico). O mtodo babilnico3 de uma iterao de
ponto fixo para extrair a raiz quadrada de um nmero positivo A, isto , resolver
a equao x2 = A.
Seja r > 0 uma aproximao para A. Temos trs possibilidades:
r > A = Ar < A = A Ar , r ;
r = A = Ar = A;
r < A = Ar > A = A r, Ar .
Ou seja, A sempre est no intervalo entre r e Ar , no qual podemos buscar uma
nova aproximao como, por exemplo, pelo ponto mdio:
r+ A
x= r
.
2
3
Heron de Alexandria, 10 d.C. - 70 d.C., matemtico grego.
Aplicando esse mtodo repetidas vezes, podemos construir a iterao (de ponto
fixo):
x(1) = r
x(n) A
x(n+1) = + (n) , n = 1,2,3,...
2 2x
Por exemplo, para obter uma aproximao para 5, podemos iniciar com a
aproximao inicial r = 2 e A = 5. Ento, tomamos x(1) = 2 e da seguem as
aproximaes:
2 2,5
x(2) = + = 2,25
2 2
2,25 2,5
x(3) = + = 2,2361111
2 2,25
2,2361111 2,5
x(4) = + = 2,236068
2 2,2361111
2,236068 2,5
x(5) = + = 2,236068
2 2,236068
O mtodo babilnico sugere que a iterao do ponto fixo pode ser uma abor-
dagem eficiente para a soluo de equaes. Ficam, entretanto, as seguintes per-
guntas:
1. Ser que a iterao do ponto fixo convergente?
2. Caso seja convergente, ser que o limite x = limn x(n) um ponto fixo?
Notamos que o ponto fixo destas duas funes coincide com o zero de f (x). Cons-
truindo as iteraes do ponto fixo:
(n+1) (n) (n+1) (n)
x1 = g1 (x1 ) e x2 = g2 (x2 ),
(1) (1)
tomando x1 = x2 = 1,7, obtemos os resultados apresentados na tabela 3.2.
Observamos que, enquanto, a iterao do ponto fixo com a funo g1 (x) ( = 0,5)
parece divergir, a iterao com a funo g2 (x) ( = 0,05) parece convergir.
No Scilab, podemos computar as iteraes do ponto fixo x(n+1) = g1 (x(n) ) com
o seguinte cdigo:
Definio 3.3.1. Uma contrao uma funo real g : [a, b] [a, b] tal que:
|g(x) g(y)| |x y|, 0 < 1.
Observao 3.3.1. Seja g : [a, b] [a, b], y=g(x).
Se g(x) uma contrao, ento g(x) funo contnua.
Se |g 0 (x)| < k, 0 < k < 1, para todo x [a, b], ento g(x) uma contrao.
Teorema 3.3.1 (Teorema do ponto fixo). Se g : [a,b] [a,b] uma contrao,
ento existe um nico ponto x [a, b] tal que g(x ) = x , isto , x ponto fixo
de g(x). Alm disso, a sequncia {x(n) }nN dada por:
x(n+1) = g(x(n) )
converge para x para qualquer x(1) [a, b].
Demonstrao. Comeamos demonstrando que existe pelo menos um ponto fixo.
Para tal definimos a funo f (x) = x g(x) e observamos que:
f (a) = a g(a) a a = 0
e
f (b) = b g(b) b b = 0
Se f (a) = a ou f (b) = b, ento o ponto fixo existe. Caso contrrio, as desigualdades
so estritas e a f (x) muda de sinal no intervalo. Como esta funo contnua, pelo
teorema de Bolzano 3.1.1, existe um ponto x no intervalo (a, b) tal que f (x ) = 0,
ou seja, g(x ) = x . Isto mostra a existncia.
Para provar que o ponto fixo nico, observamos que se x e x so pontos
fixos, eles devem ser iguais, pois:
|x x | = |g(x ) g(x )| |x x |.
A desigualdade |x x | |x x | com 0 < 1 implica |x x | = 0.
Para demonstrar a convergncia da sequncia, observamos que:
|x(n+1) x | = |g(x(n) ) x | = |g(x(n) ) g(x )| |x(n) x |.
Da, temos:
|x(n) x | |x(n1) x | 2 |x(n2) x | n |x(0) x |.
Portanto, como 0 < 1, temos:
lim |x(n) x | = 0,
n
Observao 3.3.2. Do teorema do ponto fixo, temos que se g(x) uma contrao
com constante 0 < 1, ento:
|x(n+1) x | |x(n) x |, n 1.
Exemplo 3.3.4. Mostre que o teorema do ponto fixo se aplica a funo g(x) =
cos(x) no intervalo [1/2, 1], isto , a iterao de ponto fixo converge para a soluo
da equao cos x = x. Ento, calcule as iteraes do ponto fixo com aproximao
inicial x(1) = 0,7, estime o erro absoluto da aproximao e verfique a taxa de
convergncia.
a) g ([1/2,1]) [1/2,1];
Para provar a), observamos que g(x) decrescente no intervalo, pelo que temos:
0,85 < sen (1) sen (x) sen (1/2) < 0,47.
x(1) = 0,7
x(n+1) = cos(x(n) ), n 1.
n x(n) n := |x(n) x |
1 0,70000 3,9E02
2 0,76484 2,6E02
3 0,72149 1,8E02
4 0,75082 1,2E02
5 0,73113 8,0E03
6 0,74442 5,3E03
7 0,73548 3,6E03
//est. da solucao
deff('y = f(x)', 'y = cos(x)-x')
xe = fsolve(0.7, f)
#aprox. inicial
x0 = 0.7
eps = abs(x0-xe)
disp([x0, eps])
for i=2:7
x = g(x0)
eps = abs(x-xe)
disp([x, eps])
x0 = x
end
Exemplo 3.3.5. No exemplo 3.3.3, observamos que a funo g1 (x) nos forneceu
uma iterao divergente, enquanto que a funo g2 (x) forneceu uma iterao con-
vergente (veja a figura 3.5. A razo destes comportamentos explicada pelo teste
da convergncia. Com efeito, sabemos que o ponto fixo destas funes est no
intervalo [1,6, 1,8] e temos:
enquanto:
2.0 1.80
y = g2 (x) y=x
1.9 y = g1 (x)
1.75 x(2)
(1)
1.8 x x(1) x
x
1.7 1.70
1.6
y=x 1.65
1.5 x (2)
1.4 1.60
1.60 1.65 1.70 1.75 1.80 1.60 1.65 1.70 1.75 1.80
Figura 3.5: Ilustrao das iteraes do ponto fixo para: (esquerda) y = g1 (x) e
(direita) y = g2 (x). Veja exemplo 3.3.5.
onde n = x(n) x .
com base nos valores calculados x(n) . Uma abordagem frequente analisar a evo-
luo da diferena entre dois elementos da sequncia:
n = x(n+1) x(n)
A pergunta natural : Ser que o erro n = x(n) x pequeno quando
n = x(n+1) x(n) for pequeno?
x = lim x(n)
n
portanto:
x x(N ) = x(N +1) x(N ) + x(N +2) x(N +1) + x(N +3) x(N +2) + . . .
= x(N +k+1) x(N +k)
X
k=0
x(n+1) x + (x(n) x )g 0 (x )
x(n) x + (x(n1) x )g 0 (x )
Portanto:
k
x(N +k+1) x(N +k) (x(N +1) x(N ) ) (g 0 (x ))
E temos:
x x(N ) = x(N +k+1) x(N +k)
X
k=0
k
(x(N +1) x(N ) ) (g 0 (x ))
X
k=0
1
= (x(N +1) x(N ) ) , |g 0 (x )| < 1
1 g 0 (x )
n
|g 0 (x )|
n1
e portanto
N
N .
1 n1
n
Exerccios
cos(x) = x
possui uma nica soluo no intervalo [0, 1]. Use a iterao do ponto fixo e encontre
uma aproximao para esta soluo com 4 dgitos significativos.
xex = 10
xex 10
b) g(x) = x 15
xex 10
c) g(x) = x 10+ex
cos(x) = x
a) g(x) = cos(x)
c) g(x) = x + cos(x)x
1+sen (x)
a) ex = x + 2 no intervalo (2,0).
Use o teorema do ponto fixo para verificar que cada um desses processos con-
verge para a soluo da equao x de cos(x) = x. Observe o comportamento
numrico dessas sequncias. Qual estabiliza mais rpido com cinco casas deci-
mais? Discuta.
Dica: Verifique que cos([0.5,1]) [0.5,1] e depois a mesma identidade para a
funo f (x) = 0,4x + 0,6 cos(x).
1 2.51
!
= 2 log10 +
f 14.8Rh Re f
2.51x(n)
!
x (n+1)
= 2 log10 +
14.8Rh Re
com erro absoluto inferior a 103 usando um mtodo iterativo. Estime o erro
associado ao valor de v = 180 100x = 0.052 senh 1 (1013 x), usando cada uma
dessas expresses. Discuta sucintamente o resultado obtido. Dica: Este caso
semelhante ao problema 3.2.8.
xn+1 = xn (xn x )
xn x = (1 )n1 (x1 x ).
x(n+1) = xn + q n ,
x(0) = 0,
onde q = 1 106 .
a) Calcule o limite
x = n
lim x(n)
analiticamente.
c) Qual deve ser a tolerncia especificada para obter o resultado com erro rela-
tivo inferior a 102 ?
com x(0) = 102 . Prove que {x(n) } sequncia de nmero reais positivos conver-
gindo para zero. Verifique que so necessrios mais de mil passos para que x(n) se
torne menor que 0.9x(0) .
a) Use o teorema do ponto fixo para mostrar que a funo g(x) = 1 sen (x)
possui um nico ponto fixo estvel o intervalo [ 10
1
,1]. Construa um mtodo
iterativo x(n+1) = g(x(n) ) para encontrar esse ponto fixo. Use o computador
para encontrar o valor numrico do ponto fixo.
b) Considere a funo
g(x) = 10 exp(x)
e funo composta (x) = g g = g (g(x)). Mostre que possui dois pontos
fixos que no so pontos fixos de g.
Em vista do problema anterior, qual valor de voc escolheria para que a sequncia
x(n) convirja rapidamente para x .
e
h i
V RI (n)
I (n+1) = IR exp vt
1 ,n > 0
B
I (0) = 0
onde (x) uma funo arbitrria que queremos escolher de forma que a iterao
do ponto fixo tenha tima taxa de convergncia.
Do Teorema do ponto fixo temos que a taxa de convergncia dada em
funo do valor absoluto da derivada de g(x). Calculando a derivada temos:
No ponto x = x , temos:
g 0 (x ) = 1 + (x )f 0 (x ) + 0 (x )f (x ).
Como f (x ) = 0, temos:
g 0 (x ) = 1 + (x )f 0 (x ).
Sabemos que o processo iterativo converge to mais rpido quanto menor for
|g 0 (x)| nas vizinhanas de x . Isto nos leva a escolher:
g 0 (x ) = 0,
e, ento, temos:
1
(x ) = ,
f 0 (x )
se f 0 (x ) 6= 0.
A discusso acima nos motiva a introduzir o mtodo de Newton, cujas iteraes
so dada por:
(n)
f x
x(n+1) = x(n) 0 n , n 1,
f (x )
sendo x(1) uma aproximao inicial dada.
f (x(1) )
x(2) = x(1) .
f 0 (x(1) )
f(x(1) )
f(x(2) )
x
x(3) x(2) x(1) x
Assim, a interseo desta reta com o eixo das abscissas ocorre quando (y = 0):
f (x(1) )
f 0 (x(1) )(x x(1) ) + f (x(1) ) = 0 x = x(1) .
f 0 (x(1) )
g(x ) = x
f 0 (x )f 0 (x ) f (x )f 00 (x )
g 0 (x ) = 1 =0
(f 0 (x ))2
Portanto:
g 00 (x )
g(x) = x + (x x )2 + O (x x )3
2
Com isso, temos:
g 00 (x ) (n)
x(n+1) = g(x(n) ) = x + (x x )2 + O (x x )3 ,
2
ou seja: 2
x C x(n) x ,
(n+1)
x
com constante C = |g 00 (x )/2|. Isto mostra que o mtodo de Newton tem taxa de
convergncia quadrtica. Mais precisamente, temos o seguinte teorema.
Teorema 3.4.1 (Mtodo de Newton). Sejam f C 2 ([a, b]) com x (a, b) tal
que f (x ) = 0 e:
K (x ) := {x R; |x x | } [a, b].
f (x(n) )
x (n+1)
=x (n)
0 (n) ,
f (x )
fornece uma sequncia x(n) que converge para x , isto , x(n) x quando n .
Alm disso, temos a seguinte estimativa de erro a priori:
2m (2n1 )
|x(n) x | q , n 2,
M
e a seguinte estimativa de erro a posteriori:
M (n)
|x(n) x | |x x(n1) |2 , n 2.
2m
Demonstrao. Para n N, n 2, temos:
f (x(n) ) 1 h i
xn+1 x = x(n) x
= f (x (n)
) + (x
x (n)
)f (x
0 (n)
. (3.1)
f 0 (x(n) ) f (x(n) )
Agora, para estimar o lado direito desta equao, usamos o polinmio de Taylor
de grau 1 da funo f (x) em torno de x = x(n) , isto :
Z x
f (x ) = f (x(n) ) + (x x(n) )f 0 (x(n) ) + f 00 (t)(x t) dt.
x(n)
Exerccios
tg (x) = 2x2 .
a) Use o mtodo grfico para isolar as duas primeiras razes positivas em peque-
nos intervalos. Use a teoria para argumentar quanto existncia e unicidade
das razes dentro intervalos escolhidos.
b) Calcule cada uma das razes pelo mtodo de Newton com oito dgitos signi-
ficativos e discuta a convergncia comparando com o item b).
trace o grfico com auxlio do computador e verifique que ela possui uma raiz
positiva. Encontre uma aproximao para esta razo pelo grfico e use este valor
para inicializar o mtodo de Newton e obtenha uma aproximao para a raiz com 8
dgitos significativos. (Use o comando format('v',16) para alterar a visualizao
no Scilab.)
a) (1.5) Use o teorema do ponto fixo para provar que se x(0) pertence ao intervalo
[1,3], ento a sequncia dada iterativamente por
f (x) f (x0 )
f 0 (x) , x x0 .
x x0
Mais precisamente, o mtodo de Newton uma iterao de ponto fixo da forma:
onde x(1) uma aproximao inicial dada e (x(n) ) = 1/f 0 (x(n) ). Usando a apro-
ximao da derivada acima, com x = x(n) e x0 = x(n1) , temos:
1 x(n) x(n1)
(x(n) ) = .
f 0 (x(n) ) f (x(n) ) f (x(n1) )
Isto nos motiva a introduzir a iterao do mtodo das secantes dada por:
x(n) x(n1)
x (n+1)
=x (n)
f (x (n)
) , n 2.
f (x(n) ) f (x(n1) )
y
f(x (1) )
f(x (2) )
f(x (3) )
x
x (4)x (3) x (2)x (1) x
Sejam f (x) e as aproximaes x(1) e x(2) do zero x desta funo (veja fi-
gura 3.7). A iterao do mtodo das secantes fornece:
x(2) x(1)
x(3) = x(2) f (x(2) ) .
f (x(2) ) f (x(1) )
De fato, x(3) o ponto de interseo da reta secante ao grfico de f (x) pelos pontos
x(1) e x(2) com o eixo das abscissas. Com efeito, a equao desta reta secante :
f (x(2) ) f (x(1) )
y= (x x(2) ) + f (x(2) ).
x(2) x(1)
Esta reta intercepta o eixo das abscissas no ponto x tal que y = 0, isto :
Teorema 3.5.1 (Mtodo das secantes). Seja f C 2 ([a, b]) uma funo com x
(a, b) tal que f (x ) = 0. Sejam, tambm:
Agora, iremos estimar este ltimo termo a direita. Para tanto, comeamos obser-
vando que da expanso em polinmio de Taylor de ordem 0 da funo f (x) com
resto na forma integral, temos:
f (x(n) ) f (x(n1) )
= 01 dr f (x(n) + r(x(n1) x(n) )) x(n) x
R d dr
(n1)
x x
(n) (n1)
= 0 f (x + r(x(n1) x(n) )) dr
R 1 0 (n)
Logo, temos:
f (x(n) ) f (x(n1) ) f (x(n) ) f (x )
=
x(n) x(n1) x(n) x (3.5)
Z 1h i
f (x
0 (n)
+ r(x (n1)
x (n)
)) f (x
0 (n)
+ r(x x
(n)
)) dr.
0
6
Leonardo Fibonacci, c. 1170 - c. 1250, matemtico italiano.
7
A sequncia de Fibonacci {n }nN definida por 0 = 1 = 1 e n+1 = n n1 , n 1.
n+1
lim
n
= 1 ,
n
onde 1 = (1 + 5)/2 1,618 a poro urea.
Demonstrao. A sequncia de Fibonacci {n }nN definida por 0 = 1 = 1 e
n+1 = n + n1 , n 1. Logo, satisfaz a seguinte equao de diferenas:
n+2 n+1 n = 0, n N.
Tomando n = n , 6= 0 temos:
1 5
1 = 0 1 = 0 1,2 =
n 2 2
.
2
Portanto, n = c1 n1 + c2 n2 . Como 0 = 1 = 1, as constantes satisfazem:
c1 + c2 = 1 1+ 5 1 5
c1 = , c 2 = .
c1 1 + c2 2 = 1 2 5 2 5
2m 11 (21 )n1 /5
lim
n q = 0.
M
Isto mostra que o mtodo das secantes (nestas hipteses) tem taxa de convergncia
superlinear (1 1,6).
|n |
Iterao Linear < erro
n+1 | (x )|n0 1 n
n1
linear (p = 1) n < n1
Quadrtica 1 f 00 (x )
Newton n+1 0 2n |n | < erro
(p = 2) 2 f (x )
f 00 (x )
5+1 n+1 0 n n1
p = f (x )
Secante 2 |n | < erro
1,618 M n
condio seja satisfeita por alguns poucos passos consecutivos. Outros critrios
podem ser usados. No mtodos das secantes, deve-se ter o cuidado de evitar
divises por zero quando xn+1 xn muito pequeno em relao resoluo do
sistema de numerao.
Exerccios
E 3.6.1. Refaa as questes 3.4.3, 3.4.4, 3.4.5 e 3.4.6, usando o mtodo das
secantes.
E 3.6.2. D uma interpretao geomtrica ao mtodo das secantes. Qual a
vantagem do mtodo das secantes sobre o mtodo de Newton?
E 3.6.5. Seja uma funo f (x) dada duas vezes continuamente diferencivel.
Faa uma anlise assinttica para mostrar que as iteraes do mtodo das secantes
satisfazem:
|x(n+1) x | C|x(n) x ||x(n1) x |,
para aproximaes iniciais x(1) e x(2) suficientemente prximas de x , onde f (x ) =
0.
E 3.7.1. Calcule uma equao da reta tangente a curva y = e(x1) que passa
2
E 3.7.3. A equao
cos(x) = e2x
tem infinitas razes. Usando mtodos numricos encontre as primeiras razes dessa
equao. Verifique a j-sima raiz (zj ) pode ser aproximada por j 1/2 para j
grande. Use o mtodo de Newton para encontrar uma aproximao melhor para
zj .
a) R = 0
b) R = 10
c) R = 50
d) R = 100
E) R = 500
c(t) = Atet
Ano populao
1960 70992343
1970 94508583
1980 121150573
1991 146917459
Use esses parmetros para calcular a populao em 1980 e compare com o valor
do censo. Dica: considere PP (31)P (0)
(10)P (0)
e reduza o sistema a uma equao apenas na
varivel .
E 3.7.7. (Fluidos) Uma boia esfrica flutua na gua. Sabendo que a boia tem
10` de volume e 2Kg de massa. Calcule a altura da poro molhada da boia.
E 3.7.8. (Fluidos) Uma boia cilndrica tem seco transversal circular de raio
10cm e comprimento 2m e pesa 10Kg. Sabendo que a boia flutua sobre gua com
o eixo do cilindro na posio horizontal, calcule a altura da parte molhada da boia.
x2
E 3.7.13. Encontre os pontos onde a elipse que satisfaz 3
+ y 2 = 1 intersepta
a parbola y = x2 2.
Hidrocarboneto A B C
N-pentano 9.2131 2477.07 -39.94
N-heptano 9.2535 2911.32 -56.51
P = zi Pisat
X
90
4.1. ELIMINAO GAUSSIANA 91
x+y+z = 1
4x + 4y + 2z = 2
2x + y z = 0
x+y+z = 1
4x + 4y + 2z = 2
2x + y z = 0
Fixamos, agora, na segunda linha. Dividimos esta linha pelo valor do elemento
1 1 0 0
0 1 0 1
0 0 1 1
x+y+z = 1
2x + y z = 0
2x + 2y + z = 1
2 1 1 0
0 1/2 3/2 1
0 1 2 1
2 1 1 0
0 1 2 1
0 1/2 3/2 1
2 1 1 0
0 1 2 1
0 0 1/2 1/2
//L2 <-> L1
aux = E(2,:)
E(2,:) = E(1,:)
E(1,:) = aux
disp(E)
//zera E(2:3,1)
E(2:3,:) = E(2:3,:) - (E(2:3,1)/E(1,1))*E(1,:)
disp(E)
//zera E(3,2)
E(3,:) = E(3,:) - (E(3,2)/E(2,2))*E(2,:)
disp(E)
//subs regressiva
x = zeros(3,1)
x(3) = E(3,4)/E(3,3)
x(2) = (E(2,4) - E(2,3)*x(3))/E(2,2)
x(1) = (E(1,4) - E(1,3)*x(3) - E(1,2)*x(2))/E(1,1)
disp(x)
Exemplo 4.1.4 (Problema com elementos com grande diferena de escala). Re-
solva o seguinte sistema usando eliminao gaussiana sem e com pivotamento par-
cial. Discuta, em cada caso, o resultado frente a aritmtica de ponto flutuante
quando 0 < || 1.
2 x 4
=
1 y 3
Temos
3 4/
y=
2/
e
4 2y
x=
Observe que a expresso obtida para y se aproximada de 2 quando pequeno:
3 4/ 3 4 4
y= = 2 = 2, quando 0.
2/ 2 2
4 4
y=
2 2
e
x = 3 y
Exerccios Resolvidos
ER 4.1.1. Resolva o seguinte sistema por eliminao gaussiana com pivotamento
parcial.
2y + 2z = 8
x + 2y + z = 9
x+y+z = 6
1 2 1 9 1 2 0 8
0 2 2 8 0 2 0 6
0 0 1 1 0 0 1 1
1 0 0 2
0 2 0 6
0 0 1 1
Portanto x = 2, y = 3 e z = 1.
Exerccios
x+y+z = 0
x + 10z = 48
10y + z = 25
Usando eliminao gaussiana com pivotamento parcial (no use o computador para
resolver essa questo).
x+y+z = 0
x + 10z = 48
10y + z = 25
Usando eliminao gaussiana com pivotamento parcial (no use o computador para
resolver essa questo).
e
1 1 1
E= 1 1 1
1 1 1
e o vetor
2
v= 3
4
x1 x2 = 0
(i3)2
xi1 + 2.5xi xi+1 = e 20 , 2i4
2x5 x4 = 0
eficincia (ou custo computacional), queremos saber qual desses algoritmos con-
some menos recursos para realizar a mesma tarefa.
Em geral podemos responder essa pergunta de duas formas: em termos de
tempo ou de espao.
Quando tratamos de eficincia espacial, queremos saber quanta memria
(em geral RAM) utilizada pelo algoritmo para armazenar os dados, sejam eles
matrizes, vetores ou escalares.
Quando tratamos de eficincia temporal, queremos saber quanto tempo um
algoritmo leva para realizar determinada tarefa. Vamos nos concentrar nessa se-
gunda opo, que em geral a mais difcil de ser respondida.
Obviamente o tempo vai depender do tipo de computador utilizado. razovel
de se pensar que o tempo vai ser proporcional ao nmero de operaes de ponto
flutuante (flops) feitas pelo algoritmo (observe que o tempo total no depende
apenas disso, mas tambm de outros fatores como memria, taxas de transferncias
de dados da memria para o cpu, redes,...). Entretanto vamos nos concentrar na
contagem do nmero de operaes (flops) para realizar determinada tarefa.
No passado (antes dos anos 80), os computadores demoravam mais tempo
para realizar operaes como multiplicao e diviso, se comparados a adio ou
subtrao. Assim, em livros clssicos eram contados apenas o custo das operaes
e /. Nos computadores atuais as quatro operaes bsicas levam o mesmo
tempo. Entretanto, na maioria dos algoritmos de lgebra linear o custo associado
as multiplicaes e divises proporcional ao custo das somas e subtraes (pois
a maioria dessas operaes podem ser escritas como a combinao de produtos
internos). Dessa forma, na maior parte deste material levaremos em conta somente
multiplicaes e divises, a no ser que mencionado o contrrio.
Teremos em mente que a ideia estimar o custo quando lidamos com vetores
e matrizes muito grande, isto , o custo quando estas dimenses crescem infinita-
mente.
Exemplo 4.2.1 (Produto escalar-vetor). Qual o custo para multiplicar um escalar
por um vetor?
Soluo. Seja a R e x Rn , temos que
x = [a x1 , a x2 , ...,a xn ]
ax (4.1)
usando n multiplicaes, ou seja, um custo computacional, C, de
C = n flops. (4.2)
Exemplo 4.2.2 (Produto vetor-vetor). Qual o custo para calcular o produto in-
terno x y ?
x y = x1 y1 + x2 y2 + ... + xn yn (4.3)
Note que esse produto tem o custo do produto vetor-vetor, ou seja, 2n 1. Como
temos n n elementos em D, o custo total para multiplicar duas matrizes 2
Custo computacional
Vamos contar o nmero total de flops para resolver um sistema triangular
inferior. Note que o custo para um sistema triangular superior ser o mesmo.
Na linha 3, temos uma diviso, portanto 1 flop.
Na linha 5 quando i = 2, temos
x(2)=(b(2)-L(2,1:1)*x(1:1))/L(2,2),
ou seja, 1 subtrao+1 multiplicao + 1 diviso = 3 flops.
Quando i = 3,
x(3)=(b(3)-L(3,1:2)*x(1:2))/L(3,3)
temos 1 subtrao+(2 multiplicaes + 1 soma) +1 diviso = 5 flops.
Quando i = 4, temos 1 subtrao+(3 multiplicaes + 2 somas) +1 diviso
= 7 flops.
At que para i = n, temos
x(n)=(b(n)-L(n,1:n-1)*x(1:n-1))/L(n,n),
com 1 subtrao+(n 1 multiplicaes + n 2 somas) + 1 diviso, ou seja,
1 + (n 1 + n 2) + 1 = 2n 1 flops.
Somando todos esses custos3 temos que o custo para resolver um sistema tri-
angular inferior
n n n
1 + 3 + 5 + 7 + ... + 2n 1 = (2k 1) = 2 1 (4.19)
X X X
k
k=1 k=1 k=1
e utilizando que a soma dos k inteiros a soma dos termos de uma progresso
aritmtica4
2(n(n + 1)/2) n = n2 flops. (4.20)
4.4 Fatorao LU
Considere um sistema linear Ax = b, onde a matriz A densa5 . A fim de
resolver o sistema, podemos fatorar a matriz A como o produto de uma matriz L
triangular inferior e uma matriz U triangular superior, ou seja, A = LU .
3
Contando apenas multiplicaes/divises obtemos
n
X n
X
4
Temos que k = n(n + 1)/2, 1=n
k=1 k=1
5
Diferentemente de uma matriz esparsa, uma matriz densa possui a maioria dos elementos
diferentes de zero.
Ax = b
(LU )x = b
L(U x) = b
Ly = b e Ux = y
e fazemos
A2,: A2,: L21 A1,:
Note que denotamos Ai,: para nos referenciarmos a linha i de A. Da mesma
forma, se necessrio usaremos A:,j para nos referenciarmos a coluna j de A.
Para zerar o primeiro elemento da terceira linha de A, temos
e fazemos
A3,: A3,: L31 A1,:
at chegarmos ao ltimo elemento da primeira coluna de A.
Repetimos o processo para as prximas colunas, escalonando a matriz A e
coletando os elementos Lij abaixo da diagonal7 .
x1 + x2 + x3 = 2
2x1 + x2 x3 = 1
2x1 x2 + x3 = 3
6
No vamos usar pivotamento nesse primeiro exemplo.
7
Perceba que a partir da segunda coluna para calcular Lij no usamos os elementos de A,
mas os elementos da matriz A em processo de escalonamento
| {z }| {z }
I3,3 A
1 0 0 1 1 1
= 2 1 0 0 1 3
2 0 1 0 3 1
1 0 0 1 1 1
= 2 1 0
0 1 3
2 3 1 0 0 8
| {z }| {z }
L U
y1 = 2
2y1 + y2 = 1
2y1 + 3y2 + y3 = 3
x1 + x2 + x3 = 2
x2 3x3 = 5
8x3 = 8
o qual fornece x3 = 1, x2 = 2 e x1 = 1.
3 L=eye ( n , n )
4 for j =1:n1
5 for i=j +1:n
6 L( i , j )=A( i , j ) /A( j , j )
7 A( i , j +1:n)=A( i , j +1:n)L( i , j ) A( j , j +1:n )
8 A( i , j )=0
9 end
10 end
11 endfunction
Custo computacional
Podemos analisar o custo computacional reduzindo o problema em problemas
menores.
Na linha 4, iniciamos com j = 1. Desta forma i varia de 2 at n na linha 5.
A linha 6 ter sempre 1 flop.
A linha 7, com j = 1 tem um bloco de tamanho 2:n contabilizando n 1 flops
do produto e n 1 flops da subtrao.
Nas linhas 6-8 so feitas (2(n 1) + 1) = 2n 1 flops independente do valor
de i. Como i varia de 2 at n, teremos que o bloco repetido n 1 vezes, ou seja,
o custo das linhas 5-9
(n 1) (2(n 1) + 1) = 2(n 1)2 + (n 1) (4.21)
Voltamos a linha 4 quando j = 2. Das linhas 6-8 teremos n 2 flops (o bloco
ter um elemento a menos) que ser repetido n 2 vezes, pois i=3:n, ou seja,
(n 2) (2(n 2) + 1) = 2(n 2)2 + (n 2) (4.22)
Para j = 3, temos 2(n 3)2 + (n 3).
Para j = n 2, temos 2(2)2 + 2.
Finalmente, para j = n 1, temos 2 12 + 1.
Somando todos esses custos, temos
(n 1) + 2(n 1)2 + (n 2) + 2(n 2)2 + ... + (2) + 2(2)2 + 1 + 2 1
n1
= 2k 2 + k
X
k=1
n1 n1
= 2 k +
2
X X
k
k=1 k=1
(n 1)n(2n 1) n(n 1)
= 2 +
6 2
2n 3
n2
n
= flops.
3 2 6
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com
4.4. FATORAO LU 109
2n2 flops.
Somando esses 3 custos, temos que o custo para resolver um sistema linear
usando fatorao LU
2n3 3n2 n
+ flops.
3 2 6
Quando n cresce, prevalessem os termos de mais alta ordem, ou seja,
2n3 3n2 n 2n3 3n2 2n3
O( + ) = O( + ) = O( )
3 2 6 3 2 3
.
b3 . . = (4.23)
a3 x d .
3 3
.. .. .. ..
. . .
.
cn1
an bn xn dn
8
Llewellyn Hilleth Thomas (21 de outubro de 1903 20 de april de 1992) foi um matemtico
e fsico britnico.
a1 = cn = 0.
xn = d0n (4.26)
xi = d0i c0i xi+1 , i = n 1, n 2, . . . , 1. (4.27)
1 c01 0
x1 d1
a2 b2 c2 x2 d2
.
b3 . . =
a3 x d ,
3 3
... ... .. ..
.
.
cn1
an bn xn dn
.
b3 . . =
a3 x d3 .
3
... ... .. ..
. .
cn1
an bn xn dn
Em seguida, dividimos a segunda linha por b2 a2 c01 , a fim de normalizar a diagonal
principal:
1 c1
0 0
x1 d1
0 1 c02
0
x2 d2
.
b3 . . =
a3 x d .
3 3
.. .. .. ..
. . .
.
cn1
an bn xn dn
d a d0
onde c02 = b2 a
c2
0 e d2 = b a c0 .
2 c1
0 2
2
2 1
2 1
O prximo passo consiste em substituir a terceira linha por ela mesma subs-
trada da linha 2 multiplicada por a3 (l3 l3 a3 l2 ):
1 c1
0
x1 d01
0 1 c02 x2 d02
.
0 b3 a3 c02 . . =
0.
x
3
d
3 a3 d 2
.. .. .. ..
. . . .
cn1
an bn xn dn
A fim de normalizar o elemento da diagonal da terceira linha, dividimos toda a
linha por d3 a3 d02 :
1 c1
0 0
x1 d1
0 1 c02
0
x2 d2
...
0 1 =
x d0 .
3 3
... ... .. ..
.
.
cn1
an bn xn dn
..
0 1 . =
x d0 .
3 3
... ... .. ..
.
0 .
cn1
0 1 xn d0n
a = (0, 1, 1, 1, 1)
b = (2, 2, 2, 2, 2)
c = (1, 1, 1, 1, 0)
d = (4, 4, 0, 0, 2)
x5 = d05 = 1
4 4
x4 = d04 c04 x5 = 1=0
5 5
3
x3 = d03 c03 x4 = 1 0 = 1
4
4 2
x2 = d2 c2 x3 = (1) = 2
0 0
3 3
1
x1 = d1 c1 x2 = 2 2 = 1
0 0
2
E assim, obtemos o vetor x = [1, 2, 1, 0, 1].
cl=zeros(n,1) //Inicializa cl
dl=zeros(n,1) //Inicializa dl
x=zeros(n,1) //Inicializa x
cl(1)=c(1)/b(1)
for i=2:n-1
cl(i)=c(i)/(b(i)-a(i)*cl(i-1))
end
dl(1)=d(1)/b(1)
for i=2:n
dl(i)=(d(i)-a(i)*dl(i-1))/(b(i)-a(i)*cl(i-1))
end
x(n)=dl(n)
for i=n-1:-1:1
x(i)=dl(i)-cl(i)*x(i+1)
end
endfunction
c(1)=c(1)/b(1)
for i=2:n-1
c(i)=c(i)/(b(i)-a(i)*c(i-1))
end
d(1)=d(1)/b(1)
for i=2:n
d(i)=(d(i)-a(i)*d(i-1))/(b(i)-a(i)*c(i-1))
end
x(n)=d(n)
for i=n-1:-1:1
x(i)=d(i)-c(i)*x(i+1)
end
endfunction
-->a=[0; 1; 1; 1; 1];
-->b=[2; 2; 2; 2; 2];
-->c=[1; 1; 1; 1; 0];
-->d=[4; 4; 0; 0; 2];
-->TDMA(a,b,c,d)
x1 x2 = 0
xj1 + 5xj xj+1 = cos(j/10), 2 j 10
x11 = x10 /2 (4.30)
Pequenas variaes nos coeficientes das matrizes fazem as solues ficarem bem
distintas, isto , pequenas variaes nos dados de entrada acarretaram em grandes
variaes na soluo do sistema. Quando isso acontece, dizemos que o problema
mal-condicionado.
Precisamos uma maneira de medir essas variaes. Como os dados de entrada
e os dados de sada so vetores (ou matrizes), precisamos introduzir as definies
de norma de vetores e matrizes.
b) kukp = || kukp .
i=1
c) Em construo ...
d) Em construo ...
Soluo.
kvk1 = 1 + 2 + 3 + 0 = 6
kvk2 = 1 + 22 + 32 + 02 = 14
kvk = max{1,2,3,0} = 3
kAkp = 0 A = 0
kAkp = || kAkp
kA + Bkp kAkp + kBkp (desigualdade do tringulo)
kAvkp kAkp kvkp
kABkp kAkp kBkp
kIkp = 1
1 = kIkp = kAA1 kp kAkp kA1 kp (se A inversvel)
Casos especiais:
n
n
kAk1 = max
X
|Aij |
j=1
i=1
q
kAk2 = max{|| : (AA )}
n
n
kAk = max
X
|Aij |
i=1
j=1
Soluo.
A(x + x ) = y + y
2 k 262,12,
k2 (A1 ) := kA2 kkA1
k (A1 ) := kA kkA1 k 350,36.
1 k1 6888,0,
k1 (A2 ) := kA1 k1 kA1
k2 (A2 ) := kA1 k2 kA1
1 k2 5163,0,
k (A2 ) := kA1 k kA11 k 6888,0.
Exerccios
nas normas 1, 2 e .
100000x 9999.99y = 10
100000x 9999.99y = 9.999
e
9999.99x + 1000.1y = 1 9999.99x + 1000.1y = 1.01
(j/10)3
xj = sen (j/10), yj = j/10 zj = j/10 , j = 1, . . . ,10
6
Use o Scilabpara construir os seguintes vetores de erro:
|xj yj | |xj zj |
ej = fj =
|xj | xj
Calcule as normas 1, 2 e de e e f
10x + y = 23
x + 8y = 26
23 y (k)
x(k+1) =
10
26 x(k)
y (k+1) =
8
23 y (1)
x(2) = = 2,3
10
26 x(1)
y (2) = = 3,25
8
23 y (2)
x(3) = = 1,975
10
26 x(2)
y (3) = = 2,9625
8
k=1
while k<=N & ~convergiu
xnew(1)=(b(1) - A(1,2:n)*x(2:n))/A(1,1)
for i=2:n-1
xnew(i)=(b(i) -A(i,1:i-1)*x(1:i-1) ...
-A(i,i+1:n)*x(i+1:n) )/A(i,i)
end
xnew(n)= (b(n) -A(n,1:n-1)*x(1:n-1) )/A(n,n)
deltax=max( abs(x-xnew) )
if deltax<tol then
convergiu=%T //TRUE
end
k=k+1
x=xnew // atualiza x
disp([k,x',deltax]) // depuracao
end
if ~convergiu then
error('Nao convergiu')
end
endfunction
10x + y = 23
x + 8y = 26
23 y (k)
x(k+1) =
10
26 x(k+1)
y (k+1) =
8
23 y (1)
x(2) = = 2,3
10
26 x(2)
y (2) = = 2,9625
8
23 y (2)
x(3) = = 2,00375
10
26 x(3)
y (3) = = 2,9995312
8
k=1
while k<=N & ~convergiu
xnew(1)=(b(1) - A(1,2:n)*x(2:n))/A(1,1)
for i=2:n-1
xnew(i)=(b(i) -A(i,1:i-1)*xnew(1:i-1) ...
-A(i,i+1:n)*x(i+1:n) )/A(i,i)
end
xnew(n)=(b(n) -A(n,1:n-1)*xnew(1:n-1) )/A(n,n)
deltax=max( abs(x-xnew) )
if deltax<tol then
convergiu=%T //TRUE
end
k=k+1
x=xnew // atualiza x
disp([k,x',deltax]) // depuracao
end
if ~convergiu then
error('Nao convergiu')
end
endfunction
Ax = b x = T x + c,
A = L + D + U,
Iterao de Jacobi
Vamos, agora, usar a decomposio discutida acima para construir a matriz de
iterao TJ e o vetor de iterao cJ associado ao mtodo de Jacobi. Neste caso,
temos:
Ax = b (L + D + U )x = b
Dx = (L + U )x + b
x = D1 (L + U ) x + D 1
| {z b} .
| {z }
=:cJ
=:TJ
x(k+1) = TJ x(k) + cJ , k 1,
0 0 1 2 0 0
15 1
5
2
5
| {z }| {z }
D1 (L+U )
Iterao de Gauss-Seidel
A forma matricial da iterao do mtodo de Gauss-Seidel tambm pode ser
construda com base na decomposio A = L + D + U . Para tando, fazemos:
Ax = b (L + D + U )x = b
(L + D)x = U x + b
x = (L + D)1 U x + (L + D)1 b
| {z } | {z }
=:TG =:cG
x(k+1) = TG x(k) + cG , k 1,
1 0 0 0 0 10 0
1
2 5
| {z }| {z }
(L+D)1 U
Condies de convergncia
Aqui, vamos discutir condies necessrias e suficientes para a convergncia de
mtodos iterativos. Isto , dado um sistema Ax = b e uma iterao:
x(k+1) = T x(k) + c, k 1,
x(1) dado, estabelecemos condies nas quais x(k) x , onde x a soluo do
sistema dado, isto , x = T x + c ou, equivalentemente, Ax = b.
Lema 4.7.1. Seja T uma matriz real n n. O limite lim
T k
= 0, 1 p ,
k p
se, e somente se, (T ) < 1.
Demonstrao. Aqui, fazemos apenas um esboo da demonstrao. Para mais
detalhes, veja [8], Teorema 4, pg. 14.
Primeiramente, suponhamos que kT kp < 1, 1 p . Como (veja [8], lema
2, pg. 12):
(T ) kT kp ,
temos (T ) < 1, o que mostra a implicao.
Agora, suponhamos que (T ) < 1 e seja 0 < < 1 (T ). Ento, existe
1 p tal que (veja [8], Teorema 3, pgina 12):
kT kp (T ) + < 1.
Assim, temos:
lim kT k kp lim kT km
p = 0.
k k
Da equivalncia entre as normas segue a recproca.
Observao 4.7.1. Observamos que:
lim kT k kp = 0, ,1 p , lim tkij = 0, 1 i,j n.
k k
k=0
o que mostra que (I T )1 = T k.
X
k=0
x(k+1) = T x(k) + c
x x(k+1) = (T x + c) (T x(k) + c)
= T (x x(k) )
..
.
= T (x x(1) ) = T (k) y.
(k)
Observao 4.7.2. Pode-se mostrar que tais mtodos iterativos tem taxa de con-
vergncia super linear com:
kx(k+1) x k (T )k kx(1) x k.
Para mais detalhes, veja [8], pg. 61-64.
Exemplo 4.7.6. Mostre que, para qualquer escolha da aproximao inicial, ambos
os mtodos de Jacobi e Gauss-Seidel so convergentes quando aplicados ao sistema
linear dado no exemplo 4.7.3.
Soluo. Do teorema 4.7.1, vemos que necessrio e suficiente que (TJ ) < 1 e
(TG ) < 1. Computando estes raios espectrais, obtemos (TJ ) 0,32 e (TG )
0,13. Isto mostra que ambos os mtodos sero convergentes.
Condio suficiente
Uma condio suficiente porm no necessria para que os mtodos de Gauss-
Seidel e Jacobi convirjam a que a matriz seja estritamente diagonal domi-
nante.
Definio 4.7.1. Uma matriz A estritamente diagonal dominante quando:
n
|aij | , i = 1,...,n
X
|aii | >
j=1
j6=i
e para ao menos um i, aii estritamente maior que a soma dos elementos fora da
diagonal.
Teorema 4.7.2. Se a matriz A for diagonal dominante9 , ento os mtodos de
Jacobi e Gauss-Seidel sero convergentes independente da escolha inicial x(1) .
Se conhecermos a soluo exata x do problema, podemos calcular o erro relativo
em cada iterao como:
kx x(k) k
.
kxk
Em geral no temos x, entretanto podemos estimar o vetor resduo r(k) =
b Ax(k) . Note que quando o erro tende a zero, o resduo tambm tende a zero.
9
E consequentemente estritamente diagonal dominante.
Teorema 4.7.3. O erro relativo e o resduo esto relacionados como (veja [3])
kx x(k) k krk
(A)
kxk kbk
onde k(A) o nmero de condicionamento.
Exemplo 4.7.7. Ambos os mtodos de Jacobi e Gauss-Seidel so convergentes
para o sistema dado no exemplo 4.7.3, pois a matriz dos coeficientes deste uma
matriz estritamente diagonal dominante.
Exerccios
x1 x2 = 1
x1 + 2x2 x3 = 1
x2 + (2 + )x3 x4 = 1
x3 + 2x4 x5 = 1
x4 x5 = 1
a) Escreva na forma Ax = b e resolva usando eliminao gaussiana para =
103 no Scilab.
b) Obtenha o vetor incgnita x com = 103 usando Jacobi com tolerncia
102 . Compare o resultado com o resultado obtido no item d.
c) Obtenha o vetor incgnita x com = 103 usando Gauss-Seidel com tole-
rncia 102 . Compare o resultado com o resultado obtido no item d.
d) Discuta com base na relao esperada entre tolerncia e exatido conforme
estudado na primeira rea para problemas de uma varivel.
x1 x2 = 0
xj1 + 5xj xj+1 = cos(j/10), 2 j 10
x11 = x10 /2 (4.33)
x1 + 10x2 + 3x3 = 27
4x1 + x3 = 6
2x1 + x2 + 4x3 = 12
Suponha que um dos autovalores seja estritamente maior que os demais, isto ,
|1 | > |2 | |3 | |n |. Dado x(1) = (1 , 2 , 3 , . . . , n ), ento
1
k
1 1 1
k
k 2 2
2 2 2
1 1
Ak x(1) = k
= = k1 1 3 3 k
A 3 k
3 3 1 1 ,
.. .. ..
. . .
k
n n
n kn n 1 1
k
desde que 1 6= 0. Como n1 n1
1
31 21 < 1, ento 1j tende a 0 para
cada j, 2 j n. Devido a normalizao a cada passo da sequncia,
Ak x(1)
x(k+1) =
kAk x(1) k2
T
(k) = x(k) Ax(k)
x(1) = U U 1 x(1) = U [1 2 3 n ]T
com 1 6= 0. Ento
1
k
1 1 1
k
k 2 2
2 2 2
1 1
k
Ak x(1) = (U Dk U 1 )U =U = k1 1 U
k 3 3 .
3 3 3 1 1
.. .. ..
. . .
n
k
n
n kn n 1 1
Ak x(1)
x(k) =
kAk x(1) k2
Observamos que se x est na forma (4.34), ento Ak x pode ser escrito como
!k
n n n
j j
Ak x = j Ak vj = j kj vj = 1 k1 v1 +
X X X
vj .
j=1 j=1 j=2 1 1
Como 1j < 1 para todo j 2, temos
n
!k
j j
vj 0.
X
j=2 1 1
Assim, k
Ak x 1 k1
2
= v1 + O . (4.35)
kAk xk2 kAk xk
1
Ak x
Como a norma de igual a um, temos
k A k xk
k
1 1
v 1
1
kAk xk
e, portanto,
1
k
1 1
kAk xk
.
kv1 k
1 k1
Ou seja, se definimos (k) = , ento
k A k xk
|(k) | 1.
Ak x
(k) v1 0.
kAk xk
Ak x(1)
x(k) = .
kAk x(1) k
x0 = U U 1 x0 = U [1 2 3 n ]T
com k 6= 0. Ento
1
2
(A I)k x0 = (U (D I)k U 1 )U
3
..
.
n
k
1 i
i 1
(1 )k 1
(2 )k 2
1
= U (3 )k 3 = (i )k 1 U
.. .
.
..
.
(n )k n
k
n i
i n
Como ji
< 1, o ltimo vetor converge para ei e
(A I)k x0
xk =
k(A I)k x0 k2
Exerccios
E 4.9.1. O circuito linear da figura 4.9.1 pode ser modelado pelo sistema dado
a seguir. Escreva esse sistema na forma matricial sendo as tenses V1 , V2 , V3 , V4 e
V5 as cinco incgnitas. Resolva esse problema quando V = 127 e
a) R1 = R2 = R3 = R4 = 2 e R5 = R6 = R7 = 100 e R8 = 50
b) R1 = R2 = R3 = R4 = 2 e R5 = 50 e R6 = R7 = R8 = 100
V1 = V
V1 V2 V3 V2 V2
+ = 0
R1 R2 R5
V2 V3 V4 V3 V3
+ = 0
R2 R3 R6
V3 V4 V5 V4 V4
+ = 0
R3 R4 R7
V4 V5 V5
= 0
R4 R8
V1 V2 V3 V4 V5
R1 R2 R3 R4
V R5 R6 R7 R8
Caso V1 V2 V3 V4 V5
a
b
Ento, refaa este problema reduzindo o sistema para apenas 4 incgnitas (V2 ,
V3 , V4 e V5 ).
a) Encontre o polinmio P (x) = ax2 + bx + c que passa pelos pontos (1, 3),
(1, 1) e (2,9).
Podemos escrever este problema na forma vetorial definindo o vetor x = [x1 ,x2 , . . . ,xn ]T
145
146 Clculo Numrico
e a funo vetorial
f1 (x1 ,x2 , . . . ,xn )
f2 (x1 ,x2 , . . . ,xn )
F (x) =
..
.
fn (x1 ,x2 , . . . ,xn )
Portanto,
f1 f1 f1
x1 x2
xn
(0)
x1 x 1
f2 f2 f2
x1 x2
xn
(0)
x2 x2
F (x) F (x(0) ) .. .. .. , (5.1)
..
. . . .
..
.
fn fn fn
x1 x2 xn
xn x(0)
n
fi
(JF )ij = .
xj
A aproximao
x(k) definida como o ponto x em que a linearizao F (x(k) )+
JF x(k) x x(k) nula, ou seja:
F (x(k) ) + JF x(k) x(k+1) x(k) = 0
Assim, (k) = JF1 x(k) F (x(k) ), ou seja, (k) resolve o problema linear:
JF x(k) (k) = F (x(k) )
x21
+ x22 = 1
3
x2
x21 + 2 = 1
4
Para tal, definimos a funo F (x):
x21
+ x22 1
F (x) = 3
x22
x1 +
2
1
4
cuja jacobiana :
2x1
2x2
JF = 3
2x1 x22
Faremos a implementao numrica no Scilab. Para tal definimos as funes
que implementaro F (x) e a JF (x)
function y=F(x)
y(1)=x(1)^2/3+x(2)^2-1
y(2)=x(1)^2+x(2)^2/4-1
endfunction
function y=JF(x)
y(1,1)=2*x(1)/3
y(1,2)=2*x(2)
y(2,1)=2*x(1)
y(2,2)=x(2)/2
endfunction
function y=F(x)
y=[x(1)^2/3+x(2)^2-1; x(1)^2+x(2)^2/4-1]
endfunction
function y=JF(x)
y=[2*x(1)/3 2*x(2); 2*x(1) x(2)/2]
endfunction
Desta forma, se x uma aproximao para a raiz, pode-se calcular a prxima
aproximao atravs dos comandos:
delta=-JF(x)\F(x)
x=x+delta
Ou simplesmente
x=x-JF(x)\F(x)
q q
Observe que as solues exatas desse sistema so 9
11
, 8
11
.
Exemplo 5.1.2. Encontre uma aproximao para a soluo do sistema
x21 = cos(x1 x2 ) + 1
sen (x2 ) = 2 cos(x1 )
onde
x1 cos(x1 x2 ) 1
2
F (x) =
sen (x2 ) 2 cos(x1 )
e sua jacobiana
2x1 + x2 sen (x1 x2 ) x1 sen (x1 x2 )
JF (x) =
2 sen (x1 ) cos(x2 )
function y=F(x)
y(1) = x(1)^2-cos(x(1)*x(2))-1
y(2) = sin(x(2))-2*cos(x(1))
endfunction
function y=JF(x)
y(1,1) = 2*x(1)+x(2)*sin(x(1)*x(2))
y(1,2) = x(1)*sin(x(1)*x(2))
y(2,1) = 2*sin(x(1))
y(2,2) = cos(x(2))
endfunction
E agora, basta iterar:
x=[1.5; .5]
x=x-JF(x)\F(x) //(5 vezes)
Exerccios
f (x,y) = x2 y + cos(xy) 4
2x1 x2 = cos(x1 )
x1 + 2x2 x3 = cos(x2 )
x2 + x3 = cos(x3 )
a) Faa um esboo das duas curvas e entenda o problema. Verifique que existem
dois pontos de interseco, um no primeiro quadrante e outro no segundo
quadrante do plano xy.
d) Encontre a jacobiana JF .
f) Implemente no computador.
a ) Faa um esboo das duas curvas, entenda o problema. Verifique que existem
dois pontos de interseco, um no primeiro quadrante e outro no segundo
quadrando do plano xy.
d ) Encontre a jacobiana JF .
f ) Implemente no Scilab.
E 5.1.5. Encontre uma aproximao com erro inferior a 105 em cada incg-
nita para a soluo prxima da origem do sistema
6x 2y + ez = 2
sen (x) y + z = 0
sen (x) + 2y + 3z = 1
a) k = 1000 Nm/rad
b) k = 500 Nm/rad
c) k = 100 Nm/rad
d) k = 10 Nm/rad
Obs:Voc deve escolher valores para iniciar o mtodo. Como voc interpretaria
fisicamente a soluo para produzir palpites iniciais satisfatrios? O que se altera
entre o caso a e o caso d?
E 5.1.9. (esttica - problemas de trs variveis) Considere, agora, o sistema
mecnico semelhante ao do problema 5.1.8, porm constitudo de trs segmentos
de mesmo comprimento L presos entre si e a uma parede por articulaes.
O momento em cada articulao proporcional deflexo com constante de
proporcionalidade k. Os segmentos so feitos de material homogneo de peso P .
A condio de equilbrio pode ser expressa em termos dos ngulos 1 , 2 e 3
conforme:
5P L
k1 = cos 1 + k (2 1 )
2
3P L
k (2 1 ) = cos 2 + k (3 2 )
2
PL
k (3 2 ) = cos 3
2
Considere P = 10N, L = 1m e calcule os ngulos 1 , 2 e 3 quando:
a) k = 1000Nm/rad
b) k = 100Nm/rad
c) k = 10Nm/rad
tan1 (x) + x = y + y 3
Com base no grfico, encontre solues aproximadas para o problema e use-as para
iniciar o mtodo de Newton-Raphson. Encontre as razes com erro inferior a 105 .
restrita condio
f (x,y) = x4 y 6 + 3xy 3 x
E 5.1.15. A funo f (x,y,z) = sen (x) + sen (2y) + sen (3z) possui um mximo
quando x = /2, y = /4 e z = /6. Calcule numericamente este ponto.
5.2.1 Gradiente
Considere primeiramente uma funo f : Rn R, ou seja, uma funo que
mapeia n variveis reais em um nico real, por exemplo:
d d
g 0 (h) = g(h) = f (x(0) + hv).
dh dh
Pela regra da cadeia temos:
n
d f dxj
f (x(0) + hv) =
X
.
dh j=1 xj dh
(0)
Observamos que xj = xj + hvj , portanto
dxj
= vj
dh
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com
160 Clculo Numrico
Assim:
n
d f
f (x + hv) =
(0)
X
vj .
dh j=1 xj
Observamos que esta expresso pode ser vista como o produto interno entre o
gradiente de f e o vetor v:
f
x1 v1
f
v2
f = v=
x2
. .
.. ..
f
xn
vn
f1 x (0)
+ f1 (x ) x x
T (0) (0)
+ O(kx x k )
(0) 2
f2 x(0) + Tf2 (x(0) ) x x(0) + O(kx x(0) k2 )
F (x) =
..
.
fn x(0) + Tfn (x(0) ) x x(0) + O(kx x(0) k2 )
| {z }
Vetor coluna
ou, equivalentemente:
f1 (x )
(0) T (0)
f1 x
Tf2 (x(0) )
(0)
f2 x
F (x) = + x x(0) +O(kx x(0) k2 )
.. ..
| {z }
.
. Vetor coluna
fn x(0) Tfn (x(0) )
| {z } | {z }
Vetor coluna Matriz jacobiana
2
F (x) = F x(0) + JF (x(0) ) x x(0) + O
x x(0)
fj , ou seja:
f1 f1 f1
x1 x2
xn
f2 f2 f2
x1 x2
xn
(f1 ,f2 , . . . ,fn )
JF = = .. .. ..
(x1 ,x2 , . . . ,xn )
..
. . . .
fn fn fn
x1 x2 xn
fi
(JF )ij =
xj
f1
x1
f1
x2
2x1
3
2x2
JF = =
2x1
f2 f2 x2
x1 x2 2
Interpolao
f (xi ) = yi , i = 1, 2, . . . , n.
a + bx1 = y1 a+b=1
isto
a + bx2 = y2 a + 2b = 2
163
164 Clculo Numrico
Figura 6.1: Exemplo de interpolao de dois pontos por uma reta, veja o exem-
plo 6.0.1.
k=0
k=0
Figura 6.2: Polinmio interpolador do conjunto de pontos {(0, 1), (1, 6), (2, 5),
(3, 8)}. Veja o exemplo 6.1.1.
k=0
(xj xi )
Y
1i<jn
Exerccios
b) No existe reta que interpola os pontos {(1, 1), (2, 2,1), (3, 3)}.
p(x) = a1 + a2 (x x1 ) + a3 (x x1 )(x x2 ) +
+ an (x x1 )(x x2 ) (x xn1 ).
a1 = y1
a1 + a2 (x2 x1 ) = y2
a1 + a2 (x3 x1 ) + a3 (x3 x1 )(x3 x2 ) = y3
..
.
a1 + a2 (xn x1 ) + + an (xn x1 ) (xn xn1 ) = yn
a1 = y1
y2 a1 y2 y1
a2 = =
x2 x1 x2 x1
y3 y2 y2 y1
y3 a2 (x3 x1 ) a1 (x3 x2 )
(x2 x1 )
a3 = =
(x3 x1 )(x3 x2 ) (x3 x1 )
...
Tabela 6.1: Esquema de diferenas divididas para um conjunto com trs pontos
{(xi , yi )}3i=1 .
j xj f [xj ] f [xj1 ,xj ] f [xj2 ,xj1 ,xj ]
1 x1 f [x1 ] = y1
f [x2 ] f [x1 ]
f [x1 ,x2 ] =
x2 x1
f [x2 ,x3 ] f [x1 ,x2 ]
2 x2 f [x2 ] = y2 f [x1 ,x2 ,x3 ] =
x3 x1
f [x3 ] f [x2 ]
f [x2 ,x3 ] =
x3 x2
3 x3 f [x3 ] = y3
f [xj ] := yj
f [xj+1 ] f [xj ]
f [xj , xj+1 ] :=
xj+1 xj
f [xj+1 , xj+2 ] f [xj , xj+1 ]
f [xj , xj+1 , xj+2 ] :=
xj+2 xj
..
.
f [xj+1 , xj+2 , . . . , xj+k ] f [xj , xj+1 , . . . , xj+k1 ]
f [xj , xj+1 , . . . , xj+k ] :=
xj+k xj
Chamamos f [xj ] de diferena dividida de ordem zero (ou primeira diferena divi-
dida), f [xi ,xj +1] de diferena dividida de ordem 1 (ou segunda diferena dividida)
e assim por diante.
Uma inspeo cuidadosa dos coeficientes obtidos em (6.2) nos mostra que
j xj f [xj ] f [xj1 ,xj ] f [xj2 ,xj1 ,xj ] f [xj3 ,xj2 ,xj1 ,xj ]
1 1 3
13
= 2
0 (1)
2 (2)
2 0 1 =2
1 (1)
31 62
=2 =1
10 3 (1)
20 2
3 1 3 =6
30
43 3
= 20
31
4 3 43
Portanto, o polinmio interpolador do conjunto de pontos dados
Assim, o polinmio p(x) de grau n 1 que interpola os pontos dados, i.e. p(xj ) =
yj , j = 1, . . . ,n dado por
n
p(x) = y1 L1 (x) + y2 L2 (x) + + yn Ln (x) = yk Lk (x).
X
k=1
j=1
j6=i
Portanto,
n
(x xj )
Lk (x) =
Y
j=1 (xk xj )
j6=i
M
|f (x) P (x)| |(x x0 )(x x1 ) (x xn )| ,
(n + 1)!
onde
M = max |f (n+1) ((x))|
x[a,b]
(x 12 )(x 1)
P (x) = 1
(0 12 )(0 1)
1 (x 0)(x 1)
+ cos
2 ( 12 0)( 12 1)
(x 0)(x 12 )
+ cos(1)
(1 0)(1 12 )
1 0,0299720583066x 0,4297256358252x2
L1=poly([.5 1],'x');L1=L1/horner(L1,0)
L2=poly([0 1],'x');L2=L2/horner(L2,0.5)
L3=poly([0 .5],'x');L3=L3/horner(L3,1)
P=L1+cos(.5)*L2+cos(1)*L3
x=[0:.05:1]
plot(x,cos)
plot(x,horner(P,x),'red')
plot(x,horner(P,x)-cos(x))
Para encontrar o erro mximo, precisamos estimar |f 000 (x)| = | sen (x)|
sen (1) < 0,85 e
1
max x x (x 1)
x[0,1] 2
1
max x x (x 1) max{|Q(x1 )|, |Q(x2 )|} 0,0481125.
x[0,1] 2
Portanto:
0,85
|f (x) P (x)| < 0,0481125 0,0068159 < 7 103
3!
pelo valor da integral do polinmio P (x) que coincide com f (x) nos pontos x0 = 0,
x1 = 21 e x2 = 1. Use a frmula de Lagrange para encontrar P (x). Obtenha o
valor de 01 f (x)dx e encontre uma expresso para o erro de truncamento.
R
e a integral de P (x) :
Z 1
2 3 3 2 1
1 4 1
P (x)dx = f (0) x x +x + f x3 + 2x2
0 3 2 0 2 3 0
2 3 1 2
1
+ f (1) x x
3 2 0
2 3 1 4 2 1
= f (0) +1 +f + 2 + f (1)
3 2 2 3 3 2
1 2 1 1
= f (0) + f + f (1)
6 3 2 6
Exerccios
(xi+1 x) (x xi )
Pi (x) = yi + yi+1
(xi+1 xi ) (xi+1 xi )
Exemplo 6.5.1. Construa uma funo linear por partes que interpola os pontos
(0,0), (1,4), (2,3), (3,0), (4,2), (5,0).
A funo procurada pode ser construda da seguinte forma:
0 x1 + 1 x0 ,0 x < 1
01 10
f (x) = 4 x2
12
+ 3 x1
21
,1 x < 2
3 x3 + 0 x2 ,2 x 3
23 32
Simplificando, obtemos:
x ,0 x < 1
f (x) = x + 5 ,1 x < 2
3x + 9 , 2 x 3
//pontos fornecidos
xi = [0;1;2;3;4;5]
yi = [0;4;3;0;2;0]
//numero de pontos
n = 6
//funcao interpoladora
function [y] = f(x)
for i=1:n-2
if ((x>=xi(i)) & (x<xi(i+1))) then
3.5
2.5
1.5
0.5
0
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
Agora, vamos considerar dois pares de pontos sucessivos de I, (xj ,yj ) e (xj+1 ,yj+1 ).
A forma do spline cbico no intervalo [xj ,xj+1 ) pode ser identificada com a soluo
da equao diferencial (6.1) no intervalo (xj ,xj+1 ) sujeita s condies de contorno
sj (x) = aj + bj (x xj ) + cj (x xj )2 + dj (x xj )3 ,
aj = y j e bj = yj0 .
yj+1 yj 0
yj+1 + 2yj0 yj+1 yj 0
yj+1 + yj0
cj = 3 e dj = 2 +
(xj+1 xj )2 xj+1 xj (xj+1 xj )3 (xj+1 xj )2
sj (x) = aj + bj (x xj ) + cj (x xj )2 + dj (x xj )3 , (6.2)
onde
yj+1 yj 0
yj+1 + 2yj0
aj = yj , cj = 3 ,
h2j hj
0
+ yj0 (6.3)
yj+1 yj yj+1
bj = yj0 , dj = 2 +
h3j h2j
e
hj = xj+1 xj , j = 1,2, . . . ,n 1 (6.4)
a distncia entre as abscissas de dois pontos de interpolao consecutivos.
Proposio 6.6.2. Dado o conjunto de pontos I = {(xj ,yj )}nj=1 R2 tais que
xj+1 > xj , as derivadas de um spline cbico que interpola os pontos I, yj0 , j =
1,2, . . . ,n satisfazem o sistema de equaes algbricas lineares
!
yj yj1 yj+1 yj
0
hj yj1 + 2(hj1 + hj )yj0 + hj1 yj+1
0
= 3 hj + hj1 , (6.5)
hj1 hj
ou seja,
y2 y1
2y10 + y20 = 3
h1
. (6.7)
yn yn1
+ 2yn0 = 3
0
yn1
hn1
y2 y1
h1
h2 y2hy + h1 y3hy
y10
1
1
2
2
0
h3 y3hy + h2 y4hy
y2 2 3
y =
0
e z= 3 (6.9)
2 3
.. .. .
. .
yn2
hn1 yn1hn2 + hn2 ynhy
yn0
n1
n1
yn yn1
hn1
Exemplo 6.6.1. Construa um spline cbico natural que passe pelos pontos (2, 4,5),
(5, 1,9), (9, 0,5) e (12, 0,5).
c1 = 0 , d1 = 0,07,
c2 = 0,7 , d2 = 0,0916,
c3 = 0,4 , d3 = 0,04.
Portanto:
4,5 2,83(x 2) + 0,07(x 2)3 ,2 x < 5
S(x) =
1,9 0,73(x 5) + 0,7(x 5)2 0,0916(x 5)3 , 5 x < 9 .
0,5 + 0,46(x 9) 0,4(x 9)2 + 0,04(x 9)3
, 9 x 12
xi = [2;5;9;12]
yi = [4.5;-1.9;0.5;-0.5]
dyi=splin(xi,yi,'natural')
z=linspace(xi(1),xi($))
plot(z,interp(z,xi,yi,dyi))
h2 y2hy 1
+ h1 y3hy 2
h2 y10
y20 1 2
h3 y3hy h2 y4hy
2 3
+
y30 2 3
..
y0 = e z= 3 .
.. .
.
yn3 yn2
hn2 yn2 + hn3 yn1
0
hn3 hn2
yn1
yn2
hn1 yn1
hn2 + hn2 ynhy
n1
n1
hn2 yn0
lim s000
1 (x) = s2 (x2 ) e
000
lim s000
n2 (x) = sn1 (xn1 ).
000
x%x2 x%xn1
d1 = d2 e dn2 = dn1 ,
ou seja,
y2 y1 y3 y2
h22 y10 + (h22 h21 )y20 h21 y30 =2 h22 h21
h1 h2
!
.
0
h2n1 yn2 + (h2n1 h2n2 )yn1
0
h2n2 yn0 = 2 h2n1 h2n2
hn2 hn1
y2 y1 y3 y2
2 h22 h21
h1 h2
y10
y2 y1 y3 y2
3 h2 h1 + h1 h2
y20
..
y0 = z=
e . .
..
.
yn1 yn2 yn yn1
3 hn1 hn2 + hn2 hn1
yn0
y n1 y n2 y n y n1
2
2 hn1 2 hn2
hn2 hn1
Se reduzirmos esse sistema pela eliminao das incgnitas e yn0 , o sistema re- y10
sultante possui uma matriz de coeficientes diagonal dominante estrita, portanto,
a soluo nica.
O termo not-a-knot (no n) relaciona-se nomenclatura dos splines. O termo
n utilizado para os pontos interpolados. Neles, a derivada terceira da funo
spline descontnua, portanto, quando impomos a continuidade dessa derivada em
x2 e xn1 como se esses pontos deixassem de ser ns.
0
y10
h2 y2hy + h1 y3hy
1 2
y20 1 2
..
y0 = e z= 3 .
.. .
.
y
y
+ hn2 ynhy
h n1 n2 n1
n1 hn2
yn0 n1
hn1 y2hy
1
1
+ h1 ynhy
n1
n1
Neste caso tambm, se reduzirmos esse sistema pela eliminao das incgnitas y10
e yn0 , o sistema resultante possui uma matriz de coeficientes diagonal dominante
estrita, portanto, a soluo nica.
Ajuste de curvas
Figura 7.1: Exemplo de um problema de ajuste de uma reta entre trs pontos,
veja o exemplo 7.0.1.
N
min (f (xj ) yj )2 ,
X
f F
j=1
186
7.1. AJUSTE DE UMA RETA 187
N
R := (f (xj ) yj )2
X
j=1
Exemplo 7.0.1. Dado o conjunto de pontos {(1, 1,2), (1,5, 1,3), (2, 2,3)} e a fam-
lia de retas f (x) = a + bx, podemos mostrar que f (x) = 0,05 + 1,1x a reta que
melhor aproxima os pontos dados no sentido de mnimos quadrados. Os pontos e
a reta ajustada e so esboados na figura 7.1.
N
R= (f (xj ) yj )2
X
j=1
seja mnimo.
Para tal, primeiro observamos que f (xj ) = a1 + a2 xj e, portanto, o resduo
pode ser escrito explicitamente como uma funo de a1 e a2 conforme a seguinte
expresso:
N
R(a1 ,a2 ) = (a1 + a2 xj yj )2 .
X
j=1
Observamos que R(a1 ,a2 ) uma forma quadrtica e que seu mnimo ocorre
N
R X
= (a1 + a2 xj yj )2 = 0,
a1 a1 j=1
N
R X
= (a1 + a2 xj yj )2 = 0.
a2 a2 j=1
Ou seja,
N
2 (a1 + a2 xj yj ) 1 = 0,
X
j=1
N
2 (a1 + a2 xj yj ) xj = 0,
X
j=1
N N N
1 + a2 xj =
X X X
a1 yj ,
j=1 j=1 j=1
N N N
x j + a2 x2j =
X X X
a1 y j xj .
j=1 j=1 j=1
Observando que N j=1 1 = N , o sistema linear acima pode ser escrito na forma
P
matricial M a = w, isto ,
PN PN
N j=1 xj a1 j=1 yj
= P . (7.1)
P
N PN 2 N
j=1 xj j=1 xj a2 j=1 xj yj
| {z } | {z } | {z }
M a w
Este sistema linear de duas equaes e duas incgnitas admite uma nica so-
luo quando o determinante da matriz dos coeficientes for no nulo, isto ,
2
N N
x2j xj 6= 0
X X
N
j=1 j=1
Ento, o grfico da funo ajustada e dos pontos pode ser obtido com os comandos:
Exerccio resolvido
ER 7.1.1. a) Mostre que o sistema linear M a = w descrito na equao 7.1 pode
ser reescrito na forma V T V a = V T y, onde V = [1 x].
b) Mostre que V , como definido no item a), tem posto igual a 2 quando pelo menos
duas abscissas do conjunto de pontos {(xj , yj )}N
j=1 so diferentes. E, portanto,
M = V V uma matriz invertvel.
T
e
y1
1 1 1
PN
y2
j=1 yj
V Ty = = P = w.
.
.
x1 x2 xN .
N
j=1 xj y j
yN
Exerccios
E 7.1.2. Seja dado o conjunto de pontos {(0,35, 0,2), (0,15, 0,5), (0,23, 0,54),
(0,35, 0,7)}. Encontre a funo f (x) = a1 + a2 x que melhor se ajusta no sentido
de mnimos quadrados aos pontos dados. Faa, ento, um grfico com os pontos e
o esboo da funo ajustada.
E 7.1.3. Seja dado o conjunto de pontos {(1,94, 1,02), (1,44, 0,59), (0,93, 0,28),
(1,39, 1,04)}. Encontre a funo f (x) = a1 + a2 x que melhor se ajusta no sentido
de mnimos quadrados aos pontos dados. Ento, responda cada item:
a) Encontre o valor de f (1).
b) Encontre o valor de f (0,93).
c) Encontre o valor de |f (0,93) (0,28)|.
d) Encontre o valor do resduo R = j=1 (f (xj ) yj )2 .
PN
j=1
minimiza o resduo
n
R= [f (xi ) yi ]2 .
X
i=1
i=1
Do fato que f (xi ) = aj fj (xi ), temos que cada resduo pode ser escrito como
Pm
j=1
2
m
Ri = aj fj (xi ) yi .
X
j=1
E os vetores a e w, por:
n
i=1 f1 (xi )yi
P
a1
n
f2 (xi )yi
P
i=1
a2
n
a= e w= f3 (xi )yi
..
P
.
i=1
..
.
am
n
fm (xi )yi
P
i=1
Exemplo 7.2.1. Encontre a reta que melhor se ajusta aos pontos dados na se-
guinte tabela:
i 1 2 3 4 5
xi 0,01 1,02 2,04 2,95 3,55
yi 1,99 4,55 7,20 9,51 10,82
Exemplo 7.2.2. Encontre a funo f (x) = a1 sen (x) + a2 cos(x) que melhor se
ajusta pelo critrios dos mnimos quadrados aos seguintes pontos dados
i 1 2 3 4 5
xi 0,00 0,25 0,50 0,75 1,00
yi 153 64 242 284 175
-->x = inv(A)*b
-->x = A/b
p(x) = a1 + a2 x + + am xm1 .
Neste caso, a matriz V associada ao ajuste dos pontos {(x1 , y1 ), (x2 , y2 ), (x3 , y3 ),
. . ., (xn ,yn )} dada por:
1 x1 x21 xm1
1
1 x2 x22 xm1
2
V = 1
x3 x23 xm1
3
.. .. .. .
..
.
. .
1 xn x2n xm1
n
Exemplo 7.2.3. Entre o polinmio de grau 2 que melhor se ajusta aos pontos
dados na seguinte tabela:
i 1 2 3 4 5
xi 0,00 0,25 0,50 0,75 1,00
yi 153 64 242 284 175
p(x) = a1 + a2 x + a3 x2 .
a1 + a2 x1 + a3 x21 = y1
a2 + a2 x2 + a3 x22 = y2
a3 + a2 x3 + a3 x23 = y3
a4 + a2 x4 + a3 x24 = y4
a5 + a2 x5 + a3 x25 = y5
Exerccios
i 1 2 3 4
xi 1,50 0,50 1,25 1,50
yi 1,15 0,37 0,17 0,94
i 1 2 3 4 5
xi 0,01 1,02 2,04 2,95 3,55
yi 1,99 4,55 7,20 9,51 10,82
xi 0,0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1,0
yi 31 35 37 33 28 20 16 15 18 23 31
2
A soma do quadrado dos resduos.
Exemplo 7.3.1. Encontre uma curva da forma y = Aebx que melhor ajusta os
pontos (1, 2), (2, 3) e (3, 5).
Soluo. Aplicando o logartmo natural de ambos os lados da equao y = Aebx ,
temos
ln y = ln A + bx.
Ento, denotando y := ln y, a1 := ln A e a2 := b, o problema reduz-se a ajustar a
reta y = a1 + a2 x aos pontos (1, ln 2), (2, ln 3) e (3, ln 5). Para tanto, resolvemos o
sistema
1 1 ln 2
a1
1 2 a = ln 3
a2
1 3 | {z } ln 5
| {z } | {z }
V y
i
seria A = 1,19789 e b = 0,474348
Observao 7.3.2. Mesmo quando se deseja resolver o sistema no linear, a
soluo do problema linearizado pode ser usada para construir condies iniciais.
A prxima tabela apresenta algumas curvas e transformaes que linearizam o
problema de ajuste.
xi yi
0,0 9,12
0,1 1,42
0,2 - 7,76
0,3 - 11,13
0,4 - 11,6
0,5 - 6,44
0,6 1,41
0,7 11,01
0,8 14,73
0,9 13,22
1,0 9,93
B T Bz = B T y,
onde
1. 0.
0,8090170 0,5877853
0,3090170 0,9510565
0,3090170 0,9510565
cos(2x0 ) sen (2x0 )
0,8090170 0,5877853
cos(2x1 ) sen (2x1 )
B = = 0,0000000
1,0000000 .
..
.
0,8090170 0,5877853
cos(2x10 ) sen (2x10 )
0,3090170 0,9510565
0,3090170 0,9510565
0,8090170 0,5877853
1,0000000 0,0000000
Observe que
A2 = 7,96147042 + 11,4057212
11,405721
sen () = = 0,8199923
13,909546
= 0,9613976
AT Az = AT Y,
onde
1 x1
1 0,0
1 x 1 0,2
2
1 1 0,4
x3
A=
=
1 x4 1 0,6
1 1 0,8
x5
1 x6 1 1,0
e
1/y1
0,0099010
1/y 0,0117647
2
1/y3 0,0133333
Y = =
1/y4 0,0151515
1/y5 0,0166667
1/y6 0,0181818
Derivao numrica
f (x0 + h) f (x0 )
f 0 (x0 ) = lim .
h0 h
Deste limite, tomando h 6= 0 pequeno (no muito pequeno para evitar o cance-
lamento catastrfico), esperado que possamos obter uma aproximao razovel
para f 0 (x0 ). Assim, a diferena finita progressiva de ordem 1
f (x0 + h) f (x0 )
D+,h f (x0 ) := f 0 (x0 ) (8.1)
h
uma aproximao para f 0 (x0 ).
206
8.1. DIFERENAS FINITAS 207
cos(1 + h) cos(1)
D+,h f (1) =
h
Exploremos o exemplo 8.1.1 um pouco mais. Observamos que, para valores mo-
derados de h, o erro |f 0 (1)D+,h f (1)| diminui linearmente com h (veja figura 8.1).
Isto consequncia da ordem de truncamento da frmula de diferenas finitas apli-
cada (que de ordem 1). Porm, para valores muito pequenos de h < 108 , o erro
passa a aumentar quando diminumos h. Isto devido ao efeito de cancelamento
catastrfico.
2f ()
00
f (x0 + h) = f (x0 ) + hf (x0 ) + h
0
, h > 0, (x0 ,x0 + h).
2
f (x0 + h) f (x0 ) f 00 ()
f 0 (x0 ) = h , (8.2)
| h
{z } | {z } 2
D+,h O(h)
1
Uma funo suave uma funo infinitamente continuamente diferencivel, isto , f
C (R). Uma anlise mais cuidadosa, revela que hipteses mais fracas podem ser assumidas.
f (x0 + h) f (x0 )
D+,h f (x0 ) :=
h
de ordem h.
f 00 ()
f (x0 h) = f (x0 ) hf 0 (x0 ) + h2 , h > 0, (x0 , x0 + h).
2
Isolando f 0 (x0 ), obtemos
f (x0 ) f (x0 h) f 00 ()
f 0 (x0 ) = +h .
| h
{z } | {z2 }
D,h O(h)
f (x0 ) f (x0 h)
D,h f (x0 ) := ,
h
que possui erro de truncamento de ordem h.
f 000 (+ ) f 000 ( )
!
f (x0 + h) f (x0 h) = 2hf 0 (x0 ) + h3 .
3!
2
Tambm chamada de diferena finita progressiva de dois pontos ou diferena pra frente.
3
Tambm chamada de diferena regressiva de dois pontos ou diferena pra trs.
f (x0 + h) f (x0 h)
D0,h f (x0 ) := ,
2h
uma aproximao para f 0 (x0 ) com erro de truncamento de ordem h2 , ou sim-
plesmente ordem 2.
1
Exemplo 8.1.2. Calcule a derivada numrica da funo f (x) = e 2 x no ponto
x = 2 usando a diferena progressiva, diferena regressiva e diferena central com
h = 101 , h = 102 e h = 104 . Tambm, calcule o erro absoluto da aproximao
obtida em cada caso.
f (x + h) f (x)
D+,h f (x) = D+,h f (x)(1 + (x,h)) = (1 + (x,h)). (8.3)
h
Tambm, consideremos
|f (x + h) f (x + h)| = (x,h)
e
|f (x) f (x)| = (x,0) ,
onde f (x + h) e f (x) so as representaes em ponto flutuante dos nmeros f (x+h)
e f (x), respectivamente.
Ento, da equao (8.3), a diferena do valor da derivada e sua aproximao
representada em ponto flutuante pode ser estimada por:
f (x + h) f (x)
f (x) D+,h f (x) = f (x) (1 + (x,h)) .
0 0
h
f (x + h) f (x) f (x + h) f (x + h)
f (x) D+,h f (x) = f (x) +
0 0
h h
f (x) f (x)
!
+ (1 + )
h
f (x + h) f (x) f (x + h) f (x + h)
= f (x) +
0
h h
f (x) f (x)
!
+ (1 + ) .
h
Exerccios resolvidos
ER 8.1.1. Aproxime a derivada de f (x) = sen (2x) x2 no ponto x = 2 usando a
frmula de diferenas finitas progressiva de ordem 1 com: a) h = 0,1 e b) h = 0,01.
Compute, tambm, o erro absoluto de cada aproximao computada.
Exerccios
0,0 0,50 1,00 1,50 2,00 2,50 3,00 3,50 4,00 4,50 5,00
0,0 1,05 1,83 2,69 3,83 4,56 5,49 6,56 6,11 7,06 8,29
Caso a b c d
vi = 1
vi = 4.5
h2 00 h3
f (x0 + h) = f (x0 ) + hf 0 (x0 ) + f (x0 ) + f 000 (x0 ) + O(h4 )
2 6
h2 00 h3
f (x0 h) = f (x0 ) hf 0 (x0 ) + f (x0 ) f 000 (x0 ) + O(h4 ).
2 6
Somando as duas expresses, temos:
Exerccios
1 h4
f 0 (x0 ) = [f (x0 2h) 8f (x0 h) + 8f (x0 + h) f (x0 + 2h)]+ f (5) ((x0 ))
12h 30
(8.9)
Exemplo 8.3.1. Calcule a derivada numrica de f (x) = ex em x = 1,5 pelas
2
Exerccios
Em construo ... Gostaria de participar na escrita deste livro? Veja como em:
http://www.ufrgs.br/numerico/participe.html
(x)0x = 1 = c1 x 1 + c2 x 2 + . . . + cn x n (8.14)
(x2 )0x = 2x = c1 x21 + c2 x22 + . . . + cn x2n (8.15)
(x3 )0x = 3(x )2 = c1 x31 + c2 x32 + . . . + cn x3n (8.16)
.. .
. = .. (8.17)
(xn1 )0x = (n 1)(x ) n2
= c1 xn1
1 + c1 x1n1 + . . . + cn xnn1 (8.18)
Considere a base polinomial {1 (x), 2 (x), 3 (x)} = {1, x, x2 } e substitua f (x) por
k (x) obtendo
Exerccios resolvidos
Em construo ... Gostaria de participar na escrita deste livro? Veja como em:
http://www.ufrgs.br/numerico/participe.html
Exerccios
E 8.4.4. Seja [x0 ,x1 , . . . ,x4 ] = [2h, h,0,h,2h] e x = 0, obtenha uma regra
de diferenciao para aproximar f 00 (x ).
x y
0 1,95
1 1,67
2 3,71
3 3,37
4 5,12
5 5,79
6 7,50
7 7,55
8 9,33
9 9,41
10 11,48
12
11
10
1
0 1 2 3 4 5 6 7 8 9 10
Exerccios resolvidos
Em construo ... Gostaria de participar na escrita deste livro? Veja como em:
http://www.ufrgs.br/numerico/participe.html
Exerccios
Em construo ... Gostaria de participar na escrita deste livro? Veja como em:
http://www.ufrgs.br/numerico/participe.html
http://www.ufrgs.br/numerico/participe.html
Integrao numrica
n1
IS= Si .
X
i=1
225
226 Clculo Numrico
4.5
3.5
2.5
1.5
0.5
0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
Z 2
(x2 + 1) dx
0
h1 = 2 h1 f (1) = 4
h2 = 1 h2 f (0,5) + h2 f (1,5) = 4,5
h3 = 0,5 4,625
h4 = 0,25 4,65625
Observe que:
#2
8
"
Z 2
x3
(x + 1) dx =
2
+x = + 2 = 4,6666667.
0 3 0
3
i=1
onde Z b
Ai = Li (x) dx. (9.6)
a
1
Utilizaremos neste captulo a notao fi para indicar f (xi ).
Si f (xi )h
tal que a rea total ser aproximada pelas somas de Riemann esquerda
n1 n1
S= Si = f (xi )h
X X
i=1 i=1
i=1
Uma terceira opo utilizar o ponto mdio do intervalo [xi ,xi+1 ] o qual fornece
a regra do ponto mdio
n1
xi + xi+1
S= f (i )h, i = (9.9)
X
.
i=1 2
onde
# x2
(x x1 )2
"
Z b
x x1
A1 = dx =
a x2 x 1 2h x1
(x2 x1 )2 h2 1
= = = h
2h 2h 2
Da mesma forma,
Z b
(x x2 ) 1
A2 = dx = h
a (x1 x2 ) 2
f 00 () Z b
ET RAP = (x x1 )(x x2 ) dx,
2! a
portanto
# x2
f 00 () x3 x2
"
ET RAP = (x2 + x1 ) + x1 x2 x
2 3 2 x1
f ()
00
!
x32 x22 x3 x2
= (x2 + x1 ) + x1 x2 x2 1 + 1 (x2 + x1 ) x1 x2 x1
2 3 2 3 2
f () 2x2 3x2 (x2 + x1 ) + 6x2 x1 2x1 + 3x21 (x2 + x1 ) 6x2 x21
00 3 2 2 3
=
2 6
f 00 () 3 f 00 ()
= x1 3x21 x2 + 3x22 x1 x32 = (x1 x2 )3
12 12
f 00 () 3
= h.
12
Assim, o erro na regra do trapzio
f 00 () 3
ET RAP = h = O(h3 ).
12
Exemplo 9.1.1. Use a regra do trapzio para aproximar a integral
Z 1
2
ex dx.
0
Depois divida a integral em duas
Z 1/2 Z 1
x2 2
e dx + ex dx.
0 1/2
f 00 (x2 ) 2 f (x2 )
000
3 f
(4)
((x))
f (x) = f (x2 )+f (x2 )(xx2 )+
0
(xx2 ) + (xx2 ) + (xx2 )4 ,
2 6 24
onde x1 (x) x3 e integre no intervalo [a,b] = [x1 ,x3 ]:
(x x2 )2 f 00 (x2 )
Z b "
f (x) dx = f (x2 )(x x2 ) + f 0 (x2 ) + (x x2 )3
a 2 6
#x
f 000 (x2 ) 3
+ (x x2 )4
24 x1
1 Z x3
+ f (4) ((x))(x x2 )4 dx,
24 x1
Pelo teorema do valor mdio, existe x1 x3 tal que
(x x2 )2 f 00 (x2 )
Z b "
f (x) dx = f (x2 )(x x2 ) + f 0 (x2 ) + (x x2 )3
a 2 6
#x3
f 000 (x2 )
+ (x x2 )4
24 x1
f (4) () Z x3
+ (x x2 )4 dx
24 x1
(x x2 )2 f 00 (x2 )
"
= f (x2 )(x x2 ) + f 0 (x2 ) + (x x2 )3
2 6
#x3
f 000 (x2 )
+ (x x2 )4
24 x1
f (4)
() h i x3
+ (x x2 )5 .
120 x1
(x3 x2 )4 (x1 x2 )4 = 0
e
(x3 x2 )5 (x1 x2 )5 = 2h5 ,
temos Z b
h3 00 h5 f (4) ()
f (x) dx = hf (x2 ) +
f (x2 ) + .
a 3 60
Usando a frmula de diferenas finitas centrais para a derivada segunda:
f (x1 ) 2f (x2 ) + f (x3 ) h2 (4)
f 00 (x2 ) = + f (2 ),
h2 12
x1 2 x3 , temos
f (x1 ) 2f (x2 ) + f (x3 ) h2 (4)
!
Z b
h3
f (x) dx = 2hf (x2 ) + + f (2 )
a 3 h2 12
h5 f (4) ()
+
60
h h5 1 (4) 1
= (f (x1 ) + 4f (x2 ) + f (x3 )) f (2 ) f (4) () .
3 12 3 5
Pode-se mostrar que possvel escolher 3 que substitua e 2 com a seguinte
estimativa
Z b
h h5
f (x) dx =
(f (x1 ) + 4f (x2 ) + f (x3 )) f (4) (3 ).
a 3 90
Exemplo 9.1.3. Use a regra de Simpson para aproximar a integral
Z 1
2
ex dx.
0
Exerccios
Verifique o mtodo de Simpson pode ser entendido como uma mdia aritmtica
ponderada entre os mtodos de trapzio e ponto mdio. Encontre os pesos envol-
vidos. Explique o que so os mtodos compostos.
mtodo para obter regras de quadratura, que torna-se bastante til para quando
temos muitos pontos ou quando o intervalo entre os pontos no uniforme.
Dados n pontos [t1 ,t2 , . . . ,tn ], queremos obter uma aproximao para
Z b
f (t) dt w1 f (t1 ) + w2 f (t2 ) + . . . + wn f (tn ) (9.16)
a
b 2 a2
(t2 /2)|ba = = w1 t1 + w2 t2 + . . . + wn tn (9.19)
2
b 3 a3
(t3 /3)|ba = = w1 t21 + w2 t22 + . . . + wn t2n (9.20)
3
.. ..
.=. (9.21)
n n
b a
= w1 tn1
1 + w2 t2n1 + . . . + wn tn1
n (9.22)
n
que pode ser escrito na forma matricial
1 1 ... 1 w1 b a
b2 a2
t1 t2 ... tn w
2
2
= (9.23)
3 3
t21 t22 ... t2n b a
w3
3
.. .. .. .. ..
. . .
.
.
n n
b a
tn1
1 tn1
2 . . . tn1
n wn n
2
Por exemplo, se n = 2, ento a regra exata para retas.
function S=simpson(a,b,n)
h=(b-a)/n // n numero de intervalos
x=linspace(a,b,n+1)
S=0
for i=1:n
x1=x(i)
x3=x(i+1)
x2=x1+h/2
A1 =1/6; A2 =4/6; A3=1/6
dS =(A1*f(x1)+A2*f(x2)+A3*f(x3))*h
S=S+dS
end
endfunction
function y=f(x)
y=exp(x)
endfunction
Z b Ni
hX
f (x) dx [f (xk ) + f (xk+1 )]
a 2 k=1
h
= [f (x1 ) + 2f (x2 ) + 2f (x3 ) + + 2f (xNi ) + f (xNi +1 )]
2
Ni
h
= [f (x1 ) + f (xNi +1 )] + h f (xi )
X
2 i=2
y = y + f(x(2*n+1))
y = h*y/3
endfunction
Z 2
2
x2 ex dx
0
Exerccios
nmeros de pontos:
R 1 21
x (1 x)4 dx
R 1 4x2 R1 1 R1 4
n h 0 e dx 0 1+x2 dx 0 0 e
x +1 dx
17 0.4409931
33 0.4410288
65 0.4410377
129 0.4410400
257 0.4410405
513 0.4410406
1025 0.4410407 0.7853981 1.5873015873016 103 4.6191723776309 101
!1
Z 1
x2 x2
x ln(x) dx = ln x = 1/4
2 4
0
0
b) Use a identidade
Z 1 Z 1 Z 1
ln(x) sen (x) dx = ln(x)x dx + ln(x) [sen (x) x] dx
0 0 0
2 1
!
x2 x Z 1
= ln x + ln(x) [sen (x) x] dx
2 4 0 0
1 Z1
= + ln(x) [sen (x) x] dx
4 0
com n = 2, n = 3, n = 4, n = 5, n = 6 e n = 7.
Defina I(h) a aproximao desta integral pelo mtodo dos trapzios composto com
malha de largura constante igual a h. Aqui h = ba
Ni
para algum Ni inteiro, i.e.:
Ni
h ba
I(h) = f (a) + 2 f (xj ) + f (b) , Ni =
X
2 j=2 h
Teorema 9.4.1. Se f (x) uma funo analtica no intervalo (a,b), ento a funo
I(h) admite uma representao na forma
I(h) = I0 + I2 h2 + I4 h4 + I6 h6 + . . .
I(h) = I0 + I2 h2 + I4 h4 + I6 h6 + . . .
!
h h2 h4 h6
I = I0 + I2 + I4 + I6 + . . .
2 4 16 64
4I(h/2) I(h) 1 5
= I0 I4 h4 I6 h6 + . . .
3 4 16
Vamos agora aplicar a frmula para h = b a,
h
I(h) = [f (a) + f (b)]
2
h a+b
I(h/2) = [f (a) + 2f (c) + f (b)] , c =
4 2
4I(h/2) I(h) h h
= [f (a) + 2f (c) + f (b)] [f (a) + f (b)]
3 3 6
h
= [f (a) + 4f (c) + f (b)]
6
Observe que esquema coincide com o mtodo de Simpson.
R1,1 = I(h)
R2,1 = I(h/2)
R3,1 = I(h/4)
..
.
Rn,1 = I(h/2n1 )
Ou seja, temos: Z 2
2
x2 ex dx 46,371847
0
com uma aproximao de ordem 12.
Exerccios
a)
R 1 x2
0 e dx
R2q
b) 0 2 cos(x) dx
c)
R2
0
1
dx
2cos(x)
j=1
j=1
c) Mtodo de Simpson
a+b
" ! #
Z b
ba
f (x) dx f (a) + 4f + f (b)
a 2 6
2(b a) a+b
!
ba ba
= f (a) + f + f (b)
6 3 2 6
3
:= wj f (xj )
X
j=1
j=1
j=1 a
ou, equivalentemente:
n Z b
bk+1 ak+1
wj xkj = xk dx = k = 0,1, . . . n
X
,
j=1 a k+1
j=1
onde wj = ba
2
, x1 = a e x2 = b.
(k = 0) : wj = b a
Pn
j=1
b2 a2
(k = 1) : wj xj = (a + b) ba =
Pn
j=1 2 2
b3 a3
(k = 2) : wj x2j = (a2 + b) 2 =
Pn 2 ba
j=1 6 3
onde w1 = w3 = ba
6
,w2 = 4 ba
6
, x1 = a, x2 = a+b
2
e x3 = b
(k = 0) : wj = (1 + 4 + 1) ba =ba
Pn
j=1 6
b2 a2
(k = 1) : wj xj = (a + 4 a+b + b) ba = (a + b) ba =
Pn
j=1 2 6 2 2
2
b3 a3
(k = 2) : wj x2j = (a2 + 4 + b2 ) ba =
Pn a+b
j=1 2 6 3
3
b4 a4
(k = 3) : j=1 wj xj = (a + 4 + b3 ) ba =
Pn 3 3 a+b
2 6 4
4
b5 a5
(k = 4) : j=1 wj xj = (a + 4 + b4 ) ba 6=
Pn 4 4 a+b
2 6 4
w1 x2 x3
= = 23
w2 x1 x1
Como x1 6= x2 , temos x1 = x2 e w1 = w2 . Da primeira equao, temos w1 =
w2 = 1. Da terceira equao, temos x1 = x2 = 33 .
Esse esquema de ordem de preciso trs e dois pontos chama-se quadratura de
Gauss-Legendre com dois pontos:
! !
Z 1
3 3
f (x) dx = f +f
1 3 3
Exemplo 9.5.5. Comparao
e1 + 4e0 + e1 3 3 3
e e1 e1 +e e +e 3
ex 3
2,35040 3,08616 2,36205 2,34270
16 4
p
9 9 2
x2 3 + x3 3,41421 1,13807 1,15411
1,14924
3
ee1
x2 e x 3 0,78347 3,08616 1,02872 0,67905
Exerccios
n tj wj
1 0 2
3
2 1
3
8
0
3 s
9
3 5
5 9
s
q
3 2 6/5 /7 18+ 30
36
4 s
q
3 + 2 6/5 /7 18 30
36
128
0
225
v s
1u 10 322 + 13 70
u
5
t
52
3 7 900
v s
1u 10 322 13 70
u
5+2
t
3 7 900
//G-L n=2
x2 = sqrt(3)/3
w2 = 1
I2 = w2(1)*f(x2(1)) + w2(1)*f(-x2(1))
disp(I2)
//G-L n=3
x3 = [0 -sqrt(3/5) sqrt(3/5)]
w3 = [8/9 5/9 5/9]
I3 = w3(1)*f(x3(1)) + w3(2)*f(x3(2)) + w3(2)*f(-x3(2))
disp(I3)
//G-L n=4
x4 = [sqrt((3-2*sqrt(6/5))/7) sqrt((3+2*sqrt(6/5))/7)]
w4 = [(18+sqrt(30))/36 (18-sqrt(30))/36]
I4 = w4(1)*f(x4(1)) + w4(1)*f(-x4(1)) ...
+ w4(2)*f(x4(2)) + w4(2)*f(-x4(2))
disp(I4)
//G-L n=5
x5 = [0 1/3*sqrt(5-2*sqrt(10/7)) 1/3*sqrt(5+2*sqrt(10/7))]
w5 = [128/225 (322+13*sqrt(70))/900 (322-13*sqrt(70))/900]
I5 = w5(1)*f(x5(1)) + w5(2)*f(x5(2)) + w5(2)*f(-x5(2)) ...
+ w5(3)*f(x5(3)) + w5(3)*f(-x5(3))
disp(I5)
Mudana de intervalo
Os coeficientes da quadratura de Gauss-Legendre foram obtidos no intervalo
[1,1]. Para aproximar a integral de f (x) no intervalo [a,b] devemos fazer a mu-
dana de varivel
xi = ti + , = (b a)/2, = (b + a)/2
tal que
Z b n
f (x) dx wi f (xi )(b a)/2
X
a i=1
Quando subdividimos o intervalo inicial [a,b] em N intervalos com extremos
[xi ,xi+1 ] a transformao torna-se
xi = ti + , = (xi+1 xi )/2, = (xi+1 + xi )/2
e Z xi+1 n
f (x) dx wi f (xi )(xi+1 xi )/2
X
xi i=1
E, ento aplicamos a quadratura gaussiana nesta ltima integral, o que nos fornece
I 1,1478011. No Scilab, podemos computar estas aproximaes com o seguinte
cdigo:
deff('y = f(u)', 'y = sqrt(1+(u+1)^2/4)/2')
x3 = [0 -sqrt(3/5) sqrt(3/5)]
w3 = [8/9 5/9 5/9]
I3 = f(x3(1))*w3(1) + f(x3(2))*w3(2) + f(-x3(2))*w3(2)
disp(I3)
w1=5/9; t1=-sqrt(3/5);
w2=8/9; t2=0;
w3=w1; t3=-t1;
S=0
for i=1:n
alpha=(x(i+1)-x(i))/2
bet =(x(i+1)+x(i))/2
x1=alpha*t1+bet;
x2=alpha*t2+bet;
x3=alpha*t3+bet;
A =(w1*f(x1)+w2*f(x2)+w3*f(x3))* h/2
S=S+A
end
endfunction
Exerccios
R 1 ex R 1 ex
E 9.7.3. Calcule as integrais 0 |x|1/4 dx e 0 |x|4/5 dx usando procedimentos
analticos e numricos.
E 9.7.4. Use a tcnica de integrao por partes para obter a seguinte identi-
dade envolvendo integrais imprprias:
Z
cos(x) Z
sen (x)
I= dx = dx.
0 1+x 0 (1 + x)2
c) Melhore sua cultura geral: A lei de Dulong-Petit para o calor especfico dos s-
lidos precede a teoria de Debye. Verifique que a equao de Debye consistente
com Dulong-Petit, ou seja:
lim Cv = 3N kB .
T
Exemplo 10.0.2.
du
=u (10.4)
dt
u(0) = a (10.5)
Exemplo 10.0.3.
du
= sen (u2 + sen (t)) (10.6)
dt
u(0) = a (10.7)
259
260 Clculo Numrico
A soluo do segundo exemplo fcil de ser obtida: u(t) = aet . Porm como
podemos resolver o terceiro problema?
Muitos problemas de valor inicial da forma (10.1) no podem ser resolvidos
exatamente, ou seja, sabe-se que a soluo existe e nica, porm no podemos
express-la em termos de funes elementares. Por isso necessrio calcular apro-
ximaes numricas. Diversos mtodos completamente diferentes esto disponveis
para aproximar uma funo real.
Existem vrias maneiras de obter aproximaes para a soluo deste problema.
Nos limitaremos a estudar mtodos que aproximam u(t) em um conjunto finito de
valores de t chamado malha que ser denotado por {ti }N i=1 = {t1 , t2 , t3 , . . . , tN }.
Desta forma, aproximamos a soluo u(ti ) por ui em cada ponto da malha usando
diferentes esquemas numricos.
Exerccios resolvidos
Em construo ... Gostaria de participar na escrita deste livro? Veja como em:
http://www.ufrgs.br/numerico/participe.html
Exerccios
Em construo ... Gostaria de participar na escrita deste livro? Veja como em:
http://www.ufrgs.br/numerico/participe.html
Itere a frmula
%---------------------------
function [u,t]=euler(h,Tmax)
u(1)= 8;
t(1)= 0;
itmax = Tmax/h;
for n=1:itmax
t(n+1)= t(n) + h;
u(n+1)= u(n) + h*(-0.5*u(n)+2+t(n));
end
plot(t,u,'g*-');
%---------------------------
O termo u(1u)
1
pode ser decomposto em fraes parciais como 1
u
+ 1u
1
e chegamos
na seguinte equao diferencial:
1 1
+ du = dt.
u 1u
u
ln =t
1u
Equivalente a
u
= et
1u
e
u = (1 u)et
Colocando o termo u em evidncia, encontramos:
(1 + et )u = et (10.27)
t
E, finalmente, encontramos a soluo exata dada por u(t) = 1+e
e
t.
uk+1 = uk + huk (1 uk ),
u1 = 1/2.
u0 (t) = u(t) + t
u(0) = 1,
Tabela 10.1: Tabela comparativa entre mtodo de Euler e soluo exata para
problema 10.2.3.
t Exato Euler h = 0,1 Euler h = 0,01
0 1/2 0,5 0,5
e1/2
1/2 1+e1/2
0,6224593 0,6231476 0,6225316
1 e
1+e
0,7310586 0,7334030 0,7312946
e2
2 1+e2
0,8807971 0,8854273 0,8812533
3
3 e
1+e3
0,9525741 0,9564754 0,9529609
uk+1 = uk + h(uk + tk )
u1 = 1
Comparao
e obtemos
obtemos
h2 00
|en+1 | |en | + h|f (tn ,u(tn ) + en ) f (tn ,u(tn ))| + |un | + O(h3 )(10.35)
2
h2 00
|en | + hL|u(tn ) + en u(tn )| + |un | + O(h3 ) (10.36)
2
h2
|en | + hL|en | + |u00n | + O(h3 ) (10.37)
2
h2
(1 + hL)|en | + |u00n | + O(h3 ) (10.38)
2
Exerccios resolvidos
Em construo ... Gostaria de participar na escrita deste livro? Veja como em:
http://www.ufrgs.br/numerico/participe.html
Exerccios
10.3.1 Convergncia
Um mtodo dito convergente se para toda EDO com f Lipschitz e todo
t > 0 temos que
lim |un u(tn )| = 0, n
h0
Convergncia significa que a soluo numrica tende a soluo do PVI.
Teorema 10.3.1. O mtodo de Euler convergente.
De fato, se f Lipschitz e |e0 | = 0, temos que
lim |en+1 | = limh0 O(h) = 0 (10.42)
h0
10.3.2 Consistncia
Definio 10.3.1. Dizemos que um mtodo numrico Rh (un ) = f consistente
com o PVI u0 (t) = f se para qualquer u(t)
lim |u0 (tn ) Rh (un )| = 0, n (10.43)
h0
Isto equivalente a
ET L
lim =0 (10.44)
h0 h
10.3.3 Estabilidade
Definio 10.3.2. Um mtodo numrico estvel se
|un vn | C1 |u1 v1 |, n
Isto significa que dadas duas condies iniciais u1 e v1 , teremos que as solues
un e vn estaro a uma distncia limitada por uma constante C1 vezes |u1 v1 |. Se
u1 e v1 estiverem prximas ento un e vn esto tambm prximas dependendo da
constante C1 (obviamente C1 depende da funo f ).
Considere o PVI linear bem-posto
u0 (t) = u(t), u(0) = 1, (10.45)
onde C. Note que:
Exerccios resolvidos
Em construo ... Gostaria de participar na escrita deste livro? Veja como em:
http://www.ufrgs.br/numerico/participe.html
Exerccios
Em construo ... Gostaria de participar na escrita deste livro? Veja como em:
http://www.ufrgs.br/numerico/participe.html
EulImp = O(h ).
ET Ln+1 2
EulImp = O(h).
ET Gn+1
ou ainda,
{z C : <z < 0} D
Z t2
u(t2 ) = u(t1 ) + f (t,u(t)) dt (10.68)
t1
1 1
u2 = u1 + (t2 t1 ) f (t1 ,u1 ) + f (t2 ,u2 ) (10.69)
2 2
motivando o mtodo trapezoidal
h
un+1 = un + (f (tn ,un ) + f (tn+1 ,un+1 )) (10.70)
2
O mtodo trapezoidal dito implcito, pois para obter un+1 necessrio calcular
f (tn+1 ,un+1 ).
Entretanto, pode ser mostrado que o erro de truncamento local
T rap = O(h )
ET Ln+1 3
T rap = O(h )
ET Gn+1 2
Exerccios resolvidos
Em construo ... Gostaria de participar na escrita deste livro? Veja como em:
http://www.ufrgs.br/numerico/participe.html
Exerccios
Em construo ... Gostaria de participar na escrita deste livro? Veja como em:
http://www.ufrgs.br/numerico/participe.html
Heun = O(h )
ET Ln+1 3
Heun = O(h )
ET Gn+1 2
Exerccios resolvidos
Em construo ... Gostaria de participar na escrita deste livro? Veja como em:
http://www.ufrgs.br/numerico/participe.html
Exerccios
Exerccios resolvidos
Em construo ... Gostaria de participar na escrita deste livro? Veja como em:
http://www.ufrgs.br/numerico/participe.html
Exerccios
Em construo ... Gostaria de participar na escrita deste livro? Veja como em:
http://www.ufrgs.br/numerico/participe.html
Exerccios resolvidos
Em construo ... Gostaria de participar na escrita deste livro? Veja como em:
http://www.ufrgs.br/numerico/participe.html
Exerccios
Em construo ... Gostaria de participar na escrita deste livro? Veja como em:
http://www.ufrgs.br/numerico/participe.html
z2 z3 zp
p(z) = 1 + z + + + ... + (10.78)
2! 3! p!
du
= sen t (10.80)
dt
u(0) =1 (10.81)
para t [0,10].
a. Plote a soluo para h = 0.16,0.08, 0.04, 0.02, 0.01 para o mtodo de Taylor
de ordem 1, 2 e 3. (Plote todos de ordem 1 no mesmo grfico, ordem 2 em
outro grfico e ordem 3 outro grfico separado.)
c. Fixe agora o valor h = 0.02 e plote no mesmo grfico uma curva para cada
mtodo.
Exerccios resolvidos
Em construo ... Gostaria de participar na escrita deste livro? Veja como em:
http://www.ufrgs.br/numerico/participe.html
Exerccios
Em construo ... Gostaria de participar na escrita deste livro? Veja como em:
http://www.ufrgs.br/numerico/participe.html
e teremos
Exerccios resolvidos
Em construo ... Gostaria de participar na escrita deste livro? Veja como em:
http://www.ufrgs.br/numerico/participe.html
Exerccios
Em construo ... Gostaria de participar na escrita deste livro? Veja como em:
http://www.ufrgs.br/numerico/participe.html
Para isso devemos obter [b3 ,b2 ,b1 ,b0 ] tal que o mtodo seja exato para polinmios
at ordem 3. Podemos obter esses coeficientes de maneira anloga a obter os
coeficientes de um mtodo para integrao.
Supondo que os ns tk estejam igualmente espaados, e para facilidade dos
clculos, como o intervalo de integrao [tn+3 ,tn+4 ], translade tn+3 para a origem
tal que [tn ,tn+1 , . . . ,tn+4 ] = [3h, 2h, h,0,h].
Considere a base [0 (t), . . . ,3 (t)] = [1,t,t2 ,t3 ] e substitua f (t) por k (t) obtendo
Z h
1 dt = h = h(b0 (1) + b1 (1) + b2 (1) + b3 (1))
0
Z h h2
t dt = = h(b0 (0) + b1 (h) + b2 (2h) + b3 (3h))
0 2
Z h
h3
t2 dt = = h(b0 (0)2 + b1 (h)2 + b2 (2h)2 + b3 (3h)2 )
0 3
Z h
h4
t3 dt = = h(b0 (0)3 + b1 (h)3 + b2 (2h)3 + b3 (3h)3 )
0 4
un+4 = un+3 + h
24
[55fn+3 59fn+2 + 37fn+1 9fn ] (10.94)
Exerccios resolvidos
Em construo ... Gostaria de participar na escrita deste livro? Veja como em:
http://www.ufrgs.br/numerico/participe.html
Exerccios
un+3 = un+2 + h
12
[23fn+2 16fn+1 + 5fn ] (10.96)
Para isso devemos obter [b3 ,b2 ,b1 ,b0 ] tal que o mtodo seja exato para polinmios
at ordem 3. Podemos obter esses coeficientes de maneira anloga a obter os
coeficientes de um mtodo para integrao.
Supondo que os ns tk estejam igualmente espaados, e para facilidade dos
clculos, como o intervalo de integrao [tn+2 ,tn+3 ], translade tn+2 para a origem
tal que [tn ,tn+1 , . . . ,tn+3 ] = [2h, h,0,h].
Considere a base [0 (t), . . . ,3 (t)] = [1,t,t2 ,t3 ] e substitua f (t) por k (t) obtendo
Z h
1 dt = h = h(b0 (1) + b1 (1) + b2 (1) + b3 (1))
0
Z h h2
t dt = = h(b0 (h) + b1 (0) + b2 (h) + b3 (2h))
0 2
Z h
h3
t2 dt = = h(b0 (h)2 + b1 (0)2 + b2 (h)2 + b3 (2h)2 )
0 3
Z h
h4
t3 dt = = h(b0 (h)3 + b1 (0)3 + b2 (h)3 + b3 (2h)3 )
0 4
que pode ser escrito na forma matricial
1 0 1 1 b0 1
1 0 1 2 b1 1/2
= (10.101)
1 0 1 4 b2 1/3
1 0 1 8 b3 1/4
un+3 = un+2 + h
24
[9fn+3 + 19fn+2 5fn+1 + fn ] (10.102)
Exerccios resolvidos
Em construo ... Gostaria de participar na escrita deste livro? Veja como em:
http://www.ufrgs.br/numerico/participe.html
Exerccios
Exerccios
Exerccios resolvidos
Em construo ... Gostaria de participar na escrita deste livro? Veja como em:
http://www.ufrgs.br/numerico/participe.html
Exerccios
un un+1
| |
tn tn+1
1 2
Z tn+1
un+1 = un + f (t,u(t)) dt (10.115)
tn
Z 1
= un + h f (tn + h,u(tn + h )) d (10.116)
0
= un + h bj f (tn + cj h,u(tn + cj h)) (10.117)
X
j=1
U1 = un (10.118)
U2 = un + ha21 F1 (10.119)
U3 = un + ha31 F1 + ha32 F2 (10.120)
un+1 = un + h[b1 F1 + b2 F2 + b3 F3 ] (10.121)
10.16.2 Mtodo de RK = 2
Assumindo suavidade suficiente em f , expanda em srie de Taylor
ut = f (t,u) (10.127)
utt = ft + fu ut = ft + fu f (10.128)
h2
u(tn+1 ) = un + hut + utt + O(h3 ) (10.129)
2
h2
= un + hfn + [ft + fu f ] + O(h3 ) (10.130)
2
e comparando com (10.126) obtemos as condies para ordem p 2,
1
b1 + b2 = 1, b2 c2 = a21 = c2 (10.131)
2
O sistema possui mais de uma soluo. Algumas escolhas comuns so
0 0 0
1
2
1
2
, 3 3
2 2
e 1 1
0 1 1
4
3
4
1
2
1
2
onde a ltima tabela fornece o mtodo de Heun (ou Euler modificado):
U1 = un (10.132)
U2 = un + hF1 (10.133)
1 1
un+1 = un + h[ F1 + F2 ] (10.134)
2 2
Note que o mtodo de ordem p = 2 pois os termos que sobraram so de O(h3 ).
Seguindo um procedimento similar, podemos obter as condies para um m-
todo com = 3 e ordem p = 3, que so
b1 + b2 + b3 = 1, b2 c2 + b3 c3 = 1
2
(10.135)
1
b2 c22 + b3 c23 = , b3 a32 c2 = 16 (10.136)
3
Alguns exemplos de mtodos de RK de 3 estgios so o mtodo clssico de
Runge-Kutta
0
1 1
2 2
1 1 2
1 4 1
6 6 6
e o mtodo de Nystrom
0
2 2
3 3
2
3
0 2
3
2 3 3
8 8 8
Com pacincia e a ajuda de um software algbrico (como Maple) possvel
encontrar um mtodo de quarta ordem e = 4 estgios como
0
1 1
2 2
1
2
0 1
2
1 0 0 1
1 2 2 1
6 6 6 6
i=1
Raramente temos a soluo exata u(t) para calcular o erro obtido na soluo
numrica. Entretanto, se a soluo suave o suficiente e o espaamento h pequeno
suficientemente, podemos usar o seguinte procedimento para estimar a ordem do
mtodo (ou ainda, o erro na soluo).
Como visto nos exemplo numricos anteriores, em grficos na escala loglog,
se h grande no obtemos a ordem de convergncia utilizada (por exemplo, en-
contramos que o mtodo de Euler possui ordem p 0.7 onde deveria ser 1). A
medida que h decresce se aproximando de 0, a ordem de convergncia tende a se
aproximar de p 1. (Entretanto h no pode ficar muito pequeno a ponto que as
operaes de ponto flutuante atrapalhem na convergncia).
Portanto existe uma faixa hmin < h < hmax onde o mtodo apresenta a ordem
desejada. Essa regio depende do mtodo e do PVI estudado.
Mas se estivermos nessa regio podemos aproximar a ordem do mtodo da se-
guinte forma: Considere a soluo para um determinado t = T fixo, u(T ). Consi-
dere tambm as aproximaes das solues obtidas com espaamento h, denotada
por uh ; a aproximao obtida com espaamento dividido por 2, h/2, denotada por
uh/2 ; a aproximao obtida com espaamento h/4, denotada por uh/4 ,. . . e assim
por diante, todas calculadas em t = T .
10.17.1 Mtodo 1
Podemos utilizar uma soluo bem refinada, por exemplo, uh/16 como sendo
uma boa aproximao da soluo exata e supormos que u = uh/16 . Desta forma
podemos aproximar o erro por eh = ku(h) u k e a ordem do mtodo estimada
10.17.2 Mtodo 2
Segundo Ferziger/Peric/Roache, podemos tambm estimar p diretamente de
kuh/2 uh k
log
kuh/4 uh/2 k
p log(2)
(10.148)
(10.149)
Exerccios
x0 = y
y0 = x
x(0) = 1
y(0) = 0,
y 00 + y 0 + y = cos(t),
y(0) = 1,
y 0 (0) = 0,
sistema:
y0 = w
w0 = w y + cos(t)
y(0) = 1
w(0) = 0
Exerccios
v 0 = g v 2
d2 (t) g
+ sen ((t)) = 0
dt2 l
onde g o mdulo da acelerao da gravidade e l o comprimento da haste.
mantida constante.
dV
= V V 3 /3 W + I
dt
dW
= 0.08(V + 0.7 0.8W )
dt
onde I a corrente de excitao.
Resolva numericamente o sistema com condies iniciais dadas por (V0 ,W0 )
e
I=0
I = 0.2
I = 0.4
I = 0.8
I = et/200
du(t)
= u(t) + et
dt
u(0) = 0
b) Calcule o valor produzido por cada um desses mtodo para u(1) com passo
h = 0.1, h = 0.05, h = 0.01, h = 0.005 e h = 0.001. Complete a tabela com
os valores para o erro absoluto encontrado.
Problemas de Valores de
Contorno
onde ua e ub so dados. Por ter fixados os valores da varivel u nos contornos, este
chamado de PVC com condies de Dirichlet1 .
A resoluo de um tal problema pelo mtodo de elementos finitos consiste em
quatro etapas fundamentais: 1. construo da malha, 2. construo do problema
discreto, 3. resoluo do problema discreto e 4. visualizao e interpretao dos
resultados.
1. Construo da malha. A malha consiste em uma representao discreta
do domnio [a, b]. Como veremos, sua construo tem impacto direto nas prximas
1
Johann Peter Gustav Lejeune Dirichlet, 1805 - 1859, matemtico alemo.
294
11.1. MTODO DE DIFERENAS FINITAS 295
etapas do mtodo. Aqui, vamos construir a malha mais simples possvel, aquela que
consiste de N pontos igualmente espaados, isto , a chamada malha uniforme.
Para tanto, seja N N dado e, ento, tomamos o seguinte conjunto discreto
PN = {x1 , x2 , . . . , xN } (a malha), onde
xi = a + (i 1)h, i = 1, 2, . . . , N,
com
ba
h :=,
N 1
o qual chamado de tamanho (ou passo) da malha (veja a figura 11.1).
2. Construo do problema discreto. A segunda etapa consiste na discre-
tizao das equaes, no nosso caso, das equaes (11.1)-(11.3).
Vamos comear pela equao (11.1). Em um ponto da malha xi , i = 2, 3, . . . , N
1, temos
uxx (xi ) = f (xi , u(xi )).
Usando a frmula de diferenas finitas central de ordem 2 para a segunda derivada,
temos
u(xi h) 2u(xi ) + u(xi + h)
!
+ O(h2 ) = f (xi , u(xi )).
h2
Rearranjando os termos, obtemos
u(xi h) 2u(xi ) + u(xi + h)
2
= f (xi , u(xi )) + O(h2 ).
h
Agora, denotando por ui a aproximao numrica de u(xi ), a equao acima
nos fornece
1 2 1
2
ui1 2 ui + 2 ui+1 = f (xi , ui ), (11.4)
h h h
para i = 2, 3, . . . , N 1. Observamos que trata-se de um sistema de N incgnitas,
a saber ui , e de N 2 equaes, isto , um sistema subdeterminado.
Para obtermos um sistema determina, aplicamos as condies de contorno. Da
condio de contorno dada na equao (11.2), temos
u(a) = ua u1 = ua . (11.5)
xi = (i 1)h, i = 1, 2, . . . , N,
a = 0
b = 1
N = 11
h = (b-a)/(N-1)
x = linspace(a,b,N)
Completamos este sistema com as condies de contorno dadas nas equaes (11.11)
e (11.12), donde
u1 = uN = 0.
Ou seja, obtemos o seguinte problema discreto:
u1 = 0, (11.13)
1
(ui+1 2ui + ui+1 ) = 100(xi 1)2 , i = 2, . . . , N 1, (11.14)
h2
uN = 0. (11.15)
Observamos que este um sistema linear N N , o qual pode ser escrito na forma
matricial Au = b, cujos matriz de coeficientes
1 0 0 0 0 0
1 2 1 0 0 0
A= 0 1 2 1 0 0 ,
.. .. .. .. .. .. ..
. . . . . . .
0 0 0 0 0 1
0
u1
100h (x2 1)2
2
u2
u= u3 e b= 100h2 (x3 1)2
.
.. ..
. .
uN 0
A(1,1) = 1
b(1) = 0
for i = 2:N-1
A(i,i-1) = 1
A(i,i) = -2
A(i,i+1) = 1
b(i) = -100 * h^2 * (x(i)-1)^2
end
A(N,N) = 1
b(N) = 0
3. Resoluo do problema discreto. Neste caso, o problema discreto
consiste no sistema linear Au = b e, portanto, a soluo
u = A1 b. (11.16)
(x 1)3
uxx = 100(x 1)2 ux + c1 = 100
3
(x 1)4
u + c2 x + c1 = 100 ,
12
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com
11.1. MTODO DE DIFERENAS FINITAS 299
Figura 11.2: Esboo dos grficos das solues analtica (linha) e numrica (pontos)
do PVC dado no exemplo 11.1.1.
(x 1)4
ou seja, u(x) = + c2 x + c1 . As constantes so determinadas pelas
12
condies de contorno dadas pelas equaes (11.11) e (11.12), isto :
100
u(0) = 0 c1 = ,
12
100
u(1) = 0 c2 = .
12
Portanto, a soluo analtica :
(x 1)4 x 100
u(x) = 100 100 + (11.17)
12 12 12
A figura 11.2 mostra o esboo dos grficos das solues analtica (11.17) e a da
soluo numrica (11.16).
No Scilab, podemos fazer o esboo das solues analtica e numrica da se-
guinte forma:
//def. sol. analitica
deff('y = ue(x)','y = -100.0*(x-1).^4/12 - 100*x/12 + 100.0/12')
//grafico
xx = linspace(0,1)
yy = ue(xx)
Tabela 11.1: Erro absoluto mdio das solues numricas com N = 11 e N = 101
do PVC dado no exemplo 11.1.1.
N h E
11 0,1 1,3 102
101 0,01 1,4 104
plot(x,u,'ro',xx,yy,'b-')
Por fim, computamos o erro absoluto mdio das solues numricas com N = 11
e N = 101. A tabela 11.1 mostra os resultados obtidos. Observamos, que ao dimi-
nuirmos 10 vezes o tamanho da malha h, o erro absoluto mdio diminui aproxima-
damente 100 vezes. Este resultado esperado, pois o problema discreto (11.13)-
(11.15) aproxima o problema contnuo (11.10)-(11.12) com erro de truncamento
de ordem h2 . Verifique!
No Scilab, podemos computar o erro absoluto mdio da seguinte forma:
E = sum(abs(ue(x)' - u))/N
Exerccios Resolvidos
ER 11.1.1. Use o mtodo de diferenas finitas para resolver o seguinte problema
de valor de contorno:
Para tanto, use a frmula de diferenas finitas central de ordem 2 para discretizar
a derivada em uma malha uniforme com passo h = 0,1. Faa, ento, um esboo
do grfico da soluo computada.
Soluo. O passo h uma malha uniforme com N pontos no domnio [0,5, 1,5]
satisfaz:
(b a) (b a)
h= N = + 1.
N 1 h
Ou seja, a malha deve conter N = 11 pontos igualmente espaados. Denotamos
os pontos na malha por xi , onde xi = 0,5 + (i 1)h.
x u x u
0.50 1.000000 1.00 1.643900
0.60 1.143722 1.10 1.745332
0.70 1.280661 1.20 1.834176
0.80 1.410269 1.30 1.908160
0.90 1.531724 1.40 1.964534
1.00 1.643900 1.50 2.000000
u1 = 1
ui1 + (2 + h )ui ui+1 = h2 exi , i = 2, . . . , N 1,
2
uN = 2.
//sistema
A = zeros(N,N)
b = zeros(N,1)
A(1,1) = 1
b(1) = 1
for i = 2:N-1
A(i,i-1) = -1
A(i,i) = 2 + h^2
A(i,i+1) = -1
b(i) = h^2 * exp(x(i))
end
A(N,N) = 1
b(N) = 2
//solucao
u = A\b
//grafico
plot(x,u,'b-o')
Exerccios
http://www.scilab.org/
http://help.scilab.org/docs/5.5.2/pt_BR/index.html
305
306 Clculo Numrico
a) No console temos:
-->editor()
ou, alternativamente:
-->scinotes
s = "Ol Mundo!"
disp(s)
s = "Ol Mundo!"
disp(s)
A.3 Matrizes
No Scilab, matriz o tipo bsico de dados, a qual definida por seu nmero de
linhas, colunas e tipo de dado (real, inteiro, lgico, etc.). Uma matriz A = [ai,j ]m,n
i,j=1
no Scilab definida usando-se a seguinte sintaxe:
A = [ a11 , a12 , ... , a1n ; ...; am1 , am2 , ... , amn ]
Exemplo A.3.1. Defina a matriz:
1 2 3
A=
4 5 6
1. 2. 3.
4. 5. 6.
A seguinte lista contm uma srie de funes que geram matrizes particulares:
eye matriz identidade
linspace vetor de elementos linearmente espaados
ones matriz cheia de uns
zeros matriz nula
A.3.1 O operador :
O operador : cria um vetor linha de elementos. A sintaxe:
v = i:s:j
cria um vetor linha:
v = [i, i + s, i + 2s, . . . , i + ns]
onde n o maior inteiro tal que i + ns j.
Exemplo A.3.2. Veja as seguintes linhas de comando:
-->v = 10:-2:3
v =
10. 8. 6. 4.
-->u = 2:6
u =
2. 3. 4. 5. 6.
1. 1.
1. 1.
1. 1.
2.
nl =
3.
informando que a matriz A tem trs linhas e duas colunas.
Existem vrios mtodos para se acessar os elementos de uma matriz dada A:
a matriz inteira acessa-se com a sintaxe:
A(i,j)
A(i1:i2, j1:j2)
0.6857310
1. 1.
1. 1.
2. 2.
2. 2.
-->A * B
ans =
4. 4.
4. 4.
-->A .* B
ans =
2. 2.
2. 2.
i = 2
if ( i == 1 ) then
disp ( " Hello ! " )
elseif ( i == 2 ) then
disp ( " Goodbye ! " )
elseif ( i == 3 ) then
disp ( " Tchau ! " )
else
disp ( " Au Revoir ! " )
end
for i = 1:5
disp(i)
end
for j = 1:2:8
disp(j)
end
for k = 10:-3:1
disp(k)
end
for i = 1:3
for j = 1:3
disp([i,j])
end
end
s = 0
i = 1
while ( i <= 10 )
s = s + i
i = i + 1
end
A.5 Funes
Alm das muitas funes j pr-definidas no Scilab, podemos definir nossas
prprias funes. Para tanto, existem duas instrues no Scilab:
deff
function
-->f(%pi)
no Scilab.
Alternativamente, definimos a mesma funo com o cdigo:
Verifique!
Exemplo A.5.2. O seguinte cdigo Scilab:
function [z] = h(x,y)
if (x < y) then
z = y - x
else
z = x - y
end
endfunction
define a funo:
y x ,x < y
h(x,y) =
x y ,x y
Exemplo A.5.3. O seguinte cdigo:
function [y] = J(x)
y(1,1) = 2*x(1)
y(1,2) = 2*x(2)
y(2,1) = -x(2)*sin(x(1)*x(2))
y(2,2) = -x(1)*sin(x(1)*x(2))
endfunction
define a matriz jacobiana J(x1 ,x2 ) := (f1 ,f2 )
(x1 ,x2 )
da funo:
A.6 Grficos
Para criar um esboo do grfico de uma funo de uma varivel real y = f (x),
podemos usar a funo plot. Esta funo faz uma representao grfica de pontos
(xi , yi ) fornecidos. O Scilab oferece uma srie de opes para esta funo de forma
que o usurio pode ajustar vrias questes de visualizao. Consulte sobre a funo
plot no manual do Scilab.
Exemplo A.6.1. Veja as seguintes linhas de cdigo:
-->deff('y = f(x)','y = x .^ 3 + 1')
-->x = linspace(-2, 2, 100);
-->plot(x, f(x)); xgrid
E 2.1.3. (101,1)2 .
E 2.1.4. (11,1C)16 .
5 ; b) (45,1)6 .
E 2.1.5. a) (12,31)
E 2.2.1.
a) 2,99792458 105 b) 6,62607 1034
8
c) 6,674 10 d) 9,80665 104
-->printf("%1.7e", 29979.458)
2.9979458e+04
-->printf("%1.5e", 66.2607)
6.62607e+01
-->printf("%1.3e", 0.6674)
6.674e-01
-->printf("%1.5e", 9806.65e1)
9.80665e+04
317
318 Clculo Numrico
E 2.5.1. a) abs = 5,9 104 , rel = 1,9 102 %; b) abs = 105 , rel = 103 %; c) abs = 1, rel = 105 %.
E 2.5.4. a) 2; b) 2.
E 2.5.6. a) abs = 3,46 107 , rel = 1,10 107 ; b) abs = 1,43 104 , rel = 1,00 103 .
E 2.8.1. 2%, deve-se melhorar a medida na varivel x, pois, por mais que o erro relativo seja maior para esta varivel, a
propagao de erros atravs desta variveis muito menos importante do que para a outra varivel.
E 2.8.2. 3,2% pela aproximao ou 3,4% pela segundo mtodo (0,96758 I 1,0342).
E 2.9.1. Quando pequeno, e1/ um nmero grande. A primeira expresso produz um overflow (nmero maior que o
mximo representvel) quando pequeno. A segunda expresso, no entanto, reproduz o limite 1 quando 0+.
2
E 2.9.2. a) 1
2
+ x4! + O(x4 ); b) x/2 + O(x2 ); c) 5 104 x + O(x2 ); d) 4
2
y + O(y 2 ) = 4
2
x + O(x2 )
E 2.9.5. 4,12451228 1016 J; 0,002%; 0,26654956 1014 J; 0,002%; 4,98497440 1013 J; 0,057%; 1,74927914 1012 J;
0,522%.
E 3.1.1.
Observamos que a equao equivalente a cos(x) x = 0. Tomando, ento, f (x) = cos(x) x, temos que f (x) contnua
em [0, /2], f (0) = 1 e f (/2) = /2 < 0. Logo, do teorema de Bolzano 3.1.1, conclumos que a equao dada tem pelo menos
uma soluo no intervalo (0, /2).
E 3.1.2.
No exerccio 3.1.1, mostramos que a funo f (x) = cos(x) x tem um zero no intervalo [0, /2]. Agora, observamos que
f 0 (x) = sen (x)1. Como 0 < sen x < 1 para todo x (0, /2), temos que f 0 (x) < 0 em (0, /2), isto , f (x) monotonicamente
decrescente neste intervalo. Logo, da proposio 3.1.1, temos que existe um nico zero da funo neste intervalo.
E 3.1.3.
k 0,161228
E 3.1.5.
Escolhendo o intervalo [a, b] = [1,841 103 , 1,841 + 103 ], temos f (a) 5 104 > 0 e f (b) 1,2 103 < 0, isto
, f (a) f (b) < 0. Ento, o teorema de Bolzano nos garante que o zero exato x de f (x) est no intervalo (a, b). Logo, da escolha
feita, | 1,841 x | < 103 .
E 3.2.1. 0,6875
E 3.2.2. Intervalo (0,4, 0,5), zero 0,45931. Intervalo (1,7, 1,8), zero 1,7036. Intervalo (2,5, 2,6), zero 2,5582.
E 3.2.6. k = lP
2
cos() com (0, /2); 1,030.
E 3.3.1. 1,8414057
E 3.3.2.
0,7391
E 3.3.3.
Tomemos x(1) = 1 como aproximao inicial para a soluo deste problema, iterando a primeira sequncia a), obtemos:
(1)
x = 1
(2) 10
x = ln = 2,3025851
1
(3) 10
x = ln = 1,4685526
2,3025851
.
.
.
(21)
x = 1,7455151
(31)
x = 1,745528
(32)
x = 1,745528
(1)
x = 1
(2) 1
x = 10e = 3,6787944
(3) 3,6787944
x = 10e = 0,2525340
(4) 0,2525340
x = 10e = 7,7682979
(5) 7,7682979
x = 10e = 0,0042293
(6) 0,0042293
x = 10e = 9,9577961
Este experimento numrico sugere que a iterao a) converge para 1,745528 e a iterao b) no convergente.
E 3.3.10.
0.0431266
cos(x)x2
E 3.4.1. raiz:0,82413, processo iterativo: x(n+1) = x(n) + sen (x)+2x
-->x=1
-->x=x+(cos(x)-x^2)/(sin(x)+2*x)
-->x=x+(cos(x)-x^2)/(sin(x)+2*x)
-->x=x+(cos(x)-x^2)/(sin(x)+2*x)
-->x=x+(cos(x)-x^2)/(sin(x)+2*x)
E 3.4.2.
a) Primeiramente, deve-se observar que a funo tg (x) no est definida quando x um mltiplo mpar de 2
, pelo que
devemos cuidado nas singularidades. Traamos o grfico da funo f (x) = tg (x) 2x2 no Scilab usando os seguintes
comandos:
-->deff('y=f(x)','y=tan(x)-2*x^2')
-->plot([0:.01:1.3],f)
Observamos facilmente uma raiz no intervalo (0,5, 0,6) e outra no intervalo (1,2, 1,3). Como a funo f (x) contnua fora
dos pontos de singularidade da tangente, fcil verificar que existe pelo menos uma soluo nos intervalos dados pelo
teorema de Bolzano 3.1.1:
Para provar a unicidade da soluo em cada intervalo, precisamos mostra que a funo montona, ou seja, a derivada
no muda de sinal em cada intervalo:
0 2 1 1
f (x) = sec (x) 4x = 4x 4 0,5 < 0, x [0,5, 0,6]
cos2 (x) cos2 (0,6)
0 2 1 1
f (x) = sec (x) 4x = 4x 4 1,3 > 0, x [1,2, 1,3]
cos2 (x) cos2 (1,2)
Em relao observao, o erro se deveu falta de cuidado em compreender o problema antes de tentar resolv-lo, em especial,
E 3.4.3. 0,65291864
E 3.4.9.
x0 > 1.
E 3.4.10.
(0)
x = C.I.
(n+1) (n) (n)
x = x 2 Ax
E 3.4.11.
x0 = C.I.
(n+1) (n) 1 A
x = x 1 +
n nx(n)
E 3.4.12.
x0 = C.I.
E 3.6.5. Seja f (x) C 2 um funo tal que f (x ) = 0 e f 0 (x ) 6= 0. Considere o processo iterativo do mtodo das secantes:
Definimos n = xn x , equivalente a xn = x + n
n f (x + n1 ) n1 f (x + n )
n+1 =
f (x + n ) f (x + n1 )
0 2 f 00 (x )
f (x + ) f (x ) + f (x ) +
2
0 2 f 00 (x )
f (x + ) f (x ) +
2
f 00 (x ) f 00 (x )
n n1 f 0 (x ) + 2
n1 2
n1 n f 0 (x ) + 2
n 2
n+1
f (x + n ) f (x + n1 )
f 00 (x )
2
n 2
n1 n1 2
n
=
f (x + n ) f (x + n1 )
1 00 n n1 n1 n
= f (x )
2 f (x + n ) f (x + n1 )
0
0
f (x + n ) f (x + n1 ) f (x ) + f (x )n f (x ) + f (x )n1
(3.6)
0
= f (x )(n n1 )
Portanto:
1 f 00 (x )
n+1 n n1 (3.7)
2 f 0 (x )
ou, equivalentemente:
(n+1) 1 f 00 (x ) (n)
(n1)
x x x x x x (3.8)
2 f 0 (x )
E 3.7.2.
E 3.7.3.
2j+1
z1 0.3252768, z2 1.5153738, z3 2.497846, z4 3.5002901, zj j 1/2 (1)j e , j >4
E 3.7.4.
E 3.7.5.
a) 42 s e 8 min2 s, b) 14 min56 s.
E 3.7.6.
118940992
E 3.7.7.
7,7 cm
E 3.7.8.
4,32 cm
E 3.7.9.
(0,652919, 0,426303)
E 3.7.10.
7,19% ao ms
E 3.7.11.
4,54% ao ms.
E 3.7.12.
E 3.7.13.
E 3.7.14.
1,5318075
E 3.7.15.
E 3.7.16.
a) 332,74 K b) 359,33 K
E 3.7.17.
E 4.1.1.
Portanto x = 2, y = 3, z = 5
E 4.1.5.
a) x = [4 3 2]T
b) O sistema equivalente a
x1 + x2 + (1 + )x3 = 2
x1 + (1 + )x2 + x3 = 3
(1 + )x1 + x2 + x3 = 4
9
(1 + 3)(x1 + x2 + x3 ) = 9 = x1 + x2 + x3 =
1 + 3
9
x3 = 2 1+3
9
x2 = 3 1+3
9
x1 = 4 1+3
Assim, temos:
T 9 T
x = [4 3 2] [1 1 1]
1 + 3
E 4.1.7.
" #
1 1/2 1/2
1/3 1/2 1/6
1/3 0 1/3
E 4.5.1.
a = (0, 1, 2, 1, 2, 1)
b = (5, 3, 4, 2, 3, 2)
c = (4, 1, 1, 1, 2, 0)
d = (13, 10, 20, 16, 35, 17)
x = (1, 2, 3, 4, 5, 6)
E 4.5.2.
a = (0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1/2)
b = (1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1)
c = (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0)
d = (0, cos(2/10), cos(3/10), cos(4/10), cos(5/10),
cos(6/10), cos(7/10), cos(8/10), cos(9/10), cos(1),0)
x = (0,324295, 0,324295, 0,317115, 0,305943, 0,291539,
0,274169, 0,253971, 0,230846, 0,20355, 0,165301, 0,082650)
E 4.6.1.
= 7130
41
51.95122, para = 51: k1 = k = 350.4, k2 = 262.1. Para = 52: k1 = k = 6888, k2 = 5163.
E 4.6.2.
k1 (A) = 36, k2 (A) = 18,26, K (A) = 20,8.
E 4.6.3.
k1 = k = 6888, k2 = 26656567 e k1 = 180, k2 = 128,40972 e k = 210
E 4.6.4.
18 + 3. Quando 0+, a matriz converge para uma matriz singular e o nmero de condicionamento diverge para +.
E 4.6.5.
As solues so [0.0000990 0.0000098]T e [0.0098029 0.0990294]T . A grande variao na soluo em funo de pequena
variao nos dados devido ao mau condicionamento da matriz (k1 1186274.3).
Exemplo de implementao:
J=[1:1:10]
x=sin(J/10)
y=J/10
z=y-y.^3/6
e=abs(x-y)./x
f=abs(x-z)./x
norm(e,1)
norm(e,2)
norm(e,'inf')
norm(f,1)
norm(f,2)
norm(f,'inf')
E 4.7.1.
epsilon=1e-3;
v=[1 1 1 1 1]'
xgauss=gauss([A v])
function x=q_Jacobi()
x0=[0 0 0 0 0]'
i=0
controle=0
while controle<3 & i<1000
i=i+1
x(1)=1+x0(2)
x(2)=(1+x0(3)+x0(1))/2
x(3)=(1+x0(2)+x0(4))/(2+epsilon)
x(4)=(1+x0(3)+x0(5))/2
x(5)=x0(4)-1
delta=norm(x-x0,2)
if delta<1e-6 then
controle=controle+1
else
controle=0
end
mprintf('i=%d, x1=%f, x5=%f, tol=%.12f\n', i, x(1), x(5), delta)
x0=x;
end
endfunction
function x=q_Gauss_Seidel()
x0=[0 0 0 0 0]'
i=0
controle=0
while controle<3 & i<15000
i=i+1
x(1)=1+x0(2)
x(2)=(1+x0(3)+x(1))/2
x(3)=(1+x(2)+x0(4))/(2+epsilon)
x(4)=(1+x(3)+x0(5))/2
x(5)=x(4)-1
delta=norm(x-x0,2)
if delta<1e-2 then
controle=controle+1
else
controle=0
end
mprintf('i=%d, x1=%f, x5=%f, tol=%.12f\n',i,x(1),x(5),delta)
x0=x;
end
endfunction
E 4.7.4.
0,324295, 0,324295, 0,317115, 0,305943, 0,291539, 0,274169, 0,253971, 0,230846, 0,203551, 0,165301, 0,082650
Exemplos de rotinas:
function x=jacobi()
x0=zeros(11,1)
k=0;
controle=0;
while controle<3 & k<1000
k=k+1
x(1)=x0(2)
for j=2:10
x(j)=(cos(j/10)+x0(j-1)+x0(j+1))/5
end
x(11)=x0(10)/2
delta=norm(x-x0) //norma 2
if delta<1e-5 then
controle=controle+1
else
controle=0;
end
mprintf('k=%d, x=[%f,%f,%f], tol=%.12f\n',k,x(1),x(2),x(3),delta)
x0=x;
end
endfunction
function x=gs()
x0=zeros(11,1)
k=0;
controle=0;
while controle<3 & k<1000
k=k+1
x(1)=x0(2)
for j=2:10
x(j)=(cos(j/10)+x(j-1)+x0(j+1))/5
end
x(11)=x0(10)/2
delta=norm(x-x0) //norma 2
if delta<1e-5 then
controle=controle+1
else
controle=0;
end
mprintf('k=%d, x=[%f,%f,%f], tol=%.12f\n',k,x(1),x(2),x(3),delta)
x0=x;
end
endfunction
E 4.7.5.
Permute as linhas 1 e 2.
E 4.8.1.
= 86.1785 associado ao autovetor dado por v1 = [0.65968 0.66834 0.34372]T .
E 4.8.3.
158,726
E 4.9.1.
a)V5 = 98.44V b) V5 = 103.4V
O problema com cinco incgnitas pode ser escrito na forma matricial conforme a seguir:
V1 V
1 0 0 0 0
1 1
V2
0
+ R1 + R1 1 0 0
R1 R1 2 5 R2
0 1 1 + R1 + R1 1 0 =
R2 R2 R3 V3 0
3 6
1 1 + R1 + R1 1
0 0 R3
R3 R4
4 7 v4
0
1 1
0 0 0 R4
R4
+ R1
8
V5 0
Este problema pode ser implementado no Scilab (para o item a) com o seguinte cdigo:
A=[1 0 0 0 0;
1/R1 -(1/R1+1/R2+1/R5) 1/R2 0 0;
0 1/R2 -(1/R2+1/R3+1/R6) 1/R3 0;
0 0 1/R3 -(1/R3+1/R4+1/R7) 1/R4;
0 0 0 1/R4 -(1/R4+1/R8)]
v=[V; 0; 0; 0; 0]
y=A\v
O problema com quatro incgnitas pode ser escrito na forma matricial conforme a seguir:
V
V2 R1
1 + R1 + R1 1 0 0
R1 2 5 R2
1 1
R2
R2
+ R1 + R1 1
R3
0 V3 0
3 6
=
0 1 1 + R1 + R1 1
R3 R3 4 7 R4 v4 0
1 1
0 0 R4
R4
+ R1
8
V5 0
v=[-V/R1; 0; 0; 0]
y=A\v
E 4.9.3.
Dica: P (1) = 3, P (1) = 1 e P (2) = 9 produzem trs equaes lineares para os coeficientes a, b e c. Resp: a)
P (x) = 3x2 + x 5, b) A 2.49 e B 1.29 c)A1 1.2872058, A2 4.3033034, B1 2.051533 e B2 0.9046921.
cos(x) x sen (x) 1
JF =
2e2x+y e2x+y
p
E 5.1.3. As curvas possuem dois pontos de interseco. A posio exata destes pontos de inteseco dada por 2 3 3,2 3 2
p
e 2 3 3,2 3 2 . Use a soluo exata para comparar com a soluo aproximada obtida.
Da condio de tangncia, temos que o coeficiente angular da reta, m, deve igual derivada da funo f (x) nos dois pontos
de tangncia.
0 0
m = f (x1 ) = f (x2 )
E sabemos que:
0 cos(x) sen (x)
f (x) = .
1+x (1 + x)2
function z=f(x,y)
z=x^2/8+(y-1)^2/5-1
endfunction
function z=g(x,y)
z=atan(x)+x-y-y^3
endfunction
contour([-3:.1:3],[-2:.1:4],f,[0 0])
contour([-3:.1:3],[-2:.1:4],g,[0 0])
function y=F(x)
y(1)=f(x(1),x(2))
y(2)=g(x(1),x(2))
endfunction
function y=JF(x)
y(1,1)=x(1)/4
y(1,2)=2*(x(2)-1)/5
y(2,1)=1/(1+x(1)^2)+1
y(2,2)=-1-3*x(2)^2
endfunction
//primeiro ponto
//x=[-1.2;-1.0]
//segundo ponto
//x=[2.8;1.4]
x=x-JF(x)\F(x) // 4 vezes
E 5.1.11. A primeira curva trata-se de uma elipse de centro (3,1) e semi-eixos 4 e 6, portanto seus pontos esto contidos no
retngulo 1 x 7 e 5 y 7.
A solues so (0,5384844, 1,7978634) e (2,8441544, 6,9954443).
Uma possvel implementao
function z=f(x,y)
z=(x-3)^2/16+(y-1)^2/36-1
endfunction
function z=g(x,y)
z=atan(x)+x-sin(y)-0.01*y^3
endfunction
contour([-1:.1:7],[-5:.1:7],f,[0 0])
contour([-1:.1:7],[-5:.1:7],g,[0 0])
function y=F(x)
y(1)=f(x(1),x(2))
y(2)=g(x(1),x(2))
endfunction
function y=JF(x)
y(1,1)=(x(1)-3)/8
y(1,2)=(x(2)-1)/18
y(2,1)=1/(1+x(1)^2)+1
y(2,2)=-cos(x(2))-0.03*x(2)^2
endfunction
\end{resp}
//primeiro ponto
//x=[-.5;-2.0]
//segundo ponto
//x=[3;7]
x=x-JF(x)\F(x) // 4 vezes
p 6,7
E 5.1.13. Incializao do mtodo: A(0) = 3,1 e b(0) = 3,1
A 3.0297384 e b 1.4835346.
deff('z=f(x,y)','z=-x^4-y^6+3*x*y^3-x')
contour([-2:.01:0],[-2:.01:0],f,[ 0:.2: 3])
deff('z=F(x)','z=[-4*x(1)^3+3*x(2)^3-1;-6*x(2)^5+9*x(1)*x(2)^2]')
deff('z=JF(x)','z=[-12*x(1)^2,9*x(2)^2;9*x(2)^2,-30*x(2)^4+18*x(1)*x(2)]')
x=[-1.2;-1.2]
x=x-JF(x)\F(x)
x=x-JF(x)\F(x)
x=x-JF(x)\F(x)
x=x-JF(x)\F(x)
mprintf('f(%f,%f)=%f',x(1),x(2),f(x(1),x(2)))
E 5.1.17.
x1 x2
x1 + 5(x2 + x3
2 ) x3 10 exp(2/3)
x2 + 5(x3 + x3
3 ) x4 10 exp(3/3)
F (x) = x3 + 5(x4 + x3
4 ) x5 10 exp(4/3)
.
.
.
x9 + 5(x10 + x3
10 ) x11 10 exp(10/3)
x11 1
1 1 0 0 0 ... 0
5(1 + 3x2
1 1 ...
2) 0 0 0
0 1 5(1 + 3x2
3) 1 0 ... 0
JF (x) =
0 0 1 5(1 + 3x2
4) 1 ... 0
. . . . .
.
. . . . .. .
. . . . .
0 0 0 0 0 1
function y=F(x)
y(1)=x(1)-x(2)
for j=2:10
y(j)=-x(j-1)+5*(x(j)+x(j)^3)-x(j+1)-10*exp(-j/3)
end
y(11)=x(11)-1
endfunction
function y=JF(x)
y=zeros(11,11)
y(1,1)=1
y(1,2)=-1
for j=2:10
y(j,j-1)=-1
y(j,j)=5*(1+3*x(j)^2)
y(j,j+1)=-1
end
y(11,11)=1
endfunction
Resposta final: 0,80447, 0,80447, 0,68686, 0,57124, 0,46535, 0,37061, 0,28883, 0,22433, 0,19443, 0,28667, 1
E 6.1.3.
2
a1 + a2 x1 + a3 x1 = y1
2
a1 + a2 x2 + a3 x2 = y2
2
a1 + a2 x1 = y1 a3 x1
,
2
a1 + a2 x2 = y2 a3 x2
o qual tem soluo nica, pois x1 6= x2 . Ou seja, para cada a3 R dado, existem a1 , a2 R tais que a parbola de
equao y = a1 + a2 x + a3 x2 interpola os pontos dados.
b) Certamente no existem retas de equao x = a que interpolam os pontos dados. Consideremos ento retas de equao
y = a1 + a2 x. Para uma tal reta interpolar os pontos dados necessrio que:
a1 + a2 = 1
a1 + 2a2 = 2,1,
a1 + 3a2 = 3
c) No existe uma parbola de equao y = a1 + a2 x + a3 x2 que interpole os pontos dados, pois tal equao determina uma
funo de x em y. Agora, para mostrar que existem infinitas parbolas de equao x = a1 + a2 y + a3 y 2 que interpolam
os pontos dados, basta seguir um raciocnio anlogo ao do item a), trocando x por y e y por x.
E 6.4.1.
R1 f (0)+f (1)
P (x)dx = 2
1
, 12 maxx[0,1] |f 00 (x)|
0
E 8.1.3.
h h2 h
h
c) f 0 (0) = h +h
1 l h2 f (h1 ) + h1
h1 f (0) + h1 f (h2 )
1 2 1 2 2
E 8.1.4.
Caso a b c d
vi = 1 1.72 1.56 1.64 1.86
vi = 4.5 2.46 1.90 2.18 1.14
E 8.1.5.
Segue a tabela com os valores da derivada para vrios valores de h.
Observe que o valor exato 0,3161977 e o h timo algo entre 108 e 109 .
E 8.2.1.
E 9.1.2.
1 2
ISimpson = IT rap + IP M
3 3
E 9.1.3.
E 9.3.2.
-0.2310491, -0.2452073, - 0.2478649.
E 9.3.4.
a)-0.2472261, -0.2416451, -0.2404596, -0.2400968, -0.2399563, -0.2398928. b)-0.2393727, -0.2397994, -0.2398104, -0.2398115,
-0.2398117, -0.2398117.
E 9.4.1.
1 12 2 2 7 3 3 4
a)I(h) = 4.41041 10 8.49372 10 h 1.22104 10 h 1.22376 10 h + 8.14294 10 h
1 11 2 2 7 3 6 4
b)I(h) = 7.85398 10 1.46294 10 h 4.16667 10 h 2.16110 10 h + 4.65117 10 h
3 10 7 2 5 3 4 4
c)I(h) = 1.58730 10 9.68958 10 h + 2.03315 10 h 1.38695 10 h + 2.97262 10 h
1 12 2 2 8 3 4 4
d)I(h) = 4.61917 10 + 3.83229 10 h + 2.52721 10 h + 5.48935 10 h + 5.25326 10 h
E 9.4.2.
1.5707963 2.0943951
1.8961189 2.0045598 1.9985707
1.9742316 2.0002692 1.9999831 2.0000055
E 9.4.5. R(6,6) = 10.772065, R(7,7) = 5.2677002, R(8,8) = 6.1884951, R(9,9) = 6.0554327, R(10,10) = 6.0574643. O
valor desta integral com oito dgitos corretos aproximado por 6.0574613.
E 9.5.1.
w1 = 1/6, w2 = 2/3, w3 = 1/6. O esquema construdo o de Simpson e a ordem de exatido 3.
E 9.5.2. 3
E 9.5.3. 5
R1
E 9.5.4. f (x) dx 3
2
3 f (2/3) com ordem 3.
f (1/3) 2f (1/2) + 2
0
E 9.5.5. 5, 4, 3
E 9.6.1.
E 9.7.1.
n b c d e f
2 2.205508 3.5733599 3.6191866 3.6185185 3.618146
4 2.5973554 3.6107456 3.6181465 3.6180970 3.6180970
6 2.7732372 3.6153069 3.6181044 3.6180970 3.6180970
8 2.880694 3.6166953 3.6180989 3.6180970 3.6180970
temos
1 cos(x) x2n1/2
X
n
= (1) , x0
x (2n)!
n=1
Z 1 Z 1
cos(x) 1 x2n1/2
X
n
I = 4+2 p dx = 4 2 (1) dx
(2n)!
0 |x| 0
n=1
1
X
n
= 42 (1)
(2n)!(2n + 1/2)
n=1
Soluo do item f)
Z 1
x3/2 x7/2
1/2 1 1 977
2 x + dx = 2 2 + =
2 24 5 54 270
0
Z 1 Z 1 1+u
1+u
cos(x) P4 (x) cos 2
P4 2
2 dx = 2 du
x 1+u
0 1
E 9.7.5. 4,1138
Z 1
3 3
E 9.7.8. f (x)dx = f +f
3 3
1
E 10.2.1.
2
1 2 1+e1
0,4496 com h = 0,1 e 0,4660 com h = 0,01. A soluo exata vale u(1) = 1+2e 4 +e = 2
0,4678
E 10.2.2.
u(2) 0,430202 e z(2) = 0,617294 com h = 0,2, u(2) 0,435506 e z(2) = 0,645776 com h = 0,02, u(2) 0,435805 e
z(2) = 0,648638 com h = 0,002 e u(2) 0,435832 e z(2) = 0,648925 com h = 0,0002.
E 10.2.3.
u(2) 1,161793 com h = 0,1, u(2) 1,139573 com h = 0,01, u(2) 1,137448 com h = 0,001, u(2) 1,137237 com
E 10.6.2.
t Exato Euler Euler melhorado Erro Euler Erro Euler melhorado
0.0 1. 1. 1. 0. 0.
0.1 0.826213 0.8 0.828 0.026213 0.001787
0.2 0.693094 0.656 0.695597 0.037094 0.002502
0.3 0.588333 0.547366 0.591057 0.040967 0.002724
0.4 0.504121 0.462669 0.506835 0.041453 0.002714
0.5 0.435267 0.394996 0.437861 0.040271 0.002594
0.6 0.378181 0.339894 0.380609 0.038287 0.002428
0.7 0.330305 0.294352 0.332551 0.035953 0.002246
0.8 0.289764 0.256252 0.291828 0.033512 0.002064
0.9 0.255154 0.224061 0.257043 0.031093 0.001889
1.0 0.225400 0.196634 0.227126 0.028766 0.001726
deff('du=f(u)','du=-u-u^2')
sol_Euler=Euler(f,0,1,10,1)'
sol_Euler_mod=Euler_mod(f,0,1,10,1)'
deff('u=u_exata(t)','u=1/(2*exp(t)-1)')
t=[0:.1:1]'
sol_exata=feval(t,u_exata)
tabela=[t sol_exata sol_Euler sol_Euler_mod abs(sol_exata-sol_Euler) abs(sol_exata-sol_Euler_mod)]
E 10.19.1.
1 ln 9
1 ln (6)
Os valores exatos para os itens e e f so: 10 4
e 10
E 10.19.2.
q p
g
O valor exato
1 e200 em t = 1
g
tanh1 1 e200
E 10.19.8.
E 11.1.1.
1 0 0 0 0
u1
5
1 2 1 0 0 u2 2
0 1 2 1 0
u3
= 2
0 0 1 2 1 u4 2
0 0 0 0 1 u5 10
Soluo: [5, 7.375, 9.25, 10.625, 11.5, 11.875, 11.75, 1.125, 10]
E 11.1.2. 120. 133.56 146.22 157.83 168.22 177.21 184.65 190.38 194.28 196.26 196.26 194.26 190.28 184.38 176.65 167.21
E 11.1.3. 391.13 391.13 390.24 388.29 385.12 380.56 374.44 366.61 356.95 345.38 331.82 316.27 298.73 279.27 257.99 234.99
E 11.1.4. 0., 6.57, 12.14, 16.73, 20.4, 23.24, 25.38, 26.93 , 28, 28.7, 29.06, 29.15, 28.95, 28.46, 27.62 , 26.36, 24.59, 22.18,
[3] R.L. Burden and J.D. Faires. Anlise Numrica. Cengage Learning, 8 edition,
2013.
[6] Walter Gautschi and Gabriele Inglese. Lower bounds for the condition
number of vandermonde matrices. Numerische Mathematik, 52(3):241250,
1987/1988.
[8] E. Isaacson and H.B. Keller. Analysis of numerical methods. Dover, Ontrio,
1994.
[9] Arieh Iserles. A first course in the numerical analysis of differential equations.
Cambridge university press, 2009.
[10] W.H. Press. Numerical Recipes 3rd Edition: The Art of Scientific Computing.
Cambridge University Press, 2007.
335
336 Clculo Numrico
Aqui voc encontra a lista de colaboradores do livro. Esta lista contm so-
mente aqueles que explicitamente se manifestaram a favor de terem seus nomes
registrados aqui. A lista completa de colaboraes pode ser obtida no repositrio
GitHub do livro:
https://github.com/livroscolaborativos/CalculoNumerico
Alm das colaboraes via GitHub, o livro tambm recebe colaboraes via dis-
cusses, sugestes e avisos deixados em nossa lista de e-mails:
livro_colaborativo@googlegroups.com
Estas colaboraes no esto listadas aqui, mas podem ser vistas no site do grupo
de e-mails.
Caso encontre algum equvoco ou veja seu nome listado aqui por engano, por
favor, entre em contato conosco por e-mail:
livroscolaborativos@gmail.com
337
ndice Remissivo
338
NDICE REMISSIVO 339