Cálculo Numérico Com MATLAB

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 162

n


 
 

−1

−2

−3

−4

−5

−6

−7

−8
50
40 50
30 40
20 30
20
10
10
0 0

i=1   ll!#" $ % &' )(* i


PARA ELIANE...
Sumário

1 Sistemas Lineares 1
1.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 Solução de um sistema n × n . . . . . . . . . . 3
1.2 Métodos Diretos . . . . . . . . . . . . . . . . . . . . . 4
1.2.1 Método de Gauss . . . . . . . . . . . . . . . . . 4
1.2.2 Decomposição LU . . . . . . . . . . . . . . . . 8
1.3 Métodos Iterativos . . . . . . . . . . . . . . . . . . . . 11
1.3.1 Método Iterativo de Jacobi . . . . . . . . . . . 11
1.3.2 Critério de Parada . . . . . . . . . . . . . . . . 14
1.3.3 Método Iterativo de Gauss-Seidel . . . . . . . . 15
1.3.4 Método do Refinamento Iterativo . . . . . . . . 17
1.3.5 Número Condicional . . . . . . . . . . . . . . . 17
1.3.6 Convergência do M. Iterativo de Jacobi e Gauss-
Seidel . . . . . . . . . . . . . . . . . . . . . . . 19
1.4 Sistemas Lineares Complexos . . . . . . . . . . . . . . 20
1.5 Exercı́cios . . . . . . . . . . . . . . . . . . . . . . . . . 21

2 Zeros de função 25
2.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.2 Método de Localização de Zeros . . . . . . . . . . . . . 27
2.3 Método do Meio Intervalo - MMI . . . . . . . . . . . . 29
2.4 Método da Secante . . . . . . . . . . . . . . . . . . . . 31
2.4.1 Convergência no Método da Secante . . . . . . 33
2.5 Método de Newton . . . . . . . . . . . . . . . . . . . . 33
2.5.1 Convergência no Método de Newton . . . . . . 35
2.6 Método da Iteração Linear . . . . . . . . . . . . . . . . 36

I
2.6.1 A Função de Iteração . . . . . . . . . . . . . . 39
2.7 Comentários Finais Sobre os Métodos . . . . . . . . . 41
2.7.1 Localização de Zeros . . . . . . . . . . . . . . . 41
2.7.2 Método do Meio Intervalo - MMI . . . . . . . . 41
2.7.3 Método da Secante . . . . . . . . . . . . . . . . 41
2.7.4 Método de Newton . . . . . . . . . . . . . . . . 41
2.7.5 Método da Iteração Linear . . . . . . . . . . . 42
2.8 Zeros de um Polinômio . . . . . . . . . . . . . . . . . . 43
2.8.1 Multiplicidade de um zero . . . . . . . . . . . . 50
2.9 Exercı́cios . . . . . . . . . . . . . . . . . . . . . . . . . 51

3 Interpolação 53
3.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.2 Interpolação de Lagrange . . . . . . . . . . . . . . . . 54
3.3 Interpolação com Diferenças Divididas Finitas - DDF . 57
3.3.1 Propriedades de uma DDF . . . . . . . . . . . 57
3.3.2 Obtenção da Fórmula . . . . . . . . . . . . . . 58
3.4 Erro de Truncamento . . . . . . . . . . . . . . . . . . . 59
3.5 Método de Briot-Ruffini . . . . . . . . . . . . . . . . . 62
3.6 Considerações Finais . . . . . . . . . . . . . . . . . . . 64
3.7 Exercı́cios . . . . . . . . . . . . . . . . . . . . . . . . . 65

4 Integração Numérica 69
4.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . 69
4.2 Regra dos Trapézios . . . . . . . . . . . . . . . . . . . 70
4.2.1 Erro de Truncamento . . . . . . . . . . . . . . 71
4.3 1a Regra de Simpson . . . . . . . . . . . . . . . . . . . 73
4.4 Quadratura Gaussiana . . . . . . . . . . . . . . . . . . 76
4.5 Exercı́cios . . . . . . . . . . . . . . . . . . . . . . . . . 80

5 Mı́nimos e Máximos 83
5.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . 83
5.2 Método da Seção Áurea . . . . . . . . . . . . . . . . . 86
5.2.1 Convergência no Método da Seção Áurea . . . 87
5.3 Superfı́cies em R3 . . . . . . . . . . . . . . . . . . . . . 88
5.4 Método do Gradiente . . . . . . . . . . . . . . . . . . . 89
5.5 Bacias de atração . . . . . . . . . . . . . . . . . . . . . 90
5.6 Método de direções aleatórias . . . . . . . . . . . . . . 92
5.7 Exercı́cios . . . . . . . . . . . . . . . . . . . . . . . . . 93

6 Introdução ao Matlab 95
6.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . 95
6.2 Comandos . . . . . . . . . . . . . . . . . . . . . . . . . 97
6.2.1 Comando de leitura . . . . . . . . . . . . . . . 97
6.2.2 Comando de impressão . . . . . . . . . . . . . 97
6.2.3 Comando de atribuição . . . . . . . . . . . . . 98
6.2.4 Estrutura de decisão . . . . . . . . . . . . . . . 99
6.2.5 Estruturas de repetição . . . . . . . . . . . . . 100
6.3 Itens Básicos do Matlab . . . . . . . . . . . . . . . . . 103
6.3.1 Operadores relacionais . . . . . . . . . . . . . . 103
6.3.2 Conectivos lógicos . . . . . . . . . . . . . . . . 104
6.3.3 Funções Pré-definidas . . . . . . . . . . . . . . 104
6.3.4 Script . . . . . . . . . . . . . . . . . . . . . . . 105
6.4 Vetores e Matrizes . . . . . . . . . . . . . . . . . . . . 108
6.5 Funções em Matlab . . . . . . . . . . . . . . . . . . . . 111
6.6 Gráficos Bidimensionais . . . . . . . . . . . . . . . . . 113
6.7 Gráficos Tridimensionais . . . . . . . . . . . . . . . . . 115
6.8 Exercı́cios . . . . . . . . . . . . . . . . . . . . . . . . . 116

7 Implementação dos Métodos 119


7.1 Sistemas Lineares . . . . . . . . . . . . . . . . . . . . . 119
7.2 Zeros de Função . . . . . . . . . . . . . . . . . . . . . 130
7.3 Interpolação . . . . . . . . . . . . . . . . . . . . . . . . 136
7.4 Integração . . . . . . . . . . . . . . . . . . . . . . . . . 138
7.5 Otimização . . . . . . . . . . . . . . . . . . . . . . . . 139
7.6 Exercı́cios . . . . . . . . . . . . . . . . . . . . . . . . . 145

Bibliografia 149
Lista de Figuras

1.1 Solução geométrica de um sistema 2 × 2 . . . . . . . . 3


1.2 O sistema não possui solução . . . . . . . . . . . . . . 4
1.3 Seqüência X n . . . . . . . . . . . . . . . . . . . . . . . 14

2.1 Zeros de uma função . . . . . . . . . . . . . . . . . . . 26


2.2 f 0 (x) > 0 e f 0 (x) < 0 . . . . . . . . . . . . . . . . . . . 26
2.3 Zeros de f (x) . . . . . . . . . . . . . . . . . . . . . . . 27
2.4 Zeros de f (x) . . . . . . . . . . . . . . . . . . . . . . . 28
2.5 Criando uma partição P . . . . . . . . . . . . . . . . . 29
2.6 (xn ) convergindo para o zero ² . . . . . . . . . . . . . 30
2.7 Seqüência (xn ) no método da secante . . . . . . . . . . 32
2.8 Seqüência (xn ) no método de Newton . . . . . . . . . 34
2.9 Seqüência (xn ) no método da Iteração Linear . . . . . 37
2.10 Seqüência (xn ) no Método da Iteração Linear . . . . . 37
2.11 Método gráfico . . . . . . . . . . . . . . . . . . . . . . 43
2.12 Limite dos zeros . . . . . . . . . . . . . . . . . . . . . 46
2.13 Isolando zeros . . . . . . . . . . . . . . . . . . . . . . . 47
2.14 Limite de zeros complexos . . . . . . . . . . . . . . . . 49

3.1 Erro de truncamento . . . . . . . . . . . . . . . . . . . 63

4.1 Área do trapézio . . . . . . . . . . . . . . . . . . . . . 71


4.2 Cálculo da área por trapézios . . . . . . . . . . . . . . 72
4.3 Cálculo da área pela 1a regra de Simpson . . . . . . . 74
4.4 Cálculo da área por trapézios . . . . . . . . . . . . . . 75

5.1 Mı́nimos local e global . . . . . . . . . . . . . . . . . . 84


5.2 Parabolóide . . . . . . . . . . . . . . . . . . . . . . . . 88

V
5.3 Seqüência (pn ) se aproximando do mı́nimo de f (x) . . 90
5.4 Bacias de atração . . . . . . . . . . . . . . . . . . . . . 91

6.1 Gráfico de f (x) = x2 . . . . . . . . . . . . . . . . . . . 114


6.2 Gráfico de f (x, y) = x2 + y 2 . . . . . . . . . . . . . . . 115
6.3 Gráfico+(curva de nı́vel) de f (x, y) = x2 + y 2 . . . . . 115
Prefácio
Este livro de cálculo numérico foi escrito com base nas notas
de aula, ministradas na Universidade Federal do Espı́rito Santo e
na Universidade Estadual do Sudoeste da Bahia. A importância do
cálculo numérico para os estudantes de engenharia, fı́sica e matemática
se faz na conexão dos métodos numéricos matemáticos com a com-
putação, cada vez mais presente no dia-dia acadêmico. Os métodos
numéricos são velhos conhecidos dos matemáticos. Mesmo antes de
Cristo já se conhecia alguns métodos numéricos. Com o advento do
computador esses métodos puderam ser implementados e assim uma
quantidade de problemas puderam ser resolvidos. O que antes se
conhecia apenas como existência e unicidade, agora pode ser deter-
minado por aproximações tão precisas quanto se queira.
Tentei escrever um livro para ser usado em um semestre letivo
nos cursos de graduação, por isso, no que tange o conteúdo de
cada capı́tulo, ha uma preocupação em expor os principais métodos
numéricos, claro que alguns ficaram de fora. O leitor interessado
pode procurar na bibliografia para aprofundar mais. Temos como ob-
jetivo que o estudante tenha uma visão profunda em alguns temas e
outros uma visão geral, montando assim seu conhecimento e metodolo-
gia de estudo em relação aos métodos numéricos.
Em cada capı́tulo, existe uma preocupação em expor assuntos at-
uais e de importância prática. Muitas demonstrações não são feitas
devido a complexidade e o fato de fugirem do tema principal, mas
podem ser obtidas nas referências. Dedicamos um capı́tulo, a in-
trodução do software Matlab, que será suficiente para implementar
os métodos apresentados aqui. Claro que os métodos também po-
dem ser implementados em uma outra linguagem. Um comentário
importante: grande parte dos métodos numéricos apresentados aqui
já estão implementados no Matlab em forma de funções pré-definidas.
Mesmo assim, é de suma importância o estudo desses métodos, uma
vez que os problemas práticos exigem certas mudanças.
Dei especial atenção ao capı́tulo de zeros de funções, apresen-
tando métodos numéricos e analı́ticos para encontrar zeros de uma
função. Uma seção dedicada exclusivamente aos zeros de um polinômio,
faz o diferencial deste livro. Fornecendo um potente teorema que
limita os zeros de um polinômio.
Em geral não é comum o tema Mı́nimos e Máximos em textos
de cálculo numérico. Por isso, o professor desejoso, pode omitir esse
capı́tulo. Esse tema foi colocado neste texto devido a importância
prática cada vez maior, e o fato de ser uma ótima aplicação dos
métodos numéricos.
Como pré-requisito, o leitor deve ter em mente o curso de Cálculo
I e II, e álgebra linear. No capı́tulo 6 fizemos uma introdução aos al-
goritmos em Matlab, o que elimina um curso básico de programação
como pré-requisito. Gostaria de agradecer aos alunos da UESB pelas
correções e sugestões efetuadas no decorrer do trabalho. Agradeço
aos professores Ivanor e Maria Aparecida pelos incentivos para a
publicação deste texto.

Vitória da Conquista, 10 de Junho de 2005.


Flaulles Boone Bergamaschi
Capı́tulo 1

Sistemas Lineares

1.1 Introdução
Neste capı́tulo vamos desenvolver técnicas e métodos numéricos para
resolver sistemas lineares n×n. Esses sistemas aparecem com freqüência
em problemas da engenharia, fı́sica, quı́mica, etc... Com o advento
do computador tais métodos ganharam mais atenção, ficando assim
evidente a importância de um estudo mais aprofundado. Lembramos
o leitor que alguns tópicos básicos de álgebra linear são necessários.
Por isso, aconselhamos o uso de algum livro sobre o assunto para
acompanhamento.
Um sistema de equações lineares com m equações e n incógnitas
é dado na forma:


 a11 x1 + a12 x2 + · · · + a1n xn = b1

 a21 x1 + a22 x2 + · · · + a2n xn = b2
(∗) .. .. .. ..

 . . . .


am1 x1 + am2 x2 + · · · + amn xn = bm

Com aij (i = 1, . . . m, j = 1 . . . n) números reais ou complexos.


A solução do sistema (∗) é um conjunto (x1 , x2 , . . . , xn ) que sat-
isfaça todas as m equações.
O sistema (∗) também pode ser escrito na forma matricial:

1
2 CAPÍTULO 1. SISTEMAS LINEARES

     
a11 a12 ··· a1n x1 b1
 a21 a22 ··· a2n   x2   b2 
     
 .. .. .. .. . .. = .. ,
 . . . .   .   . 
am1 am2 ··· amn xn bm
ou seja, AX = B com A sendo a matriz dos coeficientes, X o vetor
de incógnitas e B o vetor de termos independentes.
Chamamos de matriz ampliada do sistema (∗) a matriz formada
pela junção do vetor de termos independentes e a matriz dos coefi-
cientes.
 
a11 a12 · · · a1n b1
 a21 a22 · · · a2n b2 
 
 .. .. .. .. .. 
 . . . . . 
am1 am2 · · · amn bm

É importante notar que a matriz ampliada do sistema é o ponto


de partida para encontrar-mos a solução do sistema via métodos
numéricos, o que desenvolveremos mais adiante.

Exemplo
½ 1.1.1. Consideremos o seguinte sistema 2 × 2
2x1 + x2 = 3
x1 + 4x2 = 5
· ¸ · ¸ · ¸
2 1 3 x1
A= , B= , X=
1 4 5 x2
· ¸
2 1 3
Matriz ampliada do sistema:
1 4 5

Por motivos técnicos e computacionais trataremos apenas o caso


de sistemas onde o número de equações e incógnitas são iguais, ou
seja, m = n. Matricialmente isso quer dizer que, a matriz dos co-
eficientes é uma matriz quadrada. Também vamos assumir que a
matriz dos coeficientes é uma matriz real.
Geometricamente a solução de uma sistema linear (n × m) é a
interseção de n hiperplanos em Rn . Veja no exemplo:
1.1. INTRODUÇÃO 3

Exemplo 1.1.2. Considere o sistema do exemplo anterior onde a


solução é dada por P = (1, 1), que é exatamente a interseção das
retas 2x1 + x2 = 3 e x1 + 4x2 = 5 conforme Figura 1.1

y
4

0 x
-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7

-1

-2

-3

-4

Figura 1.1: Solução geométrica de um sistema 2 × 2

1.1.1 Solução de um sistema n × n


Vamos relembrar alguns resultados da álgebra linear:

i. Um sistema linear (n × n) possui solução única se o determi-


nante da matriz dos coeficientes é diferente de zero.
ii. Caso o determinante seja zero, o sistema não possui solução
ou possui infinitas soluções.

A demonstração dos itens acima pode ser encontrada em [2]

Exemplo
½ 1.1.3. Consideremos os sistema· ¸
2x1 + x2 = 3 2 1
, veja que det =0
4x1 + 2x2 = −6 4 2

Neste caso as retas 2x1 + x2 = 3 e 4x1 + 2x2 = −6(veja Figura


1.2) são paralelas.
4 CAPÍTULO 1. SISTEMAS LINEARES

y
4

0 x
-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7

-1

-2

-3

-4

Figura 1.2: O sistema não possui solução

Em problemas práticos é comum encontrar sistemas lineares de


grande porte, por exemplo n > 1000. Por isso é necessário desen-
volvermos métodos numéricos para encontrar a solução de tais sis-
temas de tal forma que, seja sempre possı́vel implementar algoritmos
computacionais.
Começamos com os métodos numéricos diretos que fornecem a
solução exata 1 através de um número finito de passos.

1.2 Métodos Diretos


1.2.1 Método de Gauss
Este método trabalha com a equivalência de sistemas através de
operações
elementares na matriz ampliada. Para começar vamos definir as
operações elementares sobre as linhas de uma matriz.

Operações elementares

i. trocar linhas, Li ←→ Lj .
ii. Multiplicar uma linha por um escalar k 6= 0, Li −→ kLi .
1
Quando não existem erros de truncamento e arredondamento
1.2. MÉTODOS DIRETOS 5

iii. Substituir uma linha por sua soma com um múltiplo escalar de
outra linha. k 6= 0, Li −→ Li + kLj .

Definição 1.1. Dizemos que as matrizes Am×n e Bm×n são linha


equivalentes, se Bm×n pode ser obtida através de operações elementares
em Am×n .
Na definição acima podemos usar a notação A ∼ B.
· ¸
0 2 2
Exemplo 1.2.1. A matriz A = é linha equivalente a B =
1 2 3
· ¸
1 1 2
.
0 1 1
Aplicando operações elementares em A temos:
· ¸ · ¸ · ¸
0 2 2 L1 ↔L2 1 2 3 L2 → 21 L2 1 2 3 L1 →L1 +(−1)L2
−→ −→ −→
1 2 3 0 2 2 0 1 1
| {z }
· A¸
1 1 2
0 1 1
| {z }
B

Teorema 1.1. Dois sistemas que possuem matrizes ampliadas equiv-


alentes são equivalentes, ou seja, tem mesma solução.
A demonstração desse teorema pode ser encontrada em [2].

½ ½
2x1 + x2 = 3 4x1 + 2x2 = 6
Exemplo 1.2.2. O sistema e 1 1
x1 + x2 = 2 2 x1 + 2 x2 = 1
são equivalentes.
Basta observar que:
· ¸ · ¸ · ¸
2 1 3 L1 →2L1 4 2 6 L2 → 12 L2 4 2 6
−→ −→ 1 1
1 1 2 1 1 2 2 2 1

Com o Teorema 1.1 estamos prontos para iniciar o método de


Gauss, que consiste em transformar a matriz ampliada de um sistema
através de operações elementares em uma matriz da forma:
6 CAPÍTULO 1. SISTEMAS LINEARES

 
a11 a12 a13 · · · a1n b1
 0 a22 a23 · · · a2n b2 
 
 0 0 a33 · · · a3n b3 
 , (1.1)
 .. .. .. .. .. .. 
 . . . . . . 
0 0 0 · · · amn bm
ou seja, a matriz dos coeficientes é uma matriz triangular superior.
½
x1 + x2 = 2
Exemplo 1.2.3. Considere o sistema . Efet-
2x1 + x2 = 3
uando operações elementares na matriz ampliada termos:
· ¸ · ¸
1 1 2 L2 →L2 +(−2)L1 1 1 2
−→
2 1 3 0 −1 −1
½
x1 + x2 = 2
Portanto este sistema é equivalente a , que
−x2 = −1
é facilmente resolvido por substituição retroativa, ou seja, encon-
tramos x2 na segunda equação e substituı́mos na primeira equação,
encontrando x1 .

Daremos agora os passos para obter a matriz equivalente no caso


de um sistema 3 × 3. 
 a11 x1 + a12 x2 + a13 x3 = b1
Considere então o sistema a21 x1 + a22 x2 + a23 x3 = b2 e

a31 x1 + a32 x2 + a33 x3 = b3
sua matriz ampliada:
 
a11 a12 a13 b1
A =  a21 a22 a23 b2 
a31 a32 a33 b3

Com os passos abaixo é possı́vel transformar a matriz A em uma


matriz na forma dada em (1.1), através de operações elementares.

1o passo
Definimos o elemento chamado de pivo como a11 e calculamos:
1.2. MÉTODOS DIRETOS 7

a21 a31
m21 = − e m31 = −
pivo pivo

2o passo
Operamos na matriz ampliada A:
L2 −→ L2 + m21 L1
L3 −→ L3 + m31 L1

3o passo
O elemento pivo passe a ser a22 e calculamos:
a32
m32 = −
pivo

4o passo
L3 −→ L3 + m32 L2

Veja que o elemento pivo toma sempre os elementos na diagonal


da matriz dos coeficientes.
O caso n × n é análogo ao dado acima. Observamos que nesse
algoritmo matemático, o elemento pivo deve ser diferente de zero,
em outras palavras, todos os elementos na diagonal da matriz dos
coeficientes deve ser diferente de zero. Mas nem tudo está perdido!
Caso algum elemento akk seja igual a zero, deve-se usar a operação
elementar de troca de linha, ou seja, troca-se a linha k por uma linha
r tal que k < r.
Um outro problema pode ocorrer quando o elemento pivo está
próximo de zero, veja o
½
0.0001x1 + x2 = 1
Exemplo 1.2.4. Considere o sistema
x1 + x2 = 2

A solução exata é x1 = 1.0001 e x2 = 0.9999. Resolvendo este


sistema pelo método de Gauss obtemos, x1 = 1 e x2 = 0 que não
é a solução do sistema, nem tão pouco um aproximação. Mas se a
primeira linha é trocada com a segunda, então o método de Gauss
gera uma solução x1 = 1 e x2 = 1 que é uma boa aproximação.

Uma outra forma de resolver o problema quando o pivo é zero


ou está próximo de zero é conhecido como o método de Pivotação
8 CAPÍTULO 1. SISTEMAS LINEARES

Parcial, onde o elemento pivo é escolhido da seguinte forma: Toma-se


o pivo como o elemento de maior módulo na matriz dos coeficientes,
e efetua-se as operações elementares na matriz ampliada. O próximo
pivo é escolhido da mesma forma na matriz ampliada sem a linha do
pivo anterior.

1.2.2 Decomposição LU
Seja AX = B um sistema n × n e det(A) 6= 0. Suponha que A
possa se decompor no produto de uma matriz triangular inferior L,
e uma matriz triangular superior U , tal que A = LU , assim AX = B
equivale a (LU )X = B. Dessa forma podemos obter dois sistemas,
LY = B e U X = Y . Como L e U são triangulares, o sistema
LY = B é rapidamente resolvido por substituição retroativa, e logo
após U X = Y .
Assim o problema agora é decompor a matriz A no produto de
L e U . Recorremos então a álgebra linear onde esse problema é
conhecido como decomposição LU . Começamos com o

Teorema 1.2. Seja An×n uma matriz qualquer e Akk uma submatriz
de An×n formada pela interseção das primeiras k linhas e k colunas.
Se det(Akk ) 6= 0 para k = 1, . . . , n − 1 então existem e são únicas as
matrizes L e U tal que A = LU .

A demonstração pode ser encontrada em [8]

Para obter L e U o processo vem da eliminação Gaussiana, aquela


feita na seção anterior, onde L é uma matriz triangular inferior com
diagonal igual a 1 e multiplicadores −mij , e U uma matriz triangular
superior formada pelos elementos da forma final de A. Veja no caso
3 × 3,

     
a11 a12 a13 1 0 0 u11 u12 u13
 a21 a22 a23  =  −m21 1 0  .  0 u22 u23 
a31 a32 a33 −m31 −m32 1 0 0 u33
1.2. MÉTODOS DIRETOS 9

 2x1 + 3x2 − x3 = 5
Exemplo 1.2.5. Considere o sistema 4x1 + 4x2 − 3x3 = 3 ,

2x1 − 3x2 + x3 = −1
 
2 3 −1
onde a matriz dos coeficientes é dada por A =  4 4 −3  .
2 −3 1

a21
Tomando pivo = a11 , calculando m21 = − pivo = −2, m31 =
a31
− pivo= −1 e fazendo L2 −→ L2 + m21 L1 e L3 −→ L3 + m31 L1
obtemos a matriz:
 
2 3 −1
 0 −2 −1 
0 −6 2
a32
Tomando agora pivo = a22 e calculando m32 = − pivo = −3 e
fazendo L3 −→ L3 + m32 L2 obtemos a matriz:
 
2 3 −1
 0 −2 −1 
0 0 5

Dessa forma obtemos a decomposição de A em:


   
1 0 0 2 3 −1
L= 2 1 0  e U =  0 −2 −1 
1 3 1 0 0 5

Assim o sistema LY = B equivale a:

     
1 0 0 y1 5  y1 = 5
 2 1 0   y2  =  3  =⇒ 2y1 + y2 = 3

1 3 1 y3 −1 y1 + 3y2 + y3 = −1

