Académique Documents
Professionnel Documents
Culture Documents
Um Livro Colaborativo
Verso Python
20 de maro 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 149
6.1 Interpolao polinomial . . . . . . . . . . . . . . . . . . . . . . . . . 150
6.2 Diferenas divididas de Newton . . . . . . . . . . . . . . . . . . . . 154
6.3 Polinmios de Lagrange . . . . . . . . . . . . . . . . . . . . . . . . 156
6.4 Aproximao de funes reais por polinmios interpoladores . . . . 157
6.5 Interpolao linear segmentada . . . . . . . . . . . . . . . . . . . . 160
6.6 Interpolao cbica segmentada - spline . . . . . . . . . . . . . . . . 161
6.6.1 Spline natural . . . . . . . . . . . . . . . . . . . . . . . . . . 164
6.6.2 Spline fixado . . . . . . . . . . . . . . . . . . . . . . . . . . 166
6.6.3 Spline not-a-knot . . . . . . . . . . . . . . . . . . . . . . . . 167
6.6.4 Spline peridico . . . . . . . . . . . . . . . . . . . . . . . . . 168
Colaboradores 314
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
O sistema de numerao posicional tambm pode ser usado com outras bases.
Vejamos a seguinte definio.
Definio 2.1.1 (Sistema de numerao de base b). Dado um nmero natural
b > 1 e o conjunto de smbolos {,,, , 0, 1, 2, . . . , b 11}1 , a sequncia de smbolos
dn bn + dn1 bn1 + + d0 b0 + d1 b1 + d2 b2 +
(301,2)4 = 3 42 + 0 41 + 1 40 + 2 41 = 49,5
X i = dn bn + + dn1 bn1 + d1 b1 + d0 b0
e
d1 d2
Xf =
+ 2 +
b1 b
Nosso objetivo determinar os algarismos {dn , dn1 , ...}.
Primeiramente, vejamos como tratar a parte inteira X i . Calculando sua diviso
por b, temos:
Xi d0
= + d1 + d2 b1 + dn1 bn2 + dn bn1 .
b b
Observe que d0 o resto da diviso de X i por b, pois d1 + d2 b1 + dn1 bn2 +
dn bn1 inteiro e db0 uma frao (lembramos que d0 < b). Da mesma forma, o
resto da diviso de d1 + d2 b1 + dn1 bn2 + dn bn1 por b d1 . Repetimos o
processo at encontrar os smbolos d0 , d1 , d2 , . . ..
logo 0,583 = (0,33)6 . As contas feitas aqui, tambm podem ser computadas em
Python. Voc sabe como?
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
b) (101,1)2
c) (12F,4)16
d) (11,2)3
b) 29,16 na base b = 6
x = (1)s (M )b bE ,
2.2.1 Exerccios
x = d0 ,d1 d2 . . . dk 10e
x = d0 ,d1 d2 . . . dk 10e
>>> int(-0.675*1e2)/1e2
Por arredondamento:
e, em notao normalizada:
>>> 2**2 == 4
True
>>> np.sqrt(3)**2 == 3
False
dn1 dn2 d1 d0
s dn2 d1 d0
dn1 dn2 d1 d0
(11111111)2 = 27 + 26 + + 2 + 1 = 1
..
.
(10000001)2 = 27 + 1 = 127
(10000000)2 = 27 = 128
(01111111)2 = 26 + + 2 + 1 = 127
..
.
(00000010)2 = 2
(00000001)2 = 1
(00000000)2 = 0
(1)d31 (d30 d29 d17 d16 , d15 d14 d1 d0 )2 se o sinal for representado por um
dgito. Observe que nesse caso o zero possui duas representaes possveis:
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
EM IN o menor expoente,
EM AX o maior expoente.
x = (1)s M 2cBIAS ,
e o significando por
M = (1.m1 m2 m51 m52 )2 .
Em base 2 no necessrio armazenar o primeiro dgito (por qu?).
Por exemplo, o registro
[0|100 0000 0000|1010 0000 0000 . . . 0000 0000]
representa o nmero
(1)0 (1 + 21 + 23 ) 210241023 = (1 + 0.5 + 0.125)2 = 3.25.
O expoente deslocado
Uma maneira de representar os expoentes inteiros deslocar todos eles uma
mesma quantidade. Desta forma permitimos a representao de nmeros negativos
e a ordem deles continua crescente. O expoente representado por um inteiro sem
sinal do qual deslocado o BIAS.
Tendo |E| dgitos para representar o expoente, geralmente o BIAS predefi-
nido de tal forma a dividir a tabela ao meio de tal forma que o expoente um seja
representado pelo sequncia [100 . . . 000].
Exemplo 2.4.5. 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.
Com 11 bits temos
[111 1111 1111] = reservado
[111 1111 1110] = 2046 BIAS = 102310 = EM AX
..
.=
[100 0000 0001] = 210 + 1 BIAS = 210
[100 0000 0000] = 210 BIAS = 110
[011 1111 1111] = 1023 BIAS = 010
[011 1111 1110] = 1022 BIAS = 110
..
.=
[000 0000 0001] = 1 BIAS = 1022 = EM IN
[000 0000 0000] = reservado
Casos especiais
Assim, = 252 .
Exerccios
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|.
|x x|
, x 6= 0.
|x|
|x x2 | |0,666888 0,667|
= 0,000167... < 5 104 .
|x| 0,666888
Note que x1 possui 3 dgitos significativos corretos e x2 possui 4 dgitos
significativos (o quarto dgito o dgito 0 que no aparece a direita, i.e,
x2 = 0.6670. Isto tambm leva a concluso que x2 aproxima melhor o valor
de x do que x1 pois est mais prximo de x.
|x x| |10 9,999|
= 0,0000999... < 5 104 .
|x| 10
Exerccios
b) x = 1,00001 e x = 1
c) x = 100001 e x = 100000
b) x = 100 e x = 99
a) x = 3,1415926535898 e x = 3,141593
b) x = 1
7
e x = 1,43 101
= 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:
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 b c
x1 = 2b
= +
2a a b
0,300000 103 0,140000 101
=
0,100000 101 0,300000 103
= 0,300000 10 0,466667 104
3
= 0,300000 103
b + b 4ac
x2 = 2b
2a
4ac
=
4ab
c 0,140000 101
= = = 0,466667 104
b 0,300000 103
f (x + x) f (x) + f 0 (x)x
y = f (x + x) f (x) f 0 (x)x
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?
Sabendo que f 0 (x) = 10/(1 x2 )2 , o nmero de condicionamento
xf 0 (x) 2x2
f (x) :=
=
f (x) 1 x2
Exemplo 2.8.3. Seja f (x) = x exp(x). Calcule o erro absoluto ao calcular f (x)
sabendo que x = 2 0,05.
Soluo. Temos que x 2 com erro absoluto de x = 0,05. Neste caso, calculamos
f , isto , o erro absoluto ao calcular f (x), por:
f = |f 0 (x)|x .
f = |(1 + x)ex | x
= |3e2 | 0,05 = 1,1084.
y
= 0,03 y = 2 0,03 = 0,06
|y|
Aplicando a expresso para estimar o erro em f temos
f = f + y y
x x
f
2e4
= 27
0,3 + 2 9+1
9
e4 0,06 = 8,493045557
A ab
= 2 ,
a 2 a b2
A a2 b 2 b2
= 2 ,
b 2 2 a b2
e substituindo na estimativa para o erro A em termos de a = 0,01 e b = 0,01:
A A
A +
a a b b
3 5 5
0,01 + 0,01 = 0,01565247584
5 10
0,01565247584
2 32 22
= 0,7%
2
Exerccios
lim |
xn | =
x
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.
n n
n 1+ 1
n
n 1+ 1
n
Para compreendermos melhor por que existe um limiar N que, quando atin-
gido torna a expresso do exemplo acima identicamente igual a 1, observamos a
sequncia de operaes realizadas pelo computador:
n 1 + n (1 + n) 1. (2.3)
n
Finalmente, notamos que quando tentamos calcular 1 + 1
n
para n grande, existe
perda de significncia no clculo de 1 + 1/n.
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?
1
Sir Isaac Newton, 1642 - 1727, matemtico e fsico ingls.
38
3.1. EXISTNCIA E UNICIDADE 39
f(a)
x b
a x
f(b)
e f (0) = 2 < 0, temos do teorema de Bolzano que existe pelo menos um zero de
f (x) no intervalo (2, 0). E, portanto, existe pelo menos uma soluo da equao
dada no intervalo (2, 0).
Podemos usar Python para estudarmos esta funo. Por exemplo, podemos
definir a funo f (x) e comput-la nos extremos do intervalo dado com os seguintes
comandos:
>>> def f(x): return np.exp(x)-x-2
...
>>> f(-2),f(0)
(0.13533528323661281, -1.0)
Alternativamente (e com maior preciso), podemos verificar diretamente o sinal
da funo nos pontos desejados com a funo numpy.sign:
>>> np.sign(f(-2)*f(0))
-1.0
Quando procuramos aproximaes para zeros de funes, aconselhvel isolar
cada raiz em um intervalo. Desta forma, gostaramos de poder garantir a existncia
e a unicidade da raiz dentro de um dado intervalo. A seguinte proposio nos
fornece condies suficientes para tanto.
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 Python. Para tanto, podemos usar o seguinte
cdigo Python:
>>> plt.plot(xx,f(xx))
>>> plt.grid(); plt.show()
Exerccios
E 3.1.2. Mostre que cos x = x tem uma nica soluo no intervalo [0, /2].
1
ln(x) + x3 = 10
x
possui uma nica soluo positiva.
1
ln(x) + x =v
x
possui uma soluo para cada v real e que esta soluo nica.
f (b)
a x(0)
x(1) b x
f (x(0) )
f (a)
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
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com
3.2. MTODO DA BISSEO 43
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
b(n1) a(n1)
b (n)
a (n)
= .
2
Desta forma:
Observao 3.2.1. O teorema 3.2.1 nos fornece uma estimativa para a conver-
gncia do mtodo da bisseo. Aproximadamente, temos:
1
|x(n+1) x | . |x(n) x |.
2
Isto nos leva a concluir que o mtodo da bisseo tem taxa de convergncia
linear.
f - funo objetivo
A varivel de sada :
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.
que a relao entre a corrente (Id ) e a tenso (vd ) no diodo dada pela seguinte
expresso:
vd
Id = IR exp 1 ,
vt
onde IR a corrente de conduo reversa e vt , a tenso trmica dada por vt = kTq
com k, a constante de Boltzmann, T a temperatura de operao e q, a carga do
eltron. Aqui IR = 1pA = 1012 A, T = 300 K. Escreva o problema como uma
equao na incgnita vd e, usando o mtodo da bisseo, resolva este problema
com 3 algarismos significativos para os seguintes casos:
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
ex = x + 2 ex x 2 = 0 ex 2 = x
x(n+1) = g(x(n) ), n 1,
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
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?
3. Caso seja convergente, qual a taxa de convergncia?
A segunda pergunta a mais fcil de ser respondida. No caso de g(x) ser
contnua, se x(n) x Dom (g), ento:
x = lim x(n) = lim g(x(n1) ) = g lim x(n1) = g(x ).
n n n
Definio 3.3.1. Uma contrao uma funo real g : [a, b] [a, b] tal que:
Se |g 0 (x)| < k, 0 < k < 1, para todo x [a, b], ento g(x) uma contrao.
x(n+1) = g(x(n) )
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 |.
Da, temos:
lim |x(n) x | = 0,
n
|x(n+1) x | |x(n) x |, n 1.
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
xe = sci.optimize.fixed_point(g, 0.7)
#aprox. inicial
x0 = 0.7
eps = np.fabs(x0-xe)
print("%1.5f %1.1e\n" % (x0, eps))
for i in np.arange(7):
x = g(x0);
eps = np.fabs(x-xe);
print("%1.5f %1.1e\n" % (x, eps))
x0 = x
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:
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.
enquanto:
|g20 (x)| = |1 0,05(x + 1)ex | < 0,962, x [1,6, 1,8].
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 )
Exerccios
xex 10
b) g(x) = x 15
xex 10
c) g(x) = x 10+ex
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)
2m
<
M
onde m := min |f 0 (x)| e M := max |f 00 (x)| com o mnimo e o mximo tomados
em um intervalo [a, b] que contenha o zero da funo f (x). Aqui, por exemplo,
podemos tomar [a, b] = [0, /2]. Como, neste caso, f 0 (x) = sen (x) 1, temos
que m = 1. Tambm, como f 00 (x) = cos x, temos M = 1. Assim, conclumos
que < 2 (lembrando que K (x ) [0, /2]). Ou seja, neste caso as iteraes
de Newton convergem para o zero de f (x) para qualquer escolha da aproximao
inicial x(1) [0, /2].
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.
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
82
4.1. ELIMINAO GAUSSIANA 83
x+y+z = 1
4x + 4y + 2z = 2
2x + y z = 0
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 = np.copy(E[1,:])
E[1,:] = np.copy(E[0,:])
E[0,:] = np.copy(aux)
print(E)
#zera E[1:2,0]
E[1,:] = E[1,:] - (E[1,0]/E[0,0])*E[0,:]
E[2,:] = E[2,:] - (E[2,0]/E[0,0])*E[0,:]
print(E)
#zera E[2,1]
E[2,:] = E[2,:] - (E[2,1]/E[1,1])*E[1,:]
print(E)
#sub. regressiva
x = np.zeros(3)
x[2] = E[2,3]/E[2,2];
x[1] = (E[1,3] - E[1,2]*x[2])/E[1,1];
x[0] = (E[0,3] - E[0,2]*x[2] - E[0,1]*x[1])/E[0,0]
print(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
4 2y 2
x= = (2 y)
2 4 1 3 1 3
1 3 2 4 0 2 2
4 3
4 4
y=
2 2
e
x = 3 y
Exerccios Resolvidos
ER 4.1.1. Resolva o sistema por eliminao gaussiana com pivotamento parcial.
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).
x = [a x1 , a x2 , ...,a xn ]
ax (4.1)
C = n flops. (4.2)
Exemplo 4.2.2 (Produto vetor-vetor). Qual o custo para calcular o produto in-
terno x y ?
Soluo. Sejam x , y Rn , temos que
x y = x1 y1 + x2 y2 + ... + xn yn (4.3)
Exemplo 4.2.3 (Produto matriz-vetor). Qual o custo para calcular o produto de
matriz por vetor Ax
x?
Soluo. Sejam A Rnn e x Rn , temos que
a11 a12 a1n x1 a11 x1 + a12 x2 + ... + a1n xn
.. .. . ..
. .. =
.
.
(4.5)
an1 x1 + an2 x2 + ... + ann xn
an1 ann xn
Exemplo 4.2.4 (Produto matriz-matriz). Qual o custo para calcular o produto
de duas matrizes AB?
Soluo. Sejam A, B Rnn temos que
a11 a12 a1n b11 b12 a1n c11 c12 c1n
.. .. .. .. . ..
= ..
. . . .
.
(4.9)
an1 ann bn1 bnn cn1 cnn
1
Contando apenas multiplicaes/divises obtemos
4.4 Fatorao LU
Considere um sistema linear Ax = b, onde a matriz A densa3 . 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 .
Sendo assim, o sistema pode ser reescrito da seguinte forma:
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 linha 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 diagonal5 .
3
Diferentemente de uma matriz esparsa, uma matriz densa possui a maioria dos elementos
diferentes de zero.
4
No vamos usar pivotamento nesse primeiro exemplo.
5
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
x1 + x2 + x3 = 2
2x1 + x2 x3 = 1
2x1 x2 + x3 = 3
| {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.
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
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com
96 Clculo Numrico
8n3 n2 n
flops.
3 2 6
xi = e i ,
Ax i=1:n
.
b3 . . = (4.18)
a3 x d .
3 3
... ... .. ..
.
.
cn1
an bn xn dn
a1 = cn = 0.
xn = d0n (4.21)
xi = d0i c0i xi+1 , i = n 1, n 2, . . . , 1. (4.22)
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
.
b3 . . =
a3 x d .
3 3
.. .. .. ..
. . .
.
cn1
an bn xn dn
d2 a2 d01
onde c02 = c2
b2 a2 c01
e d02 = b2 a2 c01
.
O prximo passo consiste em substituir a terceira linha por ela mesma subs-
..
0 1 . =
x d0 .
3 3
.. .. .. ..
. . .
.
cn1
an bn xn dn
Este procedimento realizado at que se atinja a ltima linha e temos o seguinte
sistema:
1 c01 0
x1 d1
0 1 c02
0
x2 d2
..
0 1 . =
x d0 .
3 3
... ... .. ..
.
c0n1 .
0 1 xn d0n
Neste estgio, podemos encontrar os xn atravs de substituio reversa, isto :
a ltima linha diz
xn = d0n .
A penltima linha diz
xn1 + c0n1 xn = d0n1 = xn1 = d0n1 c0n1 xn .
Esse mesmo procedimento aplicada linha i = 1, . . . n 1, nos d
xi = d0i c0i xi+1 .
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 = d02 c02 x3 = (1) = 2
3 3
1
x1 = d01 c01 x2 = 2 2 = 1
2
E assim, obtemos o vetor x = [1, 2, 1, 0, 1].
def TDMA(a,b,c,d):
#preliminares
a = a.astype('double')
b = b.astype('double')
c = c.astype('double')
d = d.astype('double')
#calcula cl e dl
cl[0]=c[0]/b[0]
for i in np.arange(1,n-1,1):
cl[i]=c[i]/(b[i]-a[i]*cl[i-1])
dl[0]=d[0]/b[0]
for i in np.arange(1,n,1):
dl[i]=(d[i]-a[i]*dl[i-1])/(b[i]-a[i]*cl[i-1])
return x
import numpy as np
def TDMA(a,b,c,d):
#preliminares
a = a.astype('double')
b = b.astype('double')
c = c.astype('double')
d = d.astype('double')
#inicializa vetor x
x=np.zeros(n)
#calcula cl e dl sobrescrevendo-os em c e d
c[0]=c[0]/b[0]
for i in np.arange(1,n-1,1):
c[i]=c[i]/(b[i]-a[i]*c[i-1])
d[0]=d[0]/b[0]
for i in np.arange(1,n,1):
d[i]=(d[i]-a[i]*d[i-1])/(b[i]-a[i]*c[i-1])
for i in np.arange(n-2,-1,-1):
x[i]=d[i]-c[i]*x[i+1]
return x
>>>a=np.array([1,1,1,1,1])
>>>b=np.array([2,2,2,2,2])
>>>c=np.array([1,1,1,1,1])
>>>d=np.array([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.25)
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
Soluo.
>>> A = np.array([[3,-5,7],
... [1,-2,4],
... [-8,1,-7]], dtype='double')
>>> np.linalg.norm(A,1)
18
>>> np.linalg.norm(A,np.inf)
16
>>> np.linalg.norm(A,2)
13.986577820518308
A(x + x ) = y + y
e, portanto,
Ax = y .
A = np.array([[71,41],[51,30]],dtype='double')
print(np.linalg.cond(A,p=1))
print(np.linalg.cond(A,p=2))
print(np.linalg.cond(A,p=np.inf))
e, anlogo para a matriz A2 .
Exerccios
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 Pythonpara construir os seguintes vetores de erro:
|xj yj | |xj zj |
ej = fj =
|xj | xj
Calcule as normas 1, 2 e de e e f
def jacobi(A,b,x0,tol,N):
#preliminares
A = A.astype('double')
b = b.astype('double')
x0 = x0.astype('double')
n=np.shape(A)[0]
x = np.zeros(n)
it = 0
#iteracoes
while (it < N):
it = it+1
#iteracao de Jacobi
for i in np.arange(n):
x[i] = b[i]
for j in np.concatenate((np.arange(0,i),np.arange(i+1,n))):
x[i] -= A[i,j]*x0[j]
x[i] /= A[i,i]
#tolerancia
if (np.linalg.norm(x-x0,np.inf) < tol):
return x
#prepara nova iteracao
x0 = np.copy(x)
raise NameError('num. max. de iteracoes excedido.')
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
def gauss_seidel(A,b,x0,tol,N):
#preliminares
A = A.astype('double')
b = b.astype('double')
x0 = x0.astype('double')
n=np.shape(A)[0]
x = np.copy(x0)
it = 0
#iteracoes
while (it < N):
it = it+1
#iteracao de Jacobi
for i in np.arange(n):
x[i] = b[i]
for j in np.concatenate((np.arange(0,i),np.arange(i+1,n))):
x[i] -= A[i,j]*x[j]
x[i] /= A[i,i]
print(x[i],A[i,i])
#tolerancia
if (np.linalg.norm(x-x0,np.inf) < tol):
return x
#prepara nova iteracao
x0 = np.copy(x)
raise NameError('num. max. de iteracoes excedido.')
>>> A = np.array([[3,1,-1],
... [-1,-4,1],
... [1,-2,5]],
... dtype='double')
>>> D = np.diag(np.diag(A))
>>> L = np.tril(A)-D
>>> U=np.triu(A)-D
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,
kT kp (T ) + < 1.
Assim, temos:
lim kT k kp lim kT km
p = 0.
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 (k) (x x(1) ) = T (k) y.
kx(k+1) x k (T )k kx(1) x k.
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.
e para ao menos um i, aii estritamente maior que a soma dos elementos fora da
diagonal.
Teorema 4.7.3. O erro relativo e o resduo esto relacionados como (veja [3])
kx x(k) k krk
(A)
kxk kbk
Exerccios
x1 x2 = 1
x1 + 2x2 x3 = 1
x2 + (2 + )x3 x4 = 1
x3 + 2x4 x5 = 1
x4 x5 = 1
x1 x 2 = 0
xj1 + 5xj xj+1 = cos(j/10), 2 j 10
x11 = x10 /2 (4.28)
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
k = xTk Axk
converge para 1 :
x0 = U U 1 x0 = U [1 2 3 n ]T
com 1 6= 0. Ento
1
k
1 1 1
k
2 2
2 k2 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
converge para v1 = U e1 que um mltiplo do autovetor associado a 1 . Tambm,
a sequncia
k = xTk Axk
converge para o autovalor dominante 1 :
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.29), 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 )
= v 1 + O (4.30)
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
k A k x0 k
|(k) | 1
Retornando a (4.30), temos:
Ak x0
(k) v1 0
kAk 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 .
x0 = U U 1 x0 = U [1 2 3 n ]T
com k 6= 0. Ento
1
2
(A I)k x0 = (U (D I)k U 1 )U
3
..
.
n
k
1 i
i 1
(1 )k 1
(2 )k 2
1
= U (3 )k 3 = (i )k 1 U
.. .
.
..
.
(n )k n
k
n i
i n
Como < 1, o ltimo vetor converge para ei e
i
j
(A I)k x0
xk =
k(A I)k x0 k2
converge para U ei = vi que um mltiplo do autovetor associado a i . Tambm,
a sequncia
k = xTk Axk
converge para i :
lim k = viT Avi = i viT vi = i .
k
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
131
132 Clculo Numrico
e a funo vetorial
f1 (x1 ,x2 , . . . ,xn )
f2 (x1 ,x2 , . . . ,xn )
F (x) =
..
.
fn (x1 ,x2 , . . . ,xn )
Portanto,
f1 f1 f1
x1 x2
xn
(0)
x1 x 1
f2 f2 f2
x1 x2
xn
(0)
x2 x2
F (x) F (x(0) )
.. .. ... ..
,
(5.1)
. . . ..
.
fn fn fn
x1 x2 xn
xn x(0)
n
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
2x 2
3
JF =
2x1 x22
Faremos a implementao numrica em Python. Para tal definimos as funes
que implementaro F (x) e a JF (x)
>>> def F(x):
... y = np.zeros(2)
... y[0] = x[0]**2/3 + x[1]**2 - 1
... y[1] = x[0]**2 + x[1]**2/4 - 1
... return y
...
>>> def JF(x):
... y = np.zeros((2,2))
... y[0,0] = 2*x[0]/3
... y[0,1] = 2*x[1]
... y[1,0] = 2*x[0]
... y[1,1] = x[1]/2
... return y
...
Ou simplesmente
>>> x = x - np.linalg.inv(JF(x)).dot(F(x))
q q
Observe que as solues exatas desse sistema so 9
11
, 8
11
.
x21 = cos(x1 x2 ) + 1
sen (x2 ) = 2 cos(x1 )
Soluo. Vamos, aqui, dar as principais ideias para se obter a soluo usando o
mtodo de Newton. Comeamos definindo nossa aproximao inicial por x(1) =
(1,5, 0,5). Ento iteramos:
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 )
return y
def JF(x):
y = np.zeros((2,2))
y[1,0] = 2*np.sin(x[0])
y[1,1] = np.cos(x[1])
return y
>>> x = np.array([1.5,0.5])
>>> x=x-np.linalg.inv(JF(x)).dot(F(x))
def newton(F,JF,x0,TOL,N):
#preliminares
x = np.copy(x0).astype('double')
k=0
#iteracoes
while (k < N):
k += 1
#iteracao Newton
delta = -np.linalg.inv(JF(x)).dot(F(x))
x = x + delta
#criterio de parada
if (np.linalg.norm(delta,np.inf) < TOL):
return x
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.
b) A partir de seu esboo, encontre aproximaes para x e y em cada ponto.
x 0
c) Escreva o problema na forma F =
y 0
d) Encontre a jacobiana JF .
e) Construa a iterao do mtodo de Newton.
f) Implemente no computador.
g) Resolva o sistema analiticamente e compare as respostas.
d ) Encontre a jacobiana JF .
e ) Construa a iterao do mtodo de Newton.
f ) Implemente no Python.
g ) Transforme o sistema em um problema de uma nica varivel e compare
com a resposta do problema 3.4.1.
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
146 Clculo Numrico
Assim:
n
d f
f (x + hv) =
(0)
X
vj .
dh j=1 xj
Observamos que esta expresso pode ser vista como o produto interno entre o
gradiente de f e o vetor v:
f
x1 v1
f
v2
f = v=
x2
. .
.. ..
f
xn
vn
f1 x (0)
+ f1 (x ) x x
T (0) (0)
+ O(kx x k )
(0) 2
f2 x(0) + Tf2 (x(0) ) x x(0) + O(kx x(0) k2 )
F (x) =
..
.
fn x(0) + Tfn (x(0) ) x x(0) + O(kx x(0) k2 )
| {z }
Vetor coluna
ou, equivalentemente:
f1 (x )
(0) T (0)
f1 x
Tf2 (x(0) )
(0)
f2 x
F (x) = + x x(0) +O(kx x(0) k2 )
.. ..
| {z }
.
. Vetor coluna
fn x(0) Tfn (x(0) )
| {z } | {z }
Vetor coluna Matriz jacobiana
2
F (x) = F x(0) + JF (x(0) ) x x(0) + O
x x(0)
fj , ou seja:
f1 f1 f1
x1 x2
xn
f2 f2 f2
x1 x2
xn
(f1 ,f2 , . . . ,fn )
JF = = .. .. ..
(x1 ,x2 , . . . ,xn )
..
. . . .
fn fn fn
x1 x2 xn
fi
(JF )ij =
xj
f1
x1
f1
x2
2x1
3
2x2
JF = =
2x1
f2 f2 x2
x1 x2 2
Interpolao
f (xi ) = yi , i = 1, 2, . . . , n.
a + bx1 = y1 a+b=1
isto
a + bx2 = y2 a + 2b = 2
149
150 Clculo Numrico
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.
k=0
(xj xi )
Y
1i<jn
Exerccios
b) No existe reta que interpola os pontos {(1, 1), (2, 2,1), (3, 3)}.
p(x) = a1 + a2 (x x1 ) + a3 (x x1 )(x x2 ) +
+ an (x x1 )(x x2 ) (x xn1 ).
a1 = y1
a1 + a2 (x2 x1 ) = y2
a1 + a2 (x3 x1 ) + a3 (x3 x1 )(x3 x2 ) = y3
..
.
a1 + a2 (xn x1 ) + + an (xn x1 ) (xn xn1 ) = yn
a1 = y1
y2 a1 y2 y1
a2 = =
x2 x1 x2 x1
y3 y2 y2 y1
y3 a2 (x3 x1 ) a1 (x3 x2 )
(x2 x1 )
a3 = =
(x3 x1 )(x3 x2 ) (x3 x1 )
...
Tabela 6.1: Esquema de diferenas divididas para um conjunto com trs pontos
{(xi , yi )}3i=1 .
j xj f [xj ] f [xj1 ,xj ] f [xj2 ,xj1 ,xj ]
1 x1 f [x1 ] = y1
f [x2 ] f [x1 ]
f [x1 ,x2 ] =
x2 x1
f [x2 ,x3 ] f [x1 ,x2 ]
2 x2 f [x2 ] = y2 f [x1 ,x2 ,x3 ] =
x3 x1
f [x3 ] f [x2 ]
f [x2 ,x3 ] =
x3 x2
3 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
(f C n+1 [a,b]), ento para cada x em [a,b], existe um nmero (x) em (a,b) tal
que
f (n+1) ((x))
f (x) = P (x) + (x x0 )(x x1 ) (x xn ),
(n + 1)!
onde P (x) o polinmio interpolador. Em especial, pode-se dizer que
M
|f (x) P (x)| |(x x0 )(x x1 ) (x xn )| ,
(n + 1)!
onde
M = max |f (n+1) ((x))|
x[a,b]
pelo valor da integral do polinmio P (x) que coincide com f (x) nos pontos x0 = 0,
x1 = 12 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
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
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
sj (x) = aj + bj (x xj ) + cj (x xj )2 + dj (x xj )3 ,
aj = yj 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
Esta relao entre o conjunto de valores para a derivada de um spline cbico
{yj0 }j = 1n nos pontos de interpolao I e os coeficientes dos polinmios em cada
intervalo de interpolao pode ser resumida na seguinte proposio:
Proposio 6.6.1. Seja s um spline cbico que interpola o conjunto de pontos
I = {(xj ,yj )}nj=1 R2 tais que xj+1 > xj . Se {yj0 }nj=1 o conjunto dos valores da
derivada de s em xj , ento em cada intervalo [xj ,xj+1 ) (fechado tambm direita
quando j = n 1) o spline igual a sj :
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 = yj , dj = 2
0
+
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.
De acordo com a proposio anterior, toda informao sobre um spline cbico
armazenada no conjunto {(xj ,yj ,yj0 )}nj=1 . Por construo, uma funo s definida a
partir de (6.2), (6.3) e (6.4) com um conjunto {(xj ,yj ,yj0 )}nj=1 R3 , onde xj+1 > xj
de classe C 1 mas no necessariamente um spline cbico. Para ser um spline
cbico, os valores do conjunto {yj0 }nj=1 devem garantir a continuidade da derivada
segunda de s em todo intervalo (x1 ,xn ). Ou seja, devemos ter
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 + 0
hj1 yj+1 = 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
y20 h3 y3hy + h2 y4hy
2 3
y0 = 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).
0
y1
1
3
(1,9
4,5) 6,4
3 (1,9 4,5) + 4 (0,5 (1,9))
0 4 3
y2 20,2
y= e z= 3 = .
(0,5 (1,9)) + 4 (0.5 (0,5)) 1,4
0 3
y
3 4 3
y40 1
3
(0,5 (0.5)) 1
A soluo y10 = 2,83, y20 = 0,73, y30 = 0,46 e y40 = 0,73. Calculamos os
coeficientes usando as expresses (6.3):
c1 = 0 , d1 = 0,07,
c2 = 0,7 , d2 = 0,0916,
c3 = 0,4 , d3 = 0,04.
Portanto:
4,5 2,8
3(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,4
6(x 9) 0,4(x 9)2 + 0,04(x 9)3 , 9 x 12
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
170
7.1. AJUSTE DE UMA RETA 171
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.
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
quando suas derivadas parciais primeiras so iguais a zero, isto ,
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
Observando que N j=1 1 = N , o sistema linear acima pode ser escrito na forma
P
matricial M a = w, isto ,
PN PN
N j=1 xj a1 j=1 yj
= P . (7.1)
P
N PN 2 N
j=1 xj j=1 xj a2 j=1 xj yj
| {z } | {z } | {z }
M a w
Este sistema linear de duas equaes e duas incgnitas admite uma nica so-
luo quando o determinante da matriz dos coeficientes for no nulo, isto ,
2
N N
x2j xj 6= 0
X X
N
j=1 j=1
Por fim, observamos que o sistema M a = w descrito na equao (7.1) pode ser
reescrito na forma V T V a = V T y, onde V := [1 x] a matriz dos coeficientes do
seguinte sistema linear sobre determinado:
a1 + a2 x 1 = y 1
a1 + a2 x 2 = y 2
.. (7.3)
.
a1 + a2 x N = y N
Se os pontos dados no so colineares, este sistema no tm soluo. Mas, sempre
que pelo menos duas abscissas foram diferentes, M = V T V uma matriz invertvel
e (veja o exerccio 7.1.4), ento
1
a = V TV V T y, (7.4)
nos fornece a chamada soluo por mnimos quadrados do sistema (7.3). Note que
esta uma forma de se obter os coeficientes a = (a1 , a2 ) equivalente quela dada
em (7.2).
Exemplo 7.1.1. Retornemos ao exemplo 7.0.1. Isto , dado o conjunto de pontos
{(1, 1,2), (1,5, 1,3), (2, 2,3)}, encontrar a funo do tipo f (x) = a1 +a2 x que melhor
se ajusta os pontos dados no sentido de mnimos quadrados.
Soluo. Usando as frmulas em (7.2), obtemos
7,25 4,8 4,5 7,75
a1 = = 0,05,
3 7,25 20,25
3 7,75 4,5 4,8
a2 = = 1,1.
3 7,25 20,25
Ou seja, verificamos que, de fato, a funo f (x) = 0,05 + 1,1x corresponde reta
que melhor ajusta os pontos dados no sentido de mnimos quadrados. Os pontos
e a reta ajustada esto esboados na figura 7.1.
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).
E 7.1.4.
a) Mostre que o sistema linear M a = w descrito na equao 7.1 pode ser rees-
crito 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
j=1 so diferentes. E,
menos duas abscissas do conjunto de pontos {(xj , yj )}N
portanto, M = V V uma matriz invertvel.
T
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
n n m
R Ri
= 2 =2 aj fj (xi ) yi f1 (xi ) = 0,
X X X
a1 i=1 a1 i=1 j=1
n n m
R Ri
= 2 =2 aj fj (xi ) yi f2 (xi ) = 0,
X X X
a2 i=1 a2 i=1 j=1
..
.
n n m
R Ri
= 2 =2 aj fj (xi ) yi fm (xi ) = 0.
X X X
am i=1 a m i=1 j=1
n n n
f1 (xi )2 f2 (xi )f1 (xi ) fm (xi )f1 (xi )
P P P
i=1 i=1 i=1
n n n
f1 (xi )f2 (xi ) f2 (xi )
2
fm (xi )f2 (xi )
P
P P
i=1 i=1 i=1
n n n
M= f1 (xi )f3 (xi ) f2 (xi )f3 (xi ) fm (xi )f3 (xi )
P
.
P P
i=1 i=1 i=1
.. .. .. ..
.
. . .
n n n
f1 (xi )fm (xi ) f2 (xi )fm (xi ) fm (xi )
2
P P P
i=1 i=1 i=1
E os vetores a e w, por:
n
f1 (xi )yi
P
i=1
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
Soluo. Pelo procedimento visto nesta seo, temos que os coeficientes a1 e a2
so dados pela soluo por mnimos quadrados do seguinte sistema linear V a = y
a1 sen (x1 ) + a2 cos(x1 ) = y1
a1 sen (x2 ) + a2 cos(x2 ) = y2
a1 sen (x3 ) + a2 cos(x3 ) = y3
a1 sen (x4 ) + a2 cos(x4 ) = y4
a1 sen (x5 ) + a2 cos(x5 ) = y5
>>> x = np.linalg.inv(A).dot(b)
>>> x = np.linalg.solve(A,b)
>>> np.linalg.lstsq(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 x1 x1
2 m1
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 .
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
que no linear em A e b. Esse sistema pode ser resolvido pelo mtodo de Newton-
Raphson, o que pode se tornar custoso, ou mesmo invivel quando no dispomos
de uma boa aproximao da soluo para inicializar o mtodo.
Felizmente, algumas famlias de curvas admitem uma transformao que nos
leva a um problema linear. No caso da curva y = Aebx , observe que ln y = ln A+bx.
Assim, em vez de ajustar a curva original y = Aebx a tabela de pontos, ajustamos
a curva submetida a transformao logartmica
y := a1 + a2 x = ln A + bx.
2
A soma do quadrado dos resduos.
Exemplo 7.3.1. Encontre uma curva da forma y = Aex que melhor ajusta os
pontos (1, 2), (2, 3) e (3, 5).
Temos
1 1
A= 1 2
1 3
i
seria A = 1,19789 e b = 0,474348
Observao 7.3.2. Mesmo quando se deseja resolver o sistema no linear, a
soluo do problema linearizado pode ser usada para construir condies iniciais.
A prxima tabela apresenta algumas curvas e transformaes que linearizam o
problema de ajuste.
xi yi
0,0 9,12
0,1 1,42
0,2 - 7,76
0,3 - 11,13
0,4 - 11,6
0,5 - 6,44
0,6 1,41
0,7 11,01
0,8 14,73
0,9 13,22
1,0 9,93
B T Bz = B T y,
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
189
190 Clculo Numrico
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.
#derivada analitica
def fl(x):
return 2*np.cos(2*x) - 2*x
#h=0.1
dy = dp1(f,2)
print("D.F. Progressiva de ordem 1 com h = %f" % 1e-1)
print("Df = %f" % dy)
print("Erro = %1.2e" % np.abs(fl(2)-dy))
#h=0.01
dy = dp1(f,2,1e-2)
print("D.F. Progressiva de ordem 1 com h = %f" % 1e-2)
print("Df = %f" % dy)
print("Erro = %1.2e" % np.abs(fl(2)-dy))
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
vo
.
vi
Calcule o ganho quando vi = 1 e vi = 4.5 usando as seguintes tcnicas:
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
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
(x)0x = 1 = c1 x 1 + c2 x 2 + . . . + cn x n (8.14)
(x2 )0x = 2x = c1 x21 + c2 x22 + . . . + cn x2n (8.15)
(x3 )0x = 3(x )2 = c1 x31 + c2 x32 + . . . + cn x3n (8.16)
.. .
. = .. (8.17)
(xn1 )0x = (n 1)(x ) n2
= c1 xn1
1 + c1 x1n1 + . . . + cn xnn1 (8.18)
Considere a base polinomial [1 (x),2 (x),3 (x)] = [1,x,x2 ] e substitua f (x) por
k (x) obtendo
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
208
209
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
Nos cdigos Python apresentados ao longo deste captulo, estaremos assumindo:
>>> from __future__ import division
>>> import numpy as np
i=1
1
Utilizaremos neste captulo a notao fi para indicar f (xi ).
onde Z b
Ai = Li (x) dx. (9.6)
a
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 x1 2h x1
(x2 x1 ) h 1 2 2
= = = h
2h 2h 2
Da mesma forma,
Z b
(x x2 ) 1
A2 = dx = h
a (x1 x2 ) 2
a+b
x1 := a, x2 := e x3 := b
2
onde
Z b
Ai = Li (x) dx (9.15)
a
(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 (4)
+ f ((x))(x x2 )4 dx,
24 x1
Exerccios
Z b
f (t) dt w1 f (t1 ) + w2 f (t2 ) + . . . + wn f (tn ) (9.16)
a
2
Por exemplo, se n = 2, ento a regra exata para retas.
1 4 1
Resolvendo o sistema obtemos [w1 ,w2 ,w3 ] = h[ , , ] fornecendo a regra de
6 6 6
Simpson Z h
h 4h h
f (t) dt f0 + f1 + f2 (9.31)
0 6 6 6
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
Z b n Z xk+1
f (x) dx = f (x) dx
X
a k=1 xk
n
xx+1 xk xk+1 + xk
f (xk ) + 4f + f (xk+1 )
X
k=1 6 2
n1 n
Z b " #
h
f (x) dx f (x1 ) + 2 f (x2i+1 ) + 4 f (x2i ) + f (x2n+1 ) + O(h5 )
X X
a 3 i=1 i=1
Z 2
2
x2 ex dx
0
Exerccios
!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
!1
x2 x2
Z 1
= ln x + ln(x) [sen (x) x] dx
2 4
0 0
1 Z1
= + ln(x) [sen (x) x] dx
4 0
Legendre 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) 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.
A partir de agora, usaremos a seguinte notao
R1,1 = I(h)
R2,1 = I(h/2)
R3,1 = I(h/4)
..
.
Rn,1 = I(h/2n1 )
Observamos que os pontos envolvidos na quadratura Rk,1 so os mesmos pontos
envolvidos na quadratura R(k 1,1) acrescidos dos pontos centrais, assim, temos
a seguinte frmula de recorrncia:
k2
1 h 2X
!
h
Rk,1 = Rk1,1 + k1 f a + (2i 1) k1
2 2 i=1 2
Definimos Rk,2 para k 2 como o esquema de ordem quatro obtido da frmula
do exemplo 9.4.1:
4Rk,1 Rk1,1
Rk,2 =
3
Os valores Rk,2 representam ento os valores obtidos pelo mtodo de Simpson
composto aplicado a uma malha composta de 2k1 + 1 pontos.
Similarmente os valores de Rk,j so os valores obtidos pela quadratura de ordem
2j obtida via extrapolao de Richardson. Pode-se mostrar que
Rk,j1 Rk1,j1
Rk,j = Rk,j1 + .
4j1 1
Exemplo 9.4.2. Construa o esquema de Romberg para aproximar o valor de
dx com erro de ordem 8.
R 2 x2
0 e
55,59815 0,000000 0,000000 0,000000
30,517357 22,157092 0,000000 0,000000
O que nos fornece os seguintes resultados:
20,644559 17,353626 17,033395 0,000000
17,565086 16,538595 16,484259 16,475543
Ou seja, temos: Z 2
2
ex dx 16,475543
0
usando uma aproximao de ordem 8.
Exemplo 9.4.3. Construa o esquema de Romberg para aproximar o valor de
dx com erro de ordem 12.
R 2 2 x2
0 x e
218,3926
111,91458 76,421909
66,791497 51,750469 50,105706
O que nos fornece:
51,892538 46,926218 46,604601 46,549028
47,782846 46,412949 46,378731 46,375146 46,374464
46,72661 46,374531 46,37197 46,371863 46,37185 46,371847
Ou seja, temos: Z 2
2
x2 ex dx 46,371847
0
com uma aproximao de ordem 12.
Exerccios
R2q
b) 0 2 cos(x) dx
c)
R2
0
1
dx
2cos(x)
j=1
a+b
" ! #
Z b
ba
f (x) dx f (a) + 2f + f (b)
a 2 4
a+b
!
ba ba ba
= f (a) + f + f (b)
4 2 2 4
3
:= w1 f (x1 ) + w2 f (x2 ) + w3 f (x3 ) = wj f (xj )
X
j=1
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
3a + b a+b
Z b " ! !
f (x) dx f (a) + 4f + 2f
a 4 2
a + 3b
! #
ba
+ 4f + f (b)
4 12
3a + b a+b
! !
ba ba ba
= f (a) + f + f
12 3 4 6 2
a + 3b
!
ba ba
+ f + f (b)
3 4 12
5
:= wj f (xj )
X
j=1
f (x) = a0 + a1 x + a2 x2 + . . . + an xn + Rn (x)
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) : j=1 wj xj = (a + 4 + b2 ) ba =
Pn 2 2 a+b
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 + w2 = 2
x1 w1 + x2 w2 = 0
2
x21 w1 + x22 w2 =
3
x31 w1 + x32 w2 = 0
e1 + 4e0 + e1 3 3
e e1 e1 + e e 3 +e 3
ex 3
2,35040 3,08616 2,36205 2,34270
16 4
2
p
9 9 2
x 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
Pode-se mostrar que este problema sempre tem soluo e que a soluo
nica se t1 < t2 < . . . < tn
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
n I
2 2,3094011
3 2,2943456
4 2,2957234
5 2,2955705
Em Python, temos:
def f(x):
return np.sqrt(1+x^2)
#G-L n=2
x2 = sqrt(3)/3
w2 = 1
I2 = w2[1]*f(x2[1]) + w2[1]*f(-x2[1])
print("%1.7f\n" % 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]);
print("%1.7f\n" % 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))
print("%1.7f\n" % 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))
print("%1.7f\n" % 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
Exemplo 9.6.2. Aproximar
Z 1
I= 1 + x2 dx
0
pelo mtodo de Gauss-Legendre com 3 pontos.
Soluo. Para tanto, fazemos a mudana de variveis u = 2x 1:
Z 1
I= 1 + x2 dx
0
s
1Z 1 u+1 2
= 1+ du.
2 1 2
E, ento aplicamos a quadratura gaussiana nesta ltima integral, o que nos fornece
I 1,1478011. No GNU Octave, podemos computar estas aproximaes com o
seguinte cdigo:
def f(u):
return 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)
print("%1.7f\n" % I3)
Exerccios
a)
R 1 x4
0 e dx
b) log(x + ex )dx
R4
1
c)
R 1 x2
0 e dx
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
lim Cv = 3N kB .
T
a) (2 + x 5x2 + x3 ) dx
R1
1
b)
R1
1 ex dx
c)
R1
dx
1 x2 +1
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)
240
10.1. TEORIA DE EQUAES DIFERENCIAIS 241
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.
Nos cdgos em Python apresentados neste captulo, estaremos assumindo que
as seguintes bibliotecas e mdulos esto importados:
A soluo nica?
u0 (t) = 2u(t)
u(0) = 1
cuja soluo u(t) = e2t . O mtodo de Euler aplicado a este problema produz o
esquema:
Suponha que queremos calcular o valor aproximado de u(1) com h = 0,2. Ento
os pontos t(1) = 0, t(2) = 0,2, t(3) = 0,4, t(4) = 0,6, t(5) = 0,8 e t(6) = 1,0 formam
os seis pontos da malha. As aproximaes para a soluo nos pontos da malha
usando o mtodo de Euler so:
u(0) u(1) =1
u(0,2) u(2) = (1 + 2h)u(1) = 1,4u(1) = 1,4
u(0,4) u(3) = 1,4u(2) = 1,96
u(0,6) u(4) = 1,4u(3) = 2,744
u(0,8) u(5) = 1,4u(4) = 3,8416
u(1,0) u(6) = 1,4u(5) = 5,37824
#define f(t,u)
def f(t,u):
return 2*u
#cria vetor t e u
t = np.empty(N)
u = np.copy(t)
#C.I.
t[0] = 0
u[0] = 1
#iteracoes
for i in np.arange(N-1):
t[i+1] = t[i] + h
u[i+1] = u[i] + h*f(t[i],u[i])
#imprime
for i,tt in enumerate(t):
print("%1.1f %1.4f" % (t[i],u[i]))
Exemplo 10.2.2. Aproxime a soluo do PVI
du
= 0.5u + 2 + t (10.23)
dt
u(0) = 8 (10.24)
Itere a frmula
%---------------------------
function [u,t]=euler(h,Tmax)
u(1)= 8;
t(1)= 0;
itmax = Tmax/h;
for n=1:itmax
t(n+1)= t(n) + h;
u(n+1)= u(n) + h*(-0.5*u(n)+2+t(n));
end
plot(t,u,'g*-');
%---------------------------
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
e
u = (1 u)et
Colocando o termo u em evidncia, encontramos:
(1 + et )u = et (10.27)
t
E, finalmente, encontramos a soluo exata dada por u(t) = 1+e
e
t.
uk+1 = uk + huk (1 uk ),
u1 = 1/2.
u0 (t) = u(t) + t
u(0) = 1,
uk+1 = uk + h(uk + tk )
u1 = 1
Comparao
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
250 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
273
274 Clculo Numrico
u(a) = ua u1 = ua . (11.5)
u(b) = ub uN = ub . (11.6)
u1 = ua , (11.7)
1 2 1
ui1 + 2 ui + 2 ui+1 = f (xi , ui ), i = 2, . . . , N 1, (11.8)
h2 h h
uN = ub . (11.9)
1 XN
E := |u(xi ) ui | ,
N i=1
xi = (i 1)h, i = 1, 2, . . . , N,
a = 0
b = 1
N = 11
h = (b-a)/(N-1)
x = np.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[0,0] = 1
b[0] = 0
for i in np.arange(1,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
A[N-1,N-1] = 1
b[N-1] = 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)
Figura 11.2: Esboo dos grficos das solues analtica (linha) e numrica (pontos)
do PVC dado no exemplo 11.1.1.
(x 1)3
uxx = 100(x 1)2 ux + c1 = 100
3
(x 1)4
u + c2 x + c1 = 100 ,
12
(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
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com
11.1. MTODO DE DIFERENAS FINITAS 279
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
A figura 11.2 mostra o esboo dos grficos das solues analtica (11.17) e a da
soluo numrica (11.16).
Em Python, podemos fazer o esboo das solues analtica e numrica da se-
guinte forma:
#grafico
xx = np.linspace(0,1)
yy = np.zeros(50)
for i,xxi in enumerate(xx):
yy[i] = ue(xxi)
plt.plot(x',u,'ro',xx,yy,'b-')
plt.show()
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!
Em Python, podemos computar o erro absoluto mdio da seguinte forma:
E = 0
for i,xi in enumerate(x):
E += np.abs(ue(xi) - u[i])
E /= N
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
Exerccios Resolvidos
ER 11.1.1. Use o mtodo de diferenas finitas para resolver o seguinte problema
de valor de contorno:
uxx + u = ex , 0 < x < 1, (11.18)
u(0,5) = 1, (11.19)
u(1,5) = 2. (11.20)
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.
Agora, a equao diferencial dada no i-simo ponto da malha :
uxx (xi ) + u(xi ) = exi , i = 2, 3, . . . , N 1.
Denotando ui u(xi ) e usando a frmula de diferenas finitas central de ordem
dois para a derivada uxx , obtemos:
ui1 2ui + ui+1
2
+ ui = exi ,
h
para i = 2, 3, . . . , N 1. Rearranjando os termos e aplicando as condies de
contorno, temos o problema discretizado como segue:
u1 = 1
ui1 + (2 + h )ui ui+1 = h2 exi , i = 2, . . . , N 1,
2
uN = 2.
#malha
a = 0.5
b = 1.5
N = 11
h = (b-a)/(N-1)
x = np.linspace(a,b,N)
#sistema
A = np.zeros((N,N))
b = np.zeros(N)
A[0,0] = 1
b[0] = 1
for i in np.arange(1,N-1):
A[i,i-1] = -1
A[i,i] = 2 + h**2
A[i,i+1] = -1
#solucao
u = np.linalg.solve(A,b)
#grafico
plt.plot(x,u,'b-o')
plt.show()
Exerccios
285
286 Clculo Numrico
a) No console temos:
>>> quit()
#!/usr/bin/env python
# -*- coding: utf-8 -*-
s = 'Ol'
print(s)
>>> execfile("ola.py")
#!/usr/bin/env python
# -*- coding: utf-8 -*-
s = 'Ol'
print(s)
$ python ola.py
>>> x=1
>>> y = x * 2.0
>>> print(x,y)
(1, 2.0)
>>> type(x), type(y)
(<type 'int'>, <type 'float'>)
and e lgico
or ou lgico
not negao
== igualdade
!= diferente
< menor que
> maior que
<= menor ou igual que
>= maior ou igual que
A.3 Matrizes
Em Python, temos um timo suporte para computao cientfica com o pacote
numpy. Uma matriz A = [ai,j ]m,n
i,j=1 em Python definida usando-se a seguinte
sintaxe:
>>> print(A)
[[1 2 3]
[4 5 6]]
A seguinte lista contm uma srie de funes que geram matrizes particulares:
>>> A = np.ones((3,2))
>>> print(A)
[[ 1. 1.]
[ 1. 1.]
[ 1. 1.]]
>>> nl, nc = np.shape(A)
>>> print(nl,nc)
(3, 2)
A[i,j]
A[i1:i2, j1:j2]
>>> B = np.random.random((4,4))
>>> B
array([[ 0.94313432, 0.72650883, 0.55487089, 0.18753526],
[ 0.02094937, 0.45726099, 0.51925464, 0.8535878 ],
[ 0.75948469, 0.95362926, 0.77942318, 0.06464183],
[ 0.91243198, 0.22775889, 0.04061536, 0.14908227]])
>>> aux = np.copy(B[:,2])
>>> B[:,2] = np.copy(B[:,3])
>>> B[:,3] = np.copy(aux)
>>> B
array([[ 0.94313432, 0.72650883, 0.18753526, 0.55487089],
[ 0.02094937, 0.45726099, 0.8535878 , 0.51925464],
[ 0.75948469, 0.95362926, 0.06464183, 0.77942318],
[ 0.91243198, 0.22775889, 0.14908227, 0.04061536]])
[ 4., 4.]])
>>> A/B
array([[ 0.5, 0.5],
[ 0.5, 0.5]])
#!/usr/bin/env python
# -*- coding: utf-8 -*-
i = 2
if (i == 1):
print("Ol!")
elif (i == 2):
print("Hallo!")
elif (i == 3):
print("Hello!")
else:
print("a Va!")
for i in range(6):
print(i)
import numpy as np
for i in np.arange(1,8,2):
print(i)
for k = 10:-3:1
disp(k)
end
import numpy as np
for i in np.arange(10,1,-3):
print(i)
s = 0
i = 1
while (i <= 10):
s = s + i
i = i + 1
A.5 Funes
Alm das muitas funes disponveis em Python (e os tantos muitos pacotes
livers disponveis), podemos definir nossas prprias funes. Para tanto, existe a
instruo def. Veja os seguintes exemplos:
def f(x):
return x + np.sin(x)
>>> f(np.pi)
def h(x,y):
if (x < y):
return y - x
else:
return x - y
define a funo:
y x ,x < y
h(x,y) =
x y ,x y
def J(x):
y = np.zeros((2,2))
y[0,0] = 2*x[0]
y[0,1] = 2*x[1]
y[1,0] = -x[1]*np.sin(x[0]*x[1])
y[1,1] = -x[0]*np.sin(x[0]*x[1])
return y
A.6 Grficos
Para criar um esboo do grfico de uma funo de uma varivel real y = f (x),
podemos usar a biblioteca Python mathplotlib.A funo matplotlib.pyplot.plot
faz uma representao grfica de um conjunto de pontos {(xi , yi )} fornecidos.
Existe uma srie de opes para esta funo de forma que o usurio pode ajustar
vrias questes de visualizao. Veja a documentao.
E 2.1.5.
(101,1)2
E 2.1.6.
(11,1C)16
E 2.1.7.
50; 18
E 2.1.8.
10,5; (1010,1)2
E 2.2.1.
a) 2,99792458 105 b) 6,62607 1034
c) 6,674 108 d) 9,80665 104
E 2.5.2.
a) 1,7889; b) 1788,9; c) 0,0017889; d) 0,0045966; e) 2,1755 1010 ; f) 2,1755 1010
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.
297
298 Clculo Numrico
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+.
E 2.9.2.
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 2.9.6.
Em ambos casos, temos a seguinte estrutura:
S11 S12 [A] v1
=
S21 S22 [B] v2
De forma que
1
[A] S11 S12 v1 1 S22 S12 v1
= =
[B] S21 S22 v2 S11 S22 S12 S21 S21 S11 v2
Portanto
S22 v1 S12 v2
[A] =
S11 S22 S12 S21
S21 v1 + S11 v2
[B] =
S11 S22 S12 S21
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
1
[A] =
1 [A] + 1 [A] + 1 [A] + 1 [A]
[A]
[A] S11 S11 [A] S12 S12 [A] S21 S21 [A] S22 S22
h i
1 [A] [A]
= S22 S11 + S22 S12 + S12 S21 + S12 S22
|det S| [B] [B]
Analogamente, temos:
h i
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
Concluso, apesar de o sensor 3 apresentar uma incerteza cinco vezes maior na sensibilidade, a escolha do sensor 3 para fazer
par ao sensor 1 parece mais adequada.
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
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:
Portanto x = 2, y = 3, z = 5
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:
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
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.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
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).
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.
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
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 7.1.3.
a) 0,6025387; b) 0,5651848; c) 0,2851848; d) 0,1488041.
E 7.1.4.
1 x1
x2
PN
1
1 1 1
= PNN xj
T
V V = . j=1 =M
. PN 2
x1 x2 xN .. . xj xj
. j=1 j=1
1 xN
e
y1
PN
y2
V
T
y=
1 1 1
. = PNj=1 yj = w.
x1 x2 xN .. xj yj
j=1
yN
b) Sejam xi 6= xj duas abscissas diferentes. Ento, a i-sima e j-sima linhas na matriz V so linearmente independentes e,
portanto, o posto de V igual a 2. Por fim, V T V no singular, pois, se u tal que V T V u = 0, ento
T T T
0=u V V u = (V u) (V u) = (V u) (V u) V u = 0.
Agora, V u = 0 uma combinao linear das linhas de V igual a zero, logo u = 0, pois as linhas de V so linearmente
independentes como mostrado antes. Conclumos que se V T V u = 0, ento u = 0, isto , V T V no singular.
E 7.2.3.
a) a = 25,638625, b = 9,8591874, c = 4,9751219; b)a = 31,475524, b = 65,691531, c = 272,84382, d = 208,23621.
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.3.
0.7468337,2.4606311, 1.6595275.
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
E 9.7.6.
a)19.2, 22.1, 23.3 b)513.67K
E 9.7.8.
R1
f (x)dx = f 33 +f 3
3
1
E 9.7.9.
w1 = w3 = 1 e w2 = 0 com ordem 3.
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.
E 10.19.1.
1 ln 9
1 ln (6)
Os valores exatos para os itens e e f so: 10 4
e 10
E 10.19.2.
q p
g
O valor exato
1 e200 em t = 1
g
tanh1 1 e200
E 10.19.8.
E 11.1.1.
1 0 0 0 0
u1
5
1 2 1 0 0 u2 2
0 1 2 1 0
u3
= 2
0 0 1 2 1 u4 2
0 0 0 0 1 u5 10
Soluo: [5, 7.375, 9.25, 10.625, 11.5, 11.875, 11.75, 1.125, 10]
E 11.1.2. 120. 133.56 146.22 157.83 168.22 177.21 184.65 190.38 194.28 196.26 196.26 194.26 190.28 184.38 176.65 167.21
E 11.1.3. 391.13 391.13 390.24 388.29 385.12 380.56 374.44 366.61 356.95 345.38 331.82 316.27 298.73 279.27 257.99 234.99
E 11.1.4. 0., 6.57, 12.14, 16.73, 20.4, 23.24, 25.38, 26.93 , 28, 28.7, 29.06, 29.15, 28.95, 28.46, 27.62 , 26.36, 24.59, 22.18,
[3] R.L. Burden and J.D. Faires. Anlise Numrica. Cengage Learning, 8 edition,
2013.
[6] Walter Gautschi and Gabriele Inglese. Lower bounds for the condition
number of vandermonde matrices. Numerische Mathematik, 52(3):241250,
1987/1988.
[8] E. Isaacson and H.B. Keller. Analysis of numerical methods. Dover, Ontrio,
1994.
[9] Arieh Iserles. A first course in the numerical analysis of differential equations.
Cambridge university press, 2009.
[10] W.H. Press. Numerical Recipes 3rd Edition: The Art of Scientific Computing.
Cambridge University Press, 2007.
312
REFERNCIAS BIBLIOGRFICAS 313
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, sugestese avisos deixados em nossa lista de emails:
livro_colaborativo@googlegroups.com
Estas colaboraes no esto listadas aqui, mas podem ser vistas no site do grupo
de emails.
Caso encontre algum equvoco ou veja seu nome listado aqui por engano, por
favor, entre em contato conosco por email:
livroscolaborativos@gmail.com
314
ndice Remissivo
315
316 Clculo Numrico
sequncia de
Fibonacci, 75
simulao
computacional, 1
numrica, 1
sistema de equaes
no lineares, 131
sistema de numerao, 3
sistema linear, 82
condicionamento, 104
sistema numrico
de ponto fixo, 14
de ponto flutuante, 15
notao normalizada, 8
sistemas
de equaes diferenciais, 267
spline, 161
fixado, 166
natural, 164
not-a-knot, 167
periodico, 168