Cálculo Numérico Com MATLAB
Cálculo Numérico Com MATLAB
Cálculo Numérico Com MATLAB
−1
−2
−3
−4
−5
−6
−7
−8
50
40 50
30 40
20 30
20
10
10
0 0
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
Bibliografia 149
Lista de Figuras
V
5.3 Seqüência (pn ) se aproximando do mı́nimo de f (x) . . 90
5.4 Bacias de atração . . . . . . . . . . . . . . . . . . . . . 91
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
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
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
y
4
0 x
-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7
-1
-2
-3
-4
Exemplo
½ 1.1.3. Consideremos os sistema· ¸
2x1 + x2 = 3 2 1
, veja que det =0
4x1 + 2x2 = −6 4 2
y
4
0 x
-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7
-1
-2
-3
-4
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 .
½ ½
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
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 .
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
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 .
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
1 0 0 y1 5 y1 = 5
2 1 0 y2 = 3 =⇒ 2y1 + y2 = 3
1 3 1 y3 −1 y1 + 3y2 + y3 = −1
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
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
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
φ(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
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
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:
1
kx3 − x2 k = 2 < δ parar o método.
n
bi 1 X
xki = − aij xj
aii aii
j=1,j6=i
16 CAPÍTULO 1. SISTEMAS LINEARES
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.
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
r0
· ¸ · ¸ · ¸ · ¸
k 2.001 1 1.001 2 −0.000001
r = − . =
1.999 0.999 1 0.001 0
| {z } | {z } | {z }
b A xk
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 = M + Ni
B = c + di (1.5)
X = s + ti
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
x1 s1 t1
X= = + i
x2 s2 t2
| {z } | {z }
s t
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.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
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.
25
26 CAPÍTULO 2. ZEROS DE FUNÇÃO
a b a b
x x
a b a b
x x
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.
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
Teorema 2.4. Uma seqüência (xn ) real converge se, e somente se,
é de Cauchy.
a b
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:
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 .
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
a x x0 2 ε b
x
x 1
lim xn = ².
n→∞
Para isso, tome somente os intervalos aproveitados:
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:
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
f (b))
y
a b
x
x 0 x 1 x 2
x 3
ε
(a,f (
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)
xn = b − f (b)−f (xn−1 ) (b − xn−1 ) (2.1)
lim xn = L.
n→∞
f (b)
L=b− (b − L) =⇒ f (L) = 0
f (b) − f (L)
Como ² é o único zero em [a b] então ² = L.
a ε b x
x x
1 0
L1 L0
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 )
lim xn = L.
n→∞
f (L)
L=L− =⇒ f (L) = 0
f 0 (L)
Como ² é o único zero em [a b] então ² = L.
n xn |xn − xn−1 |
0 1.5 1.5> δ
1 1.416 0.08> δ
2 1.414 0.002≤ δ ←− parar o método
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:
demonstração
y
φ(x)
f( x )2
f( x )1
y=x
f( x )0
x 1 x 2 x 3 b
x
x 0
ε
y
φ(x) y=x
x 2 x 3 x 1 b
x
x 0
... ε ...
ou seja,
|xn+1 − xn | ≤ λn |x1 − x0 |
Passando o limite nesta última desigualdade teremos:
≤ |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→∞
demonstração
2.6. MÉTODO DA ITERAÇÃO LINEAR 39
|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 .
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
sen(x) £1 ¤
|φ02 (x)| = | − 2 | < 1, para todo x ∈ 5 2
£1 ¤
|φ03 (x)| = |3 + sen(x)| > 1, para todo x ∈ 5 2
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.
£Exemplo
¤ 2.7.1. Encontre um zero de f (x) = e− 10 x + x2 − 10 em
5 7 −5
2 2 com δ = 10
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
demonstração
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
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
Veja que
= 2 max{241/3 , 101/2 , 3}
√
= 2 10
46 CAPÍTULO 2. ZEROS DE FUNÇÃO
L
2
x
-8 -6 -4 -2 0 2 4 6 8
-2
-4
-6
-8
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
Consideremos o polinômio
µ ¶
1n
P1 (x) = x p .
x
6
Veja em [5]
48 CAPÍTULO 2. ZEROS DE FUNÇÃO
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
µ ¶ µ ¶
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
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
2
L
x
0 L 1
-8 -6 -4 -2 2 4 6 8
-2
-4
-6
-8
p0 (x) = 0
p00 (x) = 0
..
.
pm−1 (x) = 0
pm (x) 6= 0
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
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
2.9.15. Para cada item abaixo dê um exemplo onde não podemos
aplicar o:
b)Método da Secante
c)Método de Newton
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:
53
54 CAPÍTULO 3. INTERPOLAÇÃO
n
X n
Y
f (xi ) (x − xj )
p(x) =
(xi − xj )
i=0 j=0,j6=i
¡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
..
.
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
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
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
= bk Pk (xk )
o que implica em
p(xk )
bk = para k = 0, 1, . . . , n (3.3)
Pk (xk )
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
demonstração
3.3. INTERPOLAÇÃO COM DIFERENÇAS DIVIDIDAS FINITAS - DDF57
f (x1 ) f (x0 )
ii - f [x0 , x1 ] = x1 −x0 + x0 −x1
p(x) − p(x0 )
p[x, x0 ] =
x − x0
ou
como
então
= − 1.257
π x + 1, 425
f n+1 (ξ)
Et (x) = (x − x0 )(x − x1 ) · · · (x − xn )
(n + 1)!
demonstração
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
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
3π
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.
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)
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
b1 = a2 = 1
b0 = a1 + cb1 = 5
R = a0 + cb0 = 11
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
a) 12mm
b) 22mm
c) 31mm
a) 95 min
b) 130 min
c) 170 min
3.7. EXERCÍCIOS 67
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
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?.
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.
x 0 x 1
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
x x
0 1 x 2
... x x
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
Z x1
√
[f (x1 ) − f (x0 )] π(1 + 3) ∼
f (x) dx = (x1 − x0 ) = = 1.07287
x0 2 8
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 .
y
p(x)
x 0 x 1 x 0
Z x2 Z x1
f 3 (ξ)
Et (x) dx = (x − x0 )(x − x1 )(x − x2 ) dx
x0 x0 3!
f 3 (ξ)h4
=
12
f 3 (ξ)h4
EI =
12
4.3. 1a REGRA DE SIMPSON 75
x 0 x 1 x 2
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
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
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
Z 1 √ √
F (t) dt = F (−1/ 3) + F (1/ 3)
−1
Z 1 n
X
F (t) dt = wi F (ti )
−1 i=0
n i ti wi
1 1;0 ±0.57735027 1
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
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
4.5 Exercı́cios
Z 1
4.5.1. Calcule o valor da integral f (x) dx apenas sabendo que:
0
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.
83
84 CAPÍTULO 5. MÍNIMOS E MÁXIMOS
k0 k1 x
a b
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
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,
Assim seja a0 = a e b0 = b.
a1 = b0 − 0.618(b0 − a0 ) e b1 = a0 + 0.618(b0 − a0 )
Novamente
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
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.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
Sc = {(x, y) ∈ R2 / f (x, y) = c}
p1
p3
p5 p0
p2
p4
−2
−4
−6
−8
−10
25
20 25
15 20
10 15
10
5
5
0 0
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
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.5.
5.7.6.
5.7.7.
94 CAPÍTULO 5. MÍNIMOS E MÁXIMOS
Capı́tulo 6
Introdução ao 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:
95
96 CAPÍTULO 6. INTRODUÇÃO AO MATLAB
inicio
fim
3 - Repetir 6 vezes
4 - teclado -1
5 - Repetir 5 vezes
fim
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
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:
Em Matlab
disp
exemplo:
98 CAPÍTULO 6. INTRODUÇÃO AO MATLAB
Em Matlab
exemplo:
SE <COMPARAÇÃO>
FIM SE
SE <COMPARAÇÃO>
Comandos 1
SENÃO
Comandos 2
FIM SE
Em Matlab
100 CAPÍTULO 6. INTRODUÇÃO AO MATLAB
Comandos Comandos 1
end else
Comandos 2
end
exemplo:
if A < B
else
end
FIM PARA
FIM PARA
Em Matlab
for i=j:k:M
end
exemplo:
for i=3:1:5
disp(’mundo’)
end
Estrutura ENQUANTO
102 CAPÍTULO 6. INTRODUÇÃO AO MATLAB
ENQUANTO <COMPARAÇÃO>
FIMENQUANTO
A=5
ENQUANTO A < 10
Imprima(’mundo’)
FIMENQUANTO
A=5
ENQUANTO A < 10
Imprima(’mundo’)
6.3. ITENS BÁSICOS DO MATLAB 103
A=A+1
FIMENQUANTO
Em Matlab
end
exemplo:
A=5
while A < 10
disp(’mundo’)
A=A+1
end
& E
| Ou
∼ Não
Xor Ou excludente
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.
soma=0;
for i=1:1:100
soma=soma+i;
end
disp(soma)
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
1 3 5 7 I
S= + + + + ··· +
1 2 3 4 N
S=0; I=1;
for j=1:1:N
S=S+(I/j);
I=I+2;
end
X=0; Y=1
for i=2:1:N
Z=X+Y
X=Y;
Y=Z;
end
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
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)
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
posi=1; num=2;
v(posi)=num;
posi=posi+1;
110 CAPÍTULO 6. INTRODUÇÃO AO MATLAB
num=num+2;
end
disp(V)
disp(M)
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
function [F ] = F (x)
F = x2
end
>> 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:
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
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
x = −3 : 0.01 : 3
[L,C]=size(X)
for i=1:C
Y = f (X(i));
end
114 CAPÍTULO 6. INTRODUÇÃO AO MATLAB
0
−3 −2 −1 0 1 2 3
>> 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
10
0
60
50
25
40
20
30 15
20 10
10 5
0 0
10
0
60
50
25
40
20
30 15
20 10
10 5
0 0
6.8 Exercı́cios
6.8.1. Escrever um SCRIPT que imprima em ordem decrescente os
ı́mpares entre 500 e 100.
1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 ... <1500
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
1 2 4 7 11 16 17 19 22 26 31 32 34 37 41 46 ... 10000
|A| = M ax{|aij |}
Implementação dos
Métodos
i) Algoritmo em português.
ii) Algoritmo em Matlab (em forma de função).
iii) Quando possı́vel, função pré-definida do Matlab.
119
120 CAPÍTULO 7. IMPLEMENTAÇÃO DOS MÉTODOS
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
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
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
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
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
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
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
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
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
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;
solução → x1 x2 ... xk
↓ ↓ ↓ ↓
.. .. .. ..
. . . .
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
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;
seguinte formatação:
solução → x1 x2 ... xk
↓ ↓ ↓ ↓
.. .. .. ..
. . . .
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
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
|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.
ans =
-0.7000 -0.4000 0.8000 1.1000 1.4000 1.7000
ans =
-0.6220 -0.6160 0.9980 1.0040 1.6160 1.6220
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
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
Tente fazer com delta = 0.0001, veja que os resultados são mel-
hores.
Entrada : f (x), a, b, δ
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);
Tente fazer com delta = 0.0001, veja que os resultados são mel-
hores. Compare com o M M I().
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);
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
7.3 Interpolação
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
p=
1.0000 0.0000 0.0000
7.4 Integração
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
IT R = 4.6667
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
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;
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)’
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’;
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
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)’
7.6 Exercı́cios
7.6.1. Teste os algoritmos nos exercı́cios e exemplos, dos capı́tulos
anteriores.
146
ÍNDICE REMISSIVO 147
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
[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.
149