Resolvendo por substituição retroativa temos a solução y1 = 5, y2 =


−7 e y3 = 15, onde podemos agora montar o sistema U X = Y :
10 CAPÍTULO 1. SISTEMAS LINEARES

     
2 3 −1 x1 5  2x1 + 3x2 − x3 = 5
 0 −2 −1   x2  =  −7  =⇒ −2x2 − x3 = −7

0 0 5 x3 15 5x3 = 15
Novamente por substituição retroativa obtemos x1 = 1, x2 = 2 e
x3 = 3.
O leitor já deve ter observado que usamos o método de eliminação
de Gauss para fazer a decomposição LU . Isso nos leva a pensar que
o método de Gauss da seção anterior é equivalente a decomposição
LU . Veremos essa diferença no exemplo abaixo.
Exemplo 1.2.6. Inversão de Matrizes.
Dada uma matriz An×n tal que det(A) 6= 0. Então A possui
inversa A−1 . Para encontrar A−1 devemos resolver n sistemas lin-
eares, veja:
Fazendo A−1 = X temos AX = I, ou seja,

     
a11 a12 ··· a1n x11 x12 · · · x1n 1 0 ··· 0
 a21 a22 ··· a2n   x21 x22 · · · x2n   0 1 ··· 0 
     
 .. .. .. .. . .. .. . . .. = .. .. .. .. 
 . . . .   . . . .   . . . . 
an1 an2 · · · ann xn1 xn2 · · · xnn 0 0 ··· 1
| {z }
A−1

onde os sistemas são:

     
a11 a12 ··· a1n x11 1
 a21 a22 ··· a2n   x21   0 
     
 .. .. .. .. . .. = ..  (sistema 1)
 . . . .   .   . 
an1 an2 · · · ann xn1 0

     
a11 a12 ··· a1n x12 0
 a21 a22 ··· a2n   x22   1 
     
 .. .. .. .. . .. = ..  (sistema 2)
 . . . .   .   . 
an1 an2 · · · ann xn2 0
1.3. MÉTODOS ITERATIVOS 11

..
.

     
a11 a12 ··· a1n x1n 0
 a21 a22 ··· a2n   x2n   0 
     
 .. .. .. .. . .. = ..  (sistema n)
 . . . .   .   . 
an1 an2 · · · ann xnn 1

Veja que os n sistemas lineares tem a mesma matriz de coefi-


cientes A. Para usar o método de Gauss deverı́amos aplicá-lo n
vezes. Por outro lado, uma vez aplicado o método de Gauss em
A obtemos a decomposição LU . Agora resolvemos os sistemas por
substituição retroativa. Isso reduz consideravelmente o número de
operações.

Existem outros métodos para se obter as matrizes L e U , o leitor


interessado pode consultar o método de Doolittle e Crout em [11].

1.3 Métodos Iterativos


Os métodos iterativos são caracterizados por uma função chamada
de função de iteração. Essa função deve ser obtida de tal forma
que possamos garantir que a seqüência produzida por ela convirja
para solução do sistema, em outras palavras, dado o sistema AX =
B, com An×n , devemos obter φ(x) tal que, dado x0 construı́mos
a seqüência x1 = φ(x0 ), x2 = φ(x1 ), . . . , xn = φ(xn−1 ), . . . , e
lim xn = x, onde x é a solução exata do sistema AX = B.
n→∞

1.3.1 Método Iterativo de Jacobi


Considere um sistema 3 × 3:

(1)  a11 x1 + a12 x2 + a13 x3 = b1
(2) a21 x1 + a22 x2 + a23 x3 = b2

(3) a31 x1 + a32 x2 + a33 x3 = b3
12 CAPÍTULO 1. SISTEMAS LINEARES

b1 a12 a13
De (1) temos que x1 = − x2 − x3
a11 a11 a11
(1.2)

b2 a21 a23
De (2) temos que x2 = − x1 − x3
a22 a22 a22
(1.3)

b3 a31 a32
De (3) temos que x3 = − x1 − x2
a33 a33 a33
(1.4)

ou

   b1
    
x1 a11 0 − aa12
11
a13
a11 x1
       
   b     
 x2  =    a21
 +  − a22 0 − aa23  .  x2 
 
2
  a22   22   
      
x3 b3
a33
− aa33
31
− aa32 0 x3
| {z } | {z33 }
d F

Agora podemos montar a função de iteração de Jacobi:

φ(x) = d + F x
O caso geral é análogo, ou seja, a matriz F é dada por
 
0 − aa1211
− aa1113
· · · − aa1n
11
 
 
 − a21 0 − a23
· · · − a2n 
 a22 a22 a22 
 
 
 a31 a3n 
 − a33 − aa32 0 · · · − a33 
 33 
 
 
 .. .. .. .. .. 
 . . . . . 
 
 
− aann
n1
− aannn2
− aannn3
··· 0
1.3. MÉTODOS ITERATIVOS 13

e d é dado por
 b1

a11
 
 
 b2 
 a22 
 
 
 b3 
 
 a33 
 .. 
 . 
 
 
bn
ann

Exemplo
½ 1.3.1. Vamos resolver pelo método de Jacobi o sistema
2x1 − x2 = 1
x1 + 2x2 = 3
   1 
0 12 2
F =  e d= 
1 3
−2 0 2

Começamos com a solução inicial x0 = (0, 0) e iteramos:

 1

2
x1 = φ(x0 ) = d + F x0 =  
3
2

 5

4
x2 = φ(x1 ) = d + F x1 =  
5
4

 9

8
x3 = φ(x2 ) = d + F x2 =  
7
8

 15

16
x4 = φ(x3 ) = d + F x3 =  
15
16
14 CAPÍTULO 1. SISTEMAS LINEARES
¸ ·
0.998 ∼
Continuando teremos x9 =que é uma boa aproximação
1.002
da solução exata x = (1, 1). Poderı́amos continuar a seqüência com
x10 , x11 , . . ., onde surge a pergunta: Quando parar? Isso será re-
spondido na próxima seção.
Podemos também observar a aproximação da seqüência xn para
a solução exata x por um gráfico. Veja figura 1.3.

1.8

1.6
x1
1.4

1.2 x2
x 5
x7

1
x6
0.8 x4 x3
0.6

0.4

0.2

x0
0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2

Figura 1.3: Seqüência X n

1.3.2 Critério de Parada


Devemos parar o método iterativo de Jacobi quando, para um dado δ
temos que kxn − xn−1 k∞ < δ, onde kxn k∞ = M ax{|xi |; 1 ≤ i ≤ n}.
Podemos utilizar outras normas para o critério de parada, por
exemplo:
1.3. MÉTODOS ITERATIVOS 15

v
u n
uX
kx kp = t
n p
kxi kp , p ∈ N
i=1

Você pode utilizar essa norma, mas por convenção neste texto va-
mos
trabalhar sempre com a norma k k∞ .
Um outro critério de parada é o número de iterações, ou seja,
fixado um k produzimos a seqüência xn até o termo xk . Isso nem
sempre resulta em uma boa aproximação. Por exemplo, quando k é
muito pequeno.
Exemplo 1.3.2. Considere o Exemplo 1.3.1. Suponha que seja dado
como critério de parada δ = 0.6 assim devemos fazer:

kx1 − x0 k = kx1 k = 32 > δ


° 5   ° ° 3 °
° 1 ° ° °
° 4 2 ° ° 4 °
kx − x k = °
2 1 
° 5
− ° = °
° °
° =
°
3
4 >δ
° 3 ° ° −1 °
4 2 4

1
kx3 − x2 k = 2 < δ parar o método.

Observe que se definimos δ menor, então devemos produzir mais


termos da seqüência xn para atingir a precisão desejada.

1.3.3 Método Iterativo de Gauss-Seidel


Este método é muito parecido com o método de Jacobi, na verdade
é uma pequena alteração no método de Jacobi que produz o método
de Gauss-Seidel.
Relembramos que uma solução aproximada xk para um sistema
n×n é dada pelo vetor xk = (xk1 , xk2 , . . . , xkn )T . Recorde das equações
(1.2),(1.3),(1.4) no método de Jacobi e definimos agora a equação
geral para uma solução
xk = (xk1 , xk2 , . . . , xkn )T e xk−1 = (xk−1
1 , x k−1
2 , . . . , xk−1 )T :
n

n
bi 1 X
xki = − aij xj
aii aii
j=1,j6=i
16 CAPÍTULO 1. SISTEMAS LINEARES

Cada elemento da solução xk depende exclusivamente dos ele-


mentos da solução anterior. No método de Gauss-Seidel isso muda
um pouco veja:

1
xk1 = (b1 − a12 xk−1
2 − a13 xk−1
3 − · · · − a1n xk−1
n )
a11

1
xk2 = (b2 − a21 xk1 − a23 xk−1
3 − · · · − a2n xk−1
n )
a22
..
.

1
xkn = (bn − an1 xk1 − an2 xk2 − · · · − ann−1 xkn−1 )
ann
ou  
i−1
X n
X
1 
xk+1
i = bi − aij xk+1
j − aij xkj 
aii
j=1 j=i+1
ou  
Xi−1 n
X
xki = di +  fij xkj + fij xk−1
j
 , com i = 1, 2, . . . , n, fij e
j=1 j=i+1
di entradas da matriz F e d dadas no método de Jabobi.

Não abordaremos aqui, mas é possı́vel criar uma função de it-


eração φ(x) como a que foi feita no método de Jacobi. Para isso,
veja [10].

Exemplo 1.3.3. Resolva pelo método de Gauss-Seidel o sistema


½
2x1 − x2 = 1
.
x1 + 2x2 = 3

Começando com x0 = (0, 0) temos:


 k+1
 x1 = 12 (1 + xk2 )
Equações iterativas de Gauss-Seidel

xk+1
2 = 12 (3 − xk+1
1 )

fazendo k = 0 temos:
1.3. MÉTODOS ITERATIVOS 17

 x11 = 12 (1 + x02 ) = 12 (1 + 0) = 0.5

x12 = 12 (3 − x11 ) = 12 (3 − 0.5) = 1.25

fazendo k = 1 temos:

 x21 = 12 (1 + x12 ) = 12 (1 + 1.25) = 1.125

x22 = 12 (3 − x21 ) = 12 (3 − 1.125) = 0.9375

Continuando podemos observar que o método de Gauss-Seidel


converge mais rápido que o método de Jacobi.

1.3.4 Método do Refinamento Iterativo


Considere um sistema n × n, AX = B com solução exata x e x0 uma
solução aproximada. Assim x = e0 + x0 , onde e0 é o erro cometido.
Como Ax = b então:

A(e0 +x0 ) = B =⇒ Ae0 +Ax0 = B =⇒ Ae0 = B 0 0


| −{zAx} =⇒ Ae = r
0

r0

Resolvendo o sistema Ae0 = r0 teremos uma aproximação de e0 .


Como x = e0 + x0 , então e0 melhora a solução x0 .
Este processo pode ser repetido até que se obtenha uma precisão
desejada.

1.3.5 Número Condicional


Considere um sistema n × n, AX = B e uma solução aproximada
xk . Definimos como o vetor resı́duo rk = B − Axk . Intuitivamente
somos levados a pensar que quanto mais próximo do vetor nulo o
vetor rk estiver, melhor será a solução xk . O problema é que nem
sempre isso ocorre devido a uma anomalia na matriz A. Veja o
½
x1 + 1.001x2 = 2.001
Exemplo 1.3.4. Considere o sistema
0.999x1 + x2 = 1.999
18 CAPÍTULO 1. SISTEMAS LINEARES

Este sistema tem solução exata x = (1, 1)T . Para a solução


xk = (2, 0.001)T o resı́duo é

· ¸ · ¸ · ¸ · ¸
k 2.001 1 1.001 2 −0.000001
r = − . =
1.999 0.999 1 0.001 0
| {z } | {z } | {z }
b A xk

Veja que o resı́duo rk é quase nulo. Se não soubéssemos que a


solução exata é x = (1, 1)T serı́amos levados a pensar que a solução
xk é uma boa aproximação. O que não ocorre.

Como dito antes essa anomalia aparece na matriz dos coeficientes


A. Para identificar melhor esse problema definimos o número condi-
cional de uma matriz.

Definição 1.2. Seja An×n uma matriz tal que det(A) 6= 0. Então o
número condicional de A é dado por Cond(A) = kAk.kA−1 k.

A norma na definição acima é dada por:


( n )
X
kAk = max |aij | ; j = 1, . . . , n
i=1

Quando o Cond(A) ≈ 1 então podemos dizer que a matriz A


é bem condicionada, ou seja, pequenas pertubações no vetor B re-
fletem em pequenas variações no vetor solução X. Mas se Cond(A)
é muito grande, então pequenas pertubações no vetor B produzem
uma grande variação no vetor solução X.
O número condicional não deve ser entendido como regra para
determinar o mau condicionamento de uma matriz (sistema). Mas
como uma previsão de mau condicionamento. Por exemplo, um sis-
tema em que a matriz dos coeficientes é dada por:
· ¸
1 0
0 10−10
Tem Cond(A) = 1010 mas o sistema não é mal condicionado. Para
mais detalhes sobre número condicional veja [11].
1.3. MÉTODOS ITERATIVOS 19

1.3.6 Convergência do M. Iterativo de Jacobi e Gauss-


Seidel
A primeira vista o método de Jacobi e Gauss-Seidel seriam ideais
para resolver sistemas lineares n × n(que possuem solução). A má
noticia é que, nem todos os sistemas n × n podem ser resolvidos com
esses métodos. Existe uma condição de convergência que é crucial.
Ela será dada nos teoremas abaixo.
n
X
Teorema 1.3. Se para cada i fixo, i = 1, . . . , n temos que |fij | ≤
j=1
L < 1, então o método iterativo de Jacobi e Gauss-Seidel convergem
para a solução exata do sistema.

Em outras palavras, o teorema diz que: Se a soma em módulo de


cada linha da matriz F for menor que 1, então o método de Jacobi
e Gauss-Seidel convergem para a solução exata do sistema, seja qual
for a solução inicial x0 .
Esse critério de linhas também pode ser estendido para colunas.
Veja o
n
X
Teorema 1.4. Se para cada j fixo, j = 1, . . . , n temos que |fij | ≤
i=1
L < 1, então o método iterativo de Jacobi e Gauss-Seidel convergem
para a solução exata do sistema.
n
X
Corolário 1.1. A condição |fij | ≤ L < 1 no Teorema 1.3 é
j=1
n
X
equivalente a |aij | > |aij | para cada i = 1, . . . , n fixo.
j=1,j6=i

A demonstração desses teoremas pode ser encontrada em [1].

Se F satisfaz um dos teoremas acima, então podemos aplicar


tanto o método de Jacobi quanto o método de Gauss-Seidel, pois é
garantida a convergência.
20 CAPÍTULO 1. SISTEMAS LINEARES

1.4 Sistemas Lineares Complexos


Consideremos uma sistema AX = B onde A, X e B são matrizes
complexas. Então são escritas na forma:

A = M + Ni
B = c + di (1.5)
X = s + ti

onde M, N, c, d, s, t são matrizes reais. Substituindo a equação (1.5)


em AX = B teremos:

(M + N i)(s + ti) = c + di =⇒ M s − N t + (N s + M t)i = c + di,

ou seja,
½
Ms − Nt = c
Ns + Mt = d
O sistema acima pode ser visto como:
     
M | −N s c
 |     
     
 −− −− −− −− −−  .  =  (1.6)
     
 |     
N | M t d

que é um sistema real, e pode ser resolvido com os métodos apresen-


tados anteriormente.
½
(1 + 2i)x1 + 3x2 = −5 + 4i
Exemplo 1.4.1. Resolva o sistema
−x1 + x2 = −1

Vamos decompor a matriz dos coeficientes:


     
1 + 2i 3 + 0i 1 3 2 0
A= = + i
−1 + 0i 1 + 0i −1 1 0 0
| {z } | {z }
M N
1.5. EXERCÍCIOS 21
     
−5 + 4i −5 4
B= = + i
−1 + 0i −1 0
| {z } | {z }
c d

     
x1 s1 t1
X= = + i
x2 s2 t2
| {z } | {z }
s t

Escrevendo o sistema na forma (1.6) temos:


     
1 3 −2 0 s1 −5
 −1 1 0 0     
  .  s2  =  −1 
 2 0 1 3   t1   4 
0 0 −1 1 t2 0

Resolvendo o sistema por métodos anteriores (por exemplo pelo


método de Gauss) obtemos: s1 = 0, s2 = −1,
t1 = 1, t2 = 1, dessa forma a solução do sistema é dada por x1 =
i, x2 = −1 + i.

1.5 Exercı́cios
 
3 5 0
1.5.1. Através de operações elementares mostre que a matriz  2 0 1 
5 1 −1
 
1 0 0
é equivalente à  0 1 0  .
0 0 1

1.5.2. Mostre geométricamente que o sistema abaixo não possui solução


real:

 2x1 + 6x2 = 8
3x1 + 9x2 = 15

x1 + 3x2 = 6
22 CAPÍTULO 1. SISTEMAS LINEARES

1.5.3. Resolva os sistemas abaixo por retro substituição:


 
 x1 − 3x2 + x3 = 6  2x1 = 2
a) 4x2 − x3 = 5 b) x1 + x2 = 3
 
x3 = 4 x1 + x2 + x3 = 4

1.5.4. Resolva pelo método de Gauss os sistemas:



 x1 + x2 + x3 + x4 = 0 

  x1 + 2x2 + x3 = 0
x1 + x2 + x3 − x4 = 4
a) b) 2x1 + x2 + 3x3 = 0

 x + x2 − x3 + x4 = −4 
 1 3x1 + 2x2 + x3 = 0
x1 − x2 + x3 + x4 = 2

1.5.5. Mostre que:


 
 2x1 + 3x2 − x3 = 5  2x1 + 3x2 − x3 = 5
4x1 + 4x2 − 3x3 = 3 é equivalente a −2x2 − x3 = −7
 
2x1 − 3x2 + x3 = −1 −6x2 + 2x3 = −6

1.5.6. Através de decomposição LU obtenha a solução dos sistemas


do
exercı́cio 1.5.4.

1.5.7. Calcule a matriz inversa A−1 das matrizes abaixo. Para isso,
use decomposição LU.
 
2 −1 −6 3  
 7 1 3 4
−4 2 −15 
a) 
 1
 b)  2 1 0 
−2 −4 9 
0 3 2
1 −1 2 −6
1.5. EXERCÍCIOS 23

1.5.8. Resolva através do método iterativo de Jacobi os sistemas


abaixo com δ = 0.07:

 10x1 + x2 + x3 = 12 ½
2x1 + x2 = 2
a) 2x1 + 4x2 + x3 = 7 b)
 x1 + 3x2 = 1
x1 − x2 + 3x3 = 3

1.5.9. Resolva os sistemas do exercı́cio 1.5.8 pelo método de Gauss-


Seidel com δ = 0.07.

1.5.10. Explique por que o método de Gauss-Seidel não garante con-


vergência para solução exata do sistema abaixo;

 x1 + x2 + x3 = 3
2x1 + x2 + x3 = 4

3x1 + 2x2 + x3 = 6

1.5.11. Aplique o método do Refinamento Iterativo na solução do


exercı́cio 1.5.8 com uma iteração. Verifique se a nova solução mel-
hora a anterior.

1.5.12. Dê exemplos de sistemas mal condicionados.

1.5.13. Resolva o sistema:


½
−2ix1 + 3x2 = 2 + 5i
(1 + i)x1 + ix2 = −3

1.5.14. Considere a tabela de valores nutricionais2 dos alimentos


abaixo:
2
valores fictı́cios
24 CAPÍTULO 1. SISTEMAS LINEARES

Alimento Vitamina A Vitamina B Vitamina C


1-Pera 1g 3g 4g
1-Uva 2g 3g 5g
1-Maça 3g 2g 3g

Deseja-se saber quanto de cada alimento deve-se ingerir para


obter 11g de vitamina A, 13g de vitamina B e 20g de vitamina C.

Monte um sistema e resolva pelo método de Gauss esse problema.

1.5.15. Descreva o método de resolução de sistemas lineares com-


plexos n × n através de redução à sistemas lineares reais. Verifique
com isto, que um sistema n × n complexo é reduzido a um sistema
real (2n) × (2n).

1.5.16. Demonstre o Corolário 1.1.

1.5.17. Monte um sistema que tenha como solução x1 = 1, x2 = 2,


x3 = 0, x4 = 1.

1.5.18. Implemente em portugol o método de substituição retroativa.

1.5.19. Implemente em portugol o método de Gauss.

1.5.20. Implemente em portugol o método de Jacobi e Gauss-Seidel.


Capı́tulo 2

Zeros de função

2.1 Introdução
Neste capı́tulo estamos interessados em obter os zeros de uma função
real através de métodos numéricos. Em outras palavras, dada uma
certa função f (x), gostarı́amos de encontrar ² tal que, f (²) = 0. Por
exemplo, a função f (x) = x2 − 3x + 2 tem dois zeros, ²1 = 2 e ²2 = 1.
Vale lembrar que uma função pode ter zeros reais ou complexos.
Neste texto não vamos tratar o caso complexo, o leitor interessado
pode encontrar em [11].
Para começar, vamos enunciar algumas definições e teoremas.
Para o nosso estudo não será necessário demonstrá-los.

Definição 2.1. Dizemos que uma função f : I −→ R é contı́nua


em um ponto c, se para toda seqüência (xn ) em I,tivermos

lim xn = c =⇒ lim f (xn ) = f (c)


n→∞ n→∞

A grosso modo podemos entender essa definição da seguinte forma:


Dizemos que f (x) é continua, se ao traçar seu gráfico não levan-
tamos o lapis do papel.

Teorema 2.1. Seja f (x) uma função contı́nua definida no intervalo


[a b] tal que f (a)f (b) < 0, então f (x) possui pelo menos um zero
em [a b].

25
26 CAPÍTULO 2. ZEROS DE FUNÇÃO

a b a b
x x

Figura 2.1: Zeros de uma função


y y

a b a b
x x

Figura 2.2: f 0 (x) > 0 e f 0 (x) < 0

Esse teorema nos diz que, se f (x) é contı́nua e f (a) tem sinal
diferente de f (b), então f (x) corta o eixo x pelo menos uma vez, ou
seja, existe ² ∈ [a b] tal que f (²) = 0. Veja a figura 2.1.

Teorema 2.2. Seja f (x) uma função definida no intervalo [a b] tal


que
f (a)f (b) < 0 e f 0 (x) > 0 para todo x ∈ (a b). Então f (x) pos-
sui um único zero em [a b].

O Teorema 2.1 garante apenas a existência mas não a unicidade.


Acrescentando a hipótese da derivada ser positiva em todo intervalo
(o que implica em f (x) ser crescente) 1 (veja figura 2.2) obtemos o
Teorema 2.2 que garante a unicidade desse zero.
1
também vale para negativa
2.2. MÉTODO DE LOCALIZAÇÃO DE ZEROS 27

y
y
4
4

3 3

2 2

1 1

x 0 x
0
-5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7

-1 -1

-2
-2

-3

-4

Figura 2.3: Zeros de f (x)

Teorema 2.3. Se f (x) pode ser escrita como diferença de duas


funções,
digamos g(x) e h(x), então os zeros de f (x) são exatamente os pon-
tos de interseção de g(x) e h(x).

Veja que se f (x) = g(x) − h(x) e ² é um zero de f (x), então


0 = f (²) = g(²) − h(²) =⇒ g(²) = h(²)

Exemplo 2.1.1. Considere f (x) = 12 ex − cos(x) com g(x) = 12 ex e


h(x) = cos(x). Observe a figura 2.3. Veja que g(x) e h(x) possuem
varias interseções. Cada interseção é um zero de f (x).

Definição 2.2. Diz-se que uma seqüência (xn ) é de Cauchy quando,


para todo ε > 0 dado, existe n0 ∈ N tal que m, n > n0 =⇒ |xm −xn | <
ε

Em outras palavras, uma seqüência é de Cauchy se seus termos


estão cada vez mais próximos uns dos outros.

Teorema 2.4. Uma seqüência (xn ) real converge se, e somente se,
é de Cauchy.

2.2 Método de Localização de Zeros


Nesta seção vamos desenvolver um método para isolar os zeros de
uma função em intervalos. Em outras palavras, obter intervalos onde
existe um único zero.
28 CAPÍTULO 2. ZEROS DE FUNÇÃO

a b
x

  

Figura 2.4: Zeros de f (x)

Consideremos uma função f (x) cujo gráfico seja dado pela figura
2.4. Gostarı́amos de encontrar uma partição do intervalo [a b] dig-
amos P = {p1 , p2 , p3 , . . . , pn }, onde pj = pj−1 + γ para algum γ
escolhido. Tal que, cada zero esteja em um subintervalo (pk−1 pk )
criado pela partição. Veja exemplo abaixo:

Exemplo 2.2.1. Considere f (x) = 16x3 − 22x − 5(figura 2.5) no


