Beruflich Dokumente
Kultur Dokumente
Um Livro Colaborativo
Verso Scilab
13 de abril 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 160
6.1 Interpolao polinomial . . . . . . . . . . . . . . . . . . . . . . . . . 161
6.2 Diferenas divididas de Newton . . . . . . . . . . . . . . . . . . . . 165
6.3 Polinmios de Lagrange . . . . . . . . . . . . . . . . . . . . . . . . 167
6.4 Aproximao de funes reais por polinmios interpoladores . . . . 168
6.5 Interpolao linear segmentada . . . . . . . . . . . . . . . . . . . . 172
6.6 Interpolao cbica segmentada - spline . . . . . . . . . . . . . . . . 174
6.6.1 Spline natural . . . . . . . . . . . . . . . . . . . . . . . . . . 176
6.6.2 Spline fixado . . . . . . . . . . . . . . . . . . . . . . . . . . 179
6.6.3 Spline not-a-knot . . . . . . . . . . . . . . . . . . . . . . . . 180
6.6.4 Spline peridico . . . . . . . . . . . . . . . . . . . . . . . . . 181
Colaboradores 331
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
2.2.1 Exerccios
x = d0 ,d1 d2 . . . dk 10e
x = d0 ,d1 d2 . . . dk 10e
-->format('v',5)
-->-int(0.675*1e2)/1e2
ans =
- 0.67
-->format('e',8)
-->-int(0.675*1e2)/1e2
ans =
- 6.7D-01
Por arredondamento:
-->format('v',5)
-->-0.675
ans =
- 0.68
-->format('e',8)
-->-0.675
ans =
- 6.8D-01
Observao 2.3.1. Observe que o arredondamento pode mudar todos os dgitos e
o expoente da representao em ponto flutuante de um nmero dado. Por exemplo,
o arredondamento de 0,9999 101 com 3 dgitos significativos 0,1 100 .
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.
a) Se o mtodo da bisseo for usando com o intervalo inicial [1/2, 3], para qual
raiz as iteraes convergem?
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.
= k,
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.
E 3.2.7. O polinmio f (x) = x4 4x2 + 4 possui razes duplas em 2 e 2.
O mtodo da bisseo pode ser aplicados a f ? Explique.
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
onde:
a11 a12 a1n x1 b1
a21
a22 a2n x2
b
A= ,x = e b = 2
. .. .. ...
.. .
.. . . . ..
am1 am2 amn xn bm
90
4.1. ELIMINAO GAUSSIANA 91
x+y+z = 1
4x + 4y + 2z = 2
2x + y z = 0
1 1 1 1
0 0 2 2
0 1 3 1
1 1 1 1
0 1 3 1
0 0
2 2
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.3 (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
2 4 1 3 1 3
1 3 2 4 0 2 2
4 3
4 4
y=
2 2
x = 3 y
Exerccios Resolvidos
0 2 2 x 8
1 2 1 y = 9
1 1 1 6
z
1 2 1 9
0 2 2 8
0 1 0 3
1 2 1 9
0 2 2 8
0 0 1 1
1 2 0 8
0 2 0 6
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
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 107
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
nal, isto ,
1 0 0 0
0 2 0 0
A= 0 0 0
3 .
.. ..
. .
0 0 0 n
Suponha que um dos autovalores seja estritamente maior que os demais, isto ,
|1 | > |2 | |3 | |n |. Dado x0 = [1 2 3 n ]T , ento
1 k1 1 1
k
i 2 2
2 2 2
1 1
k
Ak x0 = Ak = = k1 1
k 3 3 ,
3
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 x0
xk =
kAk x0 k2
converge para e1 , e1 = [1 0 0 0]T . Tambm, a sequncia
k = xTk Axk
converge para 1 :
lim k = (e1 )T A(e1 ) = 1 eT1 e1 = 1 .
k
x0 = U U 1 x0 = U [1 2 3 n ]T
com 1 6= 0. Ento
1 k1 1 1
k
k 2 2
2 2 2
1 1
k
Ak x0 = (U Dk U 1 )U =U = k1 1 U
k 3 3 .
3
3 3
1 1
.. .. ..
. . .
k
n n
n kn n 1 1
Ak x0
xk =
kAk x0 k2
ii) Um autovalor deve ter o mdulo estritamente maior que os demais. Essa
restrio impede o funcionamento do mtodo no caso em que o autovalor
dominante complexo, pois eles aparecem em pares conjugados, possuindo
o mesmo mdulo.
Observamos que se x0 est na forma (4.34), ento Ak x0 pode ser escrito como
!k
n n n
j j
Ak x0 = 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
A k x0 1 k1
2
= v1 + O ) (4.35)
kAk x0 k kAk xk 1
A k x0
Como a norma de igual a um, temos
k A k x0 k
k
1 1
v 1
1
kAk x0 k
e, portanto,
1
k
1 1
kAk x0 k
kv1 k
1 k1
Ou seja, se definimos (k) = , ento
kAk x0 k
|(k) | 1
Retornando a (4.35), temos:
Ak x0
k
(k) v1 0
kA x0 k
Observe que um mltiplo de autovetor tambm um autovetor e, portanto,
Ak x0
xk =
kAk x0 k
um esquema que oscila entre os autovetores ou converge para o autovetor v1 .
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
142
143
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 x1
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
5.2. LINEARIZAO DE UMA FUNO DE VRIAS VARIVEIS 157
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
160
6.1. INTERPOLAO POLINOMIAL 161
Figura 6.1: Exemplo de interpolao de dois pontos por uma reta, veja o exem-
plo 6.0.1.
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.
-->xi = [0 1 2 3]';
-->yi = [1 6 5 -8]';
-->A = [xi.^0 xi.^1 xi.^2 xi.^3];
-->a = A\yi;
-->p = poly(a,'x','c')
p =
3
1 + 6x - x
-->xx = linspace(-0.5,3.25);
-->plot(xi,yi,'ro',xx,horner(p,xx),'b-');xgrid
Teorema 6.1.2. Seja {(xi ,yi )}ni=1 um conjunto de n pares ordenados de nmeros
reais tais que xi 6= xj se i 6= j, ento existe um nico polinmio p(x) de grau n 1
ou inferior que passa por todos os pontos dados, isto , p(xi ) = yi , i = 1, . . . , n.
n1
p(x) = a0 + a1 x + a2 x2 + an1 xn1 = ak x k
X
k=0
(xj xi )
Y
1i<jn
Exerccios
a) Existem infinitas parbolas que interpolam dois pontos dados {(x1 , y1 ), (x2 , y2 )},
com x1 6= x2 .
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 x2 f [x2 ] = y2
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
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
2 10
p(x) = 0 L1 (x) + 1 L2 (x) + 0 L3 (x) + 1 L4 (x) = x3 3x2 + x.
3 3
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 21 )(0 1)
1 (x 0)(x 1)
+ cos
2 ( 21 0)( 21 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
O polinmio de grau trs Q(x) = x x 1
2
(x 1) tem um mnimo (negativo) em
x1 = 3+ 3
6
e um mximo (positivo) em x2 = 3 3
6
. Logo:
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!
Para encontrar o erro efetivo mximo, basta encontrar o mximo de |P (x)
cos(x)|. O mnimo (negativo) de P (x) cos(x) acontece em x1 = 4,29 103 e o
mximo (positivo) acontece em x2 = 3,29 103 . Portanto, o erro mximo efetivo
4,29 103 .
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
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
183
184 Clculo Numrico
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 y j
| {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.
Temos
1 1
A= 1 2
1 3
i
seria A = 1,19789 e b = 0,474348
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,
Observe que
A2 = 7,96147042 + 11,4057212
11,405721
sen () = = 0,8199923
13,909546
= 0,9613976
tabela de pontos
xi yi
0,0 101
0,2 85
0,4 75
0,6 66
0,8 60
1,0 55
usando uma das transformaes tabeladas.
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 ).
203
204 Clculo Numrico
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:
(x x1 )(x x2 ) (x x0 )(x x2 )
f (x) = f (x0 ) + f (x1 )
(x0 x1 )(x0 x2 ) (x1 x0 )(x1 x2 )
(x x0 )(x x1 ) f ((x))
000
+ f (x2 ) + (x x0 )(x x1 )(x x2 ).
(x2 x0 )(x2 x1 ) 6
A derivada de f (x)
2x x1 x2 2x x0 x2
f 0 (x) = f (x0 ) + f (x1 )
(x0 x1 )(x0 x2 ) (x1 x0 )(x1 x2 )
2x x0 x1
+ f (x2 )
(x2 x0 )(x2 x1 )
(8.5)
f ((x))
000
+ ((x x1 )(x x2 ) + (x x0 )(2x x1 x2 ))
6
f 000 ((x))
!
+ Dx (x x0 )(x x1 )(x x2 ).
6
2x0 x1 x2 2x0 x0 x2
f 0 (x0 ) = f (x0 ) + f (x1 )
(x0 x1 )(x0 x2 ) (x1 x0 )(x1 x2 )
2x0 x0 x1
+ f (x2 )
(x2 x0 )(x2 x1 )
f ((x0 ))
000
+ ((x0 x1 )(x0 x2 ) + (x0 x0 )(2x0 x1 x2 ))
6
f 000 ((x0 ))
!
+ Dx (x0 x0 )(x0 x1 )(x0 x2 ).
6
3h 2h
f 0 (x0 ) = f (x0 ) + f (x1 )
(h)(2h) (h)(h)
h f ((x0 ))
000
+ f (x2 ) + ((h)(2h))
(2h)(h) 6
1 3 1 f 000 ((x0 ))
= f (x0 ) + 2f (x1 ) f (x2 ) + h2
h 2 2 3
1 1 1 f 000 ((x1 ))
f (x1 ) =
0
f (x0 ) + f (x2 ) + h2
h 2 2 6
1 1 3 f 000 ((x2 ))
f 0 (x2 ) = f (x0 ) 2f (x1 ) + f (x2 ) + h2
h 2 2 3
1 3 1 f 000 ((x0 ))
f (x0 ) =
0
f (x0 ) + 2f (x0 + h) f (x0 + 2h) + h2
h 2 2 3
1 1 1 f 000
((x + h))
0
f 0 (x0 + h) = f (x0 ) + f (x0 + 2h) + h2
h 2 2 6
1 1 3 f 000 ((x0 + 2h))
f (x0 + 2h) =
0
f (x0 ) 2f (x0 + h) + f (x0 + 2h) + h2
h 2 2 3
ou ainda
1 f 000 ((x0 ))
f 0 (x0 ) = [3f (x0 ) + 4f (x0 + h) f (x0 + 2h)] + h2 (8.6)
2h 3
1 f 000
((x 0 ))
f 0 (x0 ) = [f (x0 + h) f (x0 h)] + h2 (8.7)
2h 6
1 f 000 ((x0 ))
f 0 (x0 ) = [f (x0 2h) 4f (x0 h) + 3f (x0 )] + h2 (8.8)
2h 3
Observe que uma das frmulas exatamente as diferenas centrais obtida anteri-
ormente.
Analogamente, para construir as frmulas de cinco pontos tomamos o polinmio
de Lagrange para cinco pontos e chegamos a cinco frmulas, sendo uma delas a
seguinte:
1 h4 (5)
f (x0 ) =
0
[f (x0 2h) 8f (x0 h) + 8f (x0 + h) f (x0 + 2h)]+ f ((x0 ))
12h 30
(8.9)
Exerccios
Em construo ... Gostaria de colaborar na escrita deste livro? Veja como em:
http://www.ufrgs.br/numerico
1 1
f 0 |x=x1 f1 + f3 (8.26)
2h 2h
f3 f1
(8.27)
2h
E 8.4.1. Seja [x0 ,x1 ,x2 ] = [0,h,2h] e x = x0 = 0, obtenha uma regra unilateral
de diferenciao para aproximar f 0 (x0 ).
E 8.4.3. Seja [x0 ,x1 , . . . ,x4 ] = [2h, h,0,h,2h] e x = 0, obtenha uma regra
de diferenciao para aproximar f 0 (x ).
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 ).
Exerccios
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
Em construo ... Gostaria de colaborar na escrita deste livro? Veja como em:
http://www.ufrgs.br/numerico
http://www.ufrgs.br/numerico
Integrao Numrica
n1
IS= Si
X
i=1
221
222 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 forma 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)
255
256 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.
%---------------------------
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*-');
%---------------------------
du(t)
= dt
u(t)(1 u(t))
O termo u(1u)
1
pode ser decomposto em fraes parciais como 1
u
1
1u e chegamos
na seguinte equao diferencial:
1 1
+ du = dt.
u 1u
Integrando termo-a-termo, temos a seguinte equao algbrica relacionando u(t) e
t:
ln(u) ln(1 u) = t + C
Onde C a constante de integrao, que definida pela condio inicial, isto ,
u = 1/2 em t = 0. Substituindo, temos C = 0. O que resulta em:
u
ln =t
1u
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
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.
Exerccios
Se u(tn+1 ) for aproximado por un+1 com erro da ordem O(hp+1 ) dizemos que o
mtodo tem ordem de preciso p.
Queremos obter a ordem de preciso do mtodo de Euler. Para isso, substitu-
mos a EDO u0 = f (t,u) na expanso em srie de Taylor
u(tn+1 ) = u(tn ) + hu0 (tn ) + h2 u00 (tn )/2 + O(h3 ) (10.28)
e obtemos
u(tn+1 ) = u(tn ) + hf (tn ,u(tn )) + h2 u00 (tn )/2 + O(h3 ) (10.29)
Subtraindo (10.29) do mtodo de Euler
un+1 = un + h f (tn ,un ) (10.30)
obtemos
en+1 = un+1 u(tn+1 ) (10.31)
= un u(tn ) + h(f (tn ,u(tn ) + en ) f (tn ,u(tn ))) + (10.32)
h2 00
+ u + O(h3 ) (10.33)
2 n
Defina o erro numrico como en = un u(tn ) onde u(tn ) a soluo exata e un
a soluo aproximada. Assim
h2 00
en+1 = en + h(f (tn ,u(tn ) + en ) f (tn ,u(tn ))) + u
2 n
+ O(h3 ) (10.34)
Usando a condio de Lipschitz em f temos
h2 00
|en+1 | |en | + h|f (tn ,u(tn ) + en ) f (tn ,u(tn ))| + |u | + O(h3 )(10.35)
2 n
h2 00
|en | + hL|u(tn ) + en u(tn )| + |u | + O(h3 ) (10.36)
2 n
h2 00
|en | + hL|en | + |u | + O(h3 ) (10.37)
2 n
h2
(1 + hL)|en | + |u00n | + O(h3 ) (10.38)
2
ET G = nET L (10.39)
= n[h2 /2|u00 | + O(h3 )] (10.40)
= T h/2|u00 | + O(h2 ) (10.41)
ou seja
Euler = O(h)
ET Gn+1
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
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)
Isto equivalente a
ET L
lim =0 (10.44)
h0 h
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com
264 Clculo Numrico
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
Para que o mtodo de Euler seja estvel, necessrio que h seja escolhido tal que
|1 + h| < 1. Ou seja, h deve estar em DEuler onde
Note que este mtodo implcito (a equao implcita) pois depende de un+1
dos dois lados da equao. Se a funo f for simples o suficiente, podemos resolver
a equao isolando o termo un+1 . Se isso no for possvel, devemos usar um dos
mtodos vistos anteriormente para calcular as razes da equao (por exemplo,
mtodo da bisseco e mtodo de Newton).
Pode ser mostrado que o erro de truncamento local
EulImp = O(h ).
ET Ln+1 2
EulImp = O(h).
ET Gn+1
DEulImp onde
{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
Heun = O(h )
ET Ln+1 3
Heun = O(h )
ET Gn+1 2
Exerccios
usando passo h = 0,1. Compare os valores da soluo exata dada por u(t) = 2et11
com os numricos nos pontos t = 0, t = 0.1, t = 0.2, t = 0.3, t = 0.4, t = 0.5,
t = 0.6, t = 0.7, t = 0.8, t = 0.9, t = 1.0.
h2 00 h3
u(t + h) = u(t) + hu0 (t) + u (t) + u000 (t) + . . . (10.76)
2! 3!
Utilizando dois termos temos o mtodo de Euler. Utilizando os trs primeiros
termos da srie e substituindo u0 (t) = f (t,x) e u00 (t) = f
t
(t,x) temos o mtodo
de Taylor de ordem 2
h2 f
un+1 = un + hf (tn ,un ) + (tn ,un ) (10.77)
2! t
O mtodo de Taylor de ordem 3
h2 f h3 2 f
un+1 = un + hf (tn ,un ) + (tn ,un ) + (tn ,un )
2! t 3! t2
z2 z3 zp
p(z) = 1 + z + + + ... + (10.78)
2! 3! p!
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.
e teremos
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)
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.
un+3 = un+2 + h
24
[9fn+3 + 19fn+2 5fn+1 + fn ] (10.102)
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
F2 = f (tn + c2 h,U2 ) (10.122)
= f (tn + c2 h,un + a21 hfn ) (10.123)
fn fn
= fn + h[c2 + a21 fn ] + O(h2 ) (10.124)
t u
fazendo com que (10.121) se torne
un+1 = un + h[b1 F1 + b2 F2 ] (10.125)
fn fn
= un + h(b1 + b2 )fn + h2 b2 [c2 + a21 fn ] + O(h3 ) (10.126)
t u
Usando a EDO e derivando-a obtemos
ut = f (t,u) (10.127)
utt = ft + fu ut = ft + fu f (10.128)
e expandindo em srie de Taylor a soluo exata em tn+1 ,
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
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
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
como
log(eh )log(eh/2 )
p log(h)log(h/2)
(10.143)
eh
log
eh/2
log(h/(h/2))
(10.144)
eh
log
eh/2
log(2)
(10.145)
kuh u k
log
kuh/2 u k
log(2)
(10.146)
(10.147)
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
y 00 + y 0 + y = cos(t),
y(0) = 1,
y 0 (0) = 0,
y0 = w
w0 = w y + cos(t)
y(0) = 1
w(0) = 0
Exerccios
v 0 = g v 2
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.
287
288 Clculo Numrico
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
292 Clculo Numrico
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
298
A.1. SOBRE O SCILAB 299
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
310
RESPOSTAS DOS EXERCCIOS 311
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.2.
A primeira raiz se encontra no intervalo (0,4, 0,5). A segunda raiz no intervalo (1,7, 1,8). A terceira raiz se encontra no
intervalo (2,5, 2,6).
E 3.2.4.
1,390054; 1,8913954; 2,4895673; 3,1641544; 3,8965468
E 3.2.5.
k = lP
2
cos() com (0, /2); 1,030.
E 3.2.6.
19; 23; 26; 0,567143; 1,745528; 3,385630
E 3.2.8.
a) 0,623; b) 0,559; c) 0,500; d) 0,300; e) 0,3; f) 30; g) 30
E 3.2.9.
a) 0,0294; b) 2.44e 3; c) 2.50e 4; d) 1.09 107 ; e) 1012 ; f) 1012 ; g) 1012
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.
x > a com a 0,4193648.
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.
150 W, 133 W, 87 W, 55 W, 6,5 W
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.
500 K, 700 K em t = 3 ln(2), 26 min, 4 h27 min.
E 3.7.13.
(1,1101388, 0,7675919), (1,5602111, 0,342585)
E 3.7.14.
1,5318075
E 3.7.15.
Aproximadamente 2500 reais por hora.
E 3.7.16.
a) 332,74 K b) 359,33 K
E 3.7.17.
1,2285751, 4,76770758, 7,88704085
E 4.1.1.
Escrevemos o sistema na forma matricial e resolvemos:
" # " # " #
1 1 1 0 1 1 1 0 1 1 1 0
1 0 10 48 0 1 9 48 0 10 1 25
0 10 1 25 0 10 1 25 0 1 9 48
" # " #
1 1 1 0 1 1 1 0
0 10 1 25 0 10 1 25
0 0 9.1 45.5 0 0 1 5
" # " #
1 1 0 5 1 1 0 5
0 10 0 30 0 1 0 3
0 0 1 5 0 0 1 5
" #
1 0 0 2
0 1 0 3
0 0 1 5
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.1.
p(x) = 3 + 2x + 5x3 .
E 6.1.2.
p(x) = 0,25 + x2 .
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.4.6.
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
E 9.5.4.
R1 3 f (1/3) 2f (1/2) + 3 f (2/3) com ordem 3.
f (x) dx 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.1.
u(1) 1,317078 quando h = 0,1 e u(1) 1,317045.
E 10.6.2.
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
1 0 0 0 0 0 0 0 0 u1 5
1 2 1 0 0 0 0 0 0 u2 0.5
0 1 2 1 0 0 0 0 0 u3 0.5
0 0 1 2 1 0 0 0 0 u4 0.5
0 0 0 1 2 1 0 0 0
u5
= 0.5
0 0 0 0 1 2 1 0 0 u6 0.5
0 0 0 0 0 1 2 1 0
u7
0.5
0 0 0 0 0 0 1 2 1 u8 0.5
0 0 0 0 0 0 0 0 1 u9 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.
329
330 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
331
ndice Remissivo
332
NDICE REMISSIVO 333