Apostila de Cálculo Numérico
Apostila de Cálculo Numérico
Apostila de Cálculo Numérico
1.0
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0.0
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
100
50
150
0
0.5
0.0
0.5
1.0
0.5
0.0
1.0
0.5
1.0
1.0
y
2
1.0
0.8
0.6
1
0.4
0.2
2.0
1.5
1.0
0.5
0.5
1.0
1.5
x
1
0.0
1
0.2
0.4
2
0.6
10
Vaaaaai Curintia!!!!
Sumrio
1 Introduo
1.1 Srie de Taylor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 Soluo de sistema lineares
2.1 Mtodo de Gauss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.1 Implementao do Mtodo de Gauss . . . . . . . . . . . . . . . . . . .
2.2 Mtodo de Gauss com pivoteamento parcial . . . . . . . . . . . . . . . . . . .
2.2.1 Implementao do Mtodo de Gauss com Pivoteamento . . . . . . . .
2.3 Decomposio LU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.1 Implementao do Mtodo da Decomposio LU para matrizes . . .
2.4 Mtodos iterativos: Ponto fixo, erros, norma de matriz e outras coisas mais
2.4.1 Mtodo do Ponto fixo linear e erros . . . . . . . . . . . . . . . . . . . .
2.4.2 Norma de Vetores e Matrizes . . . . . . . . . . . . . . . . . . . . . . .
2.5 Mtodo de Jacobi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5.1 Implementao do Mtodo de Jacobi . . . . . . . . . . . . . . . . . . .
2.6 Mtodo de Gauss-Seidel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.6.1 Implementao do Mtodo de Gauss-Seidel . . . . . . . . . . . . . . .
2.7 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.8 Projeto: Sistemas lineares . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
7
8
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
9
11
14
15
18
20
23
24
25
28
30
34
36
38
40
43
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
45
46
51
53
55
57
59
60
63
65
68
69
4 Interpolao Polinomial
4.1 Unicidade da expanso polinomial . . . . . .
4.2 Mtodo de Lagrange . . . . . . . . . . . . . .
4.3 Diferenas Divididas de Newton . . . . . . .
4.4 Splines Cbicas . . . . . . . . . . . . . . . . .
4.5 Exerccios . . . . . . . . . . . . . . . . . . . . .
4.6 Projeto: Interpolao de Funes Polinomiais
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
71
75
76
80
82
83
84
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
SUMRIO
Captulo 1
Introduo
Um curso de clculo numrico talvez no seja a primeira oportunidade que o aluno tem de utilizar-se
do computador para resolver aspectos importantes dos problemas que aparecem no clculo e lgebra
linear, mas o curso que torna tais conceitos numricos mais organizados e uma primeira tentativa
a fim de tornar este processo rigoroso.
Neste curso, no pretendemos nos aprofundar em nenhum tpico especificamente, mas procuraremos cobrir os principais aspectos do clculo numrico, introduzindo os mtodos e fazendo algumas
demonstraes intuitivas a cerca dos mesmos. Apesar do curso ser organizado para um pblico geral:
matemticos, fsicos, qumicos, engenheiros, e afins, acreditamos que um certo rigor necessrio no
momento da introduo dos mtodos, sem, entretanto, que tal rigor tire o foco do material que de
ser introdutrio e tratar o clculo numrico como uma ferramenta a ser utilizada para resolver problemas prticos. Na seo de bibliografia so listados vrias referncias que discorrem esses conceitos de
maneira mais rigorosa e aprofundada.
Como matemtico, aprendi a no acreditar em tudo que eu vejo; aprendi a desconfiar da beleza das
solues; aprendi a no confiar, cegamente, no mtodo que se coloca a minha frente. Como cientistas ou
usurios de ferramentas numricas para o clculo de problemas exatos, temos que ter perfeita confiana na soluo que encontramos, para tanto conhecermos, pelo menos rudimentos, das demonstraes
e rigor realmente bastante importante.
Neste texto, no farei nenhuma meno questo de erros de arredondamento como uma sesso
particular. Entretanto, quando trabalhamos com questes numricas tais erros de arredondamento
devem ser levados em conta. Devemos ter cincia disso, pois muitas vezes tais erros podem prejudicar
sobremaneira nossa soluo dando-nos respostas bastante erradas.
Hoje em dia, os computadores servem-se de uma memria bastante grande de modo que todos os
clculos so feitos com muitos dgitos significativos e os erros de arredondamento so, para a maioria
dos problemas prticos, bastante reduzidos. Mas seria uma temeridade dizer que eles no existem.
Ao longo do texto, procurarei chamar ateno desses aspectos em alguns momentos quando necessrio, sem, no entanto, me alongar por demasia nessas questes.
Vale lembrar que para cada uma dos assuntos a seguir, existem muitos outros mtodos. Seria
impossvel num cursos de um semestre atingir todos os mtodos e trat-los com todo o rigor necessrio.
Dessa forma fizemos uma escolha: apresentar os mtodos principais em cada seo.
Fizemos a opo de ao invs de trazermos os algoritmos, em cada subsesso, que descreve cada
um dos mtodos, trazemos o algoritmo implementado em Matlab. O mesmo contm instrues de uso
atravs de um pequeno tutorial como utiliz-lo.
O texto organizado como segue:
1. Captulo 1. Discutimos a soluo de sistemas lineares quadrados. Admitimos que a matriz dos
coeficientes associada ao sistema linear no singular, ou seja, o sistema possua soluo nica.
Apresentaremos mtodos diretos, de decomposio de matrizes e mtodos iterativos.
2. Captulo 2. Discutimos mtodos para se encontrar razes de funes reais e de funes vetoriais.
5
CAPTULO 1. INTRODUO
Todos os mtodos apresentados so, basicamente, iterativos. Aqui discutiremos, brevemente, o
mtodo de Taylor para a linearizao de funes reais.
3. Captulo 3. Neste captulo discutimos os mtodos usados para a interpolao de pontos, ou seja,
dado um conjunto de n pontos qual o melhor polinmio ou funo que melhor se ajusta a esses
pontos. Discutimos polinmio e splines. Note que os mtodos de interpolao servem para nos
dar condies de fazermos previses sobre valores que esto dentro do domnio dos pontos de
interpolao, entretanto, tal tcnica muito ruim para querermos fazer previses sobre pontos
que esto fora do domnio do domnio, ou seja, de extrapolarmos os pontos, fato este que discutido
no captuloa seguir.
4. Captulo 4. Neste captulo, desenvolvemos, brevemente, o conceito, bastante importante, de
dado um conjunto de pontos, qual a curva, de um determinado grau, que se ajusta melhor a
estes pontos. Observe que este conceito diferente do estudado no Captulo 3, pois aqui no
h necessidade das curvas interpolarem os pontos, apenas de ser uma melhor aproximao. Tal
conceito chamado mais geralmente de Mtodos dos Mnimos Quadrados. Ele a tcnica mais
usada em problemas experimentais pois atravs do ajuste de curvas possvel extrapolar fora
do domnio dos pontos, diferentemente dos mtodos de interpolao que no permitem uma boa
extrapolao.
5. Captulo 5. Discutimos aqui a derivao e a aproximao de derivadas numericamente. As
tcnicas so particularmente baseadas no mtodo de Taylor para a linearizao de funo.
6. Captulo 6. Neste captulo, seguindo a mesma linha do captulo anterior iremos aplicar o mtodo
de Taylor para a linearizao das funes a proposio dos mtodos numricos. Tambm utilizaremos mtodos de quadratura que constituem-se mtodos de uma melhor preciso e aparecem
de modo mais refinado. Neste captulo, fazemos uma breve introduo sobre a ideia terica da
introduo do conceito de integral, bem como a ideia de partio que ser particularmente til
para o estudo da resoluo de equaes diferenciais ordinrias.
7. Captulo 7. Aqui, fazemos a soluo de Equaes Diferencias Ordinrias (inclusive para sistemas) atravs de tcnicas aproximativas. Utilizamos de uma modelao matemtica para transformar equaes diferenciais ordinrias de ordem mais alto em sistemas de equaes afim de
aplicarmos as tcnicas desenvolvidas anteriormente.
Vale notar que o texto est sendo organizado aos poucos, portanto, alteraes podem ocorrer ao longo
do semestre. Em todas as sesses e subsesses so dados algoritmos implementados em matlab para
cada um dos mtodos introduzidos. Estude adequadamente os mtodos para obter-se os algoritmos.
A cada final de captulo, coloquei uma breve lista de exerccios, que foram retiradas, basicamente
da referncia [1]. Caso queira, poder procurar, em livros de clculo numrico, mais exerccios para
aprofundamento da matria que mais lhe interessar.
No final de cada sesso tambm colocado um projeto a ser desenvolvido. O aluno poder entregar
todos os projetos. Cada projeto vale um ponto na prova, alm da nota, na prova que corresponde.
para ser feito em grupo, os detalhes constam em cada projeto.
Como sequncia do texto, aqui, discutimos um mtodo bastante til em clculo numrico que a
expanso de Taylor. No nos aprofundaremos muito em tal tcnica, mas discutiremos brevemente
sua aplicao.
f ( x) =
an ( x c)n ?
(1.1)
i=0
Queremos que essa srie de potncia seja convergente para um raio de convergncia R, ou seja, admi
i=0
an ( x c)n .
(1.2)
i=0
(1.4)
f (c)
.
2!
Sendo bastante reduntante, com o mesmo algoritmo, podemos derivar (1.5) uma vez. Observe que o
grau do polinmio vai caindo que os coeficientes multiplicando cada ai so decrescentes e da forma
i (i 1)(i 2) (2)(1) = i!:
f ( x) = 3!a3 + 2 3 4a4 ( x c) + 3 4 5a5 ( x c)2 + 4 5 6a6 ( x c)3 .
(1.6)
CAPTULO 1. INTRODUO
8
Substituindo x = c em (1.6), ns temos, aps os clculos: ento
a3 =
f (c)
.
3!
(1.7)
f ( x) =
i=0
f n (c)
f (c)
( x c)n = f (c) + f (c)( x c) +
( x c)2 + .
n!
2!
(1.8)
Entretanto, muitas vezes queremos apenas uma aproximao da srie de Taylor, pois muito difcil
representarmos, em problemas cotidianos, todos os termos da srie. Ento truncamos a srie e expandimos apenas at um certo ndice k. A pergunta : Qual o erro cometido?
possvel mostrar,( veja referncias [1], [2]), que uma srie de Taylor pode ser escrita da seguinte
forma:
k
f n (c)
( x c ) n + Rk ,
(1.9)
f ( x) =
n!
i=0
no qual Rk o erro cometido. Tal erro dado por:
Rk =
f n+1 ( ( x))
( x c)n+1 .
(n + 1)!
(1.10)
Vale observar que no temos condies, em geral, de dizer quem ( x). Quando estudamos erro, em
geral utilizamos o pior caso possvel para fazer uma estimativa (o maior erro possvel que poderia
aparecer).
Dessa forma, a srie de Taylor escrita, contabilizando tal erro, como:
k
f ( x) =
i=0
f n+1 ( ( x))
f n (c)
( x c)n +
( x c)n+1 .
n!
(n + 1)!
(1.11)
Observao 1. Note que a o erro bem pequeno para valores de x bem prximos de c. Portanto, para
valores de x prximos de c precisamos reter apenas poucos termos da srie e erro tende a zero da ordem
de | x c|n+1 , ou seja, vai para zero bem rapidamente.
A srie de Taylor pode ser facilmente extendida para dimenso espacial n qualquer, entretanto,
quando for necessrio (se for necessrio) faremos a apresentao da srie de Taylor para a respectiva
dimenso.
1.2 Exerccios
Exerccio 1: Encontre a srie de Taylor das funes em torno dos pontos indicados:
a) f ( x) = e x , em torno de c = 1.
3
b) f ( x) = xe x , em torno de c = 0.
c) f ( x) = cos( x), em torno de c = .
d) f ( x) = x4 + 2x3 + x2 + 1, em torno de c = 10.
e) f ( x) = x4 sen( x), em torno de c = 0.
f ) f ( x) = ln( x), em torno de c = 1.
Captulo 2
. = ..,
am1 x1 + am2 x2 + amn xn = bm ,
(2.1)
(2.2)
AX = B,
no qual A a matriz dos coeficientes:
A=
a11
a21
..
.
a12
a22
..
.
am1
am2
a1n
a1n
..
.
amn
(2.4)
10
Alm disso, vamos admitir que o sistema linear (2.1) possua soluo nica. Os casos em que o
sistema no possua nenhuma soluo ou possua infinitas solues esto fora do escopo desse primeiro
curso introdutrio de clculo numrico. Uma anlise mais detalhada pode ser encontrada em livros
mais avanados de clculo numrico, listados nas referncias.
Sabemos de lgebra linear que para um sistema quadrado ter soluo nica, basta que a matriz dos
coeficientes A seja no singular. H vrias formas de verificar se uma matriz no singular, todas elas,
igualmente dificeis e a verificao, basicamente, depende de tcnicas de decomposio e fatorao de
matrizes. Algumas propriedades que exibem as matrizes quadradas no singulares so: determinante
da matriz A no zero; a matriz A pode ser invertida; a matriz A pode ser fatorada numa matriz
triangular com os elementos da diagonal principal todos diferentes de zero; etc..
Existem vrios mtodos para utilizados para a soluo de sistemas lineares.
Neste curso, estudaremos trs diferentes tipos mais utilizados:
1. Mtodo de Gauss - Mtodo direto para a soluo do sistema. Um dos mtodos mais utilizados,
inclusive em cursos de lgebra linear.
2. Mtodo de Gauss com pivoteamento parcial - O pivoteamento uma tcnica utilizada para evitar
que os erros de arredodamento se propagem muito para o sistema. Pode ser usado em sistemas
de equaes para os quais as equaes tenham ordens muito diferentes.
3. Mtodo de decomposio LU - Neste mtodo decompomos a matriz A = LU, no qual L uma
matriz triangular inferior e U uma matriz triangular superior, basicamente, neste mtodo utilizamos o mtodo de Gauss acima. Existem muitas outras formas de decompor uma matriz, tais
como decomposio A = PLU. Decomposio de Cholesky, caso a matriz seja definida positiva.
Mas aqui nos concentraremos apenas na decomposio LU que a mais usada e que serve, inclusive, para o caso em que a matriz seja singular.
4. Mtodos iterativos de Jacobi e Gauss-Seidel - Estes mtodos so bastante lentos para serem
aplicados a sistemas pequenos, entretanto so bem interessantes para sistemas grandes para os
quais a matriz dos coeficientes diagonalmente dominante e esparsa. Daremos tais definies
nas sees que se seguem.
Vale ressaltar que existem muitos outros mtodos para a resoluo de sistemas lineares. Alguns
deles levando-se em conta particularidades da matriz dos coeficientes, tais como: positividade, simetria, esparsidade, tridiagonalidade, etc. Sugerimos que quando o leitor deparar-se com a resoluo de
sistemas lineares grandes e com particularidades que ele procure as boas referncias dadas no final
do texto e procure l mtodos mais adequados as suas necessidades. A rea do clculo numrico
bastante rica e bem desenvolvida.
A parte de sistema linear est organizada em Sees: Mtodo de Gauss; mtodo de Gauss com
pivoteamento parcial; decomposio LU. Para a introduo dos mtodos iterativos construimos uma
seo no qual damos a ideia do ponto fixo para mtodos iterativos e discutimos, brevemente, a noo
de norma de vetores e de matrizes. Posteriormente discutimos os mtodos de Jacobi e Gauss-Seidel.
11
a 11 a 12 a 13 a 1n1 a 1n
0 a 22 a 23 a 2n1 a 2n
0
0 a 33 a 3n1 a 3n
(2.5)
0
0
0 a 44
a 4n
.
.
..
..
0
0
0
0
0
0
0
0
a nn
A= .
(2.6)
..
..
..
.
.
an1 an2 ann | bn
Segundo passo: Inicialmente devemos zerar todos os elementos da primeira coluna que esto abaixo
da primeira linha. Para isto vamos utilizar um piv.
Definio 7. Dada uma matriz A qualquer da forma (2.4), chamamos de piv da i-sima linha, o
primeiro elemento no nulo da linha a partir da esquerda. No texto, usaremos apenas a palavra piv,
a linha estar subentendida.
Caso o elemento a11 seja diferente de zero, este ser o nosso piv. Caso ele seja zero, devemos trocar
a posio entre a primeira linha e alguma linha que no tenha um elemento no nulo. Sempre existir
esta linha com elemento no nulo, pois a matriz no singular. Uma dica, quando for fazer esta troca,
procure trocar pela linha que possui o elemento de maior mdulo, pois o mtodo utilizado ser mais
estvel.
Aps as devidas trocas de linha, caso necessrio e admitindo que a11 seja diferente de zero, procedemos com a eliminao dos elementos ai1 para i = 2, 3, , n (ou seja, os elementos abaixo da primeira
linha). Para isto basta procedermos assim, para i = 2, 3, , n:
a1i
L1 ,
(2.7)
Li Li
a11
12
ou seja, trocamos a linha i pela linha i subtrada da linha 1 multiplicada por a1i / a11 .
Aps este primeiro passo a matriz fica da forma:
0 a22 a2n | b2
,
A=
..
..
..
.
.
.
(1)
an2
(1)
ann
(2.8)
(1)
| bn
no qual o sobrescrito (1) indica que o coeficiente no o original e sim aquele trocado por aquele
somado, ou seja, os novos elementos so dados por
a1i
(1)
a1 j .
ai j = ai j
a11
Prximos passos: O processo repetido. Note que aps a primeira rodada de operaes so introduzidos os zeros da primeira coluna. No segundo passo ser necessrio fazer operaes para introduzir os
(1)
zeros na segunda coluna abaixo da segunda linha. Caso a22 seja no nulo este ser o piv, entretanto,
caso este seja zero, deveremos, novamente, buscar um elemento diferente de zero na segunda coluna,
sempre existir pois, por hiptese, estamos admitindo que a matriz A no singular. Procedendo como
anteriormente, para i = 3, 4, , n fazemos:
!
(1)
a2i
L2 ,
(2.9)
Li Li
(1)
a22
A=
a11
0
0
..
.
a12
(1)
a22
0
a13
(1)
a23
(2)
a33
..
.
(2)
an3
(1)
ai j
(1)
a1i
(1)
a11
a1n
(1)
a2n
(2)
a3n
..
.
(2)
ann
!
| b1
(1)
| b2
(2)
| b3
(2)
| bn
(2.10)
(1)
a1 j .
Esse passo feito no mximo n 1 vezes. Aps a aplicao desses para as n 1 colunas (note que
a ltima no precisar ser modificada), encontramos uma matriz aumentada que da forma:
a 11 a 12 a 13 a 1n1 a 1n | b 1
0 a 22 a 23 a 2n1 a 2n | b 2
0
0 a 33 a 3n1 a 3n | b 3
(2.11)
0
0
0 a 44
a 4n | b 4
.
.
.
..
..
..
0
0
0
0
0
0
0
0
a nn | b n
ou seja, o sistema linear torna-se:
a 11 x1 + a 12 x2 + a 13 x3 + + a 1n1 xn1 + a 1n xn = b 1
a 12 x2 + a 23 x3 + + a 2n1 xn1 + a 2n xn = b 2
a 33 x3 + + a 3n1 xn1 + a 3n xn = b 3
..
..
.
..
.
.
. = ..
a nn xn = b n .
(2.12)
13
O subescrito em cada coeficiente indica que esta matriz foi operada quantas vezes necessria para
torn-la uma matriz triangular superior. O sistema (2.12) exatamente equivalente ao sistema original (2.1).
Definio 8. Para encontrar a soluo basta resolv-lo debaixo para cima, tal tcnica chamada de
retrossubstituio. Note que fcil obter a soluo desta forma, pois:
xn =
xn1 =
..
.
b n
,
a nn
b n1 a n1n xn
..
.,
a nn
(2.13)
(2.14)
(2.15)
b a 1n xn a 12 x2
.
x1 = 1
a 1
(2.16)
2x1 + x 2 + 3x3 x4 = 2
3x1 + 2x2 + 2x3 + 2x4 = 3
(2.17)
2x1 x2 x3 + x4 = 7
1
2
C=
3
2
3 4
2
1
3 1
,
2
2
2
1 1 1
1
2
M=
3
2
3 4
2
8
1
3 1 2
,
2
2
2 3
1 1 1
7
(2.18)
Procedendo para tornar a matriz C, uma matriz triangular superior, operamos sobre a matriz aumentada M. A primeira coisa a fazer introduzir zeros na primeira coluna abaixo da primeira linha.
Note que o piv (que o elemento da primeira linha e primeira coluna) a ser usado para tornar os elementos abaixo da primeira linha da primeira coluna todos zero 1. No ser necessrio fazer nenhuma
permutao de linhas.
Ento procedendo as operaes fazemos:
L2 2L1 L2,
L3 3L1 L3
and
L4 2L1 L4.
(2.19)
1
0
M=
0
0
3
4
2
8
7
5 5 14
11 10 4 27
5
9 3 9
(2.20)
Como prximo passo, introduzimos zeros abaixo da segunda linha e segunda coluna. O piv a ser
utilizado para o segundo passo ser 7.
Note que no mexemos mais na linha 1. Ento procedendo as operaes fazemos:
L3
(11)
L L3
(7) 2
and
L4
(5)
L L4.
(7) 2
(2.21)
14
obtemos a matriz aumentada M como:
1
0
M= 0
3
7
0
0
4
5
15
7
38
2
5
15
7
4
7
8
14
(2.22)
Finalmente, devemos introduzir zeros abaixo da terceira linha e terceira coluna. Observe que o piv
15
agora ser . Dessa forma procedemos com o seguinte clculo:
7
L4
(38)/(7)
38
L3 L4, ou seja, L4
L3 L4
(15)/(7)
15
(2.23)
1
0
M= 0
3
7
0
0
4
5
15
7
0
2
5
27
7
46
8
14
41
3
=8
= 14
= 5
=
41
3
2.1.1
%
%
%
%
%
5+
function x = Gauss(A, b)
Resolve o sistema linear Ax = b
usando eliminao de Gauss
A uma matriz n por n
b o vetor do lado direito da forma b=(b1,b2,...,bn)^T
x o vetor a ser encontrado
[n, n] = size(A);
x = zeros(n,1);
(2.24)
15
for i = 1:n-1
m = -A(i+1:n,i)/A(i,i); % Encontra a razo entre os elementos divididos pelo pivo.
A(i+1:n,:) = A(i+1:n,:) + m*A(i,:);
b(i+1:n) = b(i+1:n) + m*b(i);
end;
% Usando retro-substituicao para encontrar a solucao.
x(n) = b(n)/A(n,n);
for i = n-1:-1:1
x(i) = (b(i) - A(i,i+1:n)*x(i+1:n))/A(i,i);
end
(2.25)
(2.26)
Verifique que este sistema possui como soluo exata x1 = 10 e x2 = 1. Para tanto basta substituir
esses valores em (2.25) e (2.26).
Entretanto, suponhamos que queiramos resolver pelo mtodo de Gauss. Dessa forma a matriz
aumentada do sistema acima ser:
0, 003 59, 14 59, 17
.
(2.27)
5, 291 6, 130 46, 78
Note que o piv para da primeira linha 0, 003, que apesar de pequeno diferente de zero. Para
proceder os clculos, imaginemos que queiramos ao invs de utilizar os valores exatos, que usemos
uma aproximao do valor. Para a aproximao temos dois tipos de formas de aproximar um nmero:
truncamento e arredondamento.
Definio 9. Uma operao de truncamento de trs dgitos significativos aquela para o qual so
pegados apenas 3 dgitos aps a vrgula, desconsiderando-se o valor do quarto dgito aps a vrgula.
Exemplo: Truncamento do nmero 0, 0346843 ser de 0, 034.
Definio 10. Uma operao de arredondamento de trs dgitos significativos aquela para o qual
so pegados os 2 primeiros dgitos significativos e o terceiro dgito depende do valor do quarto dgito
aps a vrgula, se o quarto dgito for maior ou igual a 5, ser acrescido um ao terceiro dgito, caso o
quarto dgito seja menor do que 5 o terceiro dgito mantido inalterado. Exemplo: Arredondamento do
nmero 0, 0346843 ser de 0, 035.
Vamos utilizar um arredodamento de 3 casas aps a vrgula. Ento procedendo a decomposio de
Gauss, devemos fazer a seguinte operao:
L2
5, 291
L1 L2 .
0, 003
104289, 6633333333
104383, 2133333333 ) T
Usando trs casas decimais aps a vrgula para o arredondamento, aproximamos L2 por:
L2 = (0;
104289, 663
104383, 213 ) T
16
Note que esta aproximao, a nossos olhos, parece muito boa. Ento o sistema linear, com as aproximaes, fica da forma:
0, 003x1 + 59, 14x2 = 59, 17
104289, 663x2 = 104383, 213
(2.28)
(2.29)
104383, 663
1.000897020829380,
104289, 213
o qual pode ser aproximado, com 3 casas decimais aps a vrgula, por x2 = 1.001. Observe que este
valor est bem prximo do valor exato x2 = 1 que a soluo exata do nosso sistema.
Ento, substituindo x2 = 1.001 em (2.28) obtemos:
0, 003x1 + 59, 14(1, 001) = 59, 17, x1 =
(2.30)
Note que a soluo x1 = 9.667 totalmente diferente da soluo original do problema que x1 = 10.
A questo que surge : Por que isto aconteceu? Veja a Figura (2.1.a), no qual fazemos o desenho de
cada uma das retas definidas por (2.25) e (2.26). A reta azul obtida de (2.25), escrevendo-se x1 em
funo de x2 . A reta vermelha obtida de (2.26), escrevendo-se tambm x1 em funo de x2 . Note que
h uma variao muito grande na reta azul, a vermelha est, nesta escala, praticamente sobre o eixo
x.
Isto ocorreu porque o piv utilizado no primeiro nvel de clculo foi (em mdulo) muito pequeno
(0, 003) comparado com os outros nmeros do sistema. Note que na primeira operao dividimos L2 por
este valor. Isto introduz erros numricos que podem se acumular e acabamos no tendo controle sobre
isto.
Como devemos proceder? Como na primeira coluna o nmero 5, 291 maior do que o nmero
0, 003 permutamos a L1 com L2 para obtermos a seguinte matriz (note que o sistema o mesmo a ser
resolvido):
5, 291 6, 130 46, 78
.
(2.31)
0, 003 59, 14 59, 17
Vamos utilizar um arredodamento de 3 casas aps a vrgula. Ento procedendo, como anteriormente,
a decomposio de Gauss, devemos fazer a seguinte operao:
L2
0, 003
L1 L2 .
5, 291
59, 143475713475716
59, 143475713475716 ) T
Surpreendentemente, os valores com 15 casas decimais aps a vrgula exatamente o mesmo. Usando
trs casas decimais aps a vrgula para o arredondamento, aproximamos L2 por:
L2 = (0;
59, 143
59, 143 ) T
17
x2
x1
18000
16000
0
1
14000
10
11
x1
1
12000
2
10000
8000
6000
4000
2000
6
0
0.1
2000
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
1.1
x2
Figura 2.1: a)- Esquerda. A reta azul obtida de (2.25), escrevendo-se x1 em funo de x2 . A reta vermelha obtida de (2.26), escrevendo-se tambm x1 em funo de x2 . Note que h uma variao muito
grande na reta azul, a vermelha est, nesta escala, praticamente sobre o eixo x. b)- Direita. A reta azul
obtida de (2.25), escrevendo-se x2 em funo de x1 . A reta vermelha obtida de (2.26), escrevendose tambm x2 em funo de x1 . Nesta estratgia, as duas retas tem um crescimento praticamente
parecido e bem melhor comportado.
Note que a soluo encontrada foi exata. Veja a Figura (2.1.b), no qual fazemos o desenho de cada uma
das retas definidas por (2.25) e (2.26). A reta azul obtida de (2.25), escrevendo-se x2 em funo de
x1 . A reta vermelha obtida de (2.26), escrevendo-se tambm x2 em funo de x 1 . Note que agora
houve um comportamento bem menos abrupto da soluo, e as retas tem uma ordem de crescimento,
praticamente igual.
Por que agora o mtodo de Gauss funcionou? Funcionou pois foi aplicado o que chamamos de
Pivoteamento Parcial O Pivoteamento parcial uma tcnica muito simples. Basta em cada nvel
de fatorao, sempre fazermos as permutaes necessrias para tornarmos o piv como sendo o maior
elemento, em mdulo, de cada coluna.
Neste caso o algoritmo de Gauss ficar modificado para os seguintes passos:
Primeiro passo: Como no mtodo de Gauss, inicialmente construmos a matriz aumentada do sistema (2.1), dada por (2.6).
Segundo passo: Inicialmente devemos zerar todos os elementos da primeira coluna que esto abaixo
da primeira linha. Para isto vamos utilizar um piv. Entretanto antes de zerar esses elementos,
devemos escolher um piv bem adequado. Para isto queremos o maior nmero (em mdulo) possvel.
Ento fazemos uma busca, na primeira coluna, do maior elemento em mdulo. Se este maior elemento
(em mdulo) est na k-sima linha (,ou seja, | a1 j | | a1k | para j = 1, 2, , n), trocamos a L1 com Lk ,
mantendo as outras linhas originais sem mudar de lugar.
Aps as devidas trocas de linhas, o sistema que temos equivalente ao sistema original. Para facilitar nossa notao renomeamos os elementos novamente como elementos da linha 1 como a1i para
i = 1, 2, , n, elementos da linha 2 como a2i para i = 1, 2, , n e assim sucessivamente. Para procedemos com a eliminao dos elementos a1i para i = 2, 3, , n (ou seja, os elementos da primeira
coluna abaixo da primeira linha). Para isto basta procedermos assim, para j = 2, 3, , n:
Li Li
a1i
a11
L1 ,
ou seja, trocamos a linha i pela linha i subtrada da linha 1 multiplicada por a1i / a11 .
(2.32)
18
a11 a12
(1)
0 a22
A= .
..
.
..
0
(1)
an2
a1n
(1)
a2n
..
.
(1)
ann
| b1
(1)
| b2
(1)
| bn
(2.33)
no qual o sobrescrito (1) indica que o coeficiente no o original e sim aquele trocado por aquele
somado, ou seja, os novos elementos so dados por
a1i
(1)
a1 j .
ai j = ai j
a11
Prximos passos: O processo repetido. Note que aps a primeira rodada de operaes so introduzidos os zeros da primeira coluna. No segundo passo ser necessrio fazer operaes para introduzir os
zeros na segunda coluna abaixo da segunda linha. Entretanto antes de zerar esses elementos, devemos
proceder como anteriormente e escolher um piv bem adequado. Para isto queremos o maior nmero
(em mdulo) possvel. Ento fazemos uma busca, na segunda coluna, do maior elemento em mdulo.
Se este maior elemento (em mdulo) est na k-sima linha (,ou seja, | a2 j | | a2k | para j = 2, 3, , n),
trocamos a L2 com Lk , mantendo as outras linhas originais sem mudar de lugar.
Aps as devidas trocas de linhas, o sistema que temos equivalente ao sistema original. Para
facilitar nossa notao renomeamos os elementos novamente elementos da linha 2 como a2i para i =
2, 3, , n, elementos da linha 3 como a3i para i = 2, 3, , n e assim sucessivamente. Note que a
posio a1i = 0 para i = 2, 3, , n em todas as linhas.
Para procedemos com a eliminao dos elementos a2i para i = 3, 4, , n (ou seja, os elementos
da segunda linha coluna abaixo da segunda linha). Para isto basta procedermos assim, para i =
3, 4, , n:
!
(1)
a2i
L2 ,
(2.34)
Li Li
(1)
a22
o que nos d uma matriz da forma (2.10). Esse passo feito no mximo n 1 vezes. Aps a aplicao
desses para as n 1 colunas (note que a ltima no precisar ser modificada), encontramos uma matriz
aumentada que da forma (2.11) que nos fornece o sistema da forma (2.12). Aqui no h diferena
do processo do mtodo de Gauss, pois o pivoteamento parcial foi utilizado apenas para tornar a matriz
dos coeficientes uma matriz diagonal superior. A soluo obtida por retrossubstituio dada pela
definio 8.
2.2.1
function x = GaussPP(A,b)
%
%
%
%
n = size(A,1);
A = [A,b];
19
for i = 1:n-1
p = i;
%Comparao para selecionar o pivo, observe que faz-se uma comparao
%entre os elementos que so maiores em valores absolutos.
for j = i+1:n
if abs(A(j,i)) > abs(A(i,i))
U = A(i,:);
A(i,:) = A(j,:);
A(j,:) = U;
end
end
%verificando se os pivos no so nulos.
while A(p,i)== 0 & p <= n
p = p+1;
end
if p == n+1
disp(Sem soluo unica); % neste caso o mtodo para, pois no est adequado pa
% matriz que no tenham soluo unica.
break
else
if p ~= i
T = A(i,:);
A(i,:) = A(p,:);
A(p,:) = T;
end
end
for j = i+1:n
m = A(j,i)/A(i,i);
for k = i+1:n+1
A(j,k) = A(j,k) - m*A(i,k);
end
end
end
%Checando se a ultima entrada no zero. (isto serve para garantir que o mtodo tenha s
if A(n,n) == 0
disp(Solucao nao unica);
return
end
%Retro-substituicao
x(n) = A(n,n+1)/A(n,n);
for i = n - 1:-1:1
sumax = 0;
for j = i+1:n
sumax = sumax + A(i,j)*x(j);
end
x(i) = (A(i,n+1) - sumax)/A(i,i);
end
20
2.3 Decomposio LU
Queremos fator a matriz A como um produto de duas outras matrizes na forma A = LU no
uma matriz triangular inferior U uma matriz triangular superior, ou seja,
1
0
0
0 0
u11 u12 u13 u1n1
l
0
0 0
a11 a12 a1n
21 1
0 u22 u23 u2n1
l31 l32 1
0 0
0
a21 a22 a2n
0 u33 u3n1
..
..
= .
0
..
..
.
.
0
0 u44
.
.
.
1
0
.
.
.
.
.
.
..
.
.
.
.
.
..
. . ..
0
0
0
0
an1 an2 ann
..
0
0
0
0
ln1 ln2 ln3
1
qual L
u1n
u2n
u3n
u4n
..
.
unn
(2.35)
Observe que a vantagem de poder quebrar A = LU que o sistema (2.3) poder ser resolvido para
qualquer b diferente, sem que haja necessidades de se aplicar o mtodo de Gauss toda vez. Ento, para
resolver o sistema basta:
Ax = b, LUx = b.
(2.36)
Quebramos a soluo em duas. Primeiro definimos y = Ux e resolvemos, por substituio o sistema:
1
0
0
0 0
y1
b1
l21 1
0
0 0
y2
b2
l31 l32 1
0
0
y
b
3
3
.
..
..
..
Ly = b,
=
(2.37)
.
.
.. ..
.
.
1 0
.
..
.
..
..
. .. yn1 bn1
.
yn
bn
ln1 ln2 ln3
1
da seguinte forma:
y 1 = b1 ,
y2 = b2 y1 l21 ,
..
.
(2.38)
x1
u11 u12 u13 u1n1 u1n
y1
0 u22 u23 u2n1 u2n x2 y2
Ux = y, 0
=
(2.39)
0
0 u44
u4n .. ..
.
.
..
..
0
.
. xn1 yn1
0
0
0
0
0
0
0
unn
xn
yn
da seguinte forma:
yn
,
unn
y
xn un1n
= n1
,
un1n1
xn =
xn1
..
.
(2.40)
2.3. DECOMPOSIO LU
21
A decomposio da matriz segue os mesmos princpios da decomposio de Gauss. Isso ocorre, pois,
possvel atravs de operaes elementares (ou seja, operaes sobre as linhas da matriz) transformar
A numa matriz triangular superior atravs do mtodo de Gauss. Cada operao elementar pode ser
expressa atravs de uma matriz chamada de matriz de operaes elementares o qual denotada
por M( i) . Por exemplo, para deixar a matriz A da forma (2.8) basta multiplicar a matriz A pela matriz
elementar M( 1) como M( 1) A = A( 1) , e obtemos a matriz A( 1):
1
21
aa11
..
.
aan1
11
0
1
..
.
0
0
..
.
1
a11
a21
..
.
a12
a22
..
.
an1
an2
a1n
a2n
..
.
ann
,=
a11
0
..
.
a12
(1)
a22
..
.
an2
(1)
a1n
(1)
a2n
..
.
(1)
ann
(2.41)
1
0
..
.
(1)
(1)
0
0
..
.
..
0
1
a 32
a 22
..
.
(1)
a n2
(1)
a 22
0
0
..
.
.
a11
.
..
..
.
a12
(1)
a22
..
.
(1)
an2
a1n
(1)
a2n
..
.
(1)
ann
,=
a11
0
0
..
.
a12
(1)
a22
0
a13
(1)
a23
(2)
a33
..
.
an3
(2)
a1n
(1)
a2n
(2)
a3n
..
.
(2)
ann
(2.42)
Note que a matriz M( i), para a i-esima operao, esta associada a i-esima coluna e tem a sempre a
forma:
1 0
0
0
0 1
0
0
..
..
.
.
0
0
0
(i1)
..
..
a i +1i
0
1
.
.
(2.43)
(i1)
a ii
.
..
.
..
..
. ..
.
0
(i1)
a ni
0 (i1) 0 1
a ii
Atravs dessa anlise, como devemos colocar zeros abaixo da primeira linha e primeira coluna, abaixo
da segunda linha segunda coluna, abaixo da terceira linha e terceira coluna e assim, sucessivamente,
teremos n 1 matrizes (pois a ltima coluna no mexemos). Ento para conseguirmos escrever a
matriz A como uma matriz triangular superior U, basta multiplicar A pelas matriz M( i) e temos:
M( n1) M( n2) M( 1) A = U.
(2.44)
Como sabemos que toda matriz de transformao elementar invertvel, podemos inverter o produto
( M(n1) M(n2) M(1) )1 = ( M(1) )1 ( M(2) )1 ( M(n1) )1 , que uma matriz triangular inferior,
desta forma a matriz A pode ser escrita como:
A = ( M( 1) )1 ( M( 2) )1 ( M( n1))1 U,
(2.45)
22
1
0
..
.
0
..
.
0
0
1
0
..
.
(i1)
a i +1i
(i1)
a ii
..
.
(i1)
a ni
(i1)
a ii
0
0
0
0
0
..
.
0
..
.
..
..
.
1
0
0
0
a21
0
0
a11
(1)
..
a 32
..
0
0
(1)
a 22
(i1)
..
..
a i +1i
ai+11
.
.
1
a11
(i1)
a ii
.
..
..
..
.
.
.
.
.
(n 2)
(i1)
an1
a nn 1
a ni
1
(i1)
(n 2)
a 11
a ii
(2.46)
(2.47)
a n 1n 1
Teorema 1. Se uma matriz quadrada A pode ser colocada na forma triangular superior atravs do
mtodo de Gauss sem que haja necessidade de pivoteamento e nenhum elemento da diagonal principal
nulo, ento A pode ser decomposta na forma A = LU, no qual L uma matriz triangular inferior com
elementos todos iguais a 1 na diagonal principal e U uma matriz triangular superior.
Exemplo 2. Vamos decompor a matriz C dada por (2.18) como um produto C = LU. Para fazer isto,
basta notar que j fizemos a decomposio de Gauss. Ento a matriz L ser formada pelos nmeros que
foram multiplicados pelas linhas com os sinais trocados. A primeira coluna da matriz L ser formada
pelos nmeros que usados em (2.19) com o sinal trocado, ou seja, a primeira coluna ser (1, 2, 3, 2) T. A
segunda coluna da matriz L ser formada pelos nmeros usados em (2.21) com o sinal trocado, ou seja,
(0, 1, 11/7, 5/7) T. A terceira coluna da matriz L ser formada pelo nmero usado em (2.23) com o sinal
trocado, ou seja, (0, 0, 1, 38/15) T. A matriz U ser a matriz resultante da operao, ou seja:
1 3
4
2
1 0
0 0
0 7
2 1
5
5
0 0
27
U = 0 0 15
(2.48)
L = 3 11
,
1
0
7
7
7
5
46
38
2
0 0
0
1
7
15
5
Se quisermos resolver o sistema (2.17) utilizando esta tcnica resolvemos inicialmente:
1 0
0 0
y1
8
2 1
0
0
y2
= 2
3 11
1
0
y3
3
5
38
y4
7
2
1
7
15
(2.49)
2.3. DECOMPOSIO LU
23
1 3
4
0 7
15
0 0
0 0
0
2
5
27
7
46
8
x1
14
x2
=
x 3 5
41
x4
3
27
x4
47
7
,
x3 =
15
138
7
5+
x3 =
76
14 + 5x3 + 5x4
x2 = ,
7
23
167
x1 = 8 + 3x2 4x3 2x4 x1 =
.
69
x2 =
2.3.1
function [L,U]=LUfactor(A)
%
%
%
%
%
%
%
[n,n]=size(A);
L=eye(n);
for k=1:n
if (A(k,k) == 0) Error(Pivoteamento necessrio); end
L(k+1:n,k)=A(k+1:n,k)/A(k,k);
for j=k+1:n
A(j,:)=A(j,:)-L(j,k)*A(k,:);
end
end
U=A;
(2.50)
24
10x = 10.
Todo mundo sabe que a resposta para esta equao x = 1, no h segredo. Entretanto, podemos
propor um mtodo numrico iterativo dado recursivamente atravs da seguinte manipulao:
Metodo 1.
9x + x = 10,
9x ( n+1) = 10 x ( n)
definimos a iterao
ou
x( n+1) =
10 x( n)
.
9
9
(2.52)
Para comear a iterao necessrio um chute inicial. Caso este chute seja bem dado a soluo pode
ou no convergir rapidamente. Vamos, inicialmente fornecere como chute inicial x ( 0) = 0. Dessa forma,
atravs da relao estabelecida acima (2.52) encontramos x( 1) como:
x(1) =
10
10 x( 0)
, x( 1) =
.
9
9
9
(2.53)
(2.54)
80
10 x( 1)
10 10
, x( 2) =
2 = 2.
9
9
9
9
9
(2.55)
(2.56)
10 80
10 x( 2)
730
, x( 3) =
3 = 3 .
9
9
9
9
9
(2.57)
|x
(2)
(3)
80 730
10
| = 2 3 = 3 .
9
9
9
(2.58)
Observe que podemos aplicar, sucessivamente este critrio e teremos que x( n) tender a 1 quando n vai
para o infinito pois a distncia entre termos consecutivos xn1 e x ( n) satisfaz a seguinte lei:
| xn1 x( n) | =
10
.
9n
(2.59)
2.4. MTODOS ITERATIVOS: PONTO FIXO, ERROS, NORMA DE MATRIZ E OUTRAS COISAS MAIS25
104 , perceba que na n-sima iterao o erro entre termos consecutivos dado por 10/9n . Portanto, para
saber at quando vc ir iteragir basta ento encontrar n tal que | x n1 x( n) | < 104 |, ou seja, :
10
5
< 104 , 105 < 9n
< n.
9n
log(9)
(2.60)
A ltima desigualdade foi obtida passando logaritmo e log (9) o logaritmo de 9 na base 10 que
aproximadamente 0.9542. Ento basta iterar 6 n, para atingir a preciso exigida.
Metodo 2. Vamos pensar no mesmo problema, s que mudando o mtodo:
9x + x = 10,
definimos a iterao
x ( n+1) = 10 9x( n) .
(2.61)
Vamos, inicialmente fornecer como chute inicial x ( 0) = 0. Dessa forma, atravs da relao estabelecida
acima (2.61) encontramos x( 1) como:
x( 1) = 10 9x( 0), x( 1) = 10.
(2.62)
(2.63)
(2.64)
(2.65)
(2.66)
(2.67)
Observe que podemos aplicar, sucessivamente este critrio e teremos que x( n) nunca tender a 1 quando n
vai para o infinito pois a distncia entre termos consecutivos xn1 e x( n) est cada vez mais aumentando.
E a pergunta relevante : Por que o Mtodo 1 funcionou e o Mtodo 2 no funcionou?
2.4.1
Tais mtodos so casos particulares de problemas iterativos chamados de mtodo do ponto fixo. O
mtodo do ponto fixo est baseado numa metodologia bastante utilizada em clculo numrico que
do clculo recursivo. Imagine que tenhamos uma sequncia de pontos x( n) para n = 1, 2, 3, dada
recursivamente atravs da relao
x( n+1) = f ( x( n) ),
(2.68)
no qual f : D R R uma funo qualquer (o argumento vlido se a funo f : D Rm R( n) ),
observe que D o domnio da funo. Caso f seja uma contrao uniforme, ou seja, para todo x, y D
exista uma constante 0 K < 1 tal que
(2.69)
26
possvel mostrar que (2.68) possui um ponto fixo, ou seja, existe um x tal que satisfaa:
x = f ( x ).
(2.70)
Neste caso, dizemos que a sequncia x( n) dada por (2.68) convergente, ou seja,
x = lim x( n+1) = lim f ( x( n) ) = f ( lim x( n) ) = f ( x ),
n
(2.71)
Para o caso linear, consideremos uma funo f ( x ( n) ) = Tx( n) + c, no qual T e c so nmeros (mais tarde
faremos a extenso para T sendo uma matriz).
Neste caso o nosso mtodo iterativo torna-se:
x( n+1) = Tx( n) + c,
(2.72)
(2.73)
i=0
T i = T n+1 + T n + T n1 + + T + 1 =
1 T n+1
1T
(2.74)
1 T n+1
c.
1T
(2.75)
Note que so podemos tomar n se | T | < 1. Caso 1 | T | a srie no converge. Tomando limite
de n em (2.74) temos que lim n T n+1 = 0 e:
1
Ti = 1 T .
(2.76)
i=0
T i c = 1 T c, x (1 T ) = c x = Tx + c,
n
i=0
(2.77)
2.4. MTODOS ITERATIVOS: PONTO FIXO, ERROS, NORMA DE MATRIZ E OUTRAS COISAS MAIS27
Definio 12. Definimos como erro absoluto o valor numrico para o qual a soluo encontrada difere
(n)
da soluo exata. Note que se x a soluo exata ento o erro, denotado por Er abs na i-sima iterao
definido como:
(i)
Er abs = || x x( i) ||.
(2.78)
Entretanto, muito mais til trabalhar com o erro relativo. Se || x || > 0, ento
(i)
Errel =
|| x x(i) ||
,
|| x ||
(2.79)
pois, se por exemplo, x for muito grande e o valor de tol > 0 muito pequeno, o valor demorar muito a
ser obtido. Vamos considerar um caso ilustrativo.
Suponha, para um problema, que a soluo correta seja x = 10000000, e coloquemos como tolerncia tol = 0, 01, ento o mtodo ir parar apenas quando x( i) estiver dentro do intervalo (9999999, 99; 10000000, 01).
Entretanto, para mtodos aproximativos isso poder ser muito demorado. uma Uma soluo do tipo
100000001 j uma excelente aproximao, o erro relativo, ser em torno de 10( 7).
O erro relativo tambm funciona bem se x bem pequeno. Imagine se a soluo correta x (0, 0001),
e colocamos uma tolerncia de 0, 01, ento a soluo a ser atingida menor do que o prprio erro.
Como, muitas vezes, no temos controle sobre este fato, sempre preferimos utilizar o erro relativo.
Atravs do mtodo acima podemos provar o seguinte teorema:
Teorema 3. O mtodo iterativo Eq. (2.77), fornece uma sequncia de pontos x( i) tal que dois valores
consecutivos da sequncia tem a distncia dada por | x( i+1) x( i) | = | T |n (|1 T || x ( 0) | + |c|) (Eq. (2.80)
( i +1 ) x ( i ) | = | T | n (| 1 T || x ( 0 ) | + | c |). Alm disso
abaixo). Se x( 0) =
0, ento a distncia reduz-se a | x
n
c
e se x( 0) = 0, ento | x x( i) | = cT .
| x(i) x | = | T n | x(0) +
1 T
1 T
Prova: Note pelo mtodo iterativo de (2.77)
1 Tn
T n T n+1
1 T n+1
c ( T n x(0) +
c) = ( T n+1 T n ) x( 0) +
c
x( i+1) x( i) = T n+1 x( 0) +
1T
1T
1T
1T
x( i+1) x( i) = T n ( T 1) x ( 0) +
c = T n ( T 1) x(0) + c
1T
Note de (2.80) que se o chute inicial x( 0) for 0, ento temos que | x ( i+1) x( i) | = | T |n |c|.
Agora o erro, dado por | x ( i) x | satisfaz:
1
1 T n
c
| x x(i) | =
( T n x(0) +
c) = | T n | x( 0) +
.
1T
1T
1 T
cT n
.
Note que se x( 0) = 0, ento o erro dado por | x x( i) | =
1 T
(2.80)
(2.81)
Definio 13. O nmero de iteraes para se atingir a preciso desejada, entendido como o nmero
de vezes que devemos fazer os clculos tal que o erro, seja menor do que uma determinada tolerncia,
tol, ou seja,
|| x x(i) ||
Eriabs =
< tol
|| x ||
Dessa forma qualquer x ( x tol || x ||, x + tol || x ||) admitido como soluo do problema.
28
Observao 2. Todo algoritmo iterativo deve ser colocado um nmero mximo de iteraes para o qual
o mtodo pode ser executado. Isso necessrio, pois, caso o mtodo no convirja os clculos podero ser
feitos sem parar (por exemplo,se T > 1) e o mtodo nunca ir atingir nenhum valor. Dessa forma definimos Nmero mximo de iteraes como sendo o maior nmero de iteraes admitido no processo
iterativo. Muitas vezes, caso esse nmero seja atingido o mtodo no converge. Caso haja confiana no
mtodo, basta aumentar esse nmero de iteraes. Para mtodos no convergentes, o nmero mximo
de iteraes sempre ser atingido para uma tolerncia dada.
(i)
Observao 3. Ento note
pelo Teorema
3 que a diferena entre x , x , que o erro, tem como valor
c
numrico | x ( i) x | = | T n | x( 0) +
e que a distncia entre dois termos consecutivos x ( i) e x( i+1)
1 T
| x(i+1) x(i) | = | T |n (|1 T || x(0) | + |c|), ou seja, tais diferenas so bastante similares. Entretanto, do
ponto de vista computacional muito mais fcil quantificar a distncia entre dois pontos consecutivos.
Ento como vamos admitir que uma raiz satisfaz uma tolerncia exigida tol sempre que tivermos dois
termos consecutivos distando no mximo de tol || x ( i+1)|| (erro relativo) um do outros, ou seja, se tivermos
i tal que
|| x(i+1) x(i) ||
< tol,
(2.82)
|| x(i+1)||
ento dizemos que atingimos a tolerncia exigida. Note que xi+1 diferente de zero, pois a nica
possibilidade desse termo ser zero caso c tambm fosse zero, a a nica soluo seria a trivial.
2.4.2
Tal ideia pode ser extendida para o caso de matrizes. Entretanto, ser necessrio generalizar a noo
de mdulo de um nmero. Como uma matriz pode ser entendida como um vetor de vetores, ento, a
noo natural de distncia que surge para matriz a noo de norma. Por exemplo, se tivermos um
vetor da forma x = ( x 1 , x2 , , xn a norma euclidiana do vetor x, denotada como || x||2 dada porque
s
q
n
|| x||2 = x2i = x21 + x22 + + x2n .
(2.83)
i=1
Existem outras normas que podem ser consideradas no caso de vetores. Temos uma norma que
chamada de norma 1, e denotada como || x||1 , dada por:
n
|| x||1 =
| xi | = | x1 | + | x2 | + + | xn |.
(2.84)
i=1
E uma norma que chamada de norma infinito (ou norma do mximo), denotada como || x|| , dada
por:
|| x|| = max | xi |.
(2.85)
1in
Todas essas normas so equivalentes e igualmente importante e possuem suas respectivas aplicaes.
Na verdade, a norma uma estrutura matemtica bastante rica e uma descrio mais detalhada disso
encontrada em
Exemplo 3. Seja x = (5, 2, 3, 3, 5, 8, 7, 4). Vamos calcular || x||2 , || x||1 e || x|| . Pela definio das
normas acima temos:
q
|| x||2 = (5)2 + (2)2 + (3)2 + (3)2 + (5)2 + (8)2 + (7)2 + (4)2 = 201.
(2.86)
(2.87)
(2.88)
2.4. MTODOS ITERATIVOS: PONTO FIXO, ERROS, NORMA DE MATRIZ E OUTRAS COISAS MAIS29
Para o nosso caso, precisamos definir apenas uma norma adequada para uma matriz A quadrada.
Sem muito aprofundamento nesse conceito, possvel mostrar que para uma matriz A da forma (2.4),
como m = n, uma norma dada como sendo o mximo valor da soma do modo dos elementos de uma
linha, ou seja,
n
| ai j |
1in
|| A|| = max
(2.89)
j=1
Note que para encontar o mximo valor, somamos o mdulo dos elementos de cada linha e pegamos o
maior valor dessa soma.
Exemplo 4. Seja a matriz A
1 3 4
2
2 1
3 1
,
A=
3 2
2
2
2 1 1 1
(2.90)
Portanto, || A|| = 10, pois a maior das somas a da linha 1, que 10.
Abaixo, utilizaremos as tcnicas acima para apresentao dos mtodos iterativos de Jacobi e GaussSeidel. Para tanto vamos admitir que a matriz seja diagonalmente dominante.
Definio 14. Uma matriz A da forma (2.4) diagonalmente dominante se para cada linha, o elemento
da diagonal maior do que a soma dos mdulos de todos os outros elementos da respectiva linha, ou
seja, para a i-sima linha o elemento da diagonal dado por aii , ento
n
| aii | >
j = 1, j 6 = i
| ai j |.
(2.91)
Exemplo 5. A matriz A
15
2
A=
3
2
3
6
2
10
3
1
2 11
2
1 1 15
(2.92)
Observao 4. possvel provar, veja [1] que uma matriz diagonalmente dominante invertvel.
Ento se o sistema linear da forma (2.1) tiver A como uma matriz quadrada diagonalmente dominante
o sistema tem soluo nica.
Observao 5. Os mtodos iterativos so, em geral, bastante demorados para convergirem. A velocidade de convergncia est associada ao valor absoluto de T. Se || T || << 1, ento os mtodos convergem
bem rapidamente, por outro lado se || T || um valor menor do que 1, mas bem prxima a 1 o mtodo
converge lentamente.
Por outro lado, os mtodos iterativos so bastante teis para a resoluo de matrizes esparsas
Definio 15. Uma matriz A dita esparsa se somente poucos dos seus elementos forem diferente de
zero. Numa matriz esparsa a maioria dos elementos zero.
e tambm so teis para sistemas lineares que no so quadrados, para a aproximao de solues.
30
. = ..,
an1 x1 + an2 x2 + ann xn = bn ,
(2.93)
(2.94)
x2
..
.
( i+1)
xn
(i)
(i)
(i)
(i)
(i)
(i)
(i)
(i)
(2.95)
(i)
Note que o mtodo dado por (2.95) da forma (2.72), com T igual a matriz e c o vetor :
T=
0
a
21
a22
..
.
an1
ann
a12
a11
0
..
a1n
a
a 11
2n
a22
..
.
an2
ann
c=
b1
a11
b2
a22
..
.
bn
ann
(2.97)
Note que a matriz dos coeficientes do sistema (2.93) pode ser escrita como (2.4) com m = n. Note
tambm que possvel decompor a matriz A em trs diferentes matriz L que uma matriz diagonal
inferior com elementos da diagonal todos nulos D que uma matriz diagonal e U que uma matriz
triangular superior com todos os elementos da diagonal nulos:
L=
0
a21
..
.
0
0
..
.
an1
an2
0
0
..
.
0
,D =
a11
0
..
.
0
a22
..
.
0
0
..
.
ann
,U =
0
0
..
.
a12
0
..
.
a1n
a2n
..
.
0
(2.98)
Observe que a matriz A dos coeficientes pode ser decomposta em A = L + D + U. Por que isso
relevante? Pois podemos escrever a matriz T e o vetor c, em funo de tais matrizes. Note que para
obtermos a matriz T usamos apenas os elementos acima e abaixo da diagonal da matriz A, divididos
31
a 22
1
1
1
T = D ( L + U ) e c = D b no qual D = .
..
.
..
0
0
0
0
..
.
1
a nn
(2.99)
Admitindo que a matriz A seja diagonalmente dominante podemos provar o seguinte teorema.
Teorema 4. Seja um sistema linear da forma (2.1) com A uma matriz quadrada, diagonalmente
dominante. Ento o mtodo iterativo de Jacobi pode ser escrito como x( i+1) = Tx( i) + c ser convergente
e o erro absoluto pode ser medido como:
(2.100)
Observao 6. Pelo teorema acima, o mtodo dever ser iterado at que se atinja a tolerncia, tol,
exigida, ou seja, devemos iterar at que o erro absoluto satisfaa, para algum i
(2.101)
Prova do Teorema 4. Para fazer a prova deste fato, basta apenas mostrar que a matriz T, satisfaz
|| T || < 1, pois a podemos usar o Teorema 2 e concluir que o esquema da forma x(i+1) = Tx(i) + c, seja
convergente.
Ento vamos provar || T || < 1. Usando a definio da norma da matriz (2.89), ento || T || dada
por:
n
| al j |.
1l n
|| T || = max
(2.102)
j=1
Admita que o valor mximo acima atingido para uma linha k qualquer, ento || T || satisfaz:
a a
a
a
a
|| T || = k1 + k2 + + kk1 + kk+1 + kn .
(2.103)
akk
akk
akk
akk
akk
Note que como A diagonalmente dominante, para toda linha o mdulo do elemento da diagonal
maior que o mdulo da soma dos outros elementos da matriz da mesma linha, em particular, para a
linha k tenhos:
(2.104)
| akk | > | ak1 | + | ak2 | + + | akk1 | + | akk+1 | + | akn | .
Dividindo ambos os lados de (2.104) por | akk |, (que positivo pois a matriz diagonalmente dominante),
temos, aps ajeitar os termos, que
ak1 ak2
+
+ + akk1 + akk+1 + akn < 1.
(2.105)
a a
a
a a
kk
kk
kk
kk
kk
Portanto, comparando (2.103) e (2.105), chegamos a concluso que || T || < 1, e portanto o mtodo
convergente.
Exemplo 6. Aplique o mtodo de Jacobi para resolver o sistema linear:
20x1 3x2 + 4x3 = 8
x1 30x2 + 3x3 = 2
32
com erro mximo igual a 0.01. Note que podemos usar o erro dado pela distncia entre dois termos
|| x(1) x(0) ||2
consecutivos, ento devemos iterar at que
< 0, 01 seja atingido. A soluo do sistema
|| x(1) ||2
linear corresponde a interseco dos trs planos definidos por cada uma das equaes, veja Figura 2.2.
Note que a matriz dos coeficientes A diagonalmente dominante, ento o mtodo iterativo de Jacobi
pode ser escrito como:
( i+1)
x1
(i)
(i)
8 + 3x2 4x3
=
20
(i)
(i)
2 + x1 + 3x3
30
(i)
(i)
3 3x1 2x2
( i+1)
.
x3
=
20
( i+1)
x2
A soluo exata desse problema pode ser provada ser, com 4 casas decimais de preciso, (0, 4305; 0, 0730; 0, 2073).
Nos clculos que se seguem, usarei arredondamento apenas na iterao em que atingir a preciso
exigida, entretanto, o aluno j pode proceder com arredondamentos com 4 casas decimais desde o incio
do clculo.
Para iniciar a iterao precisamos de um chute inicial. Vamos comear com a iterao tomando
x( 0) = (0, 0, 0). Dessa forma podemos achar x ( 1) como:
(0)
(1)
x1 =
(1)
x2
(1)
x3
Note que
(0)
8 + 3x2 4x3
20
(0)
4
5
(0)
2 + x1 + 3x3
1
=
=
30
10
(0)
(0)
3 3x1 2x2
3
= .
=
20
20
|| x(1) ||2
|| x(1) x(0) ||
|| x(1) ||
r
4
5
2
2
2
1
3
0 + 10
0 + 20
0
r
= 1.
2
2
2
4
1
3
+
5
10
20
(2)
(1)
x1 =
(2)
x2
(2)
x3
(1)
8 + 3x2 4x3
20
(1)
(1)
89
200
2 + x1 + 3x3
11
=
=
30
200
(1)
(1)
3 3x1 2x2
7
=
= .
20
25
33
|| x(2) ||2
|| x(2) x(1) ||
|| x(2) ||2
r
89
200
45
r
2
89
200
11
+
+ 200
2
1
10
2
2
11
200
7
+
+ 25
7
25
3
20
2
2
69 371
0, 7729.
207
(2)
(3)
x1 =
(3)
(2)
8 + 3x2 4x3
20
(2)
1791
4000
(2)
2 + x1 + 3x3
479
=
30
6000
(2)
(2)
3 3x1 2x2
169
=
=
.
20
800
x2 =
(3)
x3
|| x(3) ||2
|| x(3) x(2) ||
|| x(3) ||2
r
1791
4000
89
200
r
2
1791
4000
479
+
+ 6000
2
479
6000
11
200
2
2
169
+
+ 800
169
800
7
25
2
2
385259 18106559
0, 1486.
18106559
(3)
(4)
x1 =
(4)
(3)
8 + 3x2 4x3
20
(3)
17211
40000
(3)
2 + x1 + 3x3
1093
=
30
15000
(3)
(3)
3 3x1 2x2
50203
=
=
.
20
240000
x2 =
(4)
x3
O erro nesse passo, medido por
r
17211
40000
|| x(4) ||2
1791
4000
r
2
17211
40000
1093
+ 15000
+
2
1093
15000
479
6000
2
2
50203
+ 240000
+
50203
240000
2
169
800
2
20632229 13490038109
0, 0391.
13490038109
34
(5)
x1 =
(5)
x2
(5)
x3
Note que
r
(4)
8 + 3x2 4x3
20
(4)
517087
1200000
(4)
2 + x1 + 3x3
175781
=
=
30
2400000
(4)
(4)
3 3x1 2x2
497411
=
=
.
20
2400000
|| x(5) ||2
517087
1200000
17211
40000
r
2
175781
+
+ 2400000
517087
1200000
2
1093
15000
175781
2400000
2
2
497411
+
+ 2400000
497411
2400000
50203
240000
2
2
301718 16639907718
0, 0042.
16639907718
2
0
4
2
4
0.2
0.4
0.0
y
0.2
0.0
0.4
0.2
0.4
Figura 2.2: a)- Esquerda. Interseco de cada uma das equaes lineares do sistema acima. b)- Direita.Zoom prximo a soluo.
2.5.1
function jacobi(A, b, N)
%
% O mtodo de Jacobi(A, b, N) resolve um sistema linear iterativo
%A matriz dos coeficientes, e b o vetor coluna.
%N o nmero mximo de iteraes.
35
n
%
%
%
D
L
U
= size(A,1);
Separando a matriz A em trs matrizes L, U e D
A=L+D+U, no qual L uma matriz triangular inferior, D a matriz
diagonal e U a matriz triangular superior
= diag(diag(A));
= tril(-A,-1);
= triu(-A,1);
36
( i+1)
entretanto, j conhecemos
( i+1)
x1
,
( i+1)
entretanto, j conhecemos x 1
(i)
x2
( i+1)
x2
?
( i+1)
e x2
(i)
(i)
(i)
( i+1)
por
Este justamente o mtodo de Gauss-Seidel. Tal mtodo consiste-se em perceber que para o cl( i+1)
( i+1)
culo do elemento xk
, todos os elementos x l
, para l = 1, 2, , k 1 so conhecidos e podem ser
substituidos no algoritmo de Jacobi (2.95), dando-nos o seguinte algoritmo:
(i)
(i)
(i)
(i)
( i+1)
( i+1)
b2 a21 x1
( i+1)
b2 a31 x1
x1
x2
x3
..
.
( i+1)
xn
( i+1)
( i+1)
a32 x2
( i+1)
bn an1 x1
(i)
( i+1)
..
.,
=
=
(i)
(i)
(i)
(i)
a34 x4 a2n xn
a22
( i+1)
( i+1)
an2 x2
an3 x3
ann
(2.106)
( i+1)
ann1 xn
Tal mtodo pode ser escrito como, na forma matricial, usando as matrizes L, D e U definidas em (2.98)
como:
Dx( i+1) = b Lx ( i+1) Ux( i) ( D + L) x( i+1) = b Ux ( i) x( i+1) = ( D + L)1 (b Ux ( i)), (2.107)
Ento T = ( D + L)1 U e c = ( D + L)1 b. possvel mostrar que se A diagonalmente dominante,
ento, || T || < 1, no entanto, bem mais trabalhoso, veja as referncias do texto.
O critrio de erro a ser usado ser exatamente o critrio dado em (2.101).
Vamos resolver o mesmo sistema dado no Exemplo 6.
Exemplo 7. O mtodo iterativo de Gauss-Seidel pode ser escrito como:
(i)
(i)
( i+1)
8 + 3x2 4x3
20
( i+1)
2 + x 1
3 3x1
x1
x2
( i+1)
x3
( i+1)
(i)
+ 3x3
30
( i+1)
20
( i+1)
2x2
A soluo exata desse com 4 casas decimais de preciso, (0, 4305; 0, 0730; 0, 2073). Vamos resolver,
como no exemplo 6, com preciso de 0.01.
Nos clculos que se seguem, usarei arredondamento apenas na iterao em que atingir a preciso
exigida, entretanto, o aluno j pode proceder com arredondamentos com 4 casas decimais desde o incio
do clculo.
37
Para iniciar a iterao precisamos de um chute inicial. Vamos comear com a iterao tomando
x( 0) = (0, 0, 0). Dessa forma podemos achar x ( 1) como:
(0)
2
5
(1)
2 + x1 + 3x3
4
=
30
75
(1)
(1)
3 3x1 2x2
307
=
.
=
20
1500
x2
(1)
x3
Note que
(0)
8 + 3x2 4x3
20
(1)
x1
(1)
(0)
|| x(1) ||2
|| x(1) x(0) ||
|| x(1)||2
r
2
5
2
2
2
4
307
0 + 75
0 + 1500
0
r
= 1.
2
2
2
2
4
307
+ 75 + 1500
5
(2)
x1
(2)
(1)
(1)
8 + 3x2 4x3
=
20
(1)
3247
7500
(2)
2 + x1 + 3x3
8179
=
30
112500
(2)
(2)
3 3x1 2x2
467257
=
.
=
20
2250000
x2 =
(2)
x3
Note que
|| x(2) ||2
|| x(2) x(1) ||
|| x(2) ||2
r
3247
7500
52
r
2
8179
+
+ 112500
3247
7500
2
4
75
8179
112500
2
2
467257
+
+ 2250000
467257
2250000
2
307
1500
2
7435683449 1193958330449
0, 078
1193958330449
(3)
(2)
x1 =
(3)
x2
(3)
x3
(2)
8 + 3x2 4x3
20
(3)
(2)
1211143
2812500
2 + x1 + 3x3
24664283
=
=
30
337500000
(3)
(3)
3 3x1 2x2
699591457
=
=
.
20
3375000000
38
O erro nesse passo, medido por
r
1211143
2812500
3247
7500
r
2
|| x(3) ||2
24664283
+
+ 337500000
1211143
2812500
2
8179
112500
24664283
337500000
2
2
699591457
+
+ 3375000000
699591457
3375000000
467257
2250000
2
2
11
527257438469
num
num
0, 0049,
onde num = 2662549899984351749. Agora a preciso foi atingida, pois o erro relativo na quinta iterao
|| x(3) x(2) ||2
0, 0049 < 0, 01. Portanto a soluo ser, com 4 casas de aproximao (0, 4306, 0, 0730, 0.2072).
|| x(3) ||2
Do erro estabelecido, sabemos que podemos ter confiana na soluo apenas at a terceira casa decimal,
ou seja, a soluo a ser dada ser (0, 431; 0, 073; 0, 207).
Observao 7. Em todos os calculos acima, poderamos ter calculado o erro usando a norma || x|| ,
ou seja,
( i+1)
(i)
max j[1,2,3](| x j
xj |
|| x(i+1) x(i) ||
.
(2.108)
=
( i+1)
|| x(i+1)||
max j[1,2,3](| x j
|
A utilizao dessa norma diminui bastante os clculos, pois, por exemplo se tivssemos
8179
467257
3247
(2) (2) (2)
.
,
,
( x1 , x2 , x3 ) =
7500
112500
2250000
1211143
24664283
699591457
,
,
2812500
337500000 3375000000
|| x(i+1) x(i) ||
dada por:
|| x(i+1)||
1211143 3247 24664283
699591457
8179
max 2812500
7500 , 337500000 + 112500
+
, 3375000000
24664283 699591457
max 1211143
2812500 , 337500000 , 3375000000
Ento
467257
2250000
1211143 3247
2812500 7500
= 0, 0053
=
1211143
2812500
Refaa a soluo do sistema acima usando o mtodo de Jacobi e Gauss-Seidel com a norma || x||
acima.
2.6.1
function GaussSeidel(A, b, N)
%
%
%
%
%
%
%
%
%
%
n
%
%
%
D
L
U
= size(A,1);
Separando a matriz A em tres matrizes L, U e D
A=L+D+U, no qual L e uma matriz triangular inferior, D e a matriz
diagonal e U e a matriz triangular superior
= diag(diag(A));
= tril(A,-1);
= triu(A,1);
39
40
2.7 Exerccios
Exerccio 1 Em cada um dos problemas abaixo utilize eliminao de Gauss com substituio retroativa e (caso necessrio) operaes com arredondamento de 2 dgitos (ou seja, duas casas aps a vrgula)
4x1 x2 + x 3 = 8,
4x1 + x2 + 2x3 = 9,
2x1 + 4x2 x3 = 5,
x1 + x2 3x3 = 9,
Exerccio 2 Utilize o Algoritmo da eliminao de Gauss para resolver os sistemas lineares a seguir,
se possvel, determine onde a substituio de linhas necessria
x1 x2 + 3x3 = 2,
3x1 3x2 + x3 = 1,
x1 + x2 + = 3,
2x 1 1, 5x2 + 3x3 = 1,
x1
+ 2x3 = 3,
x1 + x 2 + x4 = 2,
2x1 + x2 x3 + x4 = 1,
4x1 x2 2x3 + 2x4 = 0,
3x1 x2 x3 + 2x4 = 3,
2x1 = 3,
x1 + 1, 5x2 = 4, 5,
x1 2x2 + 3x3 = 1,
2x1 = 3
x1 + 1, 5x2 = 4, 5,
3x2 + 0, 5x3 = 6, 6,
2x1 2x2 + x3 + x4 = 0, 8,
x 1 + x2 + x4 = 2,
2x1 + x2 x3 + x4 = 1,
x1 + 2x2 + 3x3 x4 = 4,
3x1 x2 x3 + 2x4 = 3,
x1 + 2x2 x3 = 3.
x1 + x2 + x3 = 2.
(2.109)
a 11 0
0
0 0 | b 1
0 a 22 0
0 0 | b 2
0
0 a 33
0 0 | b 3
,
(2.110)
0
0
0 a 44 0 | b 4
..
.
..
0
. ..
.
0
0
0
0
0
0
0 0 | bn
Dessa forma a soluo obtida no exige substituio retroativa e dada por:
xi =
b i
.
a ii
(2.111)
2.7. EXERCCIOS
41
x1 + x2 x3 = 1,
x1 + x2 + 4x3 = 2,
5x1 x3 = 4,
2x1 x2 + 2x3 = 3,
x2 + x3 = 6,
x 1 2x2 x3 = 4,
x 1 x2 + x3 = 5,
Exerccio 7 Repita o exerccio anterior utilizando o mtodo de Gauss com pivoteamento parcial.
Exerccio 8 Use eliminao de Gauss e operaes aritmticas com aproximao de trs dgitos por
truncamento (veja definio 9) para resolver os seguintes sistemas lineares, e compare as aproximaes com as solues reais.
0, 03x1 + 58, 9x2 = 59, 2,
5, 31x1 6, 10x2 = 47, 0,
Exerccio 9 Repita o exerccio anterior com operaes aritmticas com arredondamento (veja
definio 10) de 3 dgitos.
Exerccio 10 Repita o exerccio 8 utilizando a eliminao de Gauss com pivoteamento parcial.
Exerccio 11 Repita o exerccio 9 utilizando a eliminao de Gauss com pivoteamento parcial.
Exerccio 12 Repita o exerccio 5 utilizando um arredondamento de um dgito significativo.
Exerccio 13 Repita o exerccio 6 utilizando um arredondamento de um dgito significativo.
Exerccio 14 Resolva os seguintes sistemas lineares:
1
2
1
0
1
0
0
2
0 0
1
0
3
2
0
1
x3
2
2 0 0
1 1 1
x3
1
1 x 2 = 1 , 1 1 0 0 1 2 x 2 = 3
3
x1
1
3 2 1
0 0 1
x1
0
1
1 1 2
2 1 1
1 2 1
3 3 9 , 2 4 7 , 1 1 1 5 ,
2
2
3 7
3 3 5
1 2 5
2
3
4 5
1
2
1
2
1
2
1
3
1
4
1
4
2
5
7
6
Exerccio 16 Use o mtodo da fatorao LU para resolver cada um dos sistemas lineares abaixo:
2x1 x2 + x3 = 1,
3x1 + 3x2 + 9x3 = 0,
3x1 + 3x2 + 5x3 = 4,
2x1 = 3,
x1 + 1, 5x2 = 4, 5,
3x2 + 0, 5x3 = 6, 6,
2x1 = 3,
x1 + 1, 5x2 = 4, 5,
x1 2x2 + 3x3 = 1,
42
11
1
1
2 1 1
12
2
1
1 11 1
3 11 9 , 2 14 7 ,
2
2
32
3 3 15
1
2
5
2
3
4
21
3
3
1 1
32 9 ,
3 52
13
23
1
2
14
2
1
7 ,
51
9
1
2
2
12
17
2
3
1
1
18
4
2
5
,
7
9
1
2
1
2
11
2
1
2
1
2
1
3
1
11
1
3
1
4
1
4
2
5
7
6
1 2
4
5
11 7
4 16
Exerccio 18 Faa as duas primeiras iteraes do mtodo de Jacobi para os sistemas (use x( 0) = 0):
3x1 x2 + x3 = 1,
3x1 + 6x2 + 2x3 = 0,
3x1 + 3x2 + 7x3 = 4,
10x1 + 5x2 = 6,
5x1 + 10x2 4x3 = 25,
10x1 x2 = 9,
x1 + 10x2 2x3 = 7,
2x2 + 10x3 = 3,
4x1 + x2 x3 = 5,
x1 + 3x2 + x3 = 4,
2x1 + 2x2 + 5x3 = 1,
4x1 + x2 x3 + x4 = 2
x1 + 4x2 x3 x4 = 1,
x1 x2 + 5x3 + x4 = 0,
x1 x2 + x3 + 3x4 = 1,
1
2x1 + x2 + x3 = 4,
3
x1 2x2 0, 5x3 = 4,
x2 + 2x3 = 0,
4x1 + x2 + x4 = 2,
2x1 + 8x2 x3 + x4 = 1,
x1 + 2x2 10x3 x4 = 4,
3x1 x2 x3 + 20x4 = 3,
43
44
Captulo 3
(3.1)
Figura 3.1: a)- Esquerda. Funo f ( x) com 4 razes no intervalo x1 , x2 , x3 , x4 . b)- Direita. Mtodo da
Biseco. Note que f ( a) < 0 e f (b) > 0. Como f contnua possui pelo menos uma raiz denotada por
x .
45
46
(respectivamente, an+1 an )
n N.
Definio 18. Dizemos que uma sequncia de nmeros reais an montona decrescente (respectivamente, montona no crescente) se
an+1 < an
(respectivamente, an+1 an )
n N.
Definio 19. Dizemos que uma sequncia de nmeros reais an limitada superiormente (respectivamente, limitada inferiormente) se existe um L1 R (respectivamente, L2 R) tal que
an L1
(respectivamente, an L2 )
n N.
xm =
a 0 + b0
.
2
(1)
ba
.
2
47
2. Note que agora a raiz est no novo intervalo [ a1 , b1 ]. E procedemos como anteriormente. Calcula(2)
mos o ponto mdio do intervalo [ a1 , b1 ] o qual denotamos por xm , ou seja,
(2)
xm =
a 2 + b2
.
2
(2)
b1 a 1
ba
=
.
2
22
3. E este processo continuado. Note que dessa forma geramos duas sequncias de pontos ai e bi tal
que i N. Alm disso a sequncia ai no decrescente, pois, pelo algoritmo acima,
ai
se temos
a i + bi
a i + bi
< 0,
, que maior que ai , caso f
podemos encontrar ai+1 e, note que ai+1 ou ser
2
2
a i + bi
> 0. E qualquer caso temos que ai uma sequncia montona
ou ser o prprio ai se f
2
no decrescente. Pelo mesmo argumento, temos que bi uma sequncia montona no crescente,
ou seja,
a 1 a 2 a 3 a i e b1 b2 b3 bi .
Alm disso o tamanho do intervalo [ ai , bi ] satisfaz:
bi a i =
ba
.
2i
(3.2)
As sequncias ai e bi so limitadas (tanto inferiormente por a, quando superiormente por b), ento
pelo Teorema 6 as sequncias so convergentes, ou seja, existem l1 e l2 tais que
lim ai = l1
(3.3)
lim bi = l2 .
Para mostrar que l1 igual a l2 , basta usar (3.2) e tomar o limite de i indo para o .
1
ba
=
(
b
a
)
lim
= 0.
lim (bi ai ) = lim (bi ) lim ( ai ) = l2 l1 = lim
i 2 i
i
i
i
i
2i
(3.4)
Chamando l = l1 = l2 , s falta mostrar que l a raiz. Note que como a funo f contnua ento
(3.5)
f ( ai ) < 0 lim f ( ai ) = f lim ai = f (l ) 0
lim bi
(3.6)
= f (l ) 0.
48
y
y
2.0
1.0
1.5
0.5
1.0
1.4 1.2 1.0 0.8 0.6 0.4 0.2
0.2
0.4
0.6
0.8
1.0
1.2
1.4
0.5
0.5
1.4 1.2 1.0 0.8 0.6 0.4 0.2 0.0
0.2
0.4
0.6
0.8
1.0
1.2
1.4
1.0
Function 1: x^2 1
Function 1: x^2
Figura 3.2: a)- Esquerda. A funo f ( x) = x2 1 tem duas razes em x = 1 e x = 1, entretanto, como
no muda de sinal no intervalo [1.5, 1.5]. Caso o intervalo seja restringido para [0, 1.5] possvel
aplicar o mtodo. b)- Direita. A funo f ( x) = x2 tem um zero em x = 0, mas a funo nunca muda de
sinal, portanto o mtodo no funciona.
y
2
0.2
0.4
0.6
0.8
1.0
1.2
1.4
x
1
3
Function 1: x 2
Function 2: 4*x^2*cos(x)
Figura 3.3: A funo descontnua dada por f ( x) = x 2 se x 0.3 e f ( x) = 4x2 cos( x) se x > 0.3,
muda de sinal no intervalo [1, 3; 1, 3] entretanto, no possui nenhuma raiz pois descontnua nesse
intervalo.
Observao 9. Pode acontecer da funo ter razes, mas o mtodo s pode ser aplicado se a funo
muda de sinal no intervalo. Por exemplo, f ( x) = x2 1, possui duas razes no intervalo [1.5, 1.5],
entretanto, o mtodo no pode ser aplicado pois a funo no muda o sinal no intervalo. Veja Figura
3.2. Caso o intervalo seja restrito, por exemplo, [0, 1.5] o mtodo pode ser aplicado. Entretanto, h
funes que mesmo restringindo o intervalo no possvel encontrar a raiz, pois a funo zero num
ponto mas nunca troca de sinal, por exemplo, a funo f ( x) = x2 possui uma raiz em x = 0, mas nunca
muda de sinal, ento o mtodo nunca pode ser aplicado.
Observao 10. Caso a funo f seja descontnua pode acontecer de f ( a) < 0 e f (b) > 0, mas a funo
no ter nenhuma raiz, veja Figura 3.3.
Definio 20. Para uma tolerncia, tol, (ou erro mximo) fornecida, O mtodo deve iterar at que o
erro para encontrar razes, ou seja, o mtodo deve ser iterado i vezes at que
( i+1)
| f ( xm
( i+1)
onde xm
)| < tol,
(3.7)
49
y
1.0
1.0
0.8
0.6
0.5
0.4
0.2
0.0
0.1
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
x
x
0.2
0.2
1.0
0.5
0.4
0.6
1.0
0.8
x^2
cos(x)
1.0
Figura 3.4: a)- Esquerda. Funo f ( x) = x2 cos( x) no intervalo [0, 1]. b)- Direita. f ( x) = x 2 cos( x)
tem um zero quando as funes x2 e cos( x) se encontram, ou seja, a raiz x satisfaz ( x )2 = cos( x ).
Exemplo 8. Use o mtodo da biseco para mostrar que a funo
f ( x) = x2 cos( x)
possui uma raiz no intervalo [0, 1]. Encontre a soluo com erro de 0.01.
Note que f (0) = 0 2 cos(0) = 1 e que f (1) = 1 2 cos(1) 0.4597 (lembre-se que cos(1) medido
em radianos). Ento existe um zero entre [0, 1]. Aplicando o algoritmo:
(1)
(1)
ou seja, a raiz est entre [0, 5; 1] e substitumos a1 = 0, 5 e b1 = 1. Note que a tolerncia ainda no
foi atingida pois
(1)
f xm = | 0, 6276| = 0, 6276 > 0, 01.
(2)
(2)
ou seja, a raiz est entre [0, 75, 1] e substitumos a2 = 0, 75 e b2 = 1. Note que a tolerncia ainda
no foi atingida pois
(2)
f xm | 0, 1692| = 0, 1692 > 0, 01.
(3)
(3)
ou seja, a raiz est entre [0, 75, 0, 875] e substitumos a3 = 0, 75 e b3 = 0, 875. Note que a tolerncia
ainda no foi atingida pois
(3)
f xm = |0, 1246| = 0, 1246 > 0, 01.
50
(4)
(4)
4. O ponto mdio do intervalo [0, 75, 0, 875] xm = 0, 8125. Avaliando a funo f em xm temos:
(4)
f xm = (0, 8125)2 cos(0, 8125) 0, 0275,
ou seja, a raiz est entre [0, 8125, 0, 875] e substitumos a4 = 0, 8125 e b4 = 0, 875. Note que a
tolerncia ainda no foi atingida pois
(4)
f xm | 0, 0275| = 0, 0275 > 0, 01.
(5)
(5)
5. O ponto mdio do intervalo [0, 8125, 0, 875] x m = 0, 84375. Avaliando a funo f em xm temos:
(5)
f xm = (0, 84375)2 cos(0, 84375) 0, 0472,
ou seja, a raiz est entre [0, 8125, 0, 84375] e substitumos a5 = 0, 8125 e b5 = 0, 84375. Note que a
tolerncia ainda no foi atingida pois
(5)
f xm |0, 0472| = 0, 0472 > 0, 01.
(6)
(6)
Observao 11. Existem funes que possuem variao muito rpida em torno de sua raiz, Veja Figura
(3.5), de modo que impor condies de erro apenas sobre o mdulo de f ( x(i) ) pode fazer com que o mtodo
no convirja, mesmo estando com um valor de soluo bastante prxima do valor de raiz no domnio.
y
20
10
0.10
0.08
0.06
0.04
0.02
0.02
0.04
0.06
0.08
0.10
X
10
20
Figura 3.5: a)- Esquerda. Variao bastante rpida em torno da raiz. b)- Direita. Funo f ( x) = 2000x
em torno de x = 0, observe que para termos uma tolerncia sobre | f ( x)| < 0, 01, devemos ter que
x (0, 000005; 0, 000005) o que em geral est fora do arredondamento que utilizamos com 4 casa
decimais.
Por exemplo, para a funo f ( x) = 2000x, x = 0 uma raiz da funo, entretanto, se tivermos
encontrado na nossa aproximao um valor aproximado de x aprox = 0.001, tal valor bastante prximo
de x = 0, entretanto, se fossemos o valor dessa funo teramos
f ( x aprox) = 2000(0.001) = 2,
51
que seria estaria bem fora da tolerncia, em geral, estabelecida, Veja Figura (3.5). Neste caso, se quisssemos que | f ( x)| < 0, 01, deveriamos ter:
| x| < 0, 000005,
ou seja, x (0, 000005; 0, 000005), ou seja, tal nmero estaria inclusive fora do nosso arredondamento
utilizado at agora que est sendo de 4 casas decimais.
Ento, para contornar tal caso, como critrio de convergncia estabelecemos um dos 3 casos:
1. Se | f ( x ( i) )| < tol1 satisfeita para alguma tol1 sobre a imagem da funo estabelecida, dizemos
que o mtodo numrico convergiu para a raiz com erro mximo tol1. Isto o que desejamos
que acontea em geral. Tomamos x = x( i) .
2. Se | f ( x ( i) | no for menor do que tol1, estabelecido como a tolerncia da imagem, mas | x ( i+1)
x( i) | < tol2, no qual tol2 a tolerncia que colocamos sobre pontos do domnio, dizemos que a a
raiz no atingiu a tolerncia exigida da imagem, mas atingiu a tolerncia exigida no
domnio. Tomamos x = x( i+1).Este caso contempla justamente o exemplo acima dado. Note, por
outro lado, que possvel encontrar | x( i+1) x( i) | < tol2, mas tal que f ( x ) seja um valor bem
distante de zero. Entretanto, o erro relativo, neste caso bem pequeno em geral. item Se nem
| f ( x(i+1))| < tol1, nem | x(i+1) x(i) | < tol2 so satisfeitas, mas o nmero de iteraes excedeu um
mximo estabelecido. Dizemos que o mtodo no convergiu. , muitas vezes, possvel aumentar
o nmero mximo de iteraes permitido fazendo com que o mtodo convirja.
3.1.1
if f(xu)*f(xl)<=0
else
fprintf(Erro. O metodo so funciona se vc entrar se a funcao mudar de sinal. Tente novam
xl=input(Entre com o valor inferior do intervalo) ;
xu=input(Entre com o valor superior do intervalo);
end
k=0;
xr= xu;
xx=linspace(xl,xu,100);
plot(xx,f(xx));
hold on
plot(xr,f(xr),*)
hold off
pause
while (abs(f(xr))>=tol)
52
xr=(xu+xl)/2;
if f(xr)==0
str = [A raiz foi, num2str(xr), ]
it = [O numero de iteracoes foi , num2str(k), ]
break
end
if f(xu)*f(xr)<=0
xl=xr;
else
xu=xr;
end
if f(xl)*f(xr)<=0
xu=xr;
else
xl=xr;
end
xnew(1)=0;
k=k+1;
xnew(k+1)=xr;
xx=linspace(xl,xu,100);
plot(xx,f(xx));
hold on
xrr=(xl+xu)/2;
plot(xr,f(xr),*)
%hold off
pause
if (k>=N)
fprintf(O metodo nao convergiu com as iteracoes exigidas);
break,
end
%if abs((xnew(i)-xnew(i-1))/xnew(i))<tol,
%
break,end
end
if(k<N)
str = [A raiz foi, num2str(xr), ]
it = [O numero de iteracoes foi , num2str(k), ]
end
if (k>=N)
it = [O numero de iteracoes foi , num2str(k), E o metodo nao convergiu]
end
53
10
0
15.3
15.4
15.5
15.6
15.7
15.8
15.9
16.0
10
20
Figura 3.6: a)- Esquerda. Mtodo de Newton. b)- Direita. Funo x2 250 na vizinhana de sua raiz,
note que a funo se comporta de modo muito parecido a de uma funo afim com coeficiente angular
positivo, por isso o mtodo converge muito rapidamente.
Suponha que conheamos o ponto x( n) e queiramos encontrar, atravs de um mtodo, um ponto
. O algoritmo tal que a partir de x ( n) traamos uma reta que tangente a funo f ( x) no ponto
(x( n) , f ( x( n) )). O ponto x ( n+1) corresponde ao valor do domnio para o qual a tangente partindo de
(x( n) , f ( x( n) )) atinge o eixo x.
Note, da Figura (3.6.a) que temos um tringulo com vrtices (x( n) , f ( x( n) )), ( x ( n+1), 0) e ( x( n) , 0). O
valor da numrico da reta tangente no ponto (x ( n) , f ( x( n) )) a derivada da funo avaliada em x( n+1) e
igual a tangente do tringulo acima descrito, ou seja, temos que:
x( n+1)
f ( x(n) ) =
f ( x (n) ) 0
,
x( n) x( n+1)
x( n+1) = x( n)
f ( x(n) )
.
f ( x(n) )
(3.8)
( x(n) )2 250
.
2x( n)
(3.9)
54
Como chute inicial, vamos dar uma raiz exata prxima de 250 que conhecemos, por exemplo, x( 0) = 16,
que a raiz exata de 256. Ento podemos achar x( 1) como:
x(1) = x(0)
( x(0) )2 250
(16)2 250
= 15, 8125.
=
16
2 250
2x( 0)
(3.10)
( x(1) )2 250
= 15.8114.
2x( 1)
(3.11)
(3.12)
(1)2 cos(1)
( x(0))2 cos( x(0))
=
1
0, 8382.
2 1 + sen(1)
2x( 0) + sen( x( 0) )
(3.13)
(3.14)
55
Observao 12. O mtodo de Newton no deve ser usado para razes x tais que f ( x ) = 0, o
problema que quase nunca sabemos desse fato. Ento til no usar o mtodo para funes para os
quais a derivada comea a atingir valores prximos a zero, pois a soluo, muito provavelmente, no
ir convergir.
Veja a Figura (3.7.a), para um estado x( n1), atravs da reta por este ponto, encontramos x( n) como
sendo o valor de x para o qual a reta tangente funo f em ( x( n1), f ( x( n1)) atinge o eixo x. Note que,
visualmente, x( n) est mais longe da raiz x do que x( n1).
A partir de x( n), aplicamos novamente o mtodo de Newton para encontrarmos x ( n+1). Tal ponto o
valor de x para o qual a reta tangente funo f em ( x ( n) , f ( x( n) ) atinge o eixo x. Note que aqui bem
claro que O mtodo est se afastando da soluo raiz do problema. E por que isto aconteceu?
Aconteceu, pois em x( n) a derivada da funo est muito prxima de zero, o que, por uma anlise
criteriosa do mtodo de Newton, atravs da Equao (re f newtonmeth), podemos ver que o mesmo se
comporta muito mal.
A convergncia do mtodo de Newton uma questo difcil de estabelecer, pois no sempre que o
mesmo converge. Entretanto, para chutes iniciais perto da raiz, e se no houver pontos que tornem a
derivada com valores muito prximos de zero (ou zero) o mtodo, em geral, converge.
Por outro lado, caso o mtodo convirja, podemos estabelecer um resultado interessante que diz quo
rpido o mtodo de Newton converge, que o que chamamos de taxa de convergncia, Seo 3.2.1.
Figura 3.7: a)- Esquerda. Mtodo de Newton. b)- Direita. Funo x2 250 na vizinhana de sua raiz,
note que a funo se comporta de modo muito parecido a de uma funo afim com coeficiente angular
positivo, por isso o mtodo converge muito rapidamente.
3.2.1
Vamos assumir que o mtodo de Newton encontre uma raiz, a qual denotamos como x , vamos estimar
quo rpido dois pontos da sequncia x( n) e x( n+1) se aproximam de x .
Para isto, vamos usar a frmula de Taylor (1.11), expandida em torno de x( n) , com trucamento de
segunda ordem, ou seja (1.11)
f ( x) = f ( x( n) ) + f ( x( n) )( x x ( n) ) +
f ( )
( x ( x(n) )2 .
2!
no qual uma funo que depende de x o qual, em geral, no sabemos fornecer precisamente.
(3.15)
56
Vamos fazer x = x , raiz da equao. Para este valor f ( x ) = 0 e a equao acima (3.15) nos d a
relao:
0 = f ( x( n) ) + f ( x( n) )( x x( n) ) +
f ( )
( x ( x(n) )2 ,
2!
f ( )
( x ( x(n) )2 ,
2!
(3.16)
f ( )
f ( x (n) )
( x ( x (n) )2 .
f ( x(n) )
f ( x ( n) )2!
(3.17)
f ( x (n) )
= x( n+1) x( n)
f ( x(n) )
f ( )
( x ( x (n) )2 ,
f ( x( n) )2!
f ( )
( x ( x(n) )2 .
f ( x( n) )2!
(3.18)
|x x
( n+1)
f ( )
| = (n) (| x ( x(n) |)2 .
f ( x )2!
(3.19)
Note de (3.19) que | f ( x( n) )| << 1, ento a soluo pode, de fato, se distanciar da soluo. Por outro
lado, se | f ( x( n) )| e ( x ( n) est suficientemente prximo da soluo, ento o mtodo de Newton d uma
convergncia que chamamos de convergncia quadrtica
Definio 21. Um mtodo iterativo para encontrar uma soluo x tem ordem de convergncia (ou
razo de convergncia) k, para algum k R+ se satisfaz:
| x x ( n+1 ) | M| x x ( n+1 ) |k ,
(3.20)
para alguma constante M > 0. Denotamos isso como O(| x x( n+1)|k ), ou, simplesmente, O(k). Se, por
outro lado, M = M( x) e lim x x M( x) = 0, denotamos tal fato como o(| x x( n+1)|k ), ou, simplesmente,
( k ) .
Ento temos estabelecido o seguinte teorema:
Teorema 7. Caso o mtodo de Newton seja convergente para uma raiz x , ento a taxa de convergncia
quadrtica, ou seja, satisfaz (3.19)
Observao 13. O mtodo de biseco tambm possui uma taxa de convergncia, mas a demonstrao
bem mais complicada do que este caso. Se o aluno tiver interesse da demonstrao dessa convergncia
e da de outros mtodos recomendamos como uma excelente leitura [1].
3.2.2
Metodo de Newton.
Descobre as raizes sucessivamente.
Output:
x - aproximacao da raiz
ef - |f(x^n)| (ou seja, o erro de $f$.
ex - erro estimado emvalor absoluto dno dominio
iter=numero de iteracoes.
Example:
[ x, ex ] = newton( exp(x)+x, exp(x)+1, 0, 0.5*10^-5, 10 )
x(1) = x0 - (f(x0)/df(x0));
ef(1)=abs(f(x(1));
ex(1) = abs(x(1)-x0);
k = 2;
% Comando para fazer o grfico (apenas cosmetico).
xxx=linspace(x(1),x0,100);
plot(xxx,f(xxx))
hold on
plot(x0,f(x0), *)
plot(xxx,((f(x0))/(x0-x(1)))*xxx-((f(x0))/(x0-x(1)))*x(1))
%
pause
while (ef(k-1) >= tol1) && (ex(k-1) >= tol2) && (k <= N)
x(k) = x(k-1) - (f(x(k-1))/df(x(k-1)));
ef(k)=abs(f(x(k));
ex(k) = abs(x(k)-x(k-1));
% Comando para fazer o grfico (apenas cosmetico).
xxx=linspace(x(k),x(k-1),100);
57
58
plot(xxx,f(xxx))
hold on
plot(x(k-1),f(x(k-1)), *)
plot(xxx,((f(x(k-1)))/(x(k-1)-x(k)))*xxx-((f(x(k-1)))/(x(k-1)-x(k)))*x(k))
%
k = k+1;
pause
end
%
% Verificao quanto ao erro e ao nmero de iteraes atingidas.
%
%
% Erro maximo da imagem foi atingido. Raiz encontrada
%
if(k<N)&& (ef(k-1) < tol1)
str = [A raiz atingiu |f(x^n)|<tol1. O valor da raiz eh , num2str(x(k-1)), ]
efinalimagem=[Com erro da imagem, |f(x^n)| num2str(ef(k-1)), ]
efinaldominio=[Com, |x^{n}-x^{n-1}| dado por num2str(ex(k-1)), ]
it = [O numero de iteracoes foi , num2str(k-1), ]
end
%
% Erro maximo da
%
59
(3.21)
onde temos O(| x c|2 ) indica que o erro vai a zero quadraticamente quando x tende a c, conforme a
Definio 21.
Tomando x = x( n1) e c = x( n) temos, de (3.21)
f ( x ( n1)) = f ( x( n) ) + f ( x( n) )( x( n1) x( n) ) + O(| x( n1) x( n) |2 )
f ( x(n) ) =
(3.22)
Como O(hk ), para algum h e k genricos, diz que taxa de convergncia e hk , quando dividimos tal
ordem por h p , ento a taxa de convergncia (ou ordem de convergncia) torna-se O(hk )/h p = O(hk p ),
portanto, de Eq. (3.22) temos, finalmente:
f ( x (n) ) =
f ( x( n) ) f ( x ( n1))
+ O(| x(n) x(n1)|).
( x( n) x( n1))
(3.23)
Portanto, podemos adaptar o mtodo de Newton, substituindo f ( x( n) ) por uma aproximao. Dessa
forma, para se obter o estado x( n+1), so necessrios os dois estados anteriores x( n1) e x( n) . O mtodo
da Secante escrito como:
x( n+1) = x( n)
f ( x (n) )
f ( x (n )) f ( x (n1))
( x ( n ) x ( n 1 ))
x( n+1) = x( n)
f ( x ( n) )( x( n) x( n1))
.
f ( x( n) ) f ( x ( n1))
(3.24)
Vamos repetir os mesmos exemplos usados para o mtodo de Newton. Note que para a inicializao do
mtodo da secante so necessrios dois chutes iniciais, os quais vamos chamar de x (1) e x( 0) .
(3.25)
Precisamos dar dois chutes iniciais paraa raiz a fim de inicializar o mtodo. Vamos fornecer as duas
razes exatas mais prximas da raiz de 250 que conhecemos que so 15 e 16 x (1) = 15 e x( 0) = 16.
Ento, usando (3.25), podemos achar x( 1) como:
x(1) = x(0)
(3.26)
O erro no est to satisfatrio quanto o do mtodo de Newton, pois um dos chutes, 15, estava longe da
soluo. Vamos continuar iterando x( 1) = 15, 8064, encontramos para o prximo ponto
x(2) = x(1)
(3.27)
60
(3.28)
Precisamos dar dois chutes iniciais para a raiz a fim de inicializar o mtodo. Vamos fornecer os dois
extremos 0 e 1, ou seja, x(1) = 0 e x ( 0) = 1, note que neste caso no teremos diviso por zero.
Ento x( 1), de (3.28), obtido satisfazendo:
x(1) = x(0)
( x(0) )2
(3.29)
(3.30)
(3.31)
3.3.1
61
Metodo da Secante
Descobre as raizes sucessivamente.
Output:
x - aproximacao da raiz
ef - |f(x^n)| (ou seja, o erro de $f$.
ex - erro estimado emvalor absoluto dno dominio
k=numero de iteracoes.
Example:
[ x, ex ] = secante( exp(x)+x, exp(x)+1, 0, 0.5*10^-5, 10 )
x(1)=x0;
x(2) = x0 - ((f(x0)(x0-xm1))/(f(x0)-f(xm1)));
ef(1)=abs(f(x(1));
ex(1) = abs(x(1)-x0);
k = 3;
62
k = k+1;
pause
end
%
% Verificao quanto ao erro e ao nmero de iteraes atingidas.
%
%
% Erro maximo da imagem foi atingido. Raiz encontrada
%
if(k-1<N)&& (ef(k-2) < tol1)
str = [A raiz atingiu |f(x^n)|<tol1. O valor da raiz eh , num2str(x(k-1)), ]
efinalimagem=[Com erro da imagem, |f(x^n)| num2str(ef(k-2)), ]
efinaldominio=[Com, |x^{n}-x^{n-1}| dado por num2str(ex(k-2)), ]
it = [O numero de iteracoes foi , num2str(k-2), ]
end
%
% Erro maximo da
%
63
f1 f1
f1
x1 x2
x p
f2 f2
f2
x p
(3.32)
J ( x) = x1 x2
..
..
..
.
.
fp fp
fp
x1 x2
x p
Assumindo que a matriz Jacobiana admite inversa em pontos adequados, o mtodo de Newton (3.8)
fica escrito como:
1
x ( n+1 ) = x ( n) J ( x( n) )
f ( x(n) ),
(3.33)
1
no qual J ( x( n) )
a inversa da matriz Jacobiana avaliada no ponto x( n) .
Lembrando que conhecemos x( n) e queremos encontrar o ponto x( n+1) da nossa sequncia aproximativa.
Para sistemas de equaes pequenos, o clculo da inversa imediato, mas para sistemas grandes,
o clculo da matriz inversa bastante custoso, entretanto, nestes casos, podemos reescrever (3.33)
como um sistema linear e aplicar os mtodos desenvolvidos no Captulo 2, para a resoluo do sistema
proveniente.
Passando x( n) para o lado esquerdo na igualdade (3.33) e multiplicando ambos os lados do resultado
por J ( x( n) ), ns obtemos:
J ( x( n) )( x( n+1) x( n) ) = f ( x( n) ).
(3.34)
Definindo x( n) = ( x( n+1) x( n) ), ento o sistema (3.34) fica escrita como
J ( x( n) )x ( n) = f ( x( n) ),
(3.35)
x( n+1) = x( n) + x( n) .
(3.36)
Definio 24. Seja f : D R p R, uma funo contnua que admite todas as derivadas parciais de
primeira ordem, o gradiente de f , o qual denotado por f (ou grad( f )), definido como a aplicao
f : D R p R p , escrita como o vetor:
f T
f f
.
(3.37)
,
, ,
f =
x1 x2
x p
64
=
.
=
0
0 12
2 y(n)
y(n)
y(n)
y( n+1)
y(n)
(3.38)
Para qualquer valor de ( x( 0), y( 0)) T fornecido, o mtodo de Newton d soluo exata para o ponto crtico
que (0, 0) T . Veja Figura (3.8.a).
0.8
0.6
4
0.4
28
1.0
0.2
0.0
yy
0.5
0
0
2
1
2 1
2
0.0
0.5
1.0
0.5
1.0
0.5
1.0
0.0
1.0
xx
Geometricamente (veja Figura (3.8.b)) e por intuio, podemos ver que a soluo para este sistema
x = y = 0, entretanto, vamos aplicar o mtodo de Newton. Observe que f : D R2 R2 . A
Jacobiana e a sua inversa dessa aplicao so as matrizes:
y2 1
xy
p
p
2p
3
2+1
( x2 y2 +1) 23
x
x2 yp
x2 y2 + 1
x y
x2 y2 + 1
( x 2 y 2 + 1 ) 2
p
xy
,
x2 1
y2 1
x2 y2 + 1
x y x2 y2 + 1
3
3
( x2 y2 +1) 2
( x2 y2 +1) 2
65
Ento o mtodo de Newton (3.33) escrito, depois de alguns clculos, na forma vetorial, como:
( n+1) ( n)
x(n) ( x(n) )2 + ( y(n) )2 1
x(n) ( x(n) )2 + ( y(n))2
x
x
(3.40)
=
=
y( n+1)
y(n)
y(n) ( x(n) )2 + ( y(n) )2
y(n) ( x(n) )2 + ( y(n) )2 1
Vamos fornecer, inicialmente, valor de ( x( 0) , y( 0)) T = (0, 5; 0, 5) T, ento na primeira iterao, utilizando
(3.40), temos:
(1)
x(0) ( x(0) )2 + ( y(0))2
0, 25
x
=
.
(3.41)
=
0, 25
y(1)
y(0) ( x(0) )2 + ( y(0))2 =
Estamos longe do valor da raiz, pois o erro ainda bem grande. Vamos iterar mais uma vez, usando o
valor ( x( 1) , y( 1)) T = (0, 25; 0, 25) T, na segunda iterao, temos:
(2)
(1) ( x(1))2 + ( y(1))2
x
x
0, 03125
=
=
.
(3.42)
0, 03125
y(2)
y(1) ( x(1))2 + ( y(1))2 =
Ainda no atingimos a tolerncia exigida, mas estamos bem prximos dela. Vamos iterar pela terceira
vez, obtendo:
(3)
x(2) ( x(2) )2 + ( y(2))2
0, 000061
x
.
(3.43)
=
0, 000061
y(3)
y(2) ( x(2) )2 + ( y(2))2 =
Atingimos a raiz na terceira iterao com erro de, aproximadamente, 0, 00009, bem menor que o erro
exigido de 0, 01.
Observao 14. Existem outros mtodos que podem ser usados para aproximar as razes da funo vetorial, entretanto, sua deduo bem mais trabalhosa e est fora do objetivo desse material introdutrio
de clculo numrico. Para mais detalhes veja Captulo 11 de [1].
3.4.1
Metodo de Newton.
Descobre as raizes sucessivamente.
66
Entrada do mtodo
x0 = chute inicial como vetor COLUNA
tol = tolerancia maxima admitida para o erro.
Output:
x - aproximacao da raiz
ex - erro estimado em valor absoluto.
k=numero de iteracoes.
67
%
% Calcula os erros absolutos para o dominio e a imagem
% Estamos usando a norma 2.
%
auxiliar1=0
auxiliar2=0;
for ii=1:nn
auxiliar1=(x(ii,k)-x(ii,k-1))^2+auxiliar;
auxiliar2=(calculaf1(ii))^2+auxiliar2;
end
ef(k)=sqrt(auxiliar2);
ex(k) = sqrt(auxiliar1);
k = k+1;
pause
end
%
% Verificao quanto ao erro e ao nmero de iteraes atingidas.
%
%
% Erro maximo da imagem foi atingido. Raiz encontrada
%
if(k<N)&& (ef(k-1) < tol1)
str = [A raiz atingiu |f(x^n)|<tol1. O valor da raiz eh , num2str(x(:,k-1)), ]
efinalimagem=[Com erro da imagem, |f(x^n)| num2str(ef(k-1)), ]
efinaldominio=[Com, |x^{n}-x^{n-1}| dado por num2str(ex(k-1)), ]
it = [O numero de iteracoes foi , num2str(k-1), ]
end
%
% Erro maximo da
%
68
3.5 Exerccios
Observao 15. Nos exerccios abaixo, caso o intervalo possua extremos sendo nmeros com vrgula,
utilizarei o smbolo ; para indicar a separao entre dois nmeros distintos.
Exerccio 1 Use o mtodo o teorema do valor intermedirio para cada uma das funes para provar
que elas possuem razes no intervalo selecionado e o use o mtodo da Biseco iterando o mtodo 3 vezes
e calcule o erro encontrado.
x [1; 3, 2]
x [0, 2],
x [2, 3]
f ( x) = e x x2 + x 2, para x [0, 1]
e x [3, 2; 4].
e x [1; 0].
e x [1, 2; 1, 3].
e x [1, 0].
69
70
Captulo 4
Interpolao Polinomial
Muitas vezes, em problemas prticos cotidianos, deparamo-nos com um grupo de dados (que podem
ser obtidos experimentalmente ou atravs de frmulas) e queremos encontrar uma funo que passa
conecta todos esses dados.
Como uma primeira aproximao, a ideia encontrar um polinmio de grau adequado conectando
esses pontos.
Por exemplo, imagine que tenhamos obtido, atravs de algum experimento os pontos ( x 0 , y0 ) = (0, 1)
e ( x1 , y1 ) = (1, 3). A pergunta : Qual o polinmio de menor grau que conecta esses dois pontos?.
Desde o pr de 6, sabemos que dois pontos determinam de modo nico uma reta.
Uma reta encontrada atravs da Equao:
y = ax + b,
no qual devemos encontrar os valores de a (que o coeficiente angular, ou seja, a inclinao da reta) e b
(que o coeficiente linear, ou seja, o ponto no qual a reta corta o eixo y). Note que precisamos de duas
informaes para encontrar a e b, as quais foram fornecidas atravs dos pontos dados.
De modo genrico, para pontos ( x0 , y0 ) e ( x1 , y1 ) dados, tal que x0 6= x 1 , podemos encontrar os
valores a e b atravs do seguinte algoritmo.
Quando x = x0 , temos que y = y0 ; quando x = x 1 , temos que y = y1 . Dessa forma encontramos o
seguinte sistema linear nas incgnitas a e b:
(4.1)
(4.2)
y0 = ax0 + b,
y1 = ax1 + b.
Tem como soluo
a=
y1 y0
x1 x0
b=
x0 y1 x1 y0
,
x0 x1
y1 y0
x0 y1 x1 y0
x+
.
x1 x0
x0 x1
(4.3)
(4.4)
Para o exemplo acima, tomando ( x 0 , y0 ) = (0, 1) e ( x1 , y1 ) = (1, 3), encontramos a reta, veja Figura
(4.1.a):
0 311
31
x+
= 2x + 1.
y=
10
01
Observe que a necessidade de x0 6= x1 aconteceu pois apenas nesse caso y funo. Caso x 0 = x1 e
y0 6= y1 a reta paralela ao eixo y e no uma funo, deveria ser dada por uma curva parametrizada.
Seguindo nosso raciocnio, imaginemos agora que nos sejam dados 3 pontos ( x0 , y0 ) = (0, 1), ( x 1 , y1 ) =
(1, 3) e ( x2 , y2 ) = (2, 8). A pergunta : Qual o polinmio de menor grau que conecta tais pontos? Caso
71
72
y
y
3
10
8
2
6
1
2
1.0
0.8
0.6
0.4
0.2
0.2
0.4
0.6
0.8
1.0
1.2
x
1.0 0.8 0.6 0.4 0.2 0.0 0.2 0.4 0.6 0.8 1.0 1.2 1.4 1.6 1.8 2.0 2.2 2.4
xxx
(4.5)
O mais natural imaginar que eles no sejam colineares. Da lgebra linear, sabemos que os pontos,
sob essas circunstncias determinam, de modo nico, um polinmio de segundo grau, ou seja, existe
um polinmio da forma
y = ax2 + bx + c
(4.6)
conectando os pontos.
Seguindo o mesmo raciocnio que usamos para encontrar os coeficientes a e b da reta, impomos as
condies que quando x = x0 , temos que y = y0 , quando x = x1 , temos que y = y1 e quando x = x2 ,
temos que y = y 2 . Dessa forma encontramos o seguinte sistema linear nas incgnitas a, b e c:
y0 = ax20 + bx0 + c,
y1 =
y2 =
ax21
ax22
(4.7)
+ bx1 + c,
(4.8)
+ bx2 + c,
(4.9)
(4.10)
O sistema linear formado pelas equaes (4.7)- (4.9) pode se escrito na forma matricial como:
1
1
(x x )1(x x )
x0 2 x0 1
y0
a
y0
a
x
x
x
x
(x0 x1 ) (x0 x2 )
(
)
(
)
0
1
0
2
1
2
1
2
x0 +x2
x +x
x1 2 x1 1 b = y1 b =
(x xx0)+(xx1 x )
y1
(x0 x11) ( x20 x2 )
(x0 x1 ) (x1 x2 )
0
2
1
2
2
x1 x2
x0 x2
x0 x1
y2
c
y2
c
x2
x2 1
(x x ) (x x )
(x x ) (x x )
(x x ) (x x )
0
x0 y2 +x2 y0 +x1 y2 x2 y1
x0 y1 (xx1 y0
0 x1 ) (x0 x2 ) (x1 x2 )
a
x0 2 y1 x1 2 y0 x0 2 y2 +x2 2 y0 +x1 2 y2 x2 2 y1
b =
(x0 x1 ) (x0 x2 ) (x1 x2 )
c
y1 x0 2 x2 y2 x0 2 x1 + y2 x0 x1 2 y1 x0 x2 2 y0 x1 2 x2 + y0 x1 x2 2
(x x ) (x x ) (x x )
0
(4.11)
73
Observao 16. Note que se os pontos forem colineares, ou seja, satisfizerem (4.5), ento a = 0 (prove
esse fato, usando (4.5) em (4.11)). Portanto, no precisamos nos preocupar inicialmente em verificar se
os pontos so ou no colineares, basta que xi 6= x j se i 6= j para qualquer conjunto de pontos e possvel
encontrar tal polinmio. Caso seja colinear, os coeficientes de graus mais altos iro, naturalmente,
anularem-se.
Em geral, para um exemplo especfico, muito mais fcil calcular a soluo diretamente, ou seja,
para encontrarmos o polinmio passando por ( x0 , y0 ) = (0, 1), ( x1 , y1 ) = (1, 3) e ( x2 , y2 ) = (2, 8),
precisamos resolver o sistema linear:
1 = a(0)2 + b(0) + c,
2
3 = a(1) + b(1) + c,
8 = a(2)2 + b(2) + c,
c=1
a+b+c = 3
4a + 2b + c = 8,
que tem como soluo bastante simples a = 1, 5, b = 0, 5 e c = 1, portanto o polinmio passando pelos
trs pontos dados y = 1, 5x 2 + 0, 5x + 1, veja Figura (4.1.b).
Agora imagine que tenhamos um grupo de m + 1 pontos ( x 0 , y0 ), ( x2 , y2 ), , ( xm , ym ). Genericamente (desconsiderando casos em que os pontos estejam todos sobre uma curva de grau menor que m),
o polinmio de menor grau que interpola esses pontos um polinmio de grau m da forma:
y = am x m + am1 x m1 + + a1 x 1 + a0 .
(4.12)
m1
+ + a1 x1 + a0 ,
y1 = am xm
1 + am1 x 1
..
..
. =
.
(4.13)
m1
ym = am xm
+ + a1 xm + am ,
m + am1 x m
xm
m
m1
xm
..
.
1
1
..
.
am
am1
..
.
a0
1
y0
y1
..
.
ym
(4.14)
0 0 0 0 1
a4
1
1 1 1 1 1 a3 3
4
2 23 22 2 1 a2 = 7
(4.15)
34 33 32 3 1 a1 5
a0
11
44 43 42 4 1
74
11 4 41 3 181 2 43
x
x +
x
x + 1.
12
6
12
6
y
4.0
12
3.9
3.8
10
3.7
8
3.6
3.5
3.4
3.3
3.2
2
3.1
3.0
0.0
0.5
1.0
1.5
2.0
2.5
3.0
3.5
4.0
0.2
0.4
0.6
0.8
1.0
1.2
xxx
1.4
1.6
1.8
2.0
2.2
11 4 41 3 181 2 43
x
x +
x
x + 1, interpolando os
12
6
12
6
10
1
pontos (0, 1), (1, 3), (2, 7), (3, 5), (4, 11). b)- Direita. Reta de equao y = x +
passando pelos
3
3
pontos (1, 3), (2, 4).
Poderamos entar estar satisfeitos e dizer que esse captulo est acabado e podemos passar para o
prximo. Bem, mas vamos entar imaginar um caso exemplo, nada absurdo.
Imagine que tenhamos 101 pontos para serem interpolados. Vamos imaginar que os valores de x
so da forma x0 = 0, x1 = 1, , xi = i x 100 = 100. Como estudado at agora, sabemos que podemos
encontrar um polinmio de grau 100 conectando esses pontos. Bastante grande, mas bem possvel de
termos que interpolar essa quantidade de pontos.
Portanto, a matriz dos coeficientes A ficaria escrita como:
x100
0
x100
1
.
..
x100
m
x99
0
x99
1
x99
m
..
.
1
1
..
.
0
1
0
1
2100
..
.
299
100100
(100)99
..
.
0
1
2
..
.
100
1
1
..
.
1
Observe que da primeira linha para a centsima linha, a ordem da matriz fica extremamente
grande, pois passa de 1 para (o absurdo) 100100. Qualquer mtodo utilizado para a soluo, poder
encontrar muitos problemas e os erros podem aumentar tanto a ponto de estragar definitivamente a
soluo do sistema.
Uma questo se coloca: Como tentar contornar esse fato? Como conseguir interpolar esses pontos
utilizando um algoritmo que seja estvel e nos d uma soluo adequada?
Isso tem que acontecer, pois sabemos ser possvel interpolar esses pontos. Para tanto surgem algumas tcnicas interessantes, tais como o mtodo de Lagrange que descreveremos a seguir. Na Seo 4.4
discutiremos a spline-cbica, que uma tcnica de interpolao um pouco diferente da de encontrar polinmios, mas particularmente, muito til. Em geral, os programas que constroem grficos, baseiam-se
na tcnica de spline cbica para desenhar as curvas.
75
e p2 ( xi ) = yi .
(4.16)
(4.17)
no qual o grau de h( x) seria maior ou igual a zero (o polinmio constante, exceto o identicamente nulo,
tem grau 0). Mas isto um absurdo, pois se P( x) pudesse ser decomposto como (4.17) o grau( P( x)) > m.
O absurdo esteve em supor que P( x) no era identicamente nulo. Portanto, a nica possibilidade para
P( x) 0 e, portanto,
p1 ( x) p2 ( x) 0 p1 ( x) p2 ( x),
(4.18)
e o Teorema est provado.
Observao 17. Como o polinmio de grau m nico, ento no importa da forma que calculemos
o polinmio. O mtodo de Lagrange dar o mesmo polinmio que seria obtido pelo mtodo anterior,
entretanto, de forma bem mais estvel, pois no h crescimento rpido dos termos, como no caso da
matriz de Vandermonde anteriormente descrita.
76
(4.19)
p ( x 1 ) = L0 ( x 1 ) y 0 + L1 ( x 1 ) y 1 = y 1 ,
(4.21)
Observe que (4.21) a funo mais simples que se anula em x1 e no constante. Mas note que ela
ainda no satisfaz a segunda propriedade, ou seja, que L0 ( x0 ) = 1. Para chegar em tal propriedade,
basta normalizarmos (4.21), dividindo-o por ( x0 x1 ) e temos:
x x1
,
x0 x1
(4.22)
x x0
.
x1 x0
(4.23)
x x0
x x1
y0 +
y ,
x0 x1
x1 x0 1
(4.24)
L0 ( x ) =
Exemplo 16. Encontre, pelo mtodo de Lagrange, o polinmio passando por (1, 3), (2, 4).
Para encontrar o polinmio, basta substituir (1, 3), (2, 4) em (4.24):
p( x) =
que uma reta, veja Figura (4.2.b)
x2
x+1
x 10
3+
4= +
,
1 2
2+1
3
3
77
Polinmio de Grau 2
Seguindo nosso raciocnio, suponhamos que queiramos interpolar os pontos ( x 0 , y0 ), ( x 1 , y1 ) e ( x 2 , y2 )
com x0 6= x1 6= x2 . Vamos propor um polinmio p( x) dado por:
p ( x ) = L0 ( x ) y 0 + L1 ( x ) y 1 + L2 ( x ) y 2 ,
(4.25)
1, se x = x0 ,
0, se x = x0 ,
0, se x = x0 ,
L0 ( x) = 0, se x = x1 ,
L1 ( x) = 1, se x = x1 ,
e L2 ( x) = 0, se x = x1 ,
(4.26)
0, se x = x2 ,
0, se x = x2 ,
1, se x = x2 ,
p ( x 0 ) = L0 ( x 0 ) y 0 + L1 ( x 0 ) y 1 + L2 ( x 0 ) y 2 = y 0 ,
p ( x 1 ) = L0 ( x 1 ) y 0 + L1 ( x 1 ) y 1 + L2 ( x 1 ) y 2 = y 1
p ( x 2 ) = L0 ( x 2 ) y 0 + L1 ( x 2 ) y 1 + L2 ( x 2 ) y 2 = y 2 ,
o que indica que o polinmio p( x) realmente interpola ( x0 , y0 ), ( x1 , y1 ) e ( x2 , y2 ).
Precisamos encontrar uma funo razovel para L0 ( x), L1 ( x) e L2 ( x) de modo que eles retenham
as propriedades (4.26) e continuem simples. A melhor forma de propor tal funo olhando para os
valores que ela se anula, como no caso linear.
Vamos fazer para L0 ( x), os outros so iguais. Note que L0 ( x) se anula para x = x1 e x = x 2 , fato
que nos d uma boa indicao de como proceder e desenvolver um algoritmo simples. A funo mais
simples que satisfaz essa propriedade que podemos pensar :
L0 ( x) = ( x x1 )( x x2 ),
(4.27)
( x x1 )( x x2 )
,
( x0 x1 )( x0 x2 )
(4.28)
o qual um polinmio de grau dois bem simples que satisfaz as propriedades (4.26).
Usando o mesmo argumento construtivo para L1 ( x) e L2 ( x) (refaa os passos), propomos as seguintes funes:
( x x0 )( x x2 )
( x x0 )( x x1 )
L1 ( x ) =
texte L2 ( x) =
.
(4.29)
( x1 x0 )( x1 x2 )
( x2 x0 )( x2 x1 )
Usando (4.28) e (4.29), o polinmio p( x) dado por (4.25) escrito como:
p( x) =
( x x1 )( x x2 )
( x x0 )( x x2 )
( x x0 )( x x1 )
y +
y +
y ,
( x0 x1 )( x0 x2 ) 0 ( x1 x0 )( x1 x2 ) 1 ( x2 x0 )( x2 x1 ) 2
Exemplo 17. Encontre, pelo mtodo de Lagrange, o polinmio passando por (0, 2), (1, 6), (2, 4).
Para encontrar o polinmio, basta substituir esses pontos em (4.30):
p( x) =
( x 1)( x 2)
( x 0)( x 2)
( x 0)( x 1)
2+
6+
2 = 7 x 3 x2 + 2,
(0 1)(0 2)
(1 0)(1 2)
(2 0)(2 1)
(4.30)
78
y
y
6
14
12
10
8
4
6
4
3
2
0
0.0
0.2
0.4
0.6
0.8
1.0
1.2
1.4
1.6
1.8
2.0
2.2
2
4
11 4 41 3 181 2 43
x
x +
x
x + 1, inter12
6
12
6
polando os pontos (0, 1), (1, 3), (2, 7), (3, 5), (4, 11).
b)- Direita.
Polinmio de grau 7
11 x7
581 x6
1879 x5 5467 x4 289 x3
21731 x2 6227 x
y=
+
+ 2, interpolando (0, 2), (1, 6),
336
720
240
144
3
180
105
(2, 4), (3, 5), (4, 2), (5, 9), (6, 12), (7, 1).
Figura 4.3:
a)- Esquerda.
Grfico do polinmio y =
( x x1 )( x x2 ) ( x xi1 )( x xi+1 ) ( x xm )
=
( xi x1 )( xi x2 ) ( xi xi1 )( xi xi+1 ) ( xi xm )
x xj
,
x xj
j = 0, j 6 = i i
(4.33)
j = 0, j 6 = i
79
p( x) =
x xj
xi x j y0 +
j=1
x xj
xi x j y1 + +
j = 0, j 6 = 1
m1 x x
x xj
j
y
+
m
1
xi x j
xi x j ym .
j=0
j = 0, j 6 = m 1
m
(4.34)
Exemplo 18. Encontre, pelo mtodo de Lagrange, o polinmio de grau 7, passando pelos pontos 8 (0, 2),
(1, 6), (2, 4), (3, 5), (4, 2), (5, 9), (6, 12), (7, 1).
Para encontrar o polinmio, basta substituir esses pontos em (4.34), com m = 7. Como o polinmio bastante grande, iremos calcular cada um dos L0 at L7 separadamente. Aps alguma lgebra,
encontramos:
( x 1) ( x 2) (x 3) ( x 4) (x 5) ( x 6) ( x 7)
,
5040
x (x 2) (x 3) ( x 4) (x 5) ( x 6) (x 7)
,
L1 ( x ) =
720
x ( x 1) (x 3) ( x 4) (x 5) ( x 6) ( x 7)
L2 ( x ) =
,
240
x (x 1) (x 2) ( x 4) (x 5) ( x 6) (x 7)
L3 ( x ) =
,
144
x ( x 1) (x 2) ( x 3) (x 5) ( x 6) ( x 7)
,
L4 ( x ) =
144
x (x 1) (x 2) ( x 3) (x 4) ( x 6) (x 7)
L5 ( x ) =
,
240
x ( x 1) (x 2) ( x 3) (x 4) ( x 5) ( x 7)
L6 ( x ) =
,
720
x (x 1) (x 2) ( x 3) (x 4) ( x 5) (x 6)
L7 ( x ) =
.
5040
L0 ( x ) =
Ento o polinmio p( x), dado por (4.34) e usando os valores de L0 ( x), L1 ( x), , L7 ( x), acima encontramos:
p( x) =
581 x6
1879 x5 5467 x4
289 x3 21731 x2 6227 x
11 x7
+
+ 2.
336
720
240
144
3
180
105
80
(4.35)
P( x) = a0 + a1 ( x x0 ).
a0 = P( x0 ) = y0 .
y y0
P( x1 ) P( x0 )
= 1
.
x1 x0
x1 x0
a1 =
Note que os coeficientes so os mesmos que encontramos com os mtodos anteriores, o polinmio fica
da (no surpreendente) forma:
y y0
P( x) = y0 + 1
( x x0 ).
x1 x0
Diferenas Divididas para polinmios de grau 2
Para o polinmio de grau 2 precisamos de trs pontos ( x0 , y0 ), ( x1 , y1 ) e ( x2 , y2 ). Neste caso o polinmio
P( x) dado por (4.35) escrito como:
(4.37)
P( x) = a0 + a1 ( x x 0 ) + a2 ( x x0 )( x x1 ).
a0 = P( x0 ) = y0 .
y y0
P( x1 ) P( x0 )
= 1
.
x1 x0
x1 x0
81
item Para x = x2 , j conhecemos a0 e a1 , atravs dos clculos anteriores, para obter a2 temos:
P( x1 ) P( x0 )(( x 2 x0 ))
+ a2 ( x2 x0 )( x2 x1 )
x1 x0
P( x2 ) P( x0 )
P( x2 ) P( x0 )
P( x1 ) P( x0 )
1
P( x1 ) P( x0 )
a2 =
( x2 x0 )( x2 x1 ) ( x1 x0 )( x2 x1 )
( x2 x1 )
( x2 x0 )
( x1 x0 )
P( x2 ) = a0 + a1 ( x 2 x0 ) + a2 ( x2 x0 )( x2 x1 ) = P( x0 ) +
82
4.5. EXERCCIOS
4.5 Exerccios
83
84
Captulo 5
85
86
5.1 Exerccios
87
88
Captulo 6
Derivao Numrica
89
90
6.1 Exerccios
91
92
Captulo 7
Integrao Numrica
93
94
7.1 Exerccios
95
96
Captulo 8
97
98
8.1 Exerccios
99
100
Referncias Bibliogrficas
[1] R. L. Burden, J. D. Faires, Numerical Analysis, Ninth Edition, Brooks/COLE Cengange Learning,
Canada, 2011.
[2] E. L. Lima, Anlise Real, 2a. Edio, IMPA, Rio de Janeiro.
101