intervalo [−2 2]. Tomamos uma partição com γ = 12 e obtemos a
tabela:

P -2 − 32 -1 − 12 0 1
2 1 3
2 2
f (P) <0 <0 >0 >0 <0 <0 <0 >0 >0
£ ¤
Portanto,
£ 1 ¤ £aplicando
¤ o Teorema 2.1 existem zeros em − 32 −1 ,
− 2 0 e 1 32 .

É bom lembrar que quanto mais fina a partição, ou seja, quanto


menor o γ melhores são as chances de isolar todos os zeros da função.
Em geral não sabemos onde estão os zeros da função f (x), sim-
plesmente criamos uma partição e observamos a mudança de sinal
de acordo com o Teorema 2.1 para encontrar os intervalos onde f (x)
possui zeros. O próximo passo é encontrar uma aproximação para
esses zeros. Isso será feito nas próximas seções.
2.3. MÉTODO DO MEIO INTERVALO - MMI 29

40

20

p1 p2 p3 p4 p5 p6 p7 x
0
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2

-20

-40

Figura 2.5: Criando uma partição P

2.3 Método do Meio Intervalo - MMI


Considere uma função f (x) contı́nua no intervalo [a b] tal que
f (a)f (b) < 0 e f (x) possua um único zero nesse intervalo. O MMI
consiste em efetuar sucessivas divisões no intervalo [a b] de forma
que o zero fique dentro algum subintervalo (bem pequeno) criado
pelas divisões. Ao contrário do Método de Localização de Zeros,
agora estamos interessados na aproximação do zero, não do inter-
valo. Acompanhe a explicação abaixo com a figura 2.6.
Inicialmente dividimos o intervalo [a b] ao meio em x0 = a+b 2
e verificamos se f (x0 ) = 0, caso contrário analisamos o sinal de
f (a)f (x0 ) e f (x0 )f (b).
Suponhamos que f (a)f (x0 ) > 0 e f (x0 )f (b) < 0. Assim pelo Teo-
rema 2.1 existe um zero ² em (x0 b). Descartamos o intervalo [a x0 ].
Dividimos o intervalo (x0 b) ao meio em x1 = x02+b e verificamos
se f (x1 ) = 0, caso contrário, repetimos o processo verificando o
sinal de f (x0 )f (x1 ) e f (x1 )f (b). Suponhamos que f (x0 )f (x1 ) < 0 e
f (x1 )f (b) > 0. Descartamos o intervalo (x1 b) e dividimos [x0 x1 ]
em x3 . O processo segue até que |xn − xn−1 | seja menor ou igual que
um certo δ fixado.
Na figura 2.6 verificamos que se continuarmos o método a seqüência
(xn ) converge para o zero ². Mostraremos agora uma prova rig-
orosa de que a seqüência (xn ) realmente converge para ², ou seja,
30 CAPÍTULO 2. ZEROS DE FUNÇÃO

a x x0 2 ε b
x

x 1

Figura 2.6: (xn ) convergindo para o zero ²

lim xn = ².
n→∞
Para isso, tome somente os intervalos aproveitados:

[a b], [x0 b], [x0 x1 ], . . . , [xn xk ], . . .


renomeando para

[a0 b0 ], [a1 b1 ], [a2 b2 ], . . . , [an bn ], . . .


Veja que [a0 b0 ] ⊃ [a1 b1 ] ⊃ [a2 b2 ] ⊃ . . . ⊃ [an bn ] ⊃ . . ., com
f (an )f (bn ) < 0 e ambas as seqüências (an ) e (bn ) limitadas. Outro
fato é que a0 ≤ a1 ≤ a2 ≤ . . . ≤ an ≤ . . . e b0 ≥ b1 ≥ b2 ≥
. . . ≥ bn ≥ . . ., onde concluı́mos que essas seqüências são monótonas
e limitadas. Pelo Teorema de Bolzano-Weierstrass2 temos que (an )
e (bn ) convergem para um certo L, ou seja,

lim an = lim bn = L.
n→∞ n→∞
Ainda resta mostrar que L é exatamente o zero ². Para isso calcule
o limite na desigualdade f (an )f (bn ) < 0 e use o fato de f (x) ser
continua. Temos então:

lim (f (an )f (bn )) < 0


n→∞
2
Veja livro de cálculo ou análise matemática
2.4. MÉTODO DA SECANTE 31

lim f (an ) lim f (bn ) < 0


n→∞ n→∞
³ ´ ³ ´
f lim an f lim bn < 0
n→∞ n→∞

f (L)f (L) < 0

f (L)2 < 0 =⇒ f (L) = 0


Como ² é o único zero em [a b] então ² = L.

Exemplo 2.3.1. Encontre o zero de f (x) = x2 −2 no intervalo [0 2]


com δ = 0.07.

n an bn xn |xn − xn−1 |
0 0 2 1 1> δ
1 1 2 1.5 0.5> δ
2 1 1.5 1.25 0.25> δ
3 1.25 1.5 1.37 0.12> δ
4 1.37 1.5 1.43 0.06≤ δ ←− parar o método

Assim nossa aproximação para o zero de f (x) seria x4 = 1.43

2.4 Método da Secante


O método da Secante3 é parecido com o MMI no sentido de criar
uma seqüência que se aproxima do zero procurado.
Antes de aplicar o método devemos observar como a função f (x)
se comporta no intervalo. Pois como veremos a concavidade muda o
modo como iremos criar a seqüência (xn ).
Vamos então as hipóteses do método. Seja f (x) uma função
duas vezes diferenciável em [a b] e f (a)f (b) < 0. Suponhamos como
primeiro caso que:

f 0 (x) > 0 e f 00 (x) > 0, para todo x ∈ [a b]


3
também chamado de método das cordas
32 CAPÍTULO 2. ZEROS DE FUNÇÃO
  

f (b))
y

  

a b
x

x 0 x 1 x 2
x 3
ε

(a,f (
  

Figura 2.7: Seqüência (xn ) no método da secante

Com essas hipóteses temos que o gráfico de f (x) em [a b] tem a


forma da figura 2.6. O método da secante consiste em tomar a reta
(digamos L0 ) que passa pelos pontos (a, f (a)), (b, f (b)). O primeiro
elemento da seqüência (xn ), ou seja, o elemento x0 será a interseção
dessa reta com o eixo x, veja figura 2.7.
A segunda reta (digamos L1 ) passa pelos pontos (b, f (b)), (x0 , f (x0 )).
A interseção dessa reta com o eixo x gera o elemento x1 . O processo
segue até que |xn − xn−1 | seja menor ou igual que um certo δ fixado.
Ainda não conhecemos bem os elementos da seqüência xn , por
isso vamos começar determinando x0 . Lembramos que a equação de
uma reta que passa por dois pontos quaisquer (x, y), (s0 , t0 ) e dada
por:

y − t0 = m(x − s0 ),
onde m é o coeficiente angular da reta.
f (b)−f (a)
O coeficiente angular da reta L0 é dado por mL0 = b−a .
Assim a equação da reta L0 é:

f (b) − f (a) f (b) − f (a)


y − f (b) = (x − b) =⇒ y = f (b) + (x − b)
b−a b−a
x0 é o ponto onde essa reta corta o eixo x, ou seja, y = 0, então

f (b) − f (a) f (b)


0 = f (b) + (x0 − b) =⇒ x0 = b − (b − a)
b−a f (b) − f (a)
2.5. MÉTODO DE NEWTON 33

Como o mesmo procedimento aplicado na reta L1 obtemos o ponto


x1 :
f (b)
x1 = b − (b − x0 )
f (b) − f (x0 )
Portanto a seqüência xn será dada por:

f (b)
xn = b − f (b)−f (xn−1 ) (b − xn−1 ) (2.1)

Veja exercı́cio 2.9.5 para outros casos.

2.4.1 Convergência no Método da Secante


Podemos afirmar que a seqüência (xn ) é monótona e limitada. Dessa
forma:

lim xn = L.
n→∞

Passando o limite na equação (2.1) obtemos:


µ ¶
f (b)
lim xn = lim b − (b − xn−1 )
n→∞ n→∞ f (b) − f (xn−1 )
assim

f (b)
L=b− (b − L) =⇒ f (L) = 0
f (b) − f (L)
Como ² é o único zero em [a b] então ² = L.

2.5 Método de Newton


Considere para o método de Newton as mesmas hipóteses para f (x)
como no método da secante, ou seja, f (x) uma função duas vezes
diferenciável em [a b] e f (a)f (b) < 0. Suponhamos como primeiro
caso que:

f 0 (x) > 0 e f 00 (x) > 0, para todo x ∈ [a b]


34 CAPÍTULO 2. ZEROS DE FUNÇÃO
  

a ε b x

x x
1 0

L1 L0

Figura 2.8: Seqüência (xn ) no método de Newton

Com essas hipóteses temos que o gráfico de f (x) em [a b] tem a


forma da figura 2.6. O método de Newton difere pouco do método
da secante. Agora em vez da reta secante, tomamos a reta(digamos
L0 ) tangente no ponto (b, f (b)), ou seja, essa reta tem coeficiente
angular f 0 (b). Veja figura 2.8.
Observe que x0 é a interseção de L0 com o eixo x e x1 é a in-
terseção da reta L1 com o eixo x. Como no método da secante vamos
determinar o ponto x0 . Para isso usaremos o fato do coeficiente an-
gular mL0 ser igual a f 0 (b). Dessa forma a equação da reta L0 fica
sendo:

y − f (b) = f 0 (b)(x − b) =⇒ y = f (b) + f 0 (b)(x − b)


Como x0 é o ponto onde essa reta corta o eixo x, ou seja, y = 0
então:

f (b)
x0 = b −
f 0 (b)
O mesmo procedimento é aplicado em L1 e obtemos o ponto

f (x0 )
x1 = x0 −
f 0 (x0 )
o que implica no caso geral
2.5. MÉTODO DE NEWTON 35

f (xn−1 )
xn = xn−1 − (2.2)
f 0 (xn−1 )

2.5.1 Convergência no Método de Newton


Podemos afirmar que a seqüência (xn ) é monótona e limitada. Dessa
forma:

lim xn = L.
n→∞

Passando o limite na equação (2.2)obtemos:


µ ¶
f (xn−1 )
lim xn = lim xn−1 − 0
n→∞ n→∞ f (xn−1 )
assim

f (L)
L=L− =⇒ f (L) = 0
f 0 (L)
Como ² é o único zero em [a b] então ² = L.

Exemplo 2.5.1. Vamos aplicar o método de Newton no Exemplo


2.3.1.

n xn |xn − xn−1 |
0 1.5 1.5> δ
1 1.416 0.08> δ
2 1.414 0.002≤ δ ←− parar o método

Assim nossa aproximação para o zero de f (x) seria x2 = 1.414.

Uma observação muito importante é o fato do método de Newton


atingir δ com n = 2, ao passo que no MMI, n = 4. Isso não acontece
por acaso, o método de Newton realmente converge mais rápido.
Nunca é demais lembrar que o M. de Newton exige que mais hipóteses
sobre a função do que o MMI.
36 CAPÍTULO 2. ZEROS DE FUNÇÃO

2.6 Método da Iteração Linear


Começamos esse método obtendo a função de iteração φ(x). Para
isso isolamos a variável x na equação f (x) = 0. Tome como exemplo
f (x) = x2 − 5x + 6:

x2 − 5x + 6 = 0
x2 − x − 4x + 6 = 0
x2 − 4x + 6 = x
Assim φ(x) = x2 − 4x + 6.
Veja agora que o ponto fixo(veja definição adiante) de φ(x) é
justamente o zero de f (x), ou seja, k tal que φ(k) = k implica em
f (k) = 0.
Na verdade, o que fizemos foi transformar o problema de encon-
trar zeros, para o problema de encontrar ponto fixo.
Definição 2.3. Diz-se que k é ponto fixo de φ(x), se φ(k) = k.
A seqüência (xn ) será criada a partir de uma aproximação inicial
x0 (mais a frente comentaremos essa escolha) da seguinte forma:

x1 = φ(x0 ), x2 = φ(x1 ), . . . , xn = φ(xn−1 ), . . .


Observe nas figuras (2.9) e (2.10) a seqüência (xn ).
Como nem tudo são flores! O método da Iteração Linear nem
sempre pode ser usado, conforme o teorema abaixo.
Teorema 2.5. Se |φ0 (x)| ≤ λ < 1 para todo x ∈ [a b], então
para qualquer valor inicial x0 ∈ [a b] a seqüência x1 = φ(x0 ), x2 =
φ(x1 ), . . . , xn = φ(xn−1 ), . . . converge para um certo L que é o ponto
fixo de φ(x) em [a b].

demonstração

Consideremos o primeiro caso (figura 2.9) com xn−1 < xn . Pelo


teorema do valor médio4 existe ωn ∈ (xn−1 xn ) tal que:

|φ(xn ) − φ(xn−1 )| = |φ0 (ωn )||xn − xn−1 )|,


4
Veja qualquer livro de cálculo
2.6. MÉTODO DA ITERAÇÃO LINEAR 37

y
φ(x)
f( x )2

f( x )1

y=x
f( x )0

x 1 x 2 x 3 b
x

x 0
ε

Figura 2.9: Seqüência (xn ) no método da Iteração Linear

y
φ(x) y=x

x 2 x 3 x 1 b
x

x 0
... ε ...

Figura 2.10: Seqüência (xn ) no Método da Iteração Linear


38 CAPÍTULO 2. ZEROS DE FUNÇÃO

segue por hipótese que |φ0 (ωn )| ≤ λ, então

|φ(xn ) − φ(xn−1 )| ≤ λ|xn − xn−1 |


implicando em

|xn+1 − xn | ≤ λ|xn − xn−1 |


por analogia teremos

|xn+1 − xn | ≤ λ|xn − xn−1 | ≤ λ2 |xn−1 − xn−2 | ≤ . . . ≤ λn |x1 − x0 |

ou seja,

|xn+1 − xn | ≤ λn |x1 − x0 |
Passando o limite nesta última desigualdade teremos:
 

lim |xn+1 − xn | ≤ lim λn |x1 − x0 |


n→∞ n→∞ | {z }
constante

≤ |x1 − x0 | lim λn
n→∞
| {z }
0

≤ 0
Logo (xn ) é uma seqüência de Cauchy, pelo Teorema 2.4 a seqüência
(xn ) converge para um certo L em (a b), ou seja, lim xn = L.
n→∞
Como φ(x) é diferenciável, logo contı́nua temos que:
³ ´
φ(L) = φ lim xn = lim φ(xn ) = lim xn+1 = L
n→∞ n→∞ n→∞

Portanto L é o ponto fixo de φ(x).

Corolário 2.1. O ponto fixo L dado no Teorema 2.5 é o único ponto


fixo de φ(x) em [a b].

demonstração
2.6. MÉTODO DA ITERAÇÃO LINEAR 39

A prova será feita por redução ao absurdo. Para isso, suponha


que exista um outro ponto fixo M em [a b]. Pelo teorema do valor
médio existe c ∈ (L M ) tal que:

|φ(L) − φ(M )| = |φ0 (c)||L − M |


≤ λ|L − M |
mais ainda,

|L − M | ≤ λ|L − M |
(1 − λ)|L − M | ≤ 0
Como λ < 1 então (1 − λ) > 0, ou seja,

0 ≤ (1 − λ)|L − M | ≤ 0

(1 − λ)|L − M | = 0
Portanto L = M .

Mais detalhes sobre ponto fixo veja [7].

2.6.1 A Função de Iteração


Pelo Teorema 2.5 observamos que a escolha de φ(x) é muito impor-
tante para a convergência do Método da Iteração Linear. Por isso,
para aplicar esse método devemos procurar uma função de iteração
φ(x) que satisfaça as hipóteses desse teorema. O exemplo abaixo
mostra como podemos obter varias funções de iteração. Bastando
para isso, escolher e isolar x na equação.
£ ¤
Exemplo 2.6.1. Encontre o zero de f (x) = 2x − cos(x) em 51 2 ,
com δ = 0.01
1a função de iteração

2x − cos(x) = 0
x + x − cos(x) = 0
cos(x) − x = x
assim φ1 (x) = cos(x) − x
40 CAPÍTULO 2. ZEROS DE FUNÇÃO

2a função de iteração

cos(x)
2x − cos(x) = 0 =⇒ x =
2
cos(x)
assim φ2 (x) = 2

3a função de iteração

2x − cos(x) = 0 somando x em ambos os lados


2x + x − cos(x) = x
3x − cos(x) = x

assim φ3 (x) = 3x − cos(x)

Vamos agora calcular derivada£ de cada


¤ função obtida, observando
seu comportamento no intervalo 15 2 .
£1 ¤
|φ01 (x)| = | − sen(x) − 1| > 1, para algum x ∈ 5 2

sen(x) £1 ¤
|φ02 (x)| = | − 2 | < 1, para todo x ∈ 5 2
£1 ¤
|φ03 (x)| = |3 + sen(x)| > 1, para todo x ∈ 5 2

Portanto concluı́mos que φ2 (x) deve ser a função de iteração.


Uma vez que φ2 (x) satisfaz o Teorema 2.5. Assim começamos nossa
seqüência (xn ) com o elemento x0 = 51 e iteramos (a calculadora
deve estar em radianos):
¡ ¢
x1 = φ2 (x0 ) = φ2 15 = 0.49003
x2 = φ2 (x1 ) = φ2 (0.49003) = 0.44116
x3 = φ2 (x2 ) = φ2 (0.44116) = 0.45213
x4 = φ2 (x3 ) = φ2 (0.45213) = 0.44976

Paramos o método em x4 , porque |x4 − x3 | = 0.00237 ≤ δ.


2.7. COMENTÁRIOS FINAIS SOBRE OS MÉTODOS 41

A escolha de x0
Caso a função f (x) tenha a forma da figura 2.9, x0 deve ser
escolhido de tal forma que x0 seja menor que o zero ², pois caso
contrário o método pode não convergir. Uma sugestão seria começar
com o extremo do intervalo (nesse caso o ponto a).
Caso f (x) tenha forma da figura 2.10 o elemento x0 pode ser
arbitrário dentro do intervalo.

2.7 Comentários Finais Sobre os Métodos


2.7.1 Localização de Zeros
É um bom método para localizar os possı́veis intervalos onde se en-
contram os zeros de uma função. Porém, se o intervalo de pesquisa
for muito grande ou se a função possuir muitos zeros, o método pode
se tornar computacionalmente inviável.
Se o γ escolhido não for suficientemente pequeno podemos ter in-
tervalos onde existem dois ou mais zeros. Se γ for pequeno o método
pode não ser viável.

2.7.2 Método do Meio Intervalo - MMI


A grande vantagem deste método consiste no fato que só exigimos
que a função f (x) seja contı́nua. Mas infelizmente a convergência é
lenta.

2.7.3 Método da Secante


Exige que o sinal de f 0 (x) e f 00 (x) sejam constantes no intervalo.
Nem sempre a função tem derivadas, o que inviabiliza o método. Se
o intervalo de procura for muito grande o método pode se tornar
lento.

2.7.4 Método de Newton


Exige que o sinal de f 0 (x) e f 00 (x) sejam constantes no intervalo.
Mas tem convergência extraordinária.
42 CAPÍTULO 2. ZEROS DE FUNÇÃO

2.7.5 Método da Iteração Linear


A função de iteração φ(x) deve ser obtida através de um processo
manual, ou seja, analı́tico. Satisfazendo a hipótese do Teorema 2.5.
Nem sempre é fácil encontrar tal função.

Para finalizar, relacionamos o número de iterações que cada método


gasta para resolver um problema. Também verificamos os zeros de
uma função onde não temos o intervalo de procura. Isto fica claro
nos exemplos abaixo.
1

£Exemplo
¤ 2.7.1. Encontre um zero de f (x) = e− 10 x + x2 − 10 em
5 7 −5
2 2 com δ = 10

Neste exemplo obtemos os resultados:

MMI M. Secante M. Newton M. Iteração Linear


número de iterações 16 6 3 4

Exemplo 2.7.2. Calcule pelo menos um zero de f (x) = log(x) + x.


Observe que não foi dado o intervalo. Uma saı́da é aplicar o Teo-
rema 2.3 com h(x) = −x e g(x) = log(x). O gráfico dessas funções é
dado na figura 2.11. Nele podemos observar que a interseção de h(x)
e g(x) encontra-se no intervalo [0 1]. Através do gráfico também ob-
servamos que essa interseção é única. Logo f (x) possui somente um
único zero. Para esse exemplo aplicaremos o método do meio inter-
valo - MMI, com δ = 0.009. Lembrando £ 1 que¤ em vez do intervalo
[0 1] trabalharemos com o intervalo 100 1 já que f (x) não está
definida em 0.

n an bn xn |xn − xn−1 |
0 1/100 1 0.505
1 1/100 0.505 0.257 0.248> δ
2 0.257 0.505 0.381 0.124> δ
3 0.381 0.505 0.443 0.062> δ
4 0.381 0.443 0.412 0.031> δ
5 0.381 0.412 0.396 0.016> δ
6 0.396 0.412 0.404 0.008≤ δ ←− parar o método
2.8. ZEROS DE UM POLINÔMIO 43

0.5
g(x)
0
ε x
-0.5 0 0.5 1 1.5 2 2.5

-0.5

-1

-1.5

-2

-2.5
  

Figura 2.11: Método gráfico

Logo nossa aproximação com δ = 0.09 é x6 = 0.404.

2.8 Zeros de um Polinômio


Nas seções anteriores desenvolvemos métodos para encontrar zeros de
uma função. Inclusive de polinômios. Nesta seção vamos aprofundar
um pouco mais nosso conhecimento sobre os zeros de um polinômio.
Lembramos que neste texto, o zero de um polinômio é o mesmo que a
raiz de um polinômio. Nosso principal objetivo é chegar no teorema
que limita os zeros de um polinômio qualquer.
Da Álgebra Linear, sabemos que dois espaços vetoriais são iso-
morfos se, existe um isomorfismo entre eles. Nesta seção vamos uti-
lizar o isomorfismo dos números complexos (C) em R2 , denotado por
C ≈ R2 , que associa a cada número complexo a + bi o par (a, b) em
R2 .
Também vamos utilizar a norma euclidiana em R2 dada por:
p
k(a, b)k = a2 + b2 ,
assim ka + bik = k(a, b)k.
Nas proposições e teoremas abaixo, os polinômios podem ter
coeficientes reais ou complexos. Consideramos apenas polinômios
mônicos, ou seja o coeficiente do termo de maior grau e igual a 1.
44 CAPÍTULO 2. ZEROS DE FUNÇÃO

Proposição 2.1. Seja p(x) = xn + an−1 xn−1 + · · · + a1 x + a0 um


n−1
X kai k
polinômio de grau n e a0 6= 0. Se < 1 e x 6= 0, então
kxkn−i
i=0
p(x) 6= 0.

demonstração

Como x 6= 0 podemos escrever


à n−1
!
X ai
n
p(x) = x 1+ (2.3)
xn−i
i=0

e usar a desigualdade triangular5 .


°n−1 °
°X a ° n−1 X kai k
° i °
° n−i °≤ <1 (2.4)
° x ° kxkn−i
i=0 i=0
De (2.3) e (2.4) concluı́mos que p(x) 6= 0.

kai k1/(n−i) 1
Corolário 2.2. Se < para i = 0, . . . , n − 1 e x 6= 0.
kxk 2
Então p(x) 6= 0.

demonstração

Veja que
n−1 n−1
à !n−i
X kai k X kai k1/(n−i)
=
kxkn−i kxk
i=0 i=0

1 1 1 1
≤ + + ··· + 2 +
2n 2n−1 2 2
1
≤ 1−
2n

< 1
5
ka + bk ≤ kak + kbk
2.8. ZEROS DE UM POLINÔMIO 45

De acordo com a Proposição 2.1 p(x) 6= 0.

Estamos prontos para enunciar e demonstrar o


Teorema 2.6. Seja p(x) = xn + an−1 xn−1 + · · · + a1 x + a0 um
polinômio de grau n e a0 =
6 0. Se x é um zero de p, então
kxk ≤ L
onde L = 2 max {kai k1/(n−i) }
0≤i≤n−1

demonstração
Negando o Corolário 2.2 temos que; se p(x) = 0 então existe i0 tal
kai0 k1/(n−i0 ) 1
que ≥ . Do fato de
kxk 2
max {kai k1/(n−i) }
0≤i≤n−1 kai0 k1/(n−i0 )

kxk kxk
concluı́mos que

max {kai k1/(n−i) }


0≤i≤n−1 1
≥ =⇒ kxk ≤ 2 max {kai k1/(n−i) }
kxk 2 0≤i≤n−1

Exemplo 2.8.1. Ache o limite superior e inferior dos zeros reais do


polinômio
p(x) = x3 + 3x2 − 10x + 24.

Veja que

L = 2 max {kai k1/(n−i) }


0≤i≤n−1

= 2 max{ka0 k1/3 , ka1 k1/2 , ka2 k}

= 2 max{241/3 , 101/2 , 3}

= 2 10
46 CAPÍTULO 2. ZEROS DE FUNÇÃO

assim todos os zeros reais de p(x) estão no intervalo [−L L].

Exemplo 2.8.2. Determine a bola onde todos o zeros reais e com-


plexos de p(x) = x3 + 3x2 − 10x + 24 estão.

Pelo exemplo anterior temos que L = 2 10. Assim se x é um
zero de p(x) então kxk ≤ L. Usando a correspondência C ≈ R2
temos a bola da figura 2.12:
y

L
2

x
-8 -6 -4 -2 0 2 4 6 8

-2

-4

-6

-8

Figura 2.12: Limite dos zeros

Exemplo 2.8.3. Ache o limite superior e inferior dos zeros do


polinômio
p(x) = 2x3 − 3x2 − 2x + 3.

Observe que neste caso p(x) não está na forma do Teorema 2.6.
Para resolver isso, basta tomar o polinômio
2.8. ZEROS DE UM POLINÔMIO 47

0
-L ? ? L

Figura 2.13: Isolando zeros

p(x) 2x3 − 3x2 − 2x + 3 3 3


g(x) = = = x3 − x2 − x +
a3 2 2 2

cujo zeros são os mesmos de p(x).

Aplicando o Teorema 2.6 em g(x) temos:


1
L = 2 max{(3/2) 3 , 1, 3/2} = 3
assim todos os zeros reais de p(x) estão no intervalo [−L L] =
[−3 3].

Ainda podemos avançar um pouco mais. Queremos agora o limite


inferior dos zeros positivos e o limite superior dos zeros negativos,
veja (?) na figura 2.13.
Para encontrar estes limites, precisamos de um resultado impor-
tante de Álgebra:6
Se p(x) = xn + an−1 xn−1 + · · · + a1 x + a0 é um polinômio de grau
n, então p(x) tem no máximo n zeros reais ou complexos.
Decorre desse resultado que todo polinômio de grau ı́mpar tem
pelo menos um zero real.
Com esses resultados, seja (ξ0 , ξ1 , . . . , ξn−1 ) os zeros de p(x),
então podemos escrever p(x) na forma(também é dado pela Álgebra):

p(x) = (x − ξ0 )(x − ξ1 ) · · · (x − ξn−1 ).

Consideremos o polinômio
µ ¶
1n
P1 (x) = x p .
x
6
Veja em [5]
48 CAPÍTULO 2. ZEROS DE FUNÇÃO

Pelo que acabamos de ver,


µ ¶µ ¶ µ ¶
n 1 1 1
P1 (x) = x − ξ0 − ξ1 · · · − ξn−1
x x x
µ ¶µ ¶ µ ¶
1 − xξ0 1 − xξ1 1 − xξn−1
= xn ···
x x x

= (1 − xξ0 )(1 − xξ1 ) · · · (1 − xξn−1 ).


µ ¶
1 1 1
Observe que os zeros de P1 (x) são , ,..., . Aplicando
ξ0 ξ1 ξn−1
o Teorema 2.6 em P1 (x) temos a existência de L1 tal que
° °
° 1 °
° ° ≤ L1
° xii °

1
o que implica em ≤ kξi k. Portanto, se x é um zero de um
L1
polinômio qualquer (mônico), então L1 ≤ kxk ≤ L.
No caso de zeros reais podemos dizer que:

1
−L1 ≤ ≤ L1 para i = 0, . . . , n − 1
ξi

onde
1 1
≤ L1 =⇒ ≤ ξi
ξi L1
e
1 1
−L1 ≤ =⇒ ξi ≤ −
ξi L1
· ¸
1
assim, os zeros reais negativos de p(x) estão no intervalo −L −
· ¸ L1
1
e os zeros positivos estão em L .
L1

Exemplo 2.8.4. Ache os limites L, L1 de p(x) = 2x3 − 3x2 − 2x + 3.


No Exemplo 2.8.3 calculamos L = 3. Conforme feito, vamos utilizar
3 3
o polinômio g(x) = x3 − x2 − x + . Calculando P1 (x) temos:
2 2
2.8. ZEROS DE UM POLINÔMIO 49

µ ¶ µ ¶
3 1 3 1 3 1 3 3 3
P1 (x) = x p =x 3
− 2− + = 1 − x − x2 + x3 .
x x 2x x 2 2 2

Como P1 (x) não está nas condições do Teorema 2.6, mudamos


para

P1 (x) 2 2
g1 (x) = = x3 − x2 − x +
3/2 3 3
Aplicando o Teorema 2.6 em g1 (x) temos:

1 1 1
L1 = 2 max{(2/3) 3 , 1, (2/3)} = 2(2/3) 3 ∼
= 1.747 e = 0.572 .
L1

Assim todos os zeros complexos de p(x) estão no disco da figura


2.14.
y

2
L
x
0 L 1

-8 -6 -4 -2 2 4 6 8

-2

-4

-6

-8

Figura 2.14: Limite de zeros complexos


50 CAPÍTULO 2. ZEROS DE FUNÇÃO

Portanto todos os zeros reais(se existirem) negativos de p(x) estão


em [−3 − 0.572] e todos os zeros positivos em [0.572 3].
Uma vez dados os intervalos [−L − L11 ] e [ L11 L] podemos
aplicar o método de localização de zeros associado com qualquer
método de busca (MMI, Newton, etc) para encontrar os zeros reais
do polinômio.

2.8.1 Multiplicidade de um zero


Consideremos o seguinte teorema cuja demonstração pode ser encon-
trada em [5].
Teorema 2.7. Todo polinômio de grau n tem exatamente n zeros
reais ou complexos.
Considere o polinômio p(x) = x3 + 4x + 5x + 2. Aplicando o
2.7 temos a existência de 3 zeros. Mas os únicos zeros são {-1,-2}.
Isto parece contraditório. O fato se dá pela multiplicidade do zero
−1, ou seja, −1 é contado duas vezes. Dizemos que o zero −1 tem
multiplicidade igual a 2.
Para saber a multiplicidade de um zero basta olhar para a derivada
do polinômio. Assim se ² é um zero de p(x) então a multiplicidade
de ² é dado por m, onde

p0 (x) = 0
p00 (x) = 0

..
.

pm−1 (x) = 0
pm (x) 6= 0

Exemplo 2.8.5. No caso de p(x) = x3 + 4x + 5x + 2 temos que:

p(−1) = 0 p(−2) = 0
p0 (−1) = 0 p0 (−2) 6= 0
p00 (−1) 6= 0
Logo a multiplicidade de −1 é 2 e a multiplicidade de −2 é 1.
2.9. EXERCÍCIOS 51

Observe que a soma da multiplicidade de todos os zeros é igual ao


grau do polinômio. Outro fato, se o polinômio p(x) tem grau ı́mpar
então possui pelo menos um zero real.
Concluı́mos que para procurar por zeros reais de um polinômio
devemos seguir um roteiro:
i Encontrar os limites L, L1

ii- Aplicar método de localização de zeros.

iii- Contar os zeros.

iv- Aplicar algum método de aproximação(MMI, Newton,Secante,etc)

2.9 Exercı́cios
2.9.1. Seja f (x) = x4 −x−10 definida em [−2 2]. Aplique o método
de localização de zeros com γ = 14 para encontrar os subintervalos
onde f (x) possui zeros.
2.9.2. Aplique o MMI para encontrar os zeros da função do Exercı́cio
2.9.1.
2.9.3. Encontre através do MMI com δ = 0.01 pelo menos um zero
de:

a) f (x) = x3 − x + 1

b) g(x) = 2e−x − sen(x)

c) h(x) = xln(x) − 0.8


2.9.4.√Aplique o Método da Secante para encontrar uma aproximação
para 2 e compare com o Método de Newton.
2.9.5. Mostre a equação geral para a seqüência (xn ) no Método da
Secante quando:

a) f 0 (x) < 0 e f 00 (x) > 0 para todo x ∈ [a b]

b) f 0 (x) < 0 e f 00 (x) < 0 para todo x ∈ [a b]

c) f 0 (x) > 0 e f 00 (x) < 0 para todo x ∈ [a b]


52 CAPÍTULO 2. ZEROS DE FUNÇÃO

2.9.6. Mostre que no Método de Newton podemos escolher x0 se


f (x0 )f 00 (x0 ) > 0

2.9.7. Ache um zero de f (x) = ex − sen(x) − 2 com δ = 0.0001 pelo


Método da Secante e pelo Método de Newton. Compare os resultados
e diga qual Método converge mais rápido.

2.9.8. Ache um zero de f (x) = x + ln(x) e g(x) = 2x3 + ln(x) − 5


com δ = 0.001 pelo Método da Iteração Linear.

2.9.9. Usando o Método da Iteração Linear ache um zero de


f (x) = cos(x) + ln(x) + x com δ = 10−2 .

2.9.10. Calcule uma aproximação para 7 9

2.9.11. Seja f (x) = ex + x3 − 1, ache x tal que f (x) = 2.

2.9.12. Ache os pontos de máximo e mı́nimo de f (x) = x5 +10x2 +x


em [−2 1].

2.9.13. Determine o mı́nimo global de f (x) = 2x4 − 2x3 − x2 − x − 3

2.9.14. O que ocorre quando aplicamos o MMI em uma função que


possui 3 zeros em um intervalo [a b].

2.9.15. Para cada item abaixo dê um exemplo onde não podemos
aplicar o:

a)Método do Meio Intervalo - MMI

b)Método da Secante

c)Método de Newton

d)Método da Iteração Linear.

2.9.16. De acordo com o texto calcule L, L1 para p(x) = x4 − 5x3 −


7x2 + 29x + 30

2.9.17. Encontre os três zeros reais de p(x) = x3 − 2x2 − 5x + 6 com


δ = 10−2 .
Capı́tulo 3

Interpolação

3.1 Introdução
Abordaremos neste capı́tulo os aspectos básicos da teoria de inter-
polação.
Começamos apresentando dois problemas:

i- Considere uma função f (x) conhecida apenas nos pontos


(x0 , x1 , . . . , xn ). Se não temos a forma analı́tica de f (x) como
podemos determinar o valor f (c) para um c ∈ (xi xj )?

ii- Seja f (x) uma função de forma analı́tica complicada ou de


difı́cil avaliação. Existe uma outra função g(x) tal que g(x) ∼
= f (x),
onde g(x) é uma função de fácil avaliação?

Esses problemas serão resolvidos através da construção de um


polinômio chamado polinômio interpolador. Em outros textos é
possı́vel encontrar interpolantes trigonométricas e exponenciais, para
isso veja [11].
Tudo começa com o teorema abaixo:

Teorema 3.1. (Weirstrass) Se f (x) é uma função contı́nua em um


intervalo fechado [a b], então existe um polinômio p(x) tal que
p(x) ∼
= f (x) para todo x ∈ [a b], ou seja, |f (x) − p(x)| < ε para
qualquer ε dado.

53
54 CAPÍTULO 3. INTERPOLAÇÃO

Como muitos teoremas na matemática, o teorema acima só garante


a
existência do polinômio interpolador, outro fato é que o grau do
polinômio p(x) depende do ε escolhido. A demonstração encontra-se
em [9].

3.2 Interpolação de Lagrange

Garantida a existência do polinômio interpolador, vamos agora de-


senvolver um método para encontrá-lo.

Teorema 3.2. (Lagrange) Sejam (x0 , x1 , . . . , xn ) os pontos distintos


onde f (x) é conhecida. Então o polinômio interpolador p(x) tem
grau n e é dado pela fórmula:

 
n
X n
Y
f (xi ) (x − xj ) 
p(x) =
(xi − xj )
i=0 j=0,j6=i

Antes de demonstrar o Teorema 3.2 façamos um exemplo:

Exemplo 3.2.1. Seja f (x) conhecida em :

(x0 , f (x0 )) = (−1, 1)


(x1 , f (x1 )) = (1, 3)
(x2 , f (x2 )) = (2, −1)
(x3 , f (x3 )) = (3, −4)

¡1¢
Desejamos saber o valor de f 2 . Usando o Teorema 3.2 temos:
3.2. INTERPOLAÇÃO DE LAGRANGE 55
 
3
X 3
Y
f (xi ) (x − xj ) 
p(x) =
(xi − xj )
i=0 j=0,j6=i

(x − x1 )(x − x2 )(x − x3 ) (x − x0 )(x − x2 )(x − x3 )


= f (x0 ) + f (x1 )
(x0 − x1 )(x0 − x2 )(x0 − x3 ) (x1 − x0 )(x1 − x2 )(x1 − x3 )

(x − x0 )(x − x1 )(x − x3 ) (x − x0 )(x − x1 )(x − x2 )


+f (x2 ) f (x3 )
(x2 − x0 )(x2 − x1 )(x2 − x3 ) (x3 − x0 )(x3 − x1 )(x3 − x2 )

..
.
13 3 11 2 11 27
= x − x + x+
24 4 24 4
Observe que p(xi ) = f (xi ) para¡i ¢= 0, 1, 2, 3 e o grau
¡ de
¢ p(x) é 3.
Agora, para saber o valor de f 21 basta calcular p 12 ∼ = 5.671

demonstração do Teorema 3.2

Consideremos os polinômios de Lagrange:

P0 (x) = (x − x1 )(x − x2 ) · · · (x − xn )
P1 (x) = (x − x0 )(x − x2 ) · · · (x − xn )
..
.
Pn (x) = (x − x0 )(x − x1 ) · · · (x − xn−1 )
n
Y
Em geral Pi (x) = (x − xj ), para i = 0, . . . , n.
j=0,j6=i

Esses polinômios tem a seguinte propriedade:

Pi (x) 6= 0 e Pi (xj ) = 0 (3.1)

Pelo Teorema 3.1 temos que p(x) existe e seu grau é igual a n.
Dessa forma podemos escrever p(x) como combinação linear dos
polinômios de Lagrange, ou seja, existem escalares (b0 , b1 , . . . , bn )
tais que:
56 CAPÍTULO 3. INTERPOLAÇÃO

p(x) = b0 P0 (x) + b1 P1 (x) + · · · + bn Pn (x) (3.2)

Pela equação (3.1) podemos afirmar que:

p(xk ) = b0 P0 (xk ) + b1 P1 (xk ) + · · · + bk Pk (xk ) + · · · + bn Pn (xk )


| {z } | {z } | {z }
0 0 0

= bk Pk (xk )

o que implica em

p(xk )
bk = para k = 0, 1, . . . , n (3.3)
Pk (xk )

Substituindo a equação (3.3) na equação (3.2) temos:

p(x0 ) p(x1 ) p(xn )


p(x) = P0 (x) + P1 (x) + · · · + Pn (x)
P0 (x0 ) P1 (x1 ) Pn (xn )

como p(xi ) = f (xi ) então

f (x0 ) f (x1 ) f (xn )


p(x) = P0 (x) + P1 (x) + · · · + Pn (x)
P0 (x0 ) P1 (x1 ) Pn (xn )

logo
n
X n
X n
Y
Pi (x) (x − xj )
p(x) = f (xi ) = f (xi )
Pi (xi ) (xi − xj )
i=0 i=0 j=0,j6=i

Corolário 3.1. O polinômio dado no Teorema 3.2 é único.

demonstração
3.3. INTERPOLAÇÃO COM DIFERENÇAS DIVIDIDAS FINITAS - DDF57

Suponhamos que exista um outro polinômio s(x) tal que s(xi ) =


f (xi ) para i = 0, 1, . . . , n. Considere o polinômio:

T (x) = s(x) − p(x)

Veja que T (xi ) = s(xi ) − p(xi ) = 0 para i = 0, 1, . . . , n. Como o grau


de s(x) e p(x) é n, então o grau de T (x) também é n. Mas T (x) tem
n + 1 zeros o que é um absurdo de acordo com o Teorema 2.7. Logo
s(x) = p(x).

3.3 Interpolação com Diferenças Divididas Fini-


tas - DDF
Consideremos uma função f (x) contı́nua em [a b] e diferenciável em
(a b). Uma diferença dividida finita - DDF de primeira ordem de
f (x) em relação a x0 , x1 é dada por:
f (x1 ) − f (x0 )
f [x1 , x0 ] =
x1 − x0
observe que f [x1 , x0 ] é uma aproximação para f 0 (x0 ).

A DDF de segunda ordem será dada por:


f [x2 , x1 ] − f [x1 , x0 ]
f [x2 , x1 , x0 ] =
x2 − x0
veja que isso é uma aproximação para f 00 (x1 ).

Assim a DDF de n-ésima ordem será dada por:


f [xn , xn−1 , . . . , x1 ] − f [xn−1 , xn−2 , . . . , x0 ]
f [xn , xn−1 , . . . , x1 , x0 ] =
xn − x0

3.3.1 Propriedades de uma DDF


i - f [xn , xn−1 , . . . , x1 , x0 ] = f [xα0 , xα1 , . . . , xαn−1 , xαn ] onde
α0 , α1 , . . . , αn−1 , αn é qualquer permutação dos inteiros
{n, n − 1, . . . , 1, 0}. Por exemplo:

f [x2 , x1 , x0 ] = f [x1 , x2 , x0 ] = f [x2 , x0 , x1 ] = f [x0 , x1 , x2 ] = f [x1 , x0 , x2 ] = f [x0 , x2 , x1 ]


58 CAPÍTULO 3. INTERPOLAÇÃO

f (x1 ) f (x0 )
ii - f [x0 , x1 ] = x1 −x0 + x0 −x1

3.3.2 Obtenção da Fórmula


Pelo Teorema 3.1 temos a existência do polinômio p(x). Assim con-
sidere (x0 , x1 , . . . , xn ) os n + 1 pontos conhecidos de f (x). Pela
definição de DDF temos:

p(x) − p(x0 )
p[x, x0 ] =
x − x0
ou

p(x) = p(x0 ) + (x − x0 )p[x, x0 ] (3.4)


mais ainda,
p[x, x0 ] − p[x0 , x1 ]
p[x, x0 , x1 ] =
x − x1
p[x, x0 ] = p[x0 , x1 ] + (x − x1 )p[x, x0 , x1 ] (3.5)

Substituindo (3.5) em (3.4) temos:

p(x) = p(x0 ) + (x − x0 )p[x0 , x1 ] + (x − x0 )(x − x1 )p[x, x0 , x1 ]

como

p[x, x0 , x1 ] = (x − x2 )p[x, x0 , x1 , x2 ] + p[x0 , x1 , x2 ]

então

p(x) = p(x0 ) + (x − x0 )p[x0 , x1 ] + (x − x0 )(x − x1 )p[x0 , x1 , x2 ]


+ (x − x0 )(x − x1 )(x − x2 )p[x, x0 , x1 , x2 ].

Continuando a substituir p[x, x0 , x1 , x2 ] teremos:

p(x) = p(x0 ) + (x − x0 )p[x0 , x1 ] + (x − x0 )(x − x1 )p[x0 , x1 , x2 ]


+ (x − x0 )(x − x1 )(x − x2 )p[x0 , x1 , x2 , x3 ] + · · · +
(x − x0 ) · · · (x − xn−1 )p[x0 , . . . , xn ] + (x − x0 ) · · · (x −
xn )p[x, x0 , . . . , xn ]
3.4. ERRO DE TRUNCAMENTO 59

Como p(x) é um polinômio de grau n então a (n + 1)-ésima


derivada é igual a zero. Logo p[x, x0 , . . . , xn ] = 0. Dessa forma o
polinômio p(x) pode ser escrito como:
p(x) = f (x0 ) + (x − x0 )p[x0 , x1 ] + (x − x0 )(x − x1 )p[x0 , x1 , x2 ]+
+(x − x0 )(x − x1 )(x − x2 )p[x0 , x1 , x2 , x3 ] + · · · +
+(x − x0 ) · · · (x − xn−1 )p[x0 , . . . , xn ]

Exemplo 3.3.1. Vamos construir o polinômio interpolador para


sen(x)
função f (x) = √ via DDF. Para essa interpolação considere
x
os pontos: ¡ ¢
(x0 , f (x0 )) = 3π2 , −0.46
¡π ¢
(x1 , f (x1 )) = 2 , 0.797
Veja que

p(x0 ) − p(x1 ) f (x0 ) − f (x1 ) −1.257


p[x0 , x1 ] = = =
x0 − x1 x0 − x1 π
Assim
p(x) = f (x0 ) + (x − x0 )p[x0 , x1 ]
¡ 3π
¢ ¡ −1.257 ¢
= −0.46 + x − 2 π

= − 1.257
π x + 1, 425

3.4 Erro de Truncamento


Considere o problema (ii ) na Introdução do Capı́tulo. Nesse caso
conhecemos a forma analı́tica de f (x). Veremos que se f (x) for sufi-
cientemente diferenciável, então podemos calcular o erro de trunca-
mento na interpolação.
Seja p(x) o polinômio interpolador de grau n criado com base em
(x0 , x1 , . . . , xn ). Definimos o erro de truncamento como:

Et (x) = f (x) − p(x)

A proposição abaixo caracteriza Et (x). Mas sua demonstração


requer um famoso teorema, chamado de Teorema de Rolle. Apenas
60 CAPÍTULO 3. INTERPOLAÇÃO

enunciaremos esse teorema. Sua demonstração pode ser encontrada


em livros de Cálculo ou em [3].

Teorema 3.3. (Rolle) Seja f : [a b] −→ R uma função contı́nua


definida em um intervalo fechado [a b]. Se f (x) é diferenciável no
intervalo aberto (a b) e f (a) = f (b) = 0. Então existe ξ ∈ (a b) tal
que f 0 (ξ) = 0.

Proposição 3.1. Seja f (x) = Et (x) + p(x), onde p(x) é o polinômio


interpolador de f (x) relativamente aos pontos (x0 , x1 , . . . , xn ) de [a b]
e f (x) seja (n + 1) vezes diferenciável em [a b]. Então existe
ξ ∈ (a b) tal que

f n+1 (ξ)
Et (x) = (x − x0 )(x − x1 ) · · · (x − xn )
(n + 1)!

demonstração

Começamos construindo uma função auxiliar

ϕ(x) = f (x) − p(x) − (x − x0 )(x − x1 ) · · · (x − xn )A,

observe que ϕ(x0 ) = ϕ(x1 ) = · · · = ϕ(xn ) = 0, ou seja, ϕ(x) se


anula em n + 1 pontos. Tome z ∈ (a b) distinto de (x0 , x1 , . . . , xn )
e escolhemos A tal que ϕ(z) = 0.

ϕ(x) é (n + 1) vezes diferenciável, já que isso ocorre com f (x) e


p(x). Assim podemos aplicar o Teorema de Rolle repetidas vezes e
garantir a existência de ξ ∈ (a b) tal que:

0 = ϕn+1 (ξ) = f n+1 (ξ) − (n + 1)!A

donde
f n+1 (ξ)
A=
(n + 1)!
ou
f n+1 (ξ)
Et (z) = (z − x0 )(z − x1 ) · · · (z − xn )
(n + 1)!
Como z foi escolhido arbitrário temos o resultado.
3.4. ERRO DE TRUNCAMENTO 61

A Proposição 3.1 garante a existência de ξ. Na prática não é


possı́vel encontrá-lo. Para resolver isso, tomamos como f n+1 (ξ) o
máximo que |f n+1 (x)| assume em [a b].
Uma observação que deve ser feita, vem do fato de que o polinômio
interpolador é único de acordo com o Teorema 3.1, então o erro
de truncamento também é o mesmo, tanto para o polinômio de
Lagrange, quanto para o polinômio obtido via DDF. Neste caso o
polinômio interpolador obtido por DDF (por exemplo com três pon-
tos {x0 , x1 , x2 }) é escrito como:

p(x) = f (x0 ) + (x − x0 )p[x0 , x1 ] + (x − x0 )(x − x1 )p[x0 , x1 , x2 ]


com isto,

Et (x) = f (x) − p(x)

= f (x) − (f (x0 ) + (x − x0 )p[x0 , x1 ] + (x − x0 )(x − x1 )p[x0 , x1 , x2 ])

= (x − x0 ){f [x, x0 ] − p[x0 , x1 ] −(x − x0 )(x − x1 ) p[x0 , x1 , x2 ]


| {z } | {z }
f [x0 ,x1 ] f [x0 ,x1 ,x2 ]

= (x − x0 )(x − x1 )(x − x2 )f [x, x0 , x1 , x2 ]


Podemos generalizar para
Et (x) = (x − x0 )(x − x1 ) · · · (x − xn )f [x, x0 , x1 , . . . , xn ]
Comparando essa última equação com a Proposição 3.1 concluı́mos
que:
f n+1 (ξ)
f [x, x0 , x1 , . . . , xn ] =
(n + 1)!
para algum ξ em (a b).
Exemplo
£ π¤ 3.4.1. Considere a função f (x) = sen(x) no intervalo
0 2 . Vamos obter o polinômio interpolador via método de La-
grange nos pontos
(x0 , f (x0 )) = ³ (0, 0) ´

(x1 , f (x1 )) = π
4 , 22
¡π ¢
(x2 , f (x2 )) = 2,1
62 CAPÍTULO 3. INTERPOLAÇÃO

assim

  Ã
2 2 √ ! Ã √ !
X Y (x − xj )  8−8 2 4 2−2
p(x) = f (xi ) = 2
x + x
(xi − xj ) π2 π
i=0 j=0,j6=i

£ Verificamos
¤ facilmente que |f 3 (x)| assume máximo igual a 1 em
0 π2 . Dessa forma podemos calcular o erro de truncamento:

1 ³ π´³ π´ 1
Et (x) = (x − x0 )(x − x1 )(x − x2 ) =x x− x−
3! 4 2 6

Como aplicação vejamos o erro de truncamento no ponto 8 .
¯ µ ¶¯
¯ ¯
¯Et 3π ¯ = 0.30280
¯ 8 ¯
Por comparação vamos calcular os valores exatos:
¯ µ ¶¯ ¯ µ ¶ µ ¶¯
¯ ¯ ¯ ¯
¯Et 3π ¯ = ¯f 3π − p 3π ¯ = 0.018
¯ 8 ¯ ¯ 8 8 ¯
Certamente o leitor deve estar se perguntando; não teria que re-
sultar o mesmo valor? A£ resposta
¤ é não. Quando tomamos o máximo
de |f 3 (x)| no intervalo 0 π2 estamos assumindo uma aproximação
para o |f 3 (ξ)|. Portanto o erro de truncamento deve ser calculado
com bastante cuidado.
O erro de truncamento pode ser visto geometricamente na figura
3.1.

3.5 Método de Briot-Ruffini


Consideremos um polinômio de grau n, p(x) = an xn + an−1 xn−1 +
· · · + a1 x + a0 em R. Veja que para calcular o valor p(c) para um
c ∈ R efetuamos n(n+1) 2 multiplicações e n adições. O método de
Briot-Ruffini propõe reduzir o número de multiplicações.
Pela divisão euclidiana de p(x) por (x − c) temos:

p(x) = (x − c)Q(x) + R (3.6)


3.5. MÉTODO DE BRIOT-RUFFINI 63

0 x
−1.75π −1.5π −1.25π −1π −0.75π −0.5π −0.25π 0 0.25π 0.5π 0.75π 1π 1.25π 1.5π 1.75π
 

     

-1

-2

p(x)

Figura 3.1: Erro de truncamento

onde R é uma constante, já que o grau de p(x) é n e o grau de


Q(x) é n − 1.
Assim p(c) = R, ou seja, basta encontrar R. Para isso começamos
escrevendo Q(x) na forma geral:

Q(x) = bn−1 xn−1 + bn−2 xn−2 + · · · + b1 x + b0 (3.7)


e substituindo (3.7) em (3.6)

p(x) = (x − c)(bn−1 xn−1 + bn−2 xn−2 + · · · + b1 x + b0 ) + R


= bn−1 xn + (bn−2 − cbn−1 )xn−1 + (bn−3 − cbn−2 )xn−2 + · · · +
+(b1 − cb2 )x2 + (b0 − cb1 )x + (cb0 + R)

Expandindo p(x)

an xn + an−1 xn−1 + · · · + a1 x + a0

é igual a
64 CAPÍTULO 3. INTERPOLAÇÃO

bn−1 xn +(bn−2 −cbn−1 )xn−1 +(bn−3 −cbn−2 )xn−2 +· · ·+(b1 −cb2 )x2 +(b0 −cb1 )x+(R−cb0 )

Portanto:

bn−1 = an
bn−2 = an−1 + cbn−1
bn−3 = an−2 + cbn−2
..
.
b0 = a1 + cb1
R = a0 + cb0

Dessa forma, R é facilmente encontrado e o número de multi-


plicações é igual a n.

Exemplo 3.5.1. Use o método de Briot-Ruffini para avaliar p(x) =


x2 + 3x + 1 em c = 2

b1 = a2 = 1
b0 = a1 + cb1 = 5
R = a0 + cb0 = 11

Assim p(2) = 11.

3.6 Considerações Finais


Uma observação importante que devemos fazer em relação a inter-
polação é a seguinte; quanto maior o número de pontos melhor é a
aproximação fornecida pelo polinômio interpolador. É bom lembrar
que quanto mais pontos, maior é o grau do polinômio e assim mais
lenta é sua avaliação, por isso é necessário a utilização de métodos
de avaliação polinomial tal como o método de Briot-Ruffini1 .

1
Não é o único.
3.7. EXERCÍCIOS 65

3.7 Exercı́cios
3.7.1. Use interpolação
¡ ¢ de Lagrange para determinar uma aprox-
imação de f π5 sabendo que:
³π ´ 1 ³π ´ ³ π ´ √3
f (0) = 1, f = ,f = 0, f =
3 2 2 6 2
cos(x) ¡ ¢
3.7.2. Seja f (x) = √
3
. Calcule uma aproximação para f π3
x2
através do polinômio de Lagrange.
3.7.3.
¡ ¢ Usando interpolação por DDF obtenha o valor aproximado de
f 12 sabendo que:
µ ¶
3 2 1
f (1) = 1, f = , f (2) =
2 3 2
3.7.4. Os problemas vistos até agora são da forma:
Dado os pontos (x0 , x1 , . . . , xn ), onde f (x) é conhecida, pede-se
para encontrar um valor f (c) para algum c ∈ [xj xi ] conhecido.
Pense agora no problema inverso:
Dado os pontos (x0 , x1 , . . . , xn ), onde f (x) é conhecida, pede-se
para encontrar um valor c onde conhecemos o valor f (c). Chamamos
de interpolação inversa.
Determine o valor aproximado de c para f (c) = 0.95 usando os
valores da função f (x) = sen(x) (x em radianos) dados abaixo:
i 0 1 2 3
xi 1.75 1.80 1.85 1.90
f (xi ) 0.984 0.9738 0.9613 0.9463
3.7.5. Verifique que, se f (x) for um polinômio de grau n, então o
polinômio interpolador p(x) relativo a (x0 , x1 , . . . , xn ) é igual a f (x).
3.7.6. Usando interpolação inversa, determine uma aproximação
para um zero de:

a) f (x) = x3 − 9x + 10

b) g(x) = ln(x) + 4x − 3
66 CAPÍTULO 3. INTERPOLAÇÃO

3.7.7. Interpole a função f (x) = ex no intervalo [0 1] com 4 pontos.


Calcule o erro de truncamento.

3.7.8. Mostre que f [x0 , x1 , x2 ] = f [x2 , x1 , x0 ].

3.7.9. Seja p(x) um polinômio de grau n. Mostre que é necessário


n(n+1)
2 multiplicações e n adições para avaliar p(c) para c ∈ R

3.7.10. Calcule o número de adições e multiplicações para gerar o


polinômio interpolador de Lagrange em (n + 1) pontos.

3.7.11. Determina-se empiricamente o alongamento de uma mola


em milı́metros, em função da carga P kgf que sobre ela atua, obtendo-
se
x 5 10 15 20 25 30 35 40 mm
P 49 105 172 253 352 473 619 793 Kgf

Interpolando adequadamente por meio de polinômios de terceiro grau,


encontre as cargas que produzem os seguintes alongamentos na mola:

a) 12mm

b) 22mm

c) 31mm

3.7.12. Numa rodovia federal, medindo-se a posição de um ônibus


que partiu do marco zero da rodovia, obtiveram-se as seguintes marcações:

T(min) 60 80 100 120 140 160 180


D(km) 76 95 112 138 151 170 192

Pede-se o posicionamento do ônibus para os tempos de:

a) 95 min

b) 130 min

c) 170 min
3.7. EXERCÍCIOS 67

3.7.13. A velocidade so som na água varia com a temperatura. Us-


ando os valores da tabela abaixo, determine o valor aproximado da
velocidade do som na água a 100◦ C

Temperatura (◦ C) 86.0 93.3 98.9 104.4 110.0


Velocidade (m/s) 1.552 1.548 1.544 1.538 1.532
68 CAPÍTULO 3. INTERPOLAÇÃO
Capı́tulo 4

Integração Numérica

4.1 Introdução
A mais de 2000 anos, o cálculo da área e volume de figuras geométricas
intriga a curiosidade humana. Os gregos, foram talvez os primeiros
a tentar calcular a área de figuras complicadas por aproximações
numéricas, um exemplo disso é o cálculo da área e comprimento do
circulo pelo método da exaustão de Eudóxio (408-355 a.C.) Com a
invenção do Cálculo por Newton(1642-1727) e Leibnitz(1646-1716),
vários problemas foram resolvidos, mas também surgiram outros.
Para integrais, temos o Teorema Fundamental do Cálculo(T.F.C.),
ou seja, se f (x) é uma função contı́nua no intervalo [a b], então a
área sob o gráfico de f (x) é dado por:
Z b
f (x) dx = F (a) − F (b), onde F é a antiderivada de f (x).
a

Uma pergunta surge: onde o Cálculo Numérico pode contribuir,


uma vez que o T.F.C. parece ter resolvido tudo? Ocorre que, nem
sempre podemos aplicar o T.F.C. conforme os problemas abaixo:

i- De acordo com resultados do Cálculo, toda função contı́nua em


um intervalo fechado possui antiderivada. Mas o cálculo desta nem
sempre é simples. Por exemplo:

69
70 CAPÍTULO 4. INTEGRAÇÃO NUMÉRICA

Z b
2
e−x dx
a
ii- Como calcular a integral de uma função conhecendo-a apenas
em um número finito de pontos?.

Desta forma recorremos a integração numérica1 para resolver


estes e outros problemas.
Na Interpolação polinômial aprendemos como gerar o polinômio
Z b Z b

interpolador, ou seja, p(x) = f (x). Portanto ∼
p(x) dx = f (x) dx.
a a
Nesta linha, vamos desenvolver os métodos numéricos de integração.

4.2 Regra dos Trapézios


Começamos considerando a Interpolação de Lagrange (veja cap. an-
terior) em uma função f (x) conhecida apenas em (x0 , f (x0 )), (x1 , f (x1 )).
Seja então
x − x1 x − x0
p(x) = f (x0 ) + f (x1 )
x0 − x1 x1 − x0
integrando

Z x1 Z x1 Z x1
f (x0 ) f (x1 )
p(x) dx = (x − x1 ) dx + (x − x0 ) dx
x0 x0 − x1 x0 x1 − x0 x0

x1 − x0
= [f (x1 ) − f (x0 )]
2
Z x1
Donde concluı́mos que p(x) dx é exatamente a área do trapézio
x0
conforme figura 4.1.

Se tivermos (n + 1) pontos, digamos (x0 , x1 , . . . , xn ) igualmente


espaçados, ou seja, xk = xk−1 + h,(k = 1, . . . , n), então podemos
generalizar (acompanhe com a figura 4.2) para:
1
Também chamado de quadratura, devido a Arquimedes(387-212 a.C.) e o
problema da quadratura do circulo
4.2. REGRA DOS TRAPÉZIOS 71

x 0 x 1

Figura 4.1: Área do trapézio

Z xn Z x1 Z x2 Z xn
p(x) dx = p1 (x) dx + p2 (x) dx + · · · + pn (x) dx
x0 x0 x1 xn−1

x1 −x0 x2 −x1
= 2 [f (x1 ) − f (x0 )] + 2 [f (x2 ) − f (x1 )] + · · · +

+ xn −x
2
n−1
[f (xn ) − f (xn−1 )]

h
= [f (x0 ) + 2f (x1 ) + · · · + 2f (xn−1 ) + f (xn )]
2

Com pk (x) o polinômio interpolador nos pontos (xk−1 , xk ),(k =


1, . . . , n).

4.2.1 Erro de Truncamento

De acordo com a seção 3.4 o erro de truncamento na interpolação é


f 00 (ξ)
dado por Et (x) = (x−x0 )(x−x1 ) para ξ ∈ (x0 x1 ). Integrando
2
teremos
72 CAPÍTULO 4. INTEGRAÇÃO NUMÉRICA

x x
0 1 x 2
... x x 

Figura 4.2: Cálculo da área por trapézios

Z x1 Z x1
f 00 (ξ)
Et (x) dx = (x − x0 )(x − x1 ) dx
x0 x0 2

f 00 (ξ)(x1 − x0 )3
=
12
Assumindo x1 − x0 = h, então o erro de integração é dado por

f 00 (ξ)h3
EI =
12

Lembre-se que, no caso geral(x0 , x1 , . . . , xn ), temos que somar


todos os erros, ou seja, o erro total será dado por:
n−1
X
EIi , onde EIi é o erro calculado em (xi−1 , xi ).
i=1
à √ !µ ¶
π 3 5π 1
Exemplo 4.2.1. Considere f (x) conhecida nos pontos , , , .
3 2 6 2
Pela regra dos trapézios teremos:
4.3. 1a REGRA DE SIMPSON 73

Z x1

[f (x1 ) − f (x0 )] π(1 + 3) ∼
f (x) dx = (x1 − x0 ) = = 1.07287
x0 2 8

Sabendo que f (x) = sen(x) e f 00 (ξ) = max{|f 00 (x)| ; x ∈ (x0 x1 )} =



|f 00 (π/3)|
= 0.86602 calculamos o erro de integração

f 00 (ξ)(x1 − x0 )3 ∼
EI = = 0.2797
12
Portanto
Z x1
f (x) dx + EI = 1.35257
x0
Compare este resultado com o valor fornecido pelo T.F.C.
Escolhemos f (x) = sen(x) no exemplo anterior para verificar o
erro cometido. Nos problemas onde a forma analı́tica de f (x) não é
conhecida não podemos calcular EI .

4.3 1a Regra de Simpson


A regra dos trapézios utiliza polinômios interpolantes de grau 1, já
que trabalha de dois em dois pontos. No caso de três pontos, pode-
mos ter uma interpolante de grau 2, ou seja, nosso erro de inter-
polação tende a ser menor. Dessa forma, se f (x) é conhecida em
três pontos (x0 , x1 , x2 ), então o polinômio interpolador de Lagrange
será dado por:

(x − x1 )(x − x2 ) (x − x0 )(x − x2 ) (x − x0 )(x − x1 )


p(x) = f (x0 ) +f (x1 ) +f (x2 )
(x0 − x1 )(x0 − x2 ) (x1 − x0 )(x1 − x2 ) (x2 − x0 )(x2 − x1 )
assim Z x2
h
p(x) dx = [f (x0 ) + 4f (x1 ) + f (x2 )].
x0 3
O caso geral em (n + 1) pontos é dado por:
Z x2
h
p(x) dx = [f (x0 )+4f (x1 )+2f (x2 )+4f (x3 )+2f (x4 )+· · ·+2f (xn−2 )+4f (xn−1 )+f (xn )]
x0 3
74 CAPÍTULO 4. INTEGRAÇÃO NUMÉRICA

  

y
p(x)

x 0 x 1 x 0

Figura 4.3: Cálculo da área pela 1a regra de Simpson

A comparação da 1a regra de Simpson com a regra dos trapézios


pode ser observada nas figuras 4.3 e 4.4.
O erro de truncamento pode ser rapidamente calculado:

Z x2 Z x1
f 3 (ξ)
Et (x) dx = (x − x0 )(x − x1 )(x − x2 ) dx
x0 x0 3!

f 3 (ξ)h4
=
12

Portanto o erro de integração na 1a regra de Simpson será dado


por:

f 3 (ξ)h4
EI =
12
4.3. 1a REGRA DE SIMPSON 75
  

x 0 x 1 x 2

Figura 4.4: Cálculo da área por trapézios

Exemplo 4.3.1. Considere f (x) conhecida apenas em



(x0 , f (x0 )) = (π/3, 3/2)
(x1 , f (x1 )) = (5π/2, 1/2)
(x2 , f (x2 )) = (π, 0)
Pela regra dos trapézios (observe que h = π/4) temos:
Z x2
h
f (x) dx ∼= [f (x0 ) + 2f (x1 ) + f (x2 )] = 1.4655
x0 2
Pela 1a regra de Simpson temos:
Z x2
h
f (x) dx ∼
= [f (x0 ) + 4f (x1 ) + f (x2 )] = 1.5006
x0 3
Qual resultado é o melhor? Certamente o valor fornecido pela 1a re-
gra de
Simpson. Uma vez que o erro tende a ser menor.
Para convencer o leitor revelamos que f (x) = sen(x), e calcu-
lamos o valor exato via T.F.C.
Z π
sen(x) dx = 1.50
π/3

Podemos obter a 2a
regra de Simpson com um processo análogo
no polinômio interpolador de grau 3 gerado por 4 pontos. Mais
detalhes veja exercı́cio 4.5.7.
76 CAPÍTULO 4. INTEGRAÇÃO NUMÉRICA

4.4 Quadratura Gaussiana


Nos métodos anteriores de Integração, usamos intervalos igualmente
espaçados, ou seja, xk = xk−1 + h. No método de Gauss estes pontos
não são mais
escolhidos, vamos definir um critério para essa escolha.
Começamos considerando o teorema de mudança de variável:

Teorema 4.1. (Mudança de variável) Sejam f : [a b] −→ R


contı́nua,
g : [c d] −→ R com derivada integrável e g([c d]) ⊂ [a b]. Então
Z g(d) Z d
f (x) dx = f (g(t)).g 0 (t) dt.
g(c) c

A demonstração pode ser encontrada em [6]. Esse teorema será


muito útil como veremos. Z b
Nosso problema continua sendo tentar calcular f (x) dx. Para
a
facilitar as contas vamos efetuar a seguinte mudança de varivável.
µ ¶
b−a b+a
Seja g : [−1 1] −→ R tal que, g(t) = t+ , observe
2 2
que g(−1) = a e g(1) = b. Aplicando o Teorema 4.1 temos:
Z b Z 1
f (x) dx = F (t) dt
a −1

onde µ ¶
0 b−a b+a b−a
F (t) = f (g(t)).g (t) = f t+ .
2 2 2
Z b
Com isto concluı́mos que para saber o valor de f (x) dx basta
Z 1 a

calcular F (t) dt.


−1
O método da Quadratura Gaussiana(não demonstraremos) afirma
que:
Z 1 n
X
F (t) dt = wi F (ti )
−1 i=0
4.4. QUADRATURA GAUSSIANA 77

onde wk são chamados de pesos e tk pontos do intervalo [−1 1].


Nosso objetivo é identificar estes pesos e pontos. Para simplificar
começamos com n = 1, ou seja, dois pontos apenas. Dessa forma:
Z 1
F (t) dt = w0 F (t0 ) + w1 F (t1 ) (4.1)
−1

Para descobrir estas quatro incógnitas necessitamos de um sis-


tema com quatro equações. Uma vez que estas incógnitas não de-
pendem de F (t) podemos assumir F (t) = tk ,k = 0, 1, 2, 3. Ou seja,
Z 1
tk dt = w0 F (t0 ) + w1 F (t1 )
−1

Z 1
k = 0 =⇒ 2 = t0 dt = w0 t00 + w1 t01
−1

Z 1
k = 1 =⇒ 0 = t1 dt = w0 t0 + w1 t1
−1

Z 1
2
k = 2 =⇒ = t2 dt = w0 t20 + w1 t21
3 −1

Z 1
k = 3 =⇒ 0 = t3 dt = w0 t30 + w1 t31
−1

com estas equações geramos o sistema:




 2 = w0 + w1

0 = w0 t0 + w1 t1

 2/3 = w0 t20 + w1 t21

0 = w0 t30 + w1 t31
Resolvendo...

w0 = w1 = 1 e t0 = −t1 = 1/ 3.

Substituindo estes valores na equação (4.1) temos:


78 CAPÍTULO 4. INTEGRAÇÃO NUMÉRICA

Z 1 √ √
F (t) dt = F (−1/ 3) + F (1/ 3)
−1

Com um processo análogo na forma geral

Z 1 n
X
F (t) dt = wi F (ti )
−1 i=0

wk e tk podem ser calculados por polinômios de Legendre(veja [11]).


Não faremos essa demonstração, mas os valores podem ser vistos na
tabela 4.1.

Observação 4.1. Se F é um polinômio de até grau 3, então esta


fórmula fornece o valor exato da integral. Caso contrário o erro pode
ser calculado pela fórmula abaixo:

2(2n+3) [(n + 1)!]4 (2n+2)


E= F (ξ)
(2n + 3)[(2n + 2)!]3

com ξ ∈ [−1 1].


É bom lembrar que F (2n+2) (ξ) deve ser tomado como o maior
valor possı́vel, como feito em seções anteriores.
Z π/2
Exemplo 4.4.1. Calcular sen(x) dx por quadratura gaussiana
0
com n = 1.
Começamos fazendo a mudança de variável
µ ¶
b−a b+a b−a
F (t) = f t+
2 2 2
³π π´ π
= sen t+
4 4 4
4.4. QUADRATURA GAUSSIANA 79

n i ti wi

1 1;0 ±0.57735027 1

2 0;1 ±0.77459667 5/9


2 0 8/9

3 0;1 ±0.86113631 0.34785484


2;3 ±0.33998104 0.65214516

4 0;1 ±0.90617985 0.23692688


2;3 ±0.53846931 0.47862868
4 0 0.53888889

5 0;1 ±0.93246951 0.17132450


2;3 ±0.66120939 0.36076158
4;5 ±0.23861919 0.46791394

6 0;1 ±0.94910791 0.12948496


2;3 ±0.74153119 0.27970540
4;5 ±0.40584515 0.38183006
6 0 0.41795918

7 0;1 ±0.96028986 0.10122854


2;3 ±0.79666648 0.22238104
4;5 ±0.52553242 0.31370664
6;7 ±0.18343464 0.36268378

Z 1 n
X
Tabela 4.1: Valores de wk e tk para F (t) dt = wi F (ti )
−1 i=0
80 CAPÍTULO 4. INTEGRAÇÃO NUMÉRICA

dessa forma
Z π/2 Z 1 √ √
sen(x) dx = F (t) dt = F (−1/ 3) + F (1/ 3) = 0.9984
0 −1

Compare com o valor fornecido pelo T.F.C.


Z π/2
Exemplo 4.4.2. Calcular sen(x) dx por quadratura gaussiana
0
com n = 2.
De acordo com a tabela 4.1 temos

Z 1
F (t) dt = w0 F (t0 ) + w1 F (t1 ) + w2 F (t2 )
−1

5 5 8
= F (0.77459667) + F (−0.77459667) + F (0)
9 9 9

= 1

Compare esse resultado com o valor fornecido pelo T.F.C.

Finalizamos lembrando o leitor, que este texto é apenas intro-


dutório e abrange alguns métodos de integração numérica. Em [11]
é possı́vel encontrar outros métodos de integração.

4.5 Exercı́cios
Z 1
4.5.1. Calcule o valor da integral f (x) dx apenas sabendo que:
0

(x0 , f (x0 )) = (0, 0)


(x1 , f (x1 )) = (1/2, 1/4)
(x2 , f (x2 )) = (1, 1)
Z 1
4.5.2. Calcule o valor da integral x2 dx pela regra dos trapézios
0
com 4 pontos.
4.5. EXERCÍCIOS 81
Z 3
1
4.5.3. Calcule pela regra dos trapézios a integral dx e o erro
2 x3
cometido.
Z π
4.5.4. Calcule o valor da integral 2xsen(x2 ) dx com n = 3 pela
0
regra dos trapézios e pela 1a regra Simpson. Calcule o erro cometido.
Compare com o T.F.C.
Z 3
4.5.5. Calcule o valor da integral senπ/2 (x + 1)cos(x2 ) dx com
0
n = 4 pela regra dos trapézios e pela 1a regra Simpson.
4.5.6. Mostre que
Z xn
h
p(x) dx = [f (x0 )+4f (x1 )+2f (x2 )+4f (x3 )+2f (x4 )+· · ·+2f (xn−2 )+4f (xn−1 )+f (xn )]
x0 3
Na 1a regra de Simpson.
4.5.7. Dados os pontos (x0 , x1 , x2 , x3 ) mostre que a 2a regra de Simp-
son é dada por:
Z x3
3
f (x) ∼
= h[f (x0 ) + 3f (x1 ) + 3f (x2 ) + f (x3 )]
x0 8
e o caso geral Z xn
f (x)
x0

=
3
h[f (x0 )+3f (x1 )+3f (x2 )+2f (x3 )+3f (x4 )+3f (x5 )+2f (x6 )+· · ·+3f (xn−2 )+3f (xn−1 )+f (xn )]
8
4.5.8. Através da 2a regra de Simpson, com n = 4 calcule a integral
do exercı́cio 4.5.4.
4.5.9.
Z 3 Através da 2a regra de Simpson, com n = 6 calcule a integral
ln(x + 2) − 1 dx.
2
Z 3
2
4.5.10. Calcule por quadratura gaussiana a integral e−x dx com
−2
n = 1 e n = 2. Calcule também o erro.
4.5.11. Calcule por quadratura gaussiana a integral do exercı́cio
4.5.4.
82 CAPÍTULO 4. INTEGRAÇÃO NUMÉRICA
Capı́tulo 5

Mı́nimos e Máximos

5.1 Introdução
Neste capı́tulo faremos uma breve introdução ao problema de en-
contrar mı́nimos e máximos de uma função. Na prática desejamos
encontrar o valor mı́nimo ou máximo que a função assume num de-
terminado intervalo. Esse problema tem aplicações imediatas nas
engenharias, fı́sica e na propria matemática. No final, daremos um
exemplo prático.
Começamos analisando funções de R em R.

Definição 5.1. Seja f : [a b] −→ R. Dizemos que k é mı́nimo local


se, dado δ > 0, para todo x ∈ (k − δ, k + δ) temos f (x) ≥ f (k).

A definição de máximo local segue análogo.

Definição 5.2. Seja f : [a b] −→ R. Dizemos que k é máximo local


se, dado δ > 0, para todo x ∈ (k − δ, k + δ) temos f (x) ≤ f (k).

Observe que o δ define o caráter local do mı́nimo ou máximo.


Definimos agora o mı́nimo e máximo global, veja:

Definição 5.3. Seja f : [a b] −→ R. Dizemos que k é mı́nimo


global se, para todo x ∈ [a, b] temos f (x) ≥ f (k).

Definição 5.4. Seja f : [a b] −→ R. Dizemos que k é máximo


global se, para todo x ∈ [a, b] temos f (x) ≤ f (k).

83
84 CAPÍTULO 5. MÍNIMOS E MÁXIMOS

Exemplo 5.1.1. Considere f : [a b] −→ R cujo gráfico é exibido


na figura 5.1. Veja que k0 e k1 são mı́nimos locais. Mas podemos
afirmar que k1 é mı́nimo global, uma vez que f (k1 ) < f (k0 ).
  

k0 k1 x

a b

Figura 5.1: Mı́nimos local e global

Para encontrar mı́nimos/máximos podemos utilizar varias técnicas.


Se a função é diferenciável no intervalo, então podemos observar o
comportamento da derivada da função. Uma vez que os mı́nimos/máximos
são pontos onde a derivada é zero.

Exemplo 5.1.2. Considere f (x) = x4 − 2x3 − 4x2 + 2x no intervalo


[−2 2], cuja derivada será dada por f 0 (x) = 4x3 − 6x2 − 8x +
2. Aplicando os métodos do capı́tulo de zeros de função podemos
encontrar os zeros de f 0 (x) que são: −1, 0.2192 e 2.2808. Avaliando
f (x) nesses pontos temos:

f (−1) = −3

f (0.2192 = 0.2274

f (2.2808) = −12.9149
Assim fica claro que 2.2808 é um ponto de mı́nimo global no
intervalo [−2 2].
5.1. INTRODUÇÃO 85

Lembramos o leitor que, se k é um ponto de máximo ou mı́nimo


local, a derivada se anula em k. Mas se a derivada se anula em k
não quer dizer que seja mı́nimo ou máximo local. Veja o exemplo
abaixo.
Exemplo 5.1.3. Considere f (x) = x3 com f 0 (x) = 3x2 . Veja que
para k = 0, f 0 (k) = 0 mas k não é ponto de mı́nimo nem máximo.
Dizemos que k é um ponto de inflexão, veja definição abaixo.
Definição 5.5. Seja f (x) uma função diferenciável em [a b]. Dize-
mos que k é ponto de inflexão horizontal se, existe δ > 0 tal que uma
das duas situações ocorre:
i) f (x) < f (k) para todo k − δ < x < k e f (x) > f (k) para todo
k <x<k+δ

ii) f (x) > f (k) para todo k − δ < x < k e f (x) < f (k) para todo
k < x < k + δ.
Observação 5.1. Caso f (x) seja duas vezes diferenciável podemos
visualizar o ponto de inflexão como o ponto onde f 00 (x) muda de
sinal.
Com estas definições não poderı́amos deixar de enunciar o
Teorema 5.1. Seja f : (a b) −→ R uma função n vezes difer-
enciável e cujas derivadas, f 0 , f 00 , . . . , f n sejam contı́nuas em (a b).
Seja k ∈ (a b) tal que f 0 (k) = f 00 (k) = . . . = f n−1 (k) = 0 e
f n (k) 6= 0. Então, se n é par,

f n (k) < 0 implica que f tem máximo em k f n (k) > 0 implica

que f tem mı́nimo em k.

Se n é ı́mpar, k é um ponto de inflexão horizontal.


A demonstração pode ser encontrada em [3].
Exemplo 5.1.4. Como aplicação do Teorema 5.1 vamos mostrar
que k = 1 é ponto de mı́nimo de f (x) = x3 − 3x + 1. Tome f 0 (x) =
3x2 − 3, f 00 (x) = 6x, f 3 (x) = 6, f 4 (x) = 0, ...,f n (x) = 0. Veja que
f 0 (k) = 0 e f 00 (k) = 6 > 0, assim pelo Teorema temos que k = 1 é
ponto de mı́nimo.
86 CAPÍTULO 5. MÍNIMOS E MÁXIMOS

Devemos lembrar que o Teorema 5.1 tem suas limitações. Veja


que uma vez dado k podemos aplicar o Teorema. O grande prob-
lema é encontrar k. Por isso, vamos desenvolver um método para
encontrar tais pontos.
Para finalizar considere também o

Teorema 5.2. Toda função contı́nua em um intervalo fechado possui


mı́nimo/máximo global.

A demonstração pode ser encontrada em [7].


Deste ponto em diante trataremos apenas o caso de encontrar
mı́nimos de uma função. Uma vez que o mı́nimo de f (x) é o máximo
de −f (x).

5.2 Método da Seção Áurea


Seja f (x) uma função contı́nua com um único mı́nimo no intervalo
[a b]. O método da seção áurea consiste em criar uma seqüência
(xn ) que converge para o mı́nimo da função. A seqüência (xn ) será
dada por xn = an +b
2
n
onde [a0 b0 ] ⊃ [a1 b1 ] ⊃ · · · [an bn ] ⊃ · · ·.

Assim seja a0 = a e b0 = b.

a1 = b0 − 0.618(b0 − a0 ) e b1 = a0 + 0.618(b0 − a0 )

Se f (a1 ) < f (b1 ), então a2 = a1 e b2 = a1 + 0.618(b1 − a1 ).

Se f (a1 ) ≥ f (b1 ), então a2 = b1 − 0.618(b1 − a1 ) e b2 = b1

Novamente

Se f (a2 ) < f (b2 ), então a3 = a2 e b3 = a2 + 0.618(b2 − a2 ).

Se f (a2 ) ≥ f (b2 ), então a3 = b2 − 0.618(b2 − a2 ) e b3 = b2 .

E o processo segue até que |xn − xn−1 | seja menor que um certo δ
fixado como critério de parada.
5.2. MÉTODO DA SEÇÃO ÁUREA 87

Exemplo 5.2.1. Seja f (x) = x2 −2x+3. Vamos encontrar o mı́nimo


de f (x) em [−2 3] pelo método da seção áurea com δ = 0.06.

i ai bi xi |xi − xi−1 |
1 −0.09 1.09 0.5
2 0.3608 1.09 0.7254 0.2254 > δ
3 0.6393 1.09 0.8647 0.1393 > δ
4 0.8115 1.09 0.9507 0.0860 > δ
5 0.9179 1.09 1.0030 0.0523 < δ ← parar o método

5.2.1 Convergência no Método da Seção Áurea


Observe que no método, utilizamos os intervalos [a0 b0 ] ⊃ [a1 b1 ] ⊃
· · · [an bn ] ⊃ · · · com a0 ≤ a1 ≤ · · · ≤ an ≤ · · · e b0 ≥ b1 ≥ · · · ≥
bn ≥ · · ·. Logo (an ) e (bn ) são seqüências monótonas e limitadas.
Pelo Teorema de Bolzano (veja em [3]) temos:
lim an = lim bn = L
n→∞ n→∞
o que implica em
lim xn = L.
n→∞
Vamos mostrar que L é o mı́nimo que f (x) assume em [a b].
Para isso, seja k o ponto mı́nimo em [a b]garantido pelo Teorema
5.2. Assim f (k) ≤ f (ai ) e f (k) ≤ f (bi ) para i = 0, . . . , ∞, o que
implica em k ∈ [ai bi ] para i = 0, . . . , ∞, ou seja, ai ≤ k ≤ bi para
i = 0, . . . , ∞. Aplicando o limite nesta última desigualdade teremos:
lim an ≤ k lim bn ,
n→∞ n→∞
ou seja,
L≤k≤L
o que implica em
L = k.
Observação 5.2. O número 0.618 é chamado de razão áurea. Que
era considerado sagrado para os estudantes da escola grega pitagórica
(fundada por Pitagors (586-500 a.C.)). Procure conhecer mais sobre
esse famoso número e surpreenda-se1 .
1
Veja mais em [4].
88 CAPÍTULO 5. MÍNIMOS E MÁXIMOS

5.3 Superfı́cies em R3
Para nosso estudo vamos considerar f : D ⊂ R2 −→ R, onde D
é um retângulo em R2 . Por exemplo f (x, y) = x2 + y 2 onde D =
[0 1] × [1 2]. Veja que o gráfico de f (x) é o parabolóide dado na
figura 5.2.

50

40

30

20

10

0
5

0
0

−5 −5

Figura 5.2: Parabolóide

Nosso problema agora é encontrar o mı́nimo global k ∈ D. Pode-


mos também enunciar da seguinte forma: minimizar f na caixa
D = [a b] × [c d].

Definição 5.6. Seja f : D ⊂ R2 −→ R uma função diferenciável.


O vetor gradiente de f no ponto a será dado por:
µ ¶
∂f ∂f
∇f (a) = (a), (a) .
∂x ∂y

Exemplo 5.3.1. Seja f (x, y) = x2 + y 2 . Então ∇f (x, y) = (2x, 2y).


Dessa forma o gradiente de f no ponto a = (2, 1) será dado por
∇f (2, 1) = (4, 2).
5.4. MÉTODO DO GRADIENTE 89

Definição 5.7. Uma superfı́cie de nı́vel será dada pelo conjunto:

Sc = {(x, y) ∈ R2 / f (x, y) = c}

Podemos visualizar Sc como os pontos em D com imagem igual


a c, o que geometricamente corresponde a um corte na superfı́cie na
altura de c. Veja na figura 5.2 os cı́rculos no plano XY. Cada circulo
corresponde a superfı́cie de nı́vel.

Proposição 5.1. Seja f : D ⊂ Rn −→ R uma função diferenciável.


Então podemos afirmar que:

i) o vetor gradiente ∇f (x) aponta para uma direção onde f (x) é


crescente.

ii) dentre todas as direções ao longo das quais f (x) cresce, a


direção do gradiente ∇f (x) é a de crescimento mais rápido.

iii) o gradiente ∇f (x) é perpendicular a superfı́cie de nı́vel que


passa por x.

A demonstração dessas propriedades pode ser encontrada em [7].


Lembramos que, se estamos interessados no mı́nimo de f (x),
então devemos tomar a direção contrária a do gradiente, ou seja,
−∇f (x) para encontrar a direção onde f (x) mais decresce.

5.4 Método do Gradiente


Tendo em mente a Proposição 5.1, vamos desenvolver um método
numérico para localizar o mı́nimo de uma função em uma caixa D,
utilizando vetor gradiente. Para isso, considere um ponto p0 qualquer
em D(acompanhe com a figura 5.3). Pelo item ii a direção −∇f (p0 )
tem maior decrescimento. Nosso objetivo é caminhar nesta direção
para encontrar o mı́nimo de f (x). Para nos auxiliar vamos definir a
função g0 (t) = f (p0 − t∇f (p0 ).
Observe que a função g0 (t) é de uma variável. Podemos então,
aplicar o método da seção áurea para encontrar seu mı́nimo, digamos
p1 .
90 CAPÍTULO 5. MÍNIMOS E MÁXIMOS

Repetimos o processo para p1 , ou seja, definimos g1 (t) = f (p1 −


t∇f (p1 ) e encontramos seu mı́nimo p2 .
O processo segue até que a distância entre pn e pn−1 seja menor
que um certo δ fixado como critério de parada, nesse caso será dado
por kpi − pi−1 k. Também podemos utilizar como critério de parada
o próprio vetor gradiente. Nesse caso, paramos o método se a norma
do vetor gradiente em pn for menor que um certo δ.
Essa distância pode ser calculada como a norma do vetor pn −
pn−1 de acordo com a seção 1.3.2.

p1
p3
p5 p0
p2
p4

Figura 5.3: Seqüência (pn ) se aproximando do mı́nimo de f (x)

Observação 5.3. Lembramos que, ao aplicar o método da seção


áurea na função gn (t), devemos ter cuidado de restringir t, de tal
forma que, o vetor pn − t∇f (pn ) permaneça em D.
Exemplo 5.4.1. Considere f : [−1 1] × [−1 1] −→ R dada
por f (x, y) = x2 + y 2 (veja o gráfico na figura 5.2). Escolhemos
p0 = (1, 1), logo ∇f (p0 ) = (2, 2). Continuando temos g(t) = f (p0 −
t∇f (p0 )) = f ((1, 1) − t(2, 2) = (1 − 2t)2 + (1 − 2t)2 = 8t2 − 8t + 2.
Minimizando g(t) pelo método da seção áurea temos t0 = 21 . Calcu-
lamos agora p1 = p0 − t0 ∇f (p0 ) = (1, 1) − 21 (2, 2) = (0, 0). Observe
que o método convergiu em apenas uma iteração.

5.5 Bacias de atração


Podemos dizer que cada mı́nimo/máximo local de uma função difer-
enciável possui uma bacia de atração. Veja na figura 5.4 as várias
5.5. BACIAS DE ATRAÇÃO 91

bacias de atração de f . Cada bacia possui um mı́nimo ou um máximo


local.

−2

−4

−6

−8

−10
25
20 25
15 20
10 15
10
5
5
0 0

Figura 5.4: Bacias de atração

Para sintetizar considere a


Proposição 5.2. Se o método do gradiente for iniciado em um ponto
p0 não situado na bacia de atração do mı́nimo global; então podemo
ocorrer duas situações:

i) o método gradiente converge para o mı́nimo local associado a


bacia de atração em que estiver o ponto p0 .

ii) Caso p0 não esteja associado a nenhuma bacia de atração,


então o método do gradiente não converge.
Assim temos um problema: se a função possui vários mı́nimos/máximos
locais, como encontrar o mı́nimo/maximo global? A resposta é; ini-
ciar o método do gradiente em vários pontos distintos. Dessa forma
temos uma probabilidade de iniciar o método justamente na bacia de
atração do mı́nimo/máximo global. E bom lembrar que esse método
não é muito confiável.
92 CAPÍTULO 5. MÍNIMOS E MÁXIMOS

5.6 Método de direções aleatórias


Seja f : D ⊂ R2 −→ R uma função apenas contı́nua em D. No
método do gradiente escolhemos a direção do gradiente para en-
contrar máximos, e a direção contrária do gradiente para encontrar
mı́nimos. Já no método de direções aleatórias, a direção de busca
é aleatória. Para construir o método basta voltar no método do
gradiente e substituir ∇f (pn ) por um vetor qualquer, veja:
Tome p0 qualquer em D, e v0 um vetor qualquer. Considere
g0 (t) = f (p0 + tv0 ). Aplicando o método da seção áurea em g0 en-
contramos seu mı́nimo em t0 . Dessa forma p1 = p0 +t0 v0 . Novamente
escolhemos outro vetor aleatório v1 , tal que, v1 6= v0 e consideramos
g1 (t) = f (p1 + tv1 ) cujo mı́nimo será t1 .
O processo segue até que kpn − pn−1 k seja menor que um certo
δ fixado como critério de parada.
Observação 5.4. Lembramos que o método do gradiente converge
mais rápido que o método de direções aleatórias. Porém o método
do gradiente exige que a função seja diferenciável em D.
Outro fato, no método do gradiente, se o ponto inicial p0 não
estiver em nenhuma bacia de atração, o método pode não convergir.
No método de direções aleatórias isso pode não ocorrer, uma vez que
as direções são escolhidas aleatóriamente.
Exemplo 5.6.1. Considere f : [−1 1] × [−1 1] −→ R dada por
f (x, y) = x2 + y 2 (veja o gráfico na figura 5.2). Definimos como
critério de parada δ = 0.6 .
Escolhemos p0 = (1, 1) e v0 = (1, 21 ). Dessa forma g0 (t) = f (p0 +
tv0 ) = f (1 + t, 1 + 21 t) = (1 + t)2 + (1 + 21 t)2 . Aplicando o método da
seção áurea, g0 tem mı́nimo em t0 = − 56 . Assim p1 = p0 + t0 v0 =
( 61 , 12
7
). Escolhemos o vetor aleatório v1 = ( 14 , 1), e g1 (t) = 17 2
16 t +
5 53 10
4 t + 144 . Onde g1 tem mı́nimo em t1 = − 17 , continuando p2 =
1 1
( 51 , − 204 ). Paramos o método, pois já atingimos o delta desejado.

i pi kpi − pi−1 k
0 (1, 1) −
1 (0.166, 0.583) 0.933 > δ
2 (0.019, 0.0049) 0.596 < δ ←− parar o método.
5.7. EXERCÍCIOS 93

Observe que a seqüência (pn ) converge para o ponto (0, 0).

5.7 Exercı́cios
5.7.1. Apenas usando a derivada, calcule os pontos de máximo,
mı́nimo e inflexão, da função f (x) = 16x3 − 22x − 5 no intervalo
[−2 2].

5.7.2. De acordo com o Teorema 5.2, ache os pontos máximo e


mı́nimo de f (x) = x3 − 3x + 1.

5.7.3. Aplique o método da seção áurea para encontrar o ponto de


mı́nimo de f (x) = x2 −5x+1 no intervalo [1 3]. Compare o resultado
com o fornecido pela derivada.

5.7.4. Apenas fazendo ∇f = 0, encontre o ponto de mı́nimo de


f (x, y) = 5x2 + 3y + 3x − 3y.

5.7.5.

5.7.6.

5.7.7.
94 CAPÍTULO 5. MÍNIMOS E MÁXIMOS
Capı́tulo 6

Introdução ao Matlab

Faremos uma introdução ao algoritmo estruturado na linguagem por-


tuguês, e em paralelo o Matlab.

6.1 Introdução
Toda linguagem de programação é constituı́da essencialmente por
COMANDOS e ESTRUTURAS DE CONTROLE que o computador
é capaz de interpretar e executar. Os COMANDOS são ordens bas-
tante primitivas como: Ler um valor; Imprimir um valor; Somar dois
valores; Multiplicar dois valores; etc...etc...etc. As ESTRUTURAS
DE CONTROLE são uma espécie de comandos de nı́vel mais elevado,
porque elas são utilizadas para gerenciar a execução dos comandos
mais primitivos. Por exemplo: admitamos que eu queira bater o
número 1 no teclado, e queira que o computador exiba na tela:

a) Todos os números inteiros de 1 a 9.; b) Os pares de 10 a 20;


c) Os ı́mpares de 20 a 30.

Para tal, deve-se ter a seguinte seqüência de comandos e estru-


turas de controle:

1 - Ler teclado (Comando: ordena o computador a armazenar na


memória o número que eu digitar no teclado.

95
96 CAPÍTULO 6. INTRODUÇÃO AO MATLAB

2 - Repetir 9 vezes (Estrutura de controle: gerencia a repetição


dos comandos 2.1 e 2.2)

inicio

2.1 - Exibir teclado 2.2 - teclado + 1

fim

3 - Repetir 6 vezes

inicio 3.1 Exibir teclado 3.2 teclado + 2 fim

4 - teclado -1

5 - Repetir 5 vezes

inicio 5.1 - Exibir teclado 5.2 - teclado +2

fim

Os comandos e estruturas de controle que utilizamos no exem-


plo acima são apenas ilustrativos. Eles não existem de verdade nas
linguagens. Mais adiante daremos esses comandos e estruturas de
controle na linguagem Matlab.

ALGORITMO
Receita de bolo é uma expressão mais apropriada à arte culinária
e à gastronomia. A receita de bolo é uma seqüência de comandos
escritos para um cozinheiro executar. A seqüência de comandos es-
critos para um computador executar é chamada na verdade de AL-
GORITMO. Ou seja, a seqüência de comandos e estruturas de con-
trole que escrevemos anteriormente é chamada de algoritmo. Um
algoritmo é uma solução que você encontra para um determinado
problema fazendo uso exclusivamente dos comandos e estruturas de
controle que a linguagem de programação lhe oferece. Para resolver o
mesmo problema você pode escrever inúmeros algoritmos diferentes.
Tudo vai depender do seu estado de alma no momento. Se você
6.2. COMANDOS 97

estiver inspirado, cheio de criatividade, você poderá resolver o prob-


lema como um algoritmo bem pequeno com poucas linhas. Se não
for o seu dia, o algoritmo pode ficar longo e talvez nem funcionar.
Nosso objetivo central é aprender a escrever algoritmos; ou seja,
aprender a encontrar solução para os problemas propostos fazendo o
uso exclusivamente dos comandos e estruturas de controle.

6.2 Comandos
6.2.1 Comando de leitura
Ao executar um comando de Leitura o computador faz um pequeno
cursor ficar piscando na tela, indicando que ele, o computador, está
esperando que você digite um número (ou um caracter) no teclado.
Assim que você digita o número, pressionando em seguida a tecla
enter, o computador apanha (lê) o número que você digitou e o
armazena em uma posição na sua memória.

Em Matlab

input

exemplo:

>>A=input(’tecle um valor para A’)

6.2.2 Comando de impressão


Este comando é utilizado quando se deseja que o computador ex-
iba na tela os valores que tem armazenado em diversas posições na
memória. Em português seria Imprima(A) e o computador exibe o
valor da variável A.

Em Matlab

disp

exemplo:
98 CAPÍTULO 6. INTRODUÇÃO AO MATLAB

>>disp(A) exibe o valor da variável A

>>disp(’exibe este texto’) exibe uma mensagem

6.2.3 Comando de atribuição


O comando de atribuição é também chamado de COMANDO AR-
ITMÉTICO porque é nele que definimos as expressões aritméticas
necessárias à resolução de um problema qualquer. Ao executar um
comando de atribuição, o computador armazena na variável cujo
nome é mencionado à esquerda do sinal de (=) o valor da expressão
aritmética especificada à direita do sinal de (=).

Em Matlab

exemplo:

>>a=5 atribui o valor 5 a variável a

>>b=a+10 atribui a variável b o valor de a mais 10

>>b=b+1 atribui a variável b o valor de b mais 1

>>c=’o mundo é tão lindo’ atribui a variável c a mensagem


o mundo é tão lindo

Observação 6.1. Lembramos que o Matlab faz distinção de maiúsculas


e minúsculas. Assim a variável c difere da variável C. Outro fato;
não é necessário declarar a variável antes de atribuir qualquer valor
a ela.

Definição 6.1. Uma estrutura de controle é uma espécie de co-


mando especial, de patente mais elevada, cujo objetivo é controlar a
maneira como os comandos são executados.
6.2. COMANDOS 99

6.2.4 Estrutura de decisão


Esta estrutura força o computador a tomar uma decisão quanto a
executar ou não uma determinada seqüência de comandos. Existem
na verdade duas estruturas distintas: a estrutura SE de um único
ramo, ou, de uma única alternativa; e a estrutura SE de dois ramos,
ou, de duas alternativas.

A estrutura SE de um único ramo (ou de uma única alternativa).

SE <COMPARAÇÃO>

Comandos e outras estruturas

FIM SE

Podemos entender a estrutura SE da seguinte forma: Se <COMPARAÇÃO>


for verdadeira então Comandos e outras estruturas é executado.
Caso contrário, ou seja, <COMPARAÇÃO> é falso, o computador
dá um salto para logo após o FIM SE.

A estrutura SE de dois ramos (ou de duas alternativas).

SE <COMPARAÇÃO>

Comandos 1

SENÃO

Comandos 2

FIM SE

Nessa estrutura, se a <COMPARAÇÃO> for verdadeira então


Comandos 1 é executado e Comandos 2 não é executado. Caso
<COMPARAÇÃO> for falso então Comandos 2 é executado e Co-
mandos 1 não é executado. Sempre um dos dois é executado.

Em Matlab
100 CAPÍTULO 6. INTRODUÇÃO AO MATLAB

SE de um ramo SE de dois ramos

if < > if < >

Comandos Comandos 1

end else

Comandos 2

end

exemplo:

A=input(’digite um valor para A’)

B=input(’digite um valor para B’)

if A < B

disp(’A variável A é menor que a variável B’)

else

disp(’A variável A é maior ou igual que a variável B’)

end

6.2.5 Estruturas de repetição


Estrutura PARA

Esta estrutura serve para se repetir uma determinada quantidade


de vezes a execução de um ou mais comandos. O formato geral da
estrutura de repetição PARA é dado por:

PARA i ;Passo k; DE j ATÉ M

Comandos e outras estruturas.


6.2. COMANDOS 101

FIM PARA

A variável i começa valendo j, e adicionando k ela cresce/decresce


até M. Cada acréscimo da variável i Comandos e outras estruturas
é executado. Caso k=1 ao final teremos (M-j+1) repetição de Co-
mandos e outras estruturas. Por exemplo:

PARA i;Passo 1; DE 1 ATÈ 10

Comandos e outras estruturas.

FIM PARA

Comandos e outras estruturas. É executado (10-1+1)=10 vezes.

Observação 6.2. A variável i,j,k e M devem necessariamente ser


inteiras.

Em Matlab

for i=j:k:M

Comandos e outras estruturas

end

exemplo:

for i=3:1:5

disp(’mundo’)

end

A palavra mundo é repetida 3 vezes.

Estrutura ENQUANTO
102 CAPÍTULO 6. INTRODUÇÃO AO MATLAB

O ENQUANTO é uma estrutura de repetição que funciona mais


ou menos nos mesmos moldes da estrutura PARA. Ou seja, EN-
QUANTO e PARA são estruturas de repetição que diferem entre
si basicamente nos detalhes. Ambas foram projetadas para fazer
o computador repetir uma determinada quantidade de vezes a ex-
ecução de um bloco de comandos. O formato geral da estrutura de
repetição ENQUANTO é dado por:

ENQUANTO <COMPARAÇÃO>

Comandos e outras estruturas

FIMENQUANTO

Enquanto a <COMPARAÇÃO> for verdadeira Comandos e out-


ras estruturas é executado. O fim da repetição acontece quando
<COMPARAÇÃO> se torna falsa. Na fase inicial o estudante comete
um erro muito comum, ou seja, criar uma estrutura de repetição sem
fim. Por exemplo:

A=5

ENQUANTO A < 10

Imprima(’mundo’)

FIMENQUANTO

Veja que a condição (A < 10) é sempre verdadeira. O computa-


dor começa a imprimir a palavra mundo e nunca para. Por isso para
a estrutura ENQUANTO terminar deve ocorrer algo dentro do Laço
que torne a <COMPARAÇÃO> falsa. No exemplo acima façamos
uma pequena mudança.

A=5

ENQUANTO A < 10

Imprima(’mundo’)
6.3. ITENS BÁSICOS DO MATLAB 103

A=A+1

FIMENQUANTO

Agora a palavra mundo é repetida apenas 5 vezes.

Em Matlab

While < >

Comandos e outras estruturas

end

exemplo:

A=5

while A < 10

disp(’mundo’)
A=A+1

end

6.3 Itens Básicos do Matlab


6.3.1 Operadores relacionais

< Menor que


<= Menor ou igual que
> Maior que
>= Maior ou igual que
== Igual a
∼= Diferente de
104 CAPÍTULO 6. INTRODUÇÃO AO MATLAB

6.3.2 Conectivos lógicos

& E
| Ou
∼ Não
Xor Ou excludente

6.3.3 Funções Pré-definidas

cos(x) Retorna ao cosseno de x


sin(x) Retorna ao seno de x
tan(x) Retorna a tangente de x
csc(x) Retorna a co-secante de x
cot(x) Retorna a co-tangente de x
∧ Potência, exemplo: 5 ∧ 2 = 52
exp(x) Retorna a ex
log(x) Retorna ao ln(x)
log10(x) Retorna a log10 (x)

sqrt(x) Retorna a x
abs(x) Valor absoluto de x ou |x|
isreal(x) Verdadeiro para valores reais
f ix(x) Arredondamento na direção do zero
f loor(x) Arredondamento na direção de −∞
ceil(x) Arredondamento na direção de +∞
round(x) Arredondamento para o inteiro mais próximo
rem(x, y) Resto da divisão de x por y
mod(x, y) Resto com sinal.
det(A) Determinante da matriz A
inv(A) Inversa da matriz A
size(A) Retorna a dimensão da matriz A
isprime(x) 1 se x primo, 0 se x não é primo.
primes(x) Seqüência de primos menores que x
gcd(x, y) Máximo divisor comum de x e y
lcm(x, y) Mı́nimo múltiplo comum de x e y
cross(v, w) Produto vetorial v × w
sum(v. ∗ w) Produto interno < v, w >
6.3. ITENS BÁSICOS DO MATLAB 105

6.3.4 Script
Rapidamente você vai notar que a janela do Octave não é suficiente
para escrever programas mais extensos. Por isso; será necessário criar
um Script (Roteiro). Um Script nada mais é do que uma lista de
comandos e estruturas que serão executados seqüencialmente. Para
criar um Script basta clicar em arquivo/novo.

Exemplo 6.3.1. Vamos criar um Script para somar o primeiros 100


números.

soma=0;

for i=1:1:100

soma=soma+i;

end

disp(soma)

Para executar o Script basta escrever na linha de comando >>


o nome do mesmo.
Lembramos que o ’;’ no final de cada atribuição faz com que os
valores não sejam exibidos na tela.

Exemplo 6.3.2. Façamos um Script para encontrar e imprimir o


menor valor de 3 números.

a=input(’digite o primeiro número’)

b=input(’digite o segundo número’)

c=input(’digite o terceiro número’)

if a < b

if a < c
disp(a)
disp(’ é o menor valor’)
106 CAPÍTULO 6. INTRODUÇÃO AO MATLAB

else
disp(c)
disp(’ é o menor valor’)
end

else

if b < c
disp(b)
disp(’ é o menor valor’)
else
disp(c)
disp(’ é o menor valor’)
end

end

Exemplo 6.3.3. Façamos um Script para ler um número inteiro


positivo N e calcular S onde:

1 3 5 7 I
S= + + + + ··· +
1 2 3 4 N

N=input(’digite o número inteiro positivo N’)

S=0; I=1;

for j=1:1:N

S=S+(I/j);
I=I+2;

end

disp(’o valor de S é: ’)


disp(S)
6.3. ITENS BÁSICOS DO MATLAB 107

Exemplo 6.3.4. Façamos um Script para ler um número inteiro


positivo N > 1 e imprimir os N primeiros termos da seqüência de
Fibonacci.

fibo = 0 1 1 2 3 5 8 13 21 34 55 ... X Y (X+Y) ...

N=input(’digite o número inteiro positivo N > 1’)

Disp(’A seqüência será produzida abaixo’)

X=0; Y=1

for i=2:1:N

Z=X+Y
X=Y;
Y=Z;

end

Veja que nesse programa não utilizamos os comando DISP para


exibir o número Z. Simplesmente retiramos o ponto e vı́rgula (;).

Exemplo 6.3.5. Façamos um Script para ler um número inteiro


positivo N > 0 e responder, se N é primo ou não. O Script deve
terminar quando o N lido for negativo.

N=input(’digite o número inteiro positivo N > 0’)

while (N > 0)
X=2;
Sinal=0;
while (X <= (f ix(sqrt(N ))))
if (rem(N,X))==0
Sinal=1;
end
X=X+1;
end
if Sinal==0
108 CAPÍTULO 6. INTRODUÇÃO AO MATLAB

disp(’Esse número é primo’)


else
disp(’Esse número não é primo’)
end
N=input(’digite o número inteiro positivo N > 0’)
end

6.4 Vetores e Matrizes


Um vetor pode ser considerado como uma variável múltipla, ou seja,
uma variável que possui outras variáveis. Assim o vetor V=[1 0 0 5 6]
é considerado um vetor de 5 posições. Cada elemento do vetor V
pode ser obtido por referência a posição. Assim V(1)=1, V(2)=0,
V(3)=0, V(4)=5 e V(5)=6.
O mesmo vale para matrizes.
 Se M=[1 3 0; 3 3 3; 2 1 8]
1 3 0
temos a matriz  3 3 3 . Podemos fazer referência da seguinte
2 1 8
forma: V(i,j) onde i é a linha e j a coluna. Assim V(3,2)=1, V(1,3)=0
etc...

No Matlab

>> V=[1 1 0]
V=
1 1 0

>> 5*V
ans =
5 5 0

>> K=[2 3 5]
K=
2 3 5

>> V+K
ans =
3 4 5
6.4. VETORES E MATRIZES 109

>> M=[1 3 0;3 3 3;2 1 8]


M=
1 3 0
3 3 3
2 1 8

>> M(1,3)
ans = 0

>> M(2,3)
ans = 3

>> M(2,2)
ans = 3

>> c=7*M(2,2)
c = 21

>> 2*M
ans =
2 6 0
6 6 6
4 2 16

Nota: Não poderı́amos deixar de comentar o comando size que


retorna as dimensões de uma matriz. Se M é uma matriz qualquer
então o comando [L,C]=size(M) grava na variável L o número de
linhas de M e na variável C o número de colunas. Caso M seja um
vetor L é sempre igual a 1.

Exemplo 6.4.1. Vamos escrever um Script para preencher um vetor


com os números pares de 1 a 100.

posi=1; num=2;

while posi < 100

v(posi)=num;
posi=posi+1;
110 CAPÍTULO 6. INTRODUÇÃO AO MATLAB

num=num+2;

end

disp(V)

Exemplo 6.4.2. Escreva um Script para preencher uma matriz 4×4


da seguinte forma:
 
0 0 0 0
 1 1 1 1 
 
 2 2 2 2 
3 3 3 3
for i=1:1:4
for j=1:1:4
M(i,j)=i-1;
end
end

disp(M)

Exemplo 6.4.3. 3) Escreva um Script para colocar em ordem cres-


cente o vetor abaixo:

V=[0 1 1 5 5 2 3 8 1]

for i=1:1:9
for j=1:1:9
if v(j)¿v(j+1)
aux=v(j);
v(j)=v(j+1);
v(j+1)=aux;
endif
endfor
endfor

disp(v)
6.5. FUNÇÕES EM MATLAB 111

Nota: Em outras linguagens terı́amos que criar um pequeno pro-


grama para multiplicar duas matrizes A e B. No Matlab essa rotina
já está pronta, desde que seja possı́vel a multiplicação. Basta efetuar
A*B.

6.5 Funções em Matlab


Você certamente já utilizou algumas funções pré-definidas, por ex-
emplo a função sqrt(x) que retorna a raiz quadrada de x, a função
cos(x) que retorna ao co-seno de x e muitas outras já descritas. Nesta
seção vamos aprender a criar estas funções que são tão importantes
para os problemas que queremos resolver.
Uma função em Matlab é bem parecida com uma função matemática,
ou seja, dado um valor x a função associa a um valor y. No com-
putador o valor x é chamado de entrada, y de saı́da e a associação
de processamento.
Assim a função F (x) = x2 pode ser construı́da da seguinte forma:

function [F ] = F (x)

F = x2

end

Quando retornamos para a linha de comando (>>) basta aplicar


a função F (x) em um número qualquer que teremos o quadrado desse
número.Por exemplo:

>> F (2)
ans=4

>> F (3)
ans=9

Nota: Cada função deve ser salva com o mesmo nome do cabeçalho.
Outro fato; cada função deve ter um arquivo diferente.
112 CAPÍTULO 6. INTRODUÇÃO AO MATLAB

Exemplo 6.5.1. Vamos escrever uma função para receber como en-
trada, um número inteiro positivo N e tenha como saı́da:

i)1 se o número for primo.

ii) 0 se o número não for primo.

function [eprimo]=eprimo(N )

X=2;
Sinal=1;
while (X <= (f ix(sqrt(N ))))
if (rem(N,X))==0
Sinal=0;
end
X=X+1;
end

eprimo=Sinal

end

Exemplo 6.5.2. Vamos escrever uma função para receber dois val-
ores x, y inteiros positivos e retornar ao quociente inteiro da divisão
de x por y.

function [quociente]=quociente(x,y)

X − rem(x, y)
quociente=
y

end

Exemplo 6.5.3. Vamos escrever uma função para receber um vetor


V qualquer e retornar o vetor em ordem crescente.

function [cresc]=cresc(V)

[L,C]=size(V)
for i=1:1:C-1
6.6. GRÁFICOS BIDIMENSIONAIS 113

for j=1:1:C-1
if V(j)>V(j+1)
aux=V(j);
V(j)=V(j+1);
V(j+1)=aux;
end
end
end

cresc=V

end

6.6 Gráficos Bidimensionais


O processo para criar um gráfico de uma função f (x) é bem simples
e parecido com aquele dado ensino fundamental, ou seja, criamos
uma tabela de pontos com valores (x, y) e simplesmente marcamos
estes pontos no plano. Veja passo a passo a construção do gráfico da
função f (x) = x2 no intervalo [−3 3].

1- Criamos a função f (x) (como feito acima em F (x) = x2 )

2 - Criamos o vetor X com espaçamento de 1/100 no intervalo


[−3 3].

x = −3 : 0.01 : 3

3 - Não sabemos o tamanho do vetor X por isso usaremos o


função pré-definida size() para descobrir o tamanho do vetor X. e
assim calcular o vetor Y = f (X).

[L,C]=size(X)
for i=1:C
Y = f (X(i));
end
114 CAPÍTULO 6. INTRODUÇÃO AO MATLAB

4- Para traçar o gráfico basta usar a função pré-definida plot().


Essa função simplesmente marca no plano os pontos (X(i), Y (i)) dos
vetores X e Y .

plot(X, Y ) veja o resultado a figura 6.1.

0
−3 −2 −1 0 1 2 3

Figura 6.1: Gráfico de f (x) = x2

Modo rápido: O modo com que criamos o gráfico acima, per-


mite mais controle sobre o mesmo. Mas existe uma outra forma de
construir mais rapidamente o gráfico de f (x). Veja:

>> x = −3 : 0.01 : 3
>> y = x.2
>> plot(x, y)

Observação 6.3. Para saber mais sobre a função plot() basta digitar
>> help plot1 na linha de comando. Para construir dois gráficos
ao mesmo tempo basta utilizar o comando hold on depois de cada
gráfico.
1
Isso pode ser feito com qualquer função pré-definida
6.7. GRÁFICOS TRIDIMENSIONAIS 115

6.7 Gráficos Tridimensionais


O processo para construir gráficos tridimensionais é bem parecido
com o bidimensional. Vamos construir o gráfico de f (x, y) = x2 + y 2
na caixa D = [−1 1] × [−2 3].

>> [X, Y ] = meshgrid(−1 : 0.1 : 1, −2 : 0.1 : 3);


>> Z = X. ∧ 2 + Y. ∧ 2 Z é uma matriz, por isso, usamos X. e
Y. no cálculo.
>> surf (Z) Veja figura 6.2 As curvas de nı́vel podem ser

10

0
60
50
25
40
20
30 15
20 10
10 5
0 0

Figura 6.2: Gráfico de f (x, y) = x2 + y 2

construı́das com a função contour(z). Para desenhar gráfico + curva


de nı́vel use surf c(z)(veja figura 6.3).

10

0
60
50
25
40
20
30 15
20 10
10 5
0 0

Figura 6.3: Gráfico+(curva de nı́vel) de f (x, y) = x2 + y 2


116 CAPÍTULO 6. INTRODUÇÃO AO MATLAB

6.8 Exercı́cios
6.8.1. Escrever um SCRIPT que imprima em ordem decrescente os
ı́mpares entre 500 e 100.

6.8.2. Escrever um SCRIPT para ler um inteiro positivo N e dizer


se N é ou não múltiplo de 7. Terminar o SCRIPT quando N for
negativo.

6.8.3. Escreva um SCRIPT para imprimir a seqüência:

1 2 3 4 -5 -6 -7 -8 9 10 11 12 -13 -14 -15 -16 17 18 19 20 ...


<1500

6.8.4. Escreva um SCRIPT para imprimir a seqüência:

1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 ... <1500

6.8.5. Escreva um SCRIPT para imprimir a seqüência de primos


menores que 1000.

6.8.6. Escreva um SCRIPT para ler um inteiro positivo N e im-


primir o valor de S onde:

0 1 1 2 3 5 8 F
S= + + + + + + + ... +
1
| 2 3 5 7 {z 11 13 P}
N termos

F é a seqüência de Fibonacci
P é a seqüência de Primos

6.8.7. Escrever uma função em Octave para calcular a norma de um


vetor de tamanho qualquer, onde
q
kV k = x21 + x22 + . . . + x2n

6.8.8. Escrever uma função em Octave para calcular a norma de


uma Matriz Aij onde,
X
kAij k = |aij |
ij
6.8. EXERCÍCIOS 117

6.8.9. Crie uma função para dizer se um ”N”pertence ou não a


seqüência abaixo:

1 2 4 7 11 16 17 19 22 26 31 32 34 37 41 46 ... 10000

6.8.10. Escreva uma função para calcular o módulo de uma matriz


nxn, onde

|A| = M ax{|aij |}

6.8.11. Criar o gráfico da função f (x) = 2x2 + sen(x) no intervalo


[−2 5].

6.8.12. Construa o gráfico da função f (x, y) = sen(xy) na caixa


D = [−2 2, −2 2]
118 CAPÍTULO 6. INTRODUÇÃO AO MATLAB
Capı́tulo 7

Implementação dos
Métodos

Neste capı́tulo vamos implementar os métodos numéricos que foram


estudados anteriormente. Lembramos que o pré-requisito será ape-
nas o conhecimento básico de algoritmos. Caso o leitor não tenha
familiaridade com o Matlab, recomendamos a leitura do Capı́tulo de
Introdução ao Matlab. Nossa ordem será:

i) Algoritmo em português.
ii) Algoritmo em Matlab (em forma de função).
iii) Quando possı́vel, função pré-definida do Matlab.

7.1 Sistemas Lineares

Algoritmo 7.1.1. Método da substituição retroativa, ou retro-substituição.


Sistema triangular superior.

119
120 CAPÍTULO 7. IMPLEMENTAÇÃO DOS MÉTODOS

Entrada : aij , i ≥ j, bi , j ≤ n (aij elementos da M. dos Coeficientes.

1 : xn = bn /a(k, k)
2 : para k = n − 1 : 1
3 : soma = bk
4 : para j = k + 1 : n
5 : soma = soma − akj xj
6 : f im para
7 : xk = soma
akk
8 : f im para

Saı́da : x

NO MATLAB

function [retro]=retro(A)
[L,C]=size(A);
n=L;
m=C;
x(n)=A(n,m)/A(n,n);
for k=n-1:-1:1
soma=A(k,m);
for j=k+1:n
soma=soma-A(k,j)*x(j);
end
x(k)=soma/A(k,k);
end
retro=x

Nota: Veja que no Matlab, usamos a matriz ampliada do sis-


tema(matriz dos coeficientes + vetor de termos independentes), as-
sim trocamos os elementos bi por A(i, m).

Exemplo: 
 2x1 + x2 − x3 = 0
Vamos aplicar a função retro() no sistema x2 − x1 = −2

1/2x3 = 2
7.1. SISTEMAS LINEARES 121

>> A = [2 1 − 1 0; 0 1 − 1 − 2; 0 0 1/2 1]
>> retro(A)
ans =
1 0 2

Algoritmo 7.1.2. Método da eliminação Gaussiana.


Entrada : A = [aij ] Matriz n × m

1 : para k = 1 : n
2 : se akk = 0
3 : para s = k + 1 : n
4 : se ask 6= 0
5 : troque a linha s com linha k
6 : f im se
7 : f im para
8 : f im se
9 : para i = k + 1 : n
10 : mik = aik /akk
11 : para j = k : m
12 : aij = ai j − mik akj
13 : f im para
14 : f im para
15 : f im para

Saı́da : matriz triangularA = [aij ]

NO MATLAB

function [egauss]=egauss(A)
[L,C]=size(A);

n=L;
m=C;
for k=1:n
if A(k,k)==0
for s=k+1:n
if A(s,k) =0
auxiliar=A(k,:);
122 CAPÍTULO 7. IMPLEMENTAÇÃO DOS MÉTODOS

A(k,:)=A(s,:);
A(s,:)=auxiliar;
end
end
end
for i=k+1:n
m(i,k)=A(i,k)/A(k,k);
for j=k:m
A(i,j)=A(i,j)-m(i,k)*A(k,j);
end
end
end
egauss=A

Nota: A função egauss() pode ser composta com a função retro()


para resolver uma sistema n×n qualquer, ou seja, retro(egauss(A)),
onde A é a matriz ampliada do sistema.

Exemplo:

 2x1 + x2 − x3 = 0
Considere o sistema x1 + x2 − x1 = −1

4x1 − x2 − 1/2x3 = 3

>> A = [2 1 − 1 0; 1 1 − 1 − 1; 4 − 1 − 1/2 3]
>> retro(egauss(A))
ans =
1 0 2

Algoritmo 7.1.3. Método da eliminação Gaussiana com pivotea-


7.1. SISTEMAS LINEARES 123

mento.
Entrada : A = [aij ] Matriz n × m

1 : para k = 1 : n
2 : w = |akk |
3 : para s = k + 1 : n
4 : se |ask | > w
5 : w = |ask |, r = s
6 : f im se
7 : f im para
8 : troque a linha s com linha k
9 : para i = k + 1 : n
10 : mik = aik /akk
11 : para j = k : m
12 : aij = ai j − mik akj
13 : f im para
14 : f im para
15 : f im para

Saı́da : matriz triangularA = [aij ]

NO MATLAB

function [egausspiv]=egausspiv(A)
[L,C]=size(A);
n=L;
m=C;
for k=1:n
w=abs(A(k,k));
for s=k+1:n
if abs(A(s,k))¿w
w=abs(A(s,k));
r=s;
end
end
for i=k+1:n
m(i,k)=A(i,k)/A(k,k);
124 CAPÍTULO 7. IMPLEMENTAÇÃO DOS MÉTODOS

for j=k:m
A(i,j)=A(i,j)-m(i,k)*A(k,j);
end
end
end
egausspiv=A;
Algoritmo 7.1.4. Decomposição LU.

Entrada : An×n

1 : para i = 1 : n
2 : para j = i : n
i−1
X
3 : uij = aij − mik ukj
k=1
4 : para j =Ãi + 1 : n !
i−1
X
5 : mji = aji − mjk ukj /uii
k=1
6 : f im para
7 : f im para
8 : f im para

Saı́da : matrizes L e U

NO MATLAB

function [fatlu]=fatlu(A)
[L,C]=size(A); n=L;
for i=1:n
for j=i:n
u(i,j)=A(i,j);
for k=1:i-1
u(i,j)=u(i,j)-m(i,k)*u(k,j);
end
end
for j=i+1:n
7.1. SISTEMAS LINEARES 125

m(j,i)=A(j,i);
for k=1:i-1
m(j,i)=m(j,i)-m(j,k)*u(k,i);
end
u(i,j)=u(i,j)/u(i,i);
end
end
L=m U=u

Nota: Não fizemos nesse algoritmo, mas é necessário completar


a diagonal principal da matriz L com 1.


1 1 2
Exemplo: Considere a matriz A =  1 2 3 .
0 1 5

>> A = [1 1 2; 1 2 3; 0 1 5]
>> f atlu(A)
L=
0 0
1 0
0 1

U=
1 1 2
0 1 1
0 0 4

Algoritmo 7.1.5. Método Iterativo de Jacobi.


126 CAPÍTULO 7. IMPLEMENTAÇÃO DOS MÉTODOS

Entrada : An×n , bn , x0 , δ

1 : k=1
2 : enquantokxk − xk−1 k > δ
3 : para i = 1 : n 
Xn
1 
4 : xk+1
i = bi − aii xkj 
aii
j=1,j6=i
5 : f im para
6 : f im enquanto

Saı́da : solução aproximada xk


NO MATLAB

function [jacobi]=jacobi(A,x,delta)
[L,C]=size(A);
n=L;
m=C;
k=2;
x(:,2)=1;
cont=1;
while norm(x(:,k)-x(:,k-1))>delta
k=k+1;
if cont==1
k=k-1;
cont=0;
end
for i=1:n
x(i,k)=A(i,m);
for j=1:n
if j =i
x(i,k)=x(i,k)-A(i,j)*x(j,k-1);
end
end
x(i,k)=x(i,k)/A(i,i)
end
7.1. SISTEMAS LINEARES 127

end
jacobi=x;

Nota: A saı́da da função jacobi() será dada pelo vetor x na


seguinte formatação:

solução → x1 x2 ... xk

↓ ↓ ↓ ↓

x11 x21 ... xk1

x12 x22 ... xk2

.. .. .. ..
. . . .

x1n x2n ... xkn

Algoritmo 7.1.6. Método Iterativo de Gauss-Seidel

Entrada : An×n , bn , x0 , δ

1 : k=1
2 : enquantokxk − xk−1 k > δ
3 : para i = 1 : 
n 
i−1
X n
X
1 bi −
4 : xk+1
i = aij xk+1
j − aij xkj 
aii
j=1 j=i+1
5 : f im para
6 : f im enquanto

Saı́da : solução aproximada xk

NO MATLAB

function [gausseidel]=gausseidel(A,x,delta)
128 CAPÍTULO 7. IMPLEMENTAÇÃO DOS MÉTODOS

[L,C]=size(A);
n=L;
m=C;
k=2;
x(:,2)=1;
cont=1;
while norm(x(:,k)-x(:,k-1))>delta
k=k+1;
if cont==1
k=k-1;
cont=0;
end
for i=1:n
x(i,k)=A(i,m);
for j=1:i-1
x(i,k)=x(i,k)-A(i,j)*x(j,k);
end
for j=i+1:n
x(i,k)=x(i,k)-A(i,j)*x(j,k-1);
end
x(i,k)=x(i,k)/A(i,i);
end
end
gausseidel=x;

Nota: A saı́da da função gausseidel() será dada pelo vetor x na


7.1. SISTEMAS LINEARES 129

seguinte formatação:

solução → x1 x2 ... xk

↓ ↓ ↓ ↓

x11 x21 ... xk1

x12 x22 ... xk2

.. .. .. ..
. . . .

x1n x2n ... xkn

Exemplo: ½
3x1 + x2 = 4
Vamos achar a solução do sistema pelo método
2x1 + 6x2 = 8
de Jacobi e em seguida pelo método de Gauss-Seidel com δ = 0.0001

NO MATLAB

>> A = [3 1 4; 2 6 8]
3 1 4
A=
2 6 8

>>jacobi(A,[0 0]’,0.0001)

Columns 1 through 7

0 1.3333 0.8889 1.0370 0.9877 1.0041 0.9986


0 1.3333 0.8889 1.0370 0.9877 1.0041 0.9986

Columns 8 through 11
1.0005 0.9998 1.0001 1.0000
1.0005 0.9998 1.0001 1.0000

>>gausseidel(A,[0 0]’,0.0001)
130 CAPÍTULO 7. IMPLEMENTAÇÃO DOS MÉTODOS

ans
0 1.3333 1.0370 1.0041 1.0005 1.0001 1.0000
0 0.8889 0.9877 0.9986 0.9998 1.0000 1.0000

Observe que o método de Jacobi retornou a solução exata (1, 1)


com δ = 0.0001 em 11 iterações, incluindo a solução inicial, en-
quanto o método de Gauss-Seidel retornou a solução exata em 7
iterações. Essa diferença tende a aumentar com o tamanho do sis-
tema.

7.2 Zeros de Função


Algoritmo 7.2.1. Método de Localização de Zeros.

Entrada : f (x), a, b, n n é o número de subintervalos

|b − a|
1 : γ=
n
2 : p0 = a
3 : para i = 1 : n
4 : pi = pi−1 + γ
5 : se f (pi )f (pi−1 ) ≤ 0
6 : armazenar o intervalo [pi−1 pi ] em um vetor V
7 : f im se
8 : f impara

Saı́da : V etor V

NO MATLAB

function[MLZ]=MLZ(a,b,n)
gama=abs(b-a)/n;
p(1)=a; %trocamos p(0) por p(1)
j=1;
for i=2:n+1
p(i)=p(i-1)+gama;
if(f(p(i))*f(p(i-1)))<=0
7.2. ZEROS DE FUNÇÃO 131

V(j)=p(i-1);
V(j+1)=p(i);
j=j+2;
end
end
MLZ=V;

Nota: O retorno da função M LZ() é dado pelos intervalos [v1 v2 ], [v3 v4 ], . . . , [vk−1 vk ]
onde estão os possı́veis zeros de f (x). O vetor V é dado na seguinte
formatação:

M LZ = V = v1 v2 v3 v4 . . . vk−1 vk

Exemplo:
Seja f (x) = x3 − 2x2 + 1 cujos zeros são −0.6180, 1, 1.6180.
Vamos aplicar a função M LZ() no intervalo [−1 2] com n = 10
depois com n = 500.

>> M LZ(−1, 2, 10)

ans =
-0.7000 -0.4000 0.8000 1.1000 1.4000 1.7000

>> M LZ(−1, 2, 500)

ans =
-0.6220 -0.6160 0.9980 1.0040 1.6160 1.6220

Veja que os zeros de f (x) estão nos intervalos [vi vi+1 ].

Algoritmo 7.2.2. Método do Meio Intervalo - MMI.


132 CAPÍTULO 7. IMPLEMENTAÇÃO DOS MÉTODOS

Entrada : f (x), a, b, δ

1 : enquanto |b − a| > δ
a+b
2 : x=
2
3 : se f (x) = 0
4 : x é zero, encerrar
5 : senão
6 : se f (a)f (x) < 0
7 : b=x
8 : senão
9 : a=x
10 : f im se
11 : f im se
12 : f im enquanto

Saı́da : x aproximação para o zero de f em [a b]

NO MATLAB

function[MMI]=MMI(a,b,delta)
while abs(b-a)>delta
x=(a+b)/2;
if f(x)==0
MMI=x;
return %termina a função
else
if (f(a)*f(x))¡0
b=x;
else
a=x;
end
end
end
MMI=x;
7.2. ZEROS DE FUNÇÃO 133

De acordo com o exemplo do Algoritmo 7.2.1, temos que f (x)


possui zeros em [−0.7 − 0.4], [0.8 1.1], [1.4 1.7]. Aplicando a
função M M I() em cada intervalo com delta = 0.01 temos:

>> M M I(−0.7, −0.4, 0.01)


ans =
-0.6156

>> M M I(0.8, 1.1, 0.01)


ans =
0.9969

>> M M I(1.4, 1.7, 0.01)


ans =
1.6156

Tente fazer com delta = 0.0001, veja que os resultados são mel-
hores.

Algoritmo 7.2.3. Método da Secante.

Entrada : f (x), a, b, δ

1 : se f (a)f 00 (a) > 0


2 : c = a, x0 = b
3 : senão
4 : c = b, x0 = a
5 : f im se
f (x0 )
6 : x1 = x0 − (x0 − c)
f (x0 ) − f (c)
7 : n=1
8 : enquanto|xn − xn−1 | > δ
9 : n=n+1
f (xn−1 )
10 : xn = xn−1 − (xn−1 − c)
f (xn−1 ) − f (c)
11 : f im enquanto

Saı́da : xn
134 CAPÍTULO 7. IMPLEMENTAÇÃO DOS MÉTODOS

NO MATLAB

function[secante]=secante(a,b,delta)
if (f(a)*ddf(a))>0 %ddf() é a derivada segunda de f(x)
c=a;
x(1)=b;
else
c=b;
x(1)=a;
end
x(2)=x(1)-(f(x(1))*(x(1)-c))/(f(x(1))-f(c));
n=2;
while abs(x(n)-x(n-1))>delta
n=n+1;
x(n)=x(n-1)-(f(x(n-1))*(x(n-1)-c))/(f(x(n-1))-f(c));
end
secante=x(n);

De acordo com o exemplo do Algoritmo 7.2.1, temos que f (x)


possui zeros em [−0.7 − 0.4], [0.8 1.1], [1.4 1.7]. Aplicando a
função secante() em cada intervalo com delta = 0.01 temos:

>> secante(−0.7, −0.4, 0.01)


ans =
-0.6163

>> secante(0.8, 1.1, 0.01)


ans =
1.0003

>> secante(1.4, 1.7, 0.01)


ans =
1.6169

Tente fazer com delta = 0.0001, veja que os resultados são mel-
hores. Compare com o M M I().

Nota: A função ddf () deve ser criada como a função f ().


7.2. ZEROS DE FUNÇÃO 135

Algoritmo 7.2.4. Método de Newton.

Entrada : f (x), f 0 (x), a, b, δ

1 : se f (a)f 00 (a) > 0


2 : x0 = a
3 : senão
4 : x0 = b
5 : f im se
f (x0 )
6 : x1 = x0 − 0
f (x0 )
7 : n=1
8 : enquanto|xn − xn−1 | > δ
9 : n=n+1
10 : xn = xn−1 − ff0(x n−1 )
(xn−1 )
11 : f im enquanto

Saı́da : xn
NO MATLAB

function[newton]=newton(a,b,delta)
if (f(a)*ddf(a))>0 %ddf() é a derivada segunda de f(x)
c=a;
x(1)=b;
else
c=b;
x(1)=a;
end
x(2)=x(1)-f(x(1))/ddf(x(1));
n=2;
while abs(x(n)-x(n-1))>delta
n=n+1;
x(n)=x(n-1)-f(x(n-1))/ddf(x(n-1));
end
newton=x(n);

Nota: A função ddf () deve ser criada como a função f ().


136 CAPÍTULO 7. IMPLEMENTAÇÃO DOS MÉTODOS

Algoritmo 7.2.5. Método da Iteração Linear.

Entrada : φ(x), x0 , δ

1 : x1 = φ(x0 )
2 : n=1
3 : enquanto |xn − xn−1 | > δ
4 : n=n+1
5 : xn = φ(xn−1 )
6 : f im enquanto

Saı́da : xn

No Matlab podemos encontrar os zeros, utilizando a função pré-


definida f zero(0 f uncao0 , [a b]). Por exemplo:
Desejamos encontrar o zero de f (x) = sen(x) no intervalo [1 4]

>> x = f zero(0 sin(x)0 , [1 4]


x = 3.1416

No caso polinomial, como exemplo, considere f (x) = x2 − 3x + 2.

>> p = [1 − 3 2] vetor que define o polinômio.

r = roots(p) calcula as raı́zes(zeros) do polinômio.


2
r=
1

7.3 Interpolação

Algoritmo 7.3.1. Avaliação do polinômio interpolador de Lagrange.


7.3. INTERPOLAÇÃO 137

Entrada : x, X = [x0 , x1 , · · · , xn ], f (X) = [f (x0 ), f (x1 ), · · · , f (xn )]

1 : soma = 0
2 : para i = 0 : n
3 : P =1
4 : para j = 0 : n
5 : se j 6= i
(x − xj )
6 : P =P
(xi − xj )
7 : f im se
8 : f im para
9 : soma = soma + f (xi )P
10 : f im para

Saı́da : soma

No Matlab podemos utilizar a função interp1. Veja exemplo:

>> X = [1 2 3] %vetor de pontos X.

>> f X = [1 4 9] %vetor imagem f (X)

>> interp1(X, f X, 2.5) %calcula o polinômio interpolador e


avalia em 2.5
ans = 6.5

>> p = polyf it(X, f X, 2) %exibe os coeficientes do polinômio


interpolador de grau 2.

p=
1.0000 0.0000 0.0000

Logo nosso polinômio interpolador será p(x) = 1x2 + 0x + 0 = x2 .


138 CAPÍTULO 7. IMPLEMENTAÇÃO DOS MÉTODOS

7.4 Integração

Algoritmo 7.4.1. Integração por trapézios.

Entrada : x0 , h

1 : soma = 0
2 : para i = 1 : n − 1
3 : xi = xi−1 + h
4 : soma = soma + f (xi )
5 : f im para
h
6 : IT r = [f (x0 ) + 2soma + f (xn )]
2

Saı́da : IT r

No Matlab integramos com o comando trapz() que calcula a in-


tegral por trapézios. Por exemplo:
Z 2
Desejamos calcular (x2 + 1) dx.
0

>> x = 0 : 0.01 : 2 faz uma partição do intervalo [0 2] com


h = 0.01

>> y = x. ∧ 2 + 1 avalia a função no vetor x.

IT R = trapz(x, y) calcula o valor da integral.

IT R = 4.6667

Algoritmo 7.4.2. Integração pela 1a Regra de Simpson.


7.5. OTIMIZAÇÃO 139

Entrada : x0 , h

1 : soma = 0
2 : para i = 1 : n − 1
3 : xi = xi−1 + h
4 : se (i par)
5 : soma = soma + 2f (xi )
6 : senão
7 : soma = soma + 4f (xi )
8 : f im se
9 : f im para
h
10 : IS = [f (x0 ) + soma + f (xn )]
3

Saı́da : IS

No Matlab utilizamos o comando quad(0 f 0 , a, b), onde f deve ser


a função a ser integrada no intervalo [a b]. Lembramos que nesse
caso a função f deve ser escrita com arquivo .m. Por exemplo:
Z 2
Desejamos calcular a (x2 + 1) dx.
0

Arquivo f.m
function [f ] = f (x)
f = x. ∧ 2 + 1

>> quad(0 f 0 , 0, 2)
ans = 4.6667

7.5 Otimização
Algoritmo 7.5.1. Mı́nimo de uma função(de uma variável) pelo
método da seção áurea.
140 CAPÍTULO 7. IMPLEMENTAÇÃO DOS MÉTODOS

Entrada : f (x), a, b, δ

1 : enquanto |b − a| > δ
2 : xa = b − 0.618(b − a)
3 : xb = a + 0.618(b − a)
4 : se f (xa ) < f (xb )
5 : b = xb
6 : xb = a + 0.618(b − a)
7 : senão
8 : a = xa
8 : xa = b − 0.618(b − a)
8 : f im se
9 : f im enquanto
xa + xb
10 : I=
2

Saı́da : I
NO MATLAB

function[aurea]=aurea(a,b,delta)
while abs(b-a)>delta
xa=b-0.618*(b-a);
xb=a+0.618*(b-a);
if f(xa)<f(xb)
b=xb;
xb=a+0.618*(b-a);
else
a=xa;
xa=b-0.618*(b-a);
end
end
I=(xa+xb)/2;
aureo=I;

Considerando f (x) = sen(x), vamos encontrar o zero de f (x)


em [0 2π] com δ = 0.01, aplicando a função que acabamos de criar
7.5. OTIMIZAÇÃO 141

aurea(). Em seguida vamos comparar o resultado com a função


pré-definida do Matlab f min().

>> aurea(0, 2 ∗ pi, 0.01)


ans =
4.7128

>> f min(0 sin(x)0 , 0, 2 ∗ pi)


ans =
4.7124
Experimente δ = 0.0001.

Algoritmo 7.5.2. Mı́nimo de uma função (duas variáveis) pelo


método do gradiente.

Entrada : f (x), x0 , δ

1 : k=0
2 : enquanto kxk − xk−1 k > δ
3 : gk = ∇f (xk )
4 : dk = −gk
5 : αk = mı́nimo por seção áurea de gk (t) = f (xk + tdk )
6 : xk+1 = xk + αk dk
7 : k =k+1
8 : f im enquanto

Saı́da : xk

NO MATLAB

function[Mgrad]=Mgrad(x,delta)
k=2;
x=x’; %transforma x em um vetor coluna
x(:,k)=1;
cont=1;
while norm(x(:,k)-x(:,k-1))>delta
if cont =1
k=k+1;
142 CAPÍTULO 7. IMPLEMENTAÇÃO DOS MÉTODOS

end
gk=gradiente(x(:,k-1)’,0.0001);
dk=-gk;
ak=aurea(0,1,x(:,k-1)’,dk’,0.0001);
x(:,k)=x(:,k-1)+ak*dk;
cont=cont+1;
end
Mgrad=x(:,k)’

A função M grad() faz uso das funções gradiente() e aurea().


Vamos conhecer essas funções;
gradiente(): Essa função calcula o gradiente da função f no
ponto x. O δ serve como grau de precisão. Lembrando que, a função
f (x) deve ser
diferenciável.

Entrada: x, δ
Saı́da: ∇f (x)

function[gradiente]=gradiente(x,delta)
[L,C]=size(x);
for i=1:C
k=x;
k(i)=x(i)+delta;
s(i)=((f(k)-f(x))/delta);
end
gradiente=s’;

aurea(): Fizemos uma pequena modificação(veja abaixo) no Al-


goritmo ?? para adaptar ao método gradiente. Essa modificação in-
clui na entrada do mesmo o ponto xk e a direção dk. Lembrando
que, estamos interessados em encontrar o mı́nimo da função gk(t) =
f (xk + tdk), e nesse caso, t varia em [a b]. Dessa forma podemos
definir manualmente a, b de tal forma que xk + tdk não saia da caixa
onde queremos o mı́nimo da função.

function [aurea]=aurea(a,b,xk,dk,delta)
while abs(b-a)>delta
7.5. OTIMIZAÇÃO 143

xa=b-0.618*(b-a);
xb=a+0.618*(b-a);
if f(xk+xa*dk)<f(xk+xb*dk)
b=xb;
xb=a+0.618*(b-a);
else
a=xa;
xa=b-0.618*(b-a);
end
end
I=(xa+xb)/2;
aureo=I;
Algoritmo 7.5.3. Mı́nimo de uma função (duas variáveis) por direção
aleatória.

Entrada : f (x), x0 , δ

1 : k=0
2 : enquanto kxk − xk−1 k > δ
4 : dk = rand(n, 1)
5 : αk = mı́nimo por seção áurea de gk (t) = f (xk + tdk )
6 : xk+1 = xk + αk dk
7 : k =k+1
8 : f im enquanto

Saı́da : xk

O algoritmo em Matlab para direções aleatórias é análogo ao


método do gradiente. Apenas modificamos a direção dk com a função
pré-definida do Matlab rand(2, 1) e aumentamos o intervalo da seção
áurea. Veja:

NO MATLAB

function [aleatorio]=aleatorio(x,delta)
k=2;
x=x’;
144 CAPÍTULO 7. IMPLEMENTAÇÃO DOS MÉTODOS

x(:,k)=1;
cont=1;
while norm(x(:,k)-x(:,k-1))>delta
if cont =1
k=k+1;
end
dk=rand(2,1);
ak=aurea(-1,1,x(:,k-1)’,dk’,0.0001);
x(:,k)=x(:,k-1)+ak*dk;
cont=cont+1;
end
aleatorio=x(:,k)’

Exemplo de aplicação: Considere a função f (x1 , x2 ) = (x1 +


1)2 + (x2 + 2)2 .Vamos aplicar as funções M grad() e aleatorio() com
o ponto inicial (4, 5) e δ = 0.001. O valor k representa a número de
iterações em cada função:

>> M grad([4 5], 0.001)


k= 3
Mgrad =
-1.0000 -2.0000

>> aleatorio([4 5], 0.001)


k = 60
aleatorio =
-1.0027 -1.9969

Veja que o método do gradiente resolve com apenas 3 iterações,


enquanto o método aleatório em 60. Assim fica claro que, para
funções diferenciáveis o método do gradiente é muito melhor. Mas
nunca é demais lembrar que, o mesmo só pode ser aplicado em
funções diferenciáveis e com ponto inicial na bacia de atração do
mı́nimo.
Também podemos utilizar as funções pré-definidas do Matlab.
Assim para encontrar mı́nimo de uma função de Rn em R, utilizamos
a função f mins(0 f 0 , x0). Onde f deve ser uma função que recebe um
vetor em Rn e x0 deve ser o valor inicial. Veja:
7.6. EXERCÍCIOS 145

Desejamos encontrar o mı́nimo da função f : R2 −→ R dada


por f (x1 , x2 ) = (x1 + 1)2 + (x2 + 2)2 . Tomamos como ponto inicial
x0 = (4, 5).

>> x = f mins(0 (x(1) + 1) ∧ 2 + (x(2) + 2) ∧ 20 , [4 5]


x = −1.0000 − 2.00000

7.6 Exercı́cios
7.6.1. Teste os algoritmos nos exercı́cios e exemplos, dos capı́tulos
anteriores.

7.6.2. Implemente em Matlab o método da Iteração Linear.

7.6.3. Utilizando o método de localização de zeros - MLZ associado


com o método da Iteração Linear encontre os 3 zeros reais de f (x) =
x5 − 4x3 + x − 1 no intervalo [−3 3]. Faça o mesmo para o método
do meio intervalo MMI, Secante e Newton.

7.6.4. Implemente em Matlab o método de interpolação de lagrange,


cujo algoritmo foi dado. Faça uma função que retorne aos coefi-
cientes do polinômio interpolador, compare sua função com a função
pré-definida do Matlab. Dica: use sistemas lineares.

7.6.5. Implemente em Matlab os algoritmos de Integração. Compare


os resultados com as funções pré-definidas do Matlab.

7.6.6. Na função M grad() utilizamos a função aurea() com o inter-


valo fixo em [0 1]. Explique por que na função aleatorio() utilizamos
a função aurea() com o intervalo [−1 1].
Índice Remissivo

Áurea, método, 86 Decomposição LU, 8


Direção aleatória, 92
Algoritmo, definição, 96 Direto Método, 4
Ampliada, matriz, 2 Doolitle método, 11
Atratoras, bacias, 90
Elementares, operações, 4
Bacias de atração, 90 Eliminação Gaussiana, 8
Bolzano, teorema de, 30 Erro, 17
Briot-Ruffini, método de, 62 Erro de truncamento, 59
Cauchy, 38 Função contı́nua, 25
Cauchy, seqüência de, 27 Função de Iteração, 39
Comentários finais Zeros de função, Função de iteração, 11
41 Função, zeros de uma, 25
Complexos, sistemas lineares, Funções pré-definidas, 104
20
Condicional, número, 17 Gauss método, 4
Contı́nua, função, 25 Gauss, método iterativo de, 15
Convergência no método da se- Gaussiana, eliminação, 8
cante, 33 Geométrica, solução, 2
Convergência no método de New- Global, máximo, 83
ton, 35 Global, mı́nimo, 83
Convergência, método de Ja- Gradiente de uma função, 88
cobi e Gauss-Seidel, 19 Grout método, 11
Critério de linhas, 19
Critério de parada, 14 Infinitas soluções, 3
Inflexão, ponto, 85
DDF, 57 Interpolação, 53
DDF, fórmula geral interpolação, Interpolação de Lagrange, 54
58 Interpolação por DDF, 57

146
ÍNDICE REMISSIVO 147

Inversão de matriz, 10 Métodos Iterativos, 11


Inversão, matriz, 10 Mı́nimo global, 83
Iteração linear, método da, 36 Mı́nimo local, 83
Iteração, função de, 11 Matriz ampliada, 2, 4, 5
Iterativo, método do refinamento, Matriz dos coeficientes, 2
17 Matriz quadrada, 2
Iterativos métodos, 11 Matriz triangular inferior, 8
Matriz triangular superior, 8
Jacobi, método, 11 Meio intervalo, método do, 29
Multiplicidade de um zero, 50
Linear, Sistema, 1
Local, máximo, 83 Número condicional, 17, 18
Local, mı́nimo, 83 Newton, convergência no método
Localização de zeros, 41 de, 35
Localização de zeros, método Newton, método, 33
de, 27
LU decomposição, 8 Operações elementares, 4
Otimização, 83
Máximo local, 83
Método Briot-Ruffini, 62 Parada, Critério de, 14
Método da iteração linear, 36, Partição, 28
42 Pivo, 7
Método da Seção Áurea, 86 Pivotação parcial, 8
Método da secante, 31, 41 Ponto de inflexão, 85
Método de Doolitle, 11 Ponto fixo, 36
Método de Gauss, 4
Quadrada, matriz, 2
Método de Grout, 11
Método de Localização de Ze- Refinamento iterativo, método
ros, 27 do, 17
Método de Newton, 33, 41 Resı́duo, vetor, 17
Método do meio intervalo, 29,
41 Script, 105
Método do Refinamento Itera- Seção áurea, 86
tivo, 17 Secante, convergência no método
Método iterativo de Jacobi, 11 da, 33
Método iterativo Gauss-Seidel, Secante, método da, 31
15 Seidel, método iterativo de, 15
Métodos Diretos, 4 Seqüência de Cauchy, 27
148 ÍNDICE REMISSIVO

Seqüência monótona, 30
Sistemas Complexos, 20
Sistemas Lineares, 1
Solução de um sistema n × n,
3
Solução Geométrica de um sis-
tema, 2
Substituição Retroativa, 9
Substituição retroativa, 6

Teorema de Bolzano, 30
Teorema de Rolle, 60
Teorema de Weirstrass, 53
Teorema do ponto de inflexão,
85
Teorema Interpolação de La-
grange, 54
triangular matriz, 8

Vetor incógnitas, 2
Vetor resı́duo, 17
Vetor termos independentes, 2

Zeros de função, 25
Zeros de um polinômio, 43
Referências Bibliográficas

[1] Leônidas C. Barroso. Cálculo Numérico com aplicações. Harbra,


1987.

[2] José Luiz Boldrini. Álgebra Linear. Ed. Harbra, 1980.

[3] Djairo Guedes de Figueiredo. Análise I. Ed. LTC, 1996.

[4] Howard. Eves. Introdução à História da Matemática. Ed.


Polı́gono, 1989.

[5] I.N. Hernstein. Tópicos de Álgebra. Ed. Polı́gono, 1970.

[6] Elon Lajes Lima. Curso de Análise, vol.1. Ed. SBM, 1993.

[7] Elon Lajes Lima. Curso de Análise, vol.2. Ed. SBM, 1999.

[8] Elon Lajes Lima. Álgebra Linear. Ed. SBM, 1980.

[9] Walter Rudin. Princı́pios de Análise Matemática. Ed. Ao Livro


Técnico, 1971.

[10] Francis Scheid. Análise Numérica. McGraw-Hill, 1991.

[11] Dercio Sperandio. Cálculo Numérico: caracteristicas matemati-


cas e computacionais dos métodos numéricos. Ed. Prentice Hall,
2003.

149

Você também pode gostar