Você está na página 1de 193

Computação Numérica

Notas de Aula

Joilson B. A. Rêgo
“O espírito do homem pode descobrir
até o infinito, apenas sua preguiça impõe
limites à sua sabedoria e suas descober-
tas”. —Bossuet.
Conteúdo

0.1 Prefácio 11

I Background
0.2 O Espaço Vetorial normado Rn 15
0.2.1 Norma no Rn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
0.2.2 Produto interno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
0.2.3 Projeção Ortogonal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

0.3 Matrizes 21
0.3.1 Norma Matricial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

0.4 Autovalores e autovetores 21


0.5 Determinante e Matriz Inversa 22
0.6 Sequências Convergentes 24

II Unidade I
1 Conceitos Básicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.1 Modelagem Matemática e Resolução de Problemas 27
1.2 Aproximação 28
1.3 Exercícios 30
1.3.1 Propostos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

2 Representação em ponto flutuante . . . . . . . . . . . . . . . . . . . . . 33


2.1 Erros 33
2.1.1 Erro absoluto × erro relativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

2.2 Sistemas numéricos 34


2.2.1 Conversão de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.2.2 Representação numérica no computador . . . . . . . . . . . . . . . . . . . . . . . . 38
2.2.3 Representação em ponto fixo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.2.4 Representação em ponto flutuante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

2.3 Erros em soluções numéricas 39


2.3.1 Erro de truncamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.3.2 Erro de arredondamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

2.4 Exercícios Propostos 41

3 Expansão em Séries de Taylor . . . . . . . . . . . . . . . . . . . . . . . . . . . 43


3.1 Série de Taylor 43
3.2 Série de Taylor em duas variáveis 48
3.3 Exercícios 49
3.3.1 Resolvido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.3.2 Propostos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

4 Solução de Equações não lineares . . . . . . . . . . . . . . . . . . . . . 55


4.1 Método da Bissecção 57
4.2 Método da Falsa Posição 59
4.3 Método de Newton 60
4.4 Método da Secante 63
4.5 Iteração funcional e ponto fixo 64
4.6 Sistemas de equações não lineares 66
4.6.1 Método de Newton na solução de sistemas não lineares . . . . . . . . . . . . 67

4.7 Exercícios Propostos 68


III Unidade II
5 Sistemas de Equações Lineares - SEL . . . . . . . . . . . . . . . . . . . 73
5.1 Métodos Diretos 74
5.1.1 Método de Eliminação de Gauss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.1.2 Método de Gauss - Jordan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.2 Métodos de Decomposição 77
5.2.1 Decomposição Cholesky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
5.2.2 Decomposição LU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
5.3 Métodos Iterativos 85
5.3.1 Método iterativo de Jacobi - Richardson . . . . . . . . . . . . . . . . . . . . . . . . . . 85
5.3.2 Método de Gauss - Seidel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
5.3.3 Métodos diretos x métodos iterativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
5.4 Exercícios Propostos 89

6 Ajuste de Curvas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
6.1 Regressão por Mínimos Quadrados 91
6.1.1 Caso Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
6.1.2 Ajuste não linear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
6.2 Ajuste trigonométrico 102
6.3 Exercícios Propostos 107

7 Interpolação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.1 Polinômios interpoladores de Lagrange 112
7.2 Polinômios interpoladores por Diferenças Divididas de Newton 117
7.3 Exercícios Propostos 119

IV Unidade III
8 Integração Numérica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
8.1 Regra do trapézio 124
8.2 As Regras de Simpson 127
8.2.1 Regra 1/3 de Simpson generalizada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
8.2.2 Regra 3/8 ou segunda regra de Simpson . . . . . . . . . . . . . . . . . . . . . . . . . . 130
8.3 Quadratura de Gauss 131
8.4 Exercícios Propostos 134

9 Resolução Numérica de EDO’s . . . . . . . . . . . . . . . . . . . . . . . . . 137


9.1 Método de Euler 139
9.2 Métodos de Runge - Kutta 142
9.2.1 Métodos de Runge-Kutta de Segunda Ordem - RK2 . . . . . . . . . . . . . . . 143
9.2.2 Métodos de Runge-Kutta de Terceira Ordem - RK3 . . . . . . . . . . . . . . . . 146
9.3 EDO’s de ordem superior 149
9.4 Exercícios Propostos 150

V Laboratórios
10 Laboratórios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
10.0.1 Python e Pacotes necessários . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
10.1 Laboratório 01 : Expansão em Séries de Taylor 156
10.1.1 Aproximação utilizando séries de Taylor . . . . . . . . . . . . . . . . . . . . . . . . . . 156
10.1.2 Erros de truncamento nas séries de Taylor . . . . . . . . . . . . . . . . . . . . . . . . 157
10.1.3 Exercícios Propostos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
10.2 Laboratório 02 : Solução de Equações não lineares 160
10.2.1 Acuracidade da solução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
10.2.2 Método da Bissecção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
10.2.3 Método da Falsa Posição ou Regula Falsi . . . . . . . . . . . . . . . . . . . . . . . . . 164
10.2.4 Método de Newton-Raphson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
10.2.5 Método da Secante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
10.2.6 Exercícios Propostos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
10.3 Laboratório 03 : Sistemas de Equações Lineares - SEL 169
10.3.1 Método de Eliminação de Gauss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
10.3.2 Decomposição LU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
10.3.3 Método Iterativo de Gauss - Seidel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
10.3.4 Exercícios Propostos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
10.4 Ajuste de Curvas 176
10.5 Interpolação 184
10.6 Resolução Numérica de EDO’s 188
Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189

Índice Remissivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191


0.1 Prefácio 11

0.1 Prefácio
Este trabalho é fruto de uma coletânea das minhas notas de aulas na disciplina de CN -
Computação Numérica ministrada nos últimos anos na Escola de Ciência e Tecnologia
da Universidade Federal do Rio Grande do Norte (ECT - UFRN). Esta coletânea, não
substitui os livros textos e têm como objetivo secundário auxiliar no encaminhamento dos
estudos e atividades durante o desenvolvimento da disciplina.
O principal objetivo ao apresentar ao longo do texto, os principais conceitos da computação
numérica, é auxiliar o aluno na resolução de problemas da engenharia por meio de métodos
numéricos e posterior implementação computacional para aferição dos resultados obtidos e
conclusões. Portanto, para um bom aproveitamento do curso é recomendável ao estudante
conhecimentos básicos em Álgebra Linear, Cálculo Diferencial e Integral e Linguagem de
Programação. Na seguinte tabela segue algumas dicas de técnicas de estudo que podem
ser implementadas pelo aluno ao longo do curso. É apenas uma referência e em nenhum
momento tende a substituir técnicas ou métodos adotados individualmente por cada um.

Joilson B. A. Rêgo
Junho, 2021
I
Background

0.2 O Espaço Vetorial normado Rn


0.3 Matrizes
0.4 Autovalores e autovetores
0.5 Determinante e Matriz Inversa
0.6 Sequências Convergentes
0.2 O Espaço Vetorial normado Rn 15

0.2 O Espaço Vetorial normado Rn


Definição 0.2.1 Seja n ∈ Z+ , então uma n-tupla ordenada é uma sequência de n
números reais (x1 , x2 , · · · , xn ). O conjunto de todas as n- tuplas é denominado o espaço
n- dimensional ou Rn .

É fácil mostrar que o espaço Rn é um espaço vetorial.

0.2.1 Norma no Rn
Definição 0.2.2 — Norma. Seja V ⊆ Rn um espaço vetorial. Uma função k.k : V 7→ R
é denominada norma se ∀ x, y ∈ V e λ ∈ R, temos:

||x|| ≥ 0; ||x|| = 0 ⇔ x = 0 (1)


||λ x|| = |λ | · ||x|| (2)
||x + y|| ≤ ||x|| + ||y||. (3)

Um espaço vetorial V, munido com uma norma é geralmente denominado de espaço


vetorial normado.
 Exemplo 0.1 (Rn , ||.||2 ) é um espaço vetorial normado. Geralmente, denominado de
espaço euclidiano. 

Considere x = (x1 x2 · · · xn )T ∈ Rn

!1
n p
p
kxk p = ∑ |xi| ; p ≥ 1 → norma p
i=1
n
kxk1 = ∑ |xi | = |x1 | + |x2 | + · · · + |xn | → norma um ou da soma
i=1
!1
n 2 p
kxk2 = ∑ |xi|2 = x1 2 + x2 2 + · · · xn 2 → norma Euclidiana
i=1

kxk∞ = max |xi | = max{|x1 | , |x2 | · · · |xn |} → norma infinita ou do máximo


1≤i≤n
16

0.2.2 Produto interno


Definição 0.2.3 — Produto interno. A função h., .i : V × V 7→ R é denominada de
produto interno se, ∀x, y ∈ V e λ ∈ R, temos:

hx, xi ≥ 0; hx, xi = 0 ⇔ x = 0 (4)


hx, yi = hy, xi (5)
hx + λ y, zi = hx, yi + λ hy, zi (6)
hx, λ y + zi = λ hx, yi + hx, zi . (7)

R se observarmos as equações (1) e (4) podemos tirar a seguinte relação


p
kxk2 = hx, xi

Dados, x = (x1 x2 · · · xn )T ∈ Rn e y = (y1 y2 · · · yn )T ∈ Rn , temos que

n
hx, yi = xT y = x1 .y1 + x2 .y2 + · · · + xn .yn = ∑ xk .yk
k=1

se x = (x1 x2 · · · xn )T ∈ Cn (espaço n - vetorial complexo) e y = (y1 y2 · · · yn )T ∈ Cn ,


temos que
n
hx, yi = xT y∗ = x1 .y∗1 + x2 .y∗2 + · · · + xn .y∗n = ∑ xk .y∗k = yH x
k=1

onde y∗ representa o complexo conjugado, yH o hermitiano do vetor y e, no espaço


vetorial Cn o produto interno é geralmente denominado de produto hermitiano.
Dois vetores no Rn ou no Cn são ditos ortogonais se,

hx, yi = 0.

Também são ditos ortonormais se,

||x||2 = ||y||2 = 1.

Além disto, um conjunto de vetores {e1 , e2 , · · · , en } ∈ V é ortonormal se,




1 se i = j,
ei , e j = (8)
0 se i 6= j.

um vetor no Rn pode ser escrito como uma combinação linear de uma base ortonormal, ou
seja,
x = x1 e1 + x2 e2 + · · · + xn en = hx, e1 i e1 + · · · + hx, en i en
0.2 O Espaço Vetorial normado Rn 17

||x||2 = | hx, e1 i |2 + · · · + | hx, en i |2 → hx, ei i = xi , i = 1, · · · , n

onde, 


e1 = (1, 0, · · · , 0, 0)T
T

e2 = (0, 1, 0, · · · , 0)



..
 .





e = (0, 0, · · · , 0, 1)T

n

0.2.3 Projeção Ortogonal


Definição 0.2.4 — Projeção Ortogonal. Suponha V ⊂ Rn de dimensão m. Dado
um vetor x ∈ Rn , ∃! y ∈ V tal que x − y é ortogonal a todo vetor de V. O vetor y é
denominado de projeção ortogonal do vetor x sobre o espaço V.
m
x 7→ Px (y) = ∑ hx, yk i yk
k=1

 Exemplo 0.2 Seja, E um espaço vetorial de funções polinomiais no intervalo [0; 1].
Para cada n ∈ N, seja En o subespaço de funções polinomiais de grau ≤ n. Se En possui
dimensão n + 1. Então, {p0 , p1 , · · · , pn } representa uma base do En e um polinômio
arbitrário de grau n pode ser escrito como uma combinação linear

p = a0 + a1 p1 + a2 p2 + · · · + an pn = a0 + a1 x + a2 x2 + · · · + an xn .

onde, ai ∈ R e pi ∈ En , para (i = 0, 1, · · · , n). Ou seja,





 p0 = 1

 p1 = x



p2 = x 2

 ..



 .
 p = xn

n

Num espaço de funções, podemos definir algumas normas, tais como


18
Definição 0.2.5 seja E um espaço de funções contínuas no [−1; 1]. Se f , g ∈ E, então
Z 1
k f k1 = | f (x)| dx → norma L1
−1
Z 1
h f , gi = f (x)g(x)dx → norma L2 em E ⊆ Rn
−1
Z 1
h f , gi = f (x)g∗ (x)dx → norma L2 em E ⊆ Cn
−1
Z 1
 12
2 2
k f k2 = h f , f i = f (x) dx → norma L2
−1

R nos exercícios para não sobrecarregar a notação, iremos considerar ||.||2 = ||.||

Exercício 0.1 Suponha V um espaço vetorial real com produto interno.


• Mostre que hx + y, x − yi = kxk2 − kyk2 , ∀ x, y ∈ V

hx + y, x − yi = (x + y)T (x − y) = xT x − xT y + yT x − yT y

= xT x − yT y = hx, xi − hy, yi = kxk2 − kyk2 .

• Mostre que se ||x + y|| = ||x − y||, para x, y ∈ V. Então x é ortogonal a y.

||x + y|| = ||x − y|| → kx + yk2 = kx − yk2

→ hx + y, x + yi = hx − y, x − yi

→ kxk2 + 2 hx, yi + kyk2 = kxk2 − 2 hx, yi + kyk2 → 4 hx, yi = 0

→ hx, yi = 0 → x ⊥ y.

Exercício 0.2 Suponha ||x|| = 3, ||x + y|| = 5 e ||x − y|| = 7. Calcule ||y||
(
kx + yk2 = hx + y, x + yi = kxk2 + 2 hx, yi + kxk2 = 25
2 2 2 → 2(kxk2 + kyk2 ) = 74.
kx − yk = hx − y, x − yi = kxk − 2 hx, yi + kxk = 49

||y||2 = 28 → ||y|| = 2 7


0.2 O Espaço Vetorial normado Rn 19

Exercício 0.3 Considerando o espaço de funções C ([0 ; 2π] ⊂ R, com produto interno,
Z 2π
h f (x), g(x)i = f (x)g(x)dx.
0

Mostre que o conjunto S = {1, cos(x), cos(2x), · · · , cos(nx), sen(x), sen(2x), · · · , sen(nx)},
é ortogonal.
Z 2π 2π
1
h1, cos(nx)i = cos(nx)dx = sen(nx) = 0
0 n 0
Z 2π 2π
1
h1, sen(nx)i = sen(nx)dx = − cos(nx) = 0
0 n 0
Z 2π
hsen(mx), cos(nx)i = sen(mx)cos(nx)dx = 0.
0
Se m 6= n, então o produto das funções trigonométricas, pode ser reescrito como uma
soma, ou seja,



sen((m + n)x) = sen(mx)cos(nx) + sen(nx)cos(mx)

sen((m − n)x) = sen(mx)cos(nx) − sen(nx)cos(mx)





sen((m + n)x) + sen((m − n)x) = 2sen(mx)cos(nx)

(9)


cos((m + n)x) = cos(mx)cos(nx) − sen(mx)sen(nx)


cos((m − n)x) = cos(mx)cos(nx) + sen(mx)sen(nx)






cos((m − n)x) + cos((m + n)x) = 2sen(mx)sen(nx)

Z 2π
1
hsen(mx), cos(nx)i = sen((m + n)x) + sen((m − n)x)dx
2 0

1 cos((m + n)x) cos((m − n)x) 2π


 
= + = 0.
2 m+n m−n 0
Se m = n, simplesmente teremos

1  2 2π
hsen(mx), cos(nx)i = sen (mx) 0 = 0
2m
Z 2π
1
hsen(mx), sen(nx)i = cos((m − n)x) + cos((m + n)x)dx = 0, m 6= n.
2 0
Z 2π
1
hcos(mx), cos(nx)i = cos((m + n)x) + cos((m − n)x)dx = 0, m 6= n.
2 0

Note que o conjunto S forma uma base ortogonal no espaço C ([0 ; 2π]). Podemos
20

aproveitar e ortonormalizar esta base, para isso,


 Z 2π


 k1k = dx = 2π


 0
 Z 2π
2
ksen(nx)k = hsen(nx), sen(nx)i sen2 (nx)dx = π (10)

 0

 Z 2π
 kcos(nx)k2 = hcos(nx), cos(nx)i cos2 (nx)dx = π


0

com isso, o conjunto


 
1 1 1 1 1
√ , √ cos(x), · · · , √ cos(nx), √ sen(x), · · · , √ sen(nx) . (11)
2π π π π π

forma uma base ortonormal. 

Exercício 0.4 Sejam 


Sk (n) = e2πi nkN
(12)
S (n) = e2πi nlN
l

os k, l - ésimos termos complexos de uma função de base. Mostrar que tais funções são
ortogonais e, a partir das mesmas, crie um conjunto ortonormal.
ortogonalidade:

N−1 N−1 N−1 n(k−l)


2πi nk nl
hSk , Sl i = ∑ Sk (n)Sk∗ (n) = ∑e N −2πi N
e = ∑ e2πi N

n=0 n=0 n=0

1 − e2πi(k−l)
= (k−l)
→ Sk ⊥ Sl , k 6= l.
1 − e2πi N

Norma,

N−1 (k−k) √
hSk , Sk i = ∑ e2πi N = N → kSk k = N.
n=0

Portanto,
nk
Sk (n) e2πi N
S̃k (n) = = √
kSk k N
constitui um conjunto ortonormal. Pois,
(

1 se k = l
S̃k , S̃l =
0 se k 6= l


0.3 Matrizes 21

Proposição 0.2.1. Se {v1 , v2 , · · · , vn } formam uma base ortonormal num espaço com
produto interno V, então um vetor w ∈ V, pode ser representado com relação a base por,

w = hw, v1 i v1 + hw, v2 i v2 + · · · + hw, vn i vn . (13)

0.3 Matrizes
A análise de algoritmos matriciais requer o uso de normas matriciais. Por exemplo, a
qualidade de uma solução em sistemas lineares pode não ser a ideal se a matriz dos
coeficientes não for adequada. Para isso, precisamos de um quantificador, uma métrica
(por exemplo, distância) no espaço matricial. Normas matriciais podem ser usadas para
fornecer essa métrica ou quantificador.

0.3.1 Norma Matricial


Definição 0.3.1 Seja V ⊆ Rm×n um espaço isomorfo ao Rmn . Uma função k.k : V 7→ R
é denominada norma se ∀ A, B ∈ V e α ∈ R, temos:

kAk ≥ 0, ∀ A ∈ V e; kAk = 0 ⇔ A = 0 (14)


kαAk = |α| kAk , ∀ α ∈ R, ∀ A ∈ V (15)
kA + Bk ≤ kAk + kBk , ∀ A, B ∈ V. (16)

Considere A = (ai j )i=1,2,··· ,m ; j=1,2,··· ,n


m
kAk1 = max ∑ ai j → norma coluna
1≤ j≤n i=1
n
kAk∞ = max ∑ ai j → norma linha
1≤i≤m j=1
s
m n
kAk2 = ∑ ∑ |ai j |2 → norma de Frobenius
i=1 j=1

constituem as normas que serão utilizadas ao longo do texto para matrizes.

0.4 Autovalores e autovetores


seja,
Ax = λ x ⇒ (A − λ I)x = 0

encontrar os autovalores da matrix A é resolver e seguinte equação:

det(A − λ I) = 0
22

e os respectivos autovetores, satisfazem a equação,

(A − λ I)x = 0

0.5 Determinante e Matriz Inversa


O determinante constitui uma função det : Rn×n → R, que associa a uma matriz quadrada
um escalar. Para simplificar os conceitos começaremos definindo o determinante de uma
matriz elementar 2 × 2.
Definição 0.5.1 Seja A uma matriz 2 × 2, podemos definir o determinante como,
!
a b
A= ⇒ det(A) = ad − bc
c d

e a matriz inversa pode ser obida por meio da seguinte expressão,


!
1 d −b
A−1 =
det(A) −c a

 Exemplo 0.3 !
2 −3
A= → det(A) = 2.2 − (−3).4 = 16.
4 2
e ! !
1 3
1 2 3
A−1 = = 8 16
16 −4 2 − 14 1
8


R
AA−1 = A−1 A = I

 Exemplo 0.4 ! ! !
1 3
2 −3 1 0
AA−1 = 8 16 =
4 2 − 41 1
8 0 1
! ! !
1 3
2 −3 1 0
A−1 A = 8 16 = .
− 41 1
8 4 2 0 1


Para matrizes n × n, iremos abordar outros conceitos, tais como menores e co fato-
res.
0.5 Determinante e Matriz Inversa 23
Definição 0.5.2 Seja An×n , o menor Mi j do elemento ai j é o determinante da matriz
obtida, eliminando-se a iésima linha a a jésima coluna de A. O co fator Ci j é dado por:

Ci j = (−1)i+ j Mi j .

de modo que,  
c11 c12 · · · c1n
c21 c22 · · · c2n 
 
C=
 ..

 .


cn1 cn2 · · · cnn
corresponde a matriz de co fatores de A. A transposta dessa matriz é denominada
a matriz adjunta da matriz A e é denotada por ad j(A). O determinante pode ser
calculado utilizando,
n
det(A) = ∑ ai jCi j = a11C11 + a12C12 + · · · + a1nC1n
j=1

Teorema 0.5.1 Se A é uma matriz invertível, então

1
A−1 = ad j(A)
det(A)

 Exemplo 0.5  
0 2 1
A = 3 1 2
 

5 1 0

1 2 3 2 3 1
M11 = = −2; M = = −10; M13 = = −2

12
1 0 5 0 5 1

2 1 0 1 0 2

M21 = = −1; M22 = = −5; M23 = = −10

1 0 5 0 5 1

2 1 0 1 0 2
M31 = = 3; M32 = = −3; M33 = = −6

1 2 3 2 3 1

C11 = (−1)1+1 M11 = −2; C12 = (−1)1+2 M12 = 10; C13 = (−1)1+3 M13 = −2;

C21 = (−1)2+1 M21 = 1; C22 = (−1)2+2 M22 = −5; C23 = (−1)2+3 M23 = 10;

C31 = (−1)3+1 M31 = 3; C32 = (−1)3+2 M32 = 3; C33 = (−1)3+3 M33 = −6.
24

Assim,
det(A) = 0.C11 + 2.C12 + 1.C13 = 18;

ou
det(A) = 3.C21 + 1.C22 + 2.C23 = 18;

ou
det(A) = 5.C31 + 1.C32 + 0.C33 = 18.

De mdo que,  
−2 1 3
1 
A−1 =  10 −5 3 

18
−2 10 −6


0.6 Sequências Convergentes


Em alguns problemas não é possível a obtenção de uma solução exata. Por isso, na
computação numérica trabalhamos geralmente com o conceito de aproximação, e como
tal, está sujeito a presença de erros. Portanto, é imprescindível no desevolvimento dos
algoritmos, levar em conta o conceito de convergência.
Uma vez que foi abordado o conceito de norma anteriormente, se faz necessário abordar
o conceito de sequências no Rn e, sempre que possível estender as mesmas os principais
conceitos e resultados das sequências em R.
Definição 0.6.1 Dado x ∈ Rn , dizemos que uma sequência (xk )k∈N no Rn é conver-
gente se,
∀ε > 0, ∃k0 ∈ N, tal que k ≥ k0 ⇒ |xk − x| < ε.

Ou seja,
lim xk = x
k→∞
caso contrário, a sequência é dita divergente.

No caso matricial,
Definição 0.6.2 Uma sequência (Ak )k∈N no Rm×n converge, se existe uma matrix
A ∈ Rm×n tal que,
lim kAk − Ak = 0
k→∞

Proposição 0.6.1. Um sequência (xk )k∈N no Rn é dita limitada, se existe M > 0 em R tal
que,
kxk k ≤ M, ∀k ∈ N.
II
Unidade I

1 Conceitos Básicos . . . . . . . . . . . . . . . 27
1.1 Modelagem Matemática e Resolução de Pro-
blemas
1.2 Aproximação
1.3 Exercícios

2 Representação em ponto flutuante


33
2.1 Erros
2.2 Sistemas numéricos
2.3 Erros em soluções numéricas
2.4 Exercícios Propostos

3 Expansão em Séries de Taylor . . 43


3.1 Série de Taylor
3.2 Série de Taylor em duas variáveis
3.3 Exercícios

4 Solução de Equações não lineares


55
4.1 Método da Bissecção
4.2 Método da Falsa Posição
4.3 Método de Newton
4.4 Método da Secante
4.5 Iteração funcional e ponto fixo
4.6 Sistemas de equações não lineares
4.7 Exercícios Propostos
1. Conceitos Básicos

1.1 Modelagem Matemática e Resolução de Problemas

O curso têm como objetivo principal a utilização de ferramentas computacionais ou mé-


todos para a obtenção de uma solução numérica aproximada que geralmente aplicamos
a problemas que não apresentam uma solução exata ou analítica. A solução numérica é
dividida em 05 (cinco) etapas distintas.

• Definição do problema;
• Modelagem Matemática ou formulação do problema;
• Resultados numéricos ou gráficos;
• Implementação computacional;
• Análise e interpretação dos resultados obtidos.

Como exemplo, iremos definir o seguinte problema:


Um pára-quedista de massa 78, 6 kg pula de um balão de ar quente parado. Deseja-se
calcular a velocidade anterior à abertura do pára-quedas. Sabendo que o coeficiente de
arrasto é igual a 15, 5 kg/s. Uma vez definido o problema é necessário (se possível) a
modelagem matemática do problema. Ou seja,

dv dv c dv
∑ F = m.a = m. dt → Fd − Fv = m. → g− v =
dt m dt
28 Capítulo 1. Conceitos Básicos

onde, a representa a aceleração, Fd a força devido a aceleração da gravidade, Fv a força


devido à resistência do ar, g a aceleração da gravidade, m a massa, c o coeficiente de arrasto
e v a velocidade do paraquedista. Portanto, o modelo matemático pode ser definido pela
seguinte EDO de primeira ordem:

dv c
= g − v. (1.1)
dt m

Cuja solução analítica é obtida por meio de um dos métodos de resolução matemática de
Equações Diferenciais Ordinárias (EDO’s) de primeira ordem. No caso, utilizaremos fator
integrante.

dv c dv c c c m
Z
+ v = g → e( /m)t +v e( /m)t = ge( /m)t → v.e( /m)t = g e( /m)t dt → v(t) = g +C.e( /m)t
c c c c

dt m dt m c

considerando v(0) = 0, obtemos,

m −(c/m)t

v(t) = g 1−e (1.2)
c

que representa a solução analítica ao problema proposto. No entanto, nem sempre é


possível obter uma solução analítica em diversos problemas na Engenharia. Neste caso,
utilizaremos o conceito de aproximação.

1.2 Aproximação
O Principal objetivo é determinar por meio de aproximações, uma função v(t) que satisfaça
a EDO, isto é, v0 (t) = f (t, v) com v(t0 ) = v0 como condição inicial. Assim sendo, iremos
aproximar a derivada (reta tangente) pela reta secante num dado intervalo finito fechado.
Ou seja,
dv ∆v v(ti+1 ) − v(ti )
≈ = (1.3)
dt ∆t ti+1 − ti

A Equação (1.3) é denominada de aproximação por diferença dividida finita da derivada


no instante ti . Substituindo-a na Equação (1.1) obteremos a seguinte relação,
 c 
v(ti+1 ) = v(ti ) + g − v(ti ) (ti+1 − ti ) (1.4)
m

de posse destas informações podemos seguir à próxima etapa que trata da obtenção
de resultados numéricos e gráficos para análise dos resultados obtidos através de uma
implementação computacional.
1.2 Aproximação 29

Figura 1.1: O uso de uma diferença finita para aproximar a primeira derivada de v com
relação a t

Considerando inicialmente o paraquedista em repouso, ou seja, v(t0 ) = 0. Assim, a par-


tir das grandezas definidas no problema inicial, substituindo na equação (1.4), considerando
ti+1 = 1s para i = 0. Obtemos,
   
15, 5 15, 5
v(t1 ) = v(t0 ) + 9, 8 − v(t0 ) (t1 − t0 ) = 0 + 9, 8 − .0 (1 − 0) = 9, 8m/s
78, 6 78, 6

Continue os cálculos, de forma análoga, para se obter valores adicionais na tabela


abaixo. O resultado está representado graficamente na figura (1.2), onde vemos uma
comparação entre a solução analítica e a solução numérica obtida.

tempo (s) velocidade m/s


0 0,0
1 9,8
2
3
4
5
t→∞
Tabela 1.1: Tabela dos valores aproximados para a obtenção da velocidade do paraquedista
em relação ao tempo.
30 Capítulo 1. Conceitos Básicos

50

45

40

35

30

velocidade (m/s)
25

20

15

10

5 Solução exata
Solução aproximada
0
0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30
tempo(s)

Figura 1.2: Comparação entre as soluções numéricas e analíticas do problema proposto.

por último devemos interpretar os resultados tirando algumas conclusões em relação a


solução apresentada:
• Claramente surge um erro entre a solução analítica e a numérica, devido ao fato de
usarmos aproximações;
• Para minimizar o erro é necessário uma diminuição no passo, ou seja, no ∆t ou um
aumento no tempo de simulação;
• quando t → ∞ podemos observar no gráfico da figura (1.2) que a solução numerica
tende a solução analítica.
Assim, podemos definir o erro como sendo a diferença entre a solução analítica e a solução
numérica. Ou seja, E = Sa − Sn .
Naturalmente surge um questionamento. Como podemos controlar e identificar o erro
quando não é possível a obtenção da solução analítica?

1.3 Exercícios
Para fixação do conteúdo apresentado, iremos apresentar alguns exercícios resolvidos e
alguns propostos.

Exercício 1.1 Um tanque de armazenamento contém um líquido à profundidade y,


onde y = 0 quando o tanque está cheio até a metade. É tirado líquido a uma vazão
constante Q, para atender à demanda. O conteúdo é reposto a uma taxa senoidal de
3Qsen2 (t). A EDO descrita para o sistema é dada por d(A.y) 2
dt = 3Qsen (t) − Q. Use o
método de aproximação para encontrar a profundidade de y de t = 0 : 0, 5 : 2. Supondo
3
A = 1200m2 , Q = 500 ms e y(0) = 0 
1.3 Exercícios 31

0.7

0.6

0.5

0.4

0.3

Nível (m)
0.2

0.1

−0.1

−0.2
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
tempo (s)

Figura 1.3: Tanque e uma simulação da dinâmica dada pela equação do exercício

dy 1
= 3sen2 (t) − Q → y(ti+1 ) = y(ti ) + 3sen2 (ti ) − Q (ti+1 − ti )

A
dt A
1
y(ti ) + 3sen2 (ti ) − 500 .(0, 5)

=
1200

tempo (s) profundidade


0,0 0,0000
0,5 -0,2083
1,0 -0,2730
1,5 -0,0288
1,0 0,3747

1.3.1 Propostos
Exercício 1.2 Considere a EDO de primeira ordem:

dy
= y.x − x3
dx

com 0 ≤ x ≤ 1, 8 e y(0) = 1. Resolva utilizando aproximação com ∆x = 0, 6. 

Exercício 1.3 A lei do resfriamento de Newton diz que a temperatura de um corpo


varia a uma taxa proporcional à diferença entre a sua temperatura e a temperatura do
meio que o cerca (a temperatura ambiente),

dT
= −k(T − Ta )
dt

onde T é a temperatura do corpo (em ◦C), t é o tempo (min), k é a constante de


proporcionalidade (por minuto) e Ta é a temperatura ambiente (◦C). Suponha que
32 Capítulo 1. Conceitos Básicos

uma xícara de café originalmente tenha a temperatura de 68◦C. Use o método de


aproximação da derivada para calcular a temperatura de t = 0 : 1 : 4 min se Ta = 21◦C
e k = 0, 017. 

Exercício 1.4 Algumas células crescem exponencialmente, levando 25 horas para do-
brar quando têm um suprimento ilimitado de nutrientes. Entretanto, conforme as células
começam a formar uma estrutura esférica e sólida, se houver o corte no suprimento
de sangue, o crescimento no centro da estrutura se torna limitado e, eventualmente, as
células começam a morrer.
• O crescimento exponencial do número de células N pode ser expresso como
mostrado, onde α é a taxa de crescimento das células. Encontre o valor de α.

dN
= αN
dt

• Escreva uma equação que descreva a taxa de variação do volume da estrutura


durante o crescimento exponencial, dado que o diâmetro de uma célula individual
é de 15 mícrons.
• Depois que um tipo particular de estrutura passa de 450 mícrons de diâmetro, as
células no centro morrem (mas continuam a tomar espaço). Determine quanto
tempo levará para que a estrutura passe deste tamanho crítico.


Exercício 1.5 Mostre que a função y(x) = x.sen(x) é solução das seguintes EDO’s:
• y + x2 cos(x) = xy0
• y00 = 2cos(x) − y
• x(y00 + y) = 2y0 − 2sen(x)


Exercício 1.6 Mostre que a função y(x) = esen(x) é solução da EDO:


• y0 = y.cos(x), com y(0) = 1
resolva a EDO numericamente por meio de aproximações e compare a solução numérica
com a analítica. 
2. Representação em ponto flutuante

Neste capítulo, abordaremos formas de representar números inteiros e reais em compu-


tadores. Iniciaremos com uma discussão sobre a definição e o tipo de erros, tais como
erro absoluto e erro relativo, seguindo dos sistemas numéricos em diferentes bases e como
efetuar a mudança de base entre tais sistemas. Então, enfatizaremos a representação de
números com quantidade finita de dígitos, mais especificamente, as representações de
números inteiros, ponto fixo e ponto flutuante em computadores. A representação de
números e a aritmética em computadores levam aos chamados erros de arredondamento e
de truncamento. Ao final deste capítulo, abordaremos o efeito de tais erros na computação
científica.

2.1 Erros
Os erros numéricos geralmente são provenientes do cálculo utilizando aproximações na
representação de quantidades exatas matematicamente. Ou seja,

Sa = Sn + e → e = Sa − Sn (2.1)

onde Sa representa a solução analítica, Sn a solução numérica e e o erro de aproximação


na operação, caracterizado como a diferença entre a solução exata (analítica) e a solução
aproximada (numérica). Geralmente os dados utilizados na resolução de um problema
na Engenharia, já possuem na sua própria natureza, erros embutidos, tais como erros
de medição, ruído térmico, dentre outros. Ou seja, os dados utilizados nas operações
34 Capítulo 2. Representação em ponto flutuante

geralmente não possuem valores exatos. Sendo assim, a solução analítica nem sempre
é possível, neste caso fazemos uso de critérios de convergência para sequências (desde
que convergentes) na medição do erro e critério de parada (abordaremos esta técnica mais
adiante).
√ n
Ex: Sa = n! e Sn = 2πn ne conforme pode ser visto na tabela (2.1).

n Sa Sn erro
1 1 0,9221 0,0779
2 2 1,9190 0,0810
3 6 5,8362 0,1638
4 24 23,5062 0,4938
5 120 118,0192 1,9808
Tabela 2.1: Tabela comparativa entre a solução analítica (Sa ) × solução numérica (Sn ) e o
erro apresentado (Sa − Sn ).

2.1.1 Erro absoluto × erro relativo


Uma vez que definimos o erro como sendo a diferença entre a solução analítica e a
numérica, se faz necessário uma melhor acuracidade em relação ao mesmo.
Assim sendo, iremos definir o erro absoluto como

Ea = |Sa − Sn | (2.2)

e o erro relativo
Ea |Sa − Sn |
Er = = (×100%) , Sa 6= 0 (2.3)
|Sa | |Sa |
Atualmente, em inúmeros problemas aplicados, existem muitas fontes de erro: tais como,
erros simples, de medição, modelagem, etc. No entanto, iremos focar apenas nos erros
computacionais, geralmente denominados erros de arredondamento ou truncamento. Para
entender estes erros, se faz necessário um estudo preliminar de sistemas numéricos e suas
representações computacionais.

2.2 Sistemas numéricos


Para efeitos práticos, parece bastante razoável adotarmos uma forma de representar núme-
ros de modo a facilitar as operações algébricas envolvidas. Sem, dúvidas qualquer sistema
numérico pode ser representado por um polinômio da base. De maneira geral, um número
inteiro, no sistema numérico é escrito como sendo uma soma finita, na qual cada parcela é
2.2 Sistemas numéricos 35

um múltiplo de uma potência da base. Ou seja,


n
n n−1
p(b) = xb = ± an .b + an−1 .b + · · · + a1 .b + a0 = ± ∑ ai .bi (2.4)
i=0

onde x ∈ Z, ai com (0 ≤ i ≤ n) são os coeficientes do polinômio, e b representa a base.


Exemplo: x = 35432110 = 3.105 + 5.104 + 4.103 + 3.102 + 2.101 + 1.100 . No entanto,
podemos representar um número em qualquer base, lembrando que os algarismo de
representação são sempre de 0 a b − 1. Por exemplo, o sistema decimal (base 10), pode
ser representado pelos seguintes algarismos (0,1,2,3,4,5,6,7,8,9). O sistema octal (base 8)
pode ser representado por (0,1,2,3,4,5,6,7), etc.

Exercício 2.1 Represente os seguintes números inteiros na base correspondente:


• 27438 = 2.83 + 7.82 + 4.81 + 3.80
• 274310 = 2.103 + 7.102 + 4.101 + 3.100
• 212213 = 2.3113 + 1.3103 + 2.32 + 2.31 + 1.30


2.2.1 Conversão de base


parte inteira
O principal objetivo numa conversão de base, é manipular e entender operações de uma
dada representação em uma nova base. Pois, muitos sistemas funcionam com bases
distintas, tais como, binária (base 2), octal (base 8) e hexadecimal (base 16). No entanto,
para facilitar a plena compreensão, iremos apresentar um algoritmo que nos permite
entender e trabalhar com qualquer base. O algoritmo da divisão de Euclides, ou divisão
com restos.
Teorema 2.2.1 — O Algoritmo da divisão de Euclides. Dados dois inteiros a e b
com b > 0, existem unicos inteiros q e r tais que,

a = qb + r (2.5)

com 0 ≤ r < b, q é denominado de quociente e r o resto da divisão de a por b.

Às vezes r também é dito o resto de a módulo b. Quando b > 0, r é indicado por


r = a mod b ≡ mod(a, b).
36 Capítulo 2. Representação em ponto flutuante

Exercício 2.2 Converter os seguintes números inteiros na base apresentada para a base
solicitada:
• 27410 =?3 


274 = 91.3 + 1




 91 = 30.3 + 1

 30 = 10.3 + 0
⇒ 27410 = 1010113 .


 10 = 3.3 + 1




 3 = 1.3 + 0

 1 = 0.3 + 1

• 5310 =?2 


53 = 26.2 + 1




26 = 13.2 + 0

 13 = 6.2 + 1
⇒ 5310 = 1101012


 6 = 3.2 + 0




 3 = 1.2 + 1

 1 = 0.2 + 1

• 5310 =?3 


53 = 17.3 + 2

 17 = 5.3 + 2
⇒ 5310 = 12223


 5 = 1.3 + 2

 1 = 0.3 + 1


Uma dúvida natural é, como proceder quando trabalharmos com bases que não é necessari-
amente a base decimal? Por exemplo: 235 =?4 uma maneira prática é utilizarmos a base
10 como ponte, ou seja, proceder da seguinte forma:
(
13 = 3.4 + 1
235 = 2.51 + 3.50 = 1310 ⇒ 235 = 314
3 = 0.4 + 3

parte fracionária
Na parte fracionária utilizaremos um método de multiplicação sucessiva pela base.
2.2 Sistemas numéricos 37

 Exemplo 2.1 Converter os seguintes números fracionários na base apresentada para a


base solicitada:

• 0, 710 =?3 


0, 7.3 = 0, 1 + 2




0, 1.3 = 0, 3 + 0

0, 3.3 = 0, 9 + 0



0, 9.3 = 0, 7 + 2 ⇒ 0, 710 = 0, 2002200220 · · ·3 .




0, 7.3 = 0, 1 + 2




0, 1.3 = 0, 3 + 0

 ..
 .
• 0, 710 =?2 
0, 7.2 = 0, 4 + 1


0, 4.2 = 0, 8 + 0





0, 8.2 = 0, 6 + 1





0, 6.2 = 0, 2 + 1

⇒ 0, 710 = 0, 101100110 · · ·2
0, 2.2 = 0, 4 + 0


0, 4.2 = 0, 8 + 0





0, 8.2 = 0, 6 + 1




 ..
.

• 0, 5310 =?4



0, 53.4 = 0, 12 + 2




0, 12.4 = 0, 48 + 0




0, 48.4 = 0, 92 + 1




0, 92.4 = 0, 68 + 3




0, 68.4 = 0, 72 + 2

0, 72.4 = 0, 88 + 2



0, 88.4 = 0, 52 + 3 ⇒ 0, 5310 = 0, 201322320110 · · ·4




0, 52.4 = 0, 08 + 2

0, 08.4 = 0, 32 + 0







0, 32.4 = 0, 28 + 1

0, 28.4 = 0, 12 + 1







0, 12.4 = 0, 48 + 0

 ..
 .


38 Capítulo 2. Representação em ponto flutuante

 Exemplo 2.2 Resolva a seguinte equação e apresente o resultado em binário.


 
5 4
2 − 2 x = 10112

 
25 − 24 x = 10112 → 24 (2 − 1) x = 1.23 + 0.22 + 1.21 + 1.20

24 .2−4 (2 − 1) x = (1.23 +0.22 +1.21 +1.20 ).2−4 → x = 2−1 +2−3 +2−4 → x = 0, 687510



 0, 6875.2 = 0, 375 + 1

0, 3750.2 = 0, 750 + 0
⇒ x = 0, 687510 = 0, 10112


 0, 7500.2 = 0, 500 + 1

0, 5000.2 = 0, 000 + 1


2.2.2 Representação numérica no computador


Nesta seção, apresentamos um modelo para aritmética computacional de números em
ponto flutuante. Existem vários modelos, mas para simplificar, escolheremos um modelo
específico e o descreveremos. O formato aritmético em ponto flutuante tornou-se o padrão
comum para aritmética de precisão simples e dupla em todo a indústria de computadores.

2.2.3 Representação em ponto fixo


n
x = ± ∑ xi β −i
i=k

onde:
• k, n ∈ Z
• 0 ≤ xi < β
• k≤0en>0
Exemplo: 11012

2.2.4 Representação em ponto flutuante


Basicamente a representação em ponto flutuante consiste de três partes distintas: o sinal (+
ou -), uma mantissa, que contém uma sequência de bits significativos e um expoente. As
três partes são armazenadas juntas em um única palavra, geralmente num computador.
Basicamente um sistema de numeração em ponto flutuante pode ser visto como:

F(b, p, m, M) = ±0, d1 d2 ...d p .be


2.3 Erros em soluções numéricas 39

em que,
• b representa a base;
• p a precisão da máquina, ou seja o número de bits da mantissa;
• m ≤ e ≤ M é o expoente, onde m representa o menor e M o maior expoente;
• obrigatoriamente d1 6= 0
O menor número real positivo que pode ser representado no sistema F(b, p, m, M) é,

xm = 0, |100{z· · · 0}.bm = b−1 .bm = bm−1


p digitos

onde m representa o menor expoente e, o maior real positivo representado no mesmo


sistema é dado por,

xM = 0, (b − 1)(b − 1) · · · (b − 1).bM = (1 − b−p ).bM


| {z }
p digitos

 Exemplo 2.3 Considere o sistema F(2, 3, −1, 2). Quantos números podem ser represen-
tados neste sistema?
   
0, 100.2 −1 0, 100.20 0, 100.21 0, 100.22

 
 
 

0, 101.2−1 
 0, 101.20 
0, 101.21 
0, 101.22


0, 110.2−1 
0, 110.20 

0, 110.21 

0, 110.22
0, 111.2−1 0, 111.20 0, 111.21 0, 111.22
   

 Exemplo 2.4 Qual o menor e o maior número real positivo representado no sistema
F(2, 3, −3, 3)?  
(−3−1) −4 1
xm = 2 =2 =
16 10

xM = (1 − 2−3 ).23 = 23 − 20 = 710

2.3 Erros em soluções numéricas


O número excessivo de operações matemáticas executadas na resolução de um dado
problema, pode introduzir alguns erros de arredondamento ou dependendo da precisão da
máquina, erros de truncamento.
A eficácia do método computacional utilizado na resolução é diretamente afetada pelos
efeitos dos erros de truncamento e arredondamento.Em alguns casos, embora os valores
40 Capítulo 2. Representação em ponto flutuante

exatos sejam supostamente conhecidos, não podem ser exatamente representados na


máquina, devido a certas limitações de hardware. Sendo assim, podemos ver algumas
categorias de erros que poderemos trabalhar, tais como:

2.3.1 Erro de truncamento


Truncar significa descartar todos os dígitos menos significativos a partir de uma determi-
nada posição.
 Exemplo 2.5 Truncar o número 1, 01110 · · ·2 para 3 dígitos significativos.

1, 012 = 0, 101.21

2.3.2 Erro de arredondamento


Arredondar significa truncar todos os dígitos menos significativos a partir de uma determi-
nada posição, de forma a torná-lo mais próximo do número original.
Regra para arredondamento em representação binária:

x = b1 b2 · · · bd bd+1 · · · bi ∈ {0, 1}

Trunca-se x na posição d : x0 = b1 b2 · · · bd
• se bd+1 = 0 → x0
• se bd+1 = 1 → x0 = b1 b2 · · · (bd + 1)
 Exemplo 2.6 Represente o número 1, 4510 no sistema F(2, 3, −3, 3) utilizando trunca-
mento, arredondamento e calcule o erro relativo associado.



 0, 45.2 = 0, 9 + 0




 0, 90.2 = 0, 8 + 1

0, 80.2 = 0, 6 + 1



0, 60.2 = 0, 2 + 1 → 0, 4510 = 0, 011100110 · · ·2




 0, 20.2 = 0, 4 + 0




 0, 40.2 = 0, 8 + 0

 ..
 .

1, 45 = 1, 011100110 · · ·2 → 0, 1011100110 · · · .21

com truncamento temos,

1, 45 = 1, 011100110 · · ·2 → 0, 101.21 = (1.2−1 + 0.2−2 + 1.2−3 )21 = 20 + 2−2 = 1, 2510


2.4 Exercícios Propostos 41

e erro relativo,
|1, 45 − 1, 25|
Er = = 0, 1379 = 13, 79%
1, 45
com arredondamento temos,
(
0, 101
= 0, 110 = (1.2−1 + 1.2−2 )21 = 20 + 2−1 = 1, 510
+ 1

e erro relativo,
|1, 45 − 1, 5|
Er = = 0, 0344 = 3, 44%
1, 45


2.4 Exercícios Propostos


Exercício 2.3 Escreva os seguintes números binários na notação de ponto flutuante e
em seguida converta-os para decimal:
• 11000101, 1012
• 110100, 0011112


Exercício 2.4 Liste todos os números em ponto flutuante que são expressos na forma:

x = ±(0, d1 d2 d3 )2 × 2±k , k ∈ {0, 1}

Exercício 2.5 Considere o sistema em ponto flutuante F(2, 3, −2, 2). Para esse sistema,
• qual o menor número positivo representável na base 10?
• qual o maior número positivo representável na base 10?


Exercício 2.6 Construa a tabela da adição para as seguinte bases:


• base 5
• base 7
• base 8

42 Capítulo 2. Representação em ponto flutuante

Exercício 2.7 Calcule os valores obtidos nas seguintes operações:


• 11112 + 10112 =
• 89A12 + 5A612 =
• 10768 + 20768 =
• 307616 + 577616 =
• 89A12 + 89A16 =


Exercício 2.8 Represente o valor de f 0 (2) para f (x) = x2 utilizando a aproximação

f (x + h) − f (x)
f 0 (x) ≈
h
no sistema F(2, 4, −3, 3). 

Exercício 2.9 A derivada, f 0 (x) de uma função f (x) pode ser aproximada pela relação

f (x + h) − f (x)
f 0 (x) ≈
h
se f (x) = 0, 7e0,5x e h = 0, 3. Calcule
• o valor aproximado de f 0 (2)
• o erro relativo.

3. Expansão em Séries de Taylor

A grande maioria dos estudantes já estudou séries infinitas (principalmente as séries de


Taylor) em cálculo diferencial. Na Computação Numérica, iremos adquirir uma boa
compreensão do uso prático deste tópico. Consequentemente, esta seção é particularmente
importante em algumas aplicações e conceitos. Portanto, merece um estudo cuidadoso.

3.1 Série de Taylor


Se uma dada função f (x) possui derivada num ponto x0 , então o incremento da função
pode ser representado por:

∆ f = a1 ∆x + O(∆x), ∆x → 0,

onde ∆ f = f (x) − f (x0 ), ∆x = x − x0 e a1 = f 0 (x0 ). De modo que,

f (x) = f (x0 ) + f 0 (x0 )(x − x0 ) + O(x − x0 )

De maneira similar, podemos inferir a existência de um polinômio

p1 (x) = a0 + a1 (x − x0 ) (3.1)

com a0 = f (x0 ). Assim,

f (x) = p1 (x) + O(x − x0 ) = a0 + a1 (x − x0 ) + O(x − x0 ), x → x0 ,


44 Capítulo 3. Expansão em Séries de Taylor

onde a0 = p1 (x0 ) = f (x0 ) e a1 = p01 (x0 ) = f 0 (x0 ).

De maneira geral, supondo que a função f possui n derivadas no ponto x0 . Existe então,
um polinômio pn (x) de grau menor ou igual a n, tal que

f (x) = pn (x) + O((x − x0 )n ), x → x0 , (3.2)

e, 

 pn (x0 ) = f (x0 )

 p0 (x0 ) = f 0 (x0 )

n
.. (3.3)


 .
 (n)

pn (x0 ) = f (n) (x0 ).

Por analogia, a partir da idéia apresentada na equação (3.1), podemos escrever o polinômio
de grau n, da seguinte maneira

pn (x) = a0 + a1 (x − x0 ) + a2 (x − x0 )2 + · · · + an (x − x0 )n + O((x − x0 )n ) (3.4)

Considerando O((x − x0 )n ) → 0 e valorando o polinômio no ponto x0 temos que

pn (x0 ) = a0 + a1 (x0 − x0 ) + a2 (x0 − x0 )2 + · · · + an (x0 − x0 )n → a0 = pn (x0 ) = f (x0 )

Derivando pn (x) com relação a x, obtemos:

p0n (x) = a1 + 2a2 (x − x0 ) + · · · + nan (x − x0 )n−1

valorando o polinômio no ponto x0 temos que a1 = p0n (x0 ) = f 0 (x0 ). A derivada segunda
de pn (x) com relação a x, é,

p00n (x0 ) f 00 (x0 )


p00n (x) = 2.1.a2 + · · · + n(n − 1)an (x − x0 )n−2 → a2 = = .
2! 2!

De maneira geral,
f (k) (x0 )
ak = , k = 0, 1, · · · , n
k!
Assim, podemos escrever o polinômio pn (x) como,

f 00 (x0 ) f (k) (x0 ) f (n) (x0 )


pn (x) = f (x0 )+ f 0 (x0 )(x−x0 )+ (x−x0 )2 +· · ·+ (x−x0 )k +· · ·+ (x−x0 )n .
2! k! n!
(3.5)
3.1 Série de Taylor 45

Cumprindo todas as relações apresentadas em (3.3). No entanto, dependendo do grau do


polinômio, pode aparecer um erro residual. Ou seja,

f (n+1) (ξ )
Er (x) = f (x) − pn (x) = O((x − x0 )n+1 ) ≈ (x − x0 )n+1 , x0 ≤ ξ ≤ x. (3.6)
(n + 1)!

Obtido por meio do Teorema do valor médio do cálculo integral.


 Exemplo 3.1 Considere a função:

f (x) = 3x5 − 2x4 + 15x3 + 13x2 − 12x − 5.

Determine a série de Taylor no ponto x0 = 2.

• ordem zero: f (x) = 3x5 − 2x4 + 15x3 + 13x2 − 12x − 5 → f (2) = 207
• ordem um: f 0 (x) = 15x4 − 8x3 + 45x2 + 26x − 12 → f 0 (2) = 396
• ordem dois: f 00 (x) = 60x3 − 24x2 + 90x + 26 → f 00 (2) = 590
• ordem três: f 000 (x) = 180x2 − 48x + 90 → f 000 (2) = 714
• ordem quatro: f (4) (x) = 360x − 48 → f (4) (2) = 672
• ordem cinco: f (5) (x) = 360 → f (5) (2) = 360
• ordem superior: f (k) (x) = 0 → f (k) (2) = 0.
Portanto, para k ≥ 6, temos:

f 00 (x0 ) f (k) (x0 )


f (x) = f (x0 ) + f 0 (x0 )(x − x0 ) + (x − x0 )2 + · · · + (x − x0 )k
2! k!

590 714 672 360


= 207 + 396(x − 2) + (x − 2)2 + (x − 2)3 + (x − 2)4 + (x − 2)5 + 0
2! 3! 4! 5!
= 207 + 396(x − 2) + 295(x − 2)2 + 119(x − 2)3 + 28(x − 2)4 + 3(x − 2)5


46 Capítulo 3. Expansão em Séries de Taylor

1 200
f(x)
ordem 0
1 000
ordem1
ordem 2
800 ordem 3
ordem 4
600 ordem 5

400

200

−200

−400

−600
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 2.8 3

Figura 3.1: Aproximação utilizando série de Taylor da função f (x) = 3x5 − 2x4 + 15x3 +
13x2 − 12x − 5, com 0 ≤ x ≤ 3, em torno do ponto x0 = 2. Com os gráficos da ordem zero
a cinco.

No entanto, algumas funções são infinatemente diferenciáveis neste caso, podemos


representar tais funções como a seguinte série de potências.

f (x) = ∑ an(x − x0)n.
n=0

f 00 (x0 )
Se considerarmos a0 = f (x0 ), a1 = f 0 (x0 ), a2 = · · · Temos que a série de Taylor
2!
corresponde ao polinômio pn (x) definido em (3.5), quando n → ∞. Ou seja, Supondo
que a função f (x) definida num intervalo (a, b) é infinitamente diferenciável num ponto
x0 ∈ (a, b). Então, quando x → x0 .


f (k) (x0 )
f (x) = ∑ (x − x0 )k . (3.7)
k=0 k!

Podemos observar que o polinômio pn (x) definido anteriormente, representa a série de


Taylor truncada em algum termo. Para simplificar a notação, iremos considerar o caso
especial, em que x0 = 0, de modo que

f (x) = ∑ anxn = a0 + a1x + a2x2 + · · · + ak xk + · · · .
n=0

De maneira que, teremos assim a série de Maclaurin.


3.1 Série de Taylor 47

 Exemplo 3.2 Obtenha a série de Taylor da função f (x) = ex em torno do ponto x0 = 0.

f (x) = ex → f (0) = 1
f 0 (x) = ex → f 0 (0) = 1
..
.
f (n) (x) = ex → f (n) (0) = 1
..
.

Assim,
x
x2 xn ∞
xk
e = 1+x+ +···+ +··· = ∑ k! . (3.8)
2! n! k=0

Se considerarmos um número finito de termos, podemos aproximar a função por:

n
xk eξ
ex ≈ ∑ k! (n + 1)! xn+1.
+ (3.9)
k=0

Considerando todos os valores de x pertencentes ao um intervalo simétrico em torno da


origem, para −α ≤ x ≤ α ⇒ |x| ≤ α, |ξ | ≤ α, e eξ ≤ eα . Assim, os termos restantes
satisfazem a desigualdade:

eξ eα
k+1 k+1

lim x ≤ lim α = 0.

k→∞ (k + 1)! k→∞ (k + 1)!

Então, se passarmos o limite quando k → ∞ em ambos os lados da equação (3.9), obteremos


a equação (3.8). Portanto, a série é convergente. 

 Exemplo 3.3 Obtenha a série de Taylor da função f (x) = cos(x) em torno do ponto
x0 = 0.

f (x) = cos(x) → f (0) = 1


f 0 (x) = −sen(x) → f 0 (0) = 0
f 00 (x) = −cos(x) → f 00 (0) = −1
f (3) (x) = sen(x) → f (3) (0) = 0
f (4) (x) = cos(x) → f (4) (0) = 1
f (5) (x) = −sen(x) → f (5) (0) = 0
..
.
48 Capítulo 3. Expansão em Séries de Taylor

x2 x4 x6 ∞
x2k
cos(x) = 1 − + − + · · · = ∑ (−1)k . (3.10)
2! 4! 6! k=0 (2k)!


1
 Exemplo 3.4 Obtenha a série de Taylor da função f (x) = em torno do ponto
1−x
x0 = 0, com |x| < 1.

f (x) = (1 − x)−1 → f (0) = 1


f 0 (x) = (1 − x)−2 → f 0 (0) = 1
f 00 (x) = 2(1 − x)−3 → f 00 (0) = 2
f (3) (x) = 6(1 − x)−4 → f (3) (0) = 6
f (4) (x) = 24(1 − x)−5 → f (4) (0) = 24
f (5) (x) = 120(1 − x)−5 → f (5) (0) = 120
..
.

1 x2 x3 x4 x5 ∞
= 1 + x + 2 + 6 + 24 + 120 + · · · = 1 + x + x2 + x3 + x4 + · · · = ∑ xk .
1−x 2! 3! 4! 5! k=0
(3.11)


R Algumas funções possuem uma fórmula fechada da expansão da série de Taylor,


tais como: exponencial, seno, cosseno, seno hiperbólico, cosseno hiperbólico, arco
tangente, etc.

3.2 Série de Taylor em duas variáveis


Na seção anterior trabalhamos com a série de Taylor expandida em uma variável, agora
iremos expandi-la em duas variáveis, ou seja, f (x, y). Assim, temos:

∂f ∂f
f (x0 + h, y0 + k) = f (x0 , y0 ) + h (x0 , y0 ) + k (x0 , y0 )
∂x ∂y

1
 2 ∂2 f 2 
2∂ f 2∂ f
+ h (x0 , y0 ) + h.k (x0 , y0 ) + k (x0 , y0 )
2! ∂ x2 ∂ x∂ y ∂ y2
1 3∂3 f 2 ∂3 f 3
2 ∂ f
+ (h (x ,
0 0y ) + h .k (x ,
0 0y ) + h.k (x0 , y0 )
3! ∂ x3 ∂ x2 ∂ y ∂ x∂ y2
3.3 Exercícios 49

∂3 f
+k3 (x0 , y0 )) + · · ·
∂ y3
que pode ser simplificada por meio de,

∂ f (x0 , y0 ) n
∞  
1 ∂ f (x0 , y0 )
f (x0 + h, y0 + k) = ∑ x+ y
n=0 n! ∂x ∂y

 Exemplo 3.5 Calcular f (x, y) = sen(x.y), onde x = 0, 1 rad e y = 0, 2 rad. Use serie de
Taylor em 2 variáveis. 

3.3 Exercícios
3.3.1 Resolvido
Exercício 3.1 Utilizando a série de Maclaurin calcule o valor da função f (x) = cos(x),
no ponto x1 = π
4 a partir do ponto x0 = π
12 .Com erro relativo ≤ 10−3 .

π π π
∆x = x1 − x0 = − =
4 12 6
f (k) (x0 )
f (x + ∆x) = f (x0 ) + f 0 (x0 ).∆x + · · · + .(∆x)k + · · ·
k!
π
• ordem zero: f (x) = cos(x) → f ( 12 ) = 0, 9659

• ordem um: f 0 (x) = −sen(x) → f 0 ( 12


π
) = −0, 2588.
Portanto a aproximação de ordem um é dada por,

π
Ord1 (x) ≈ f (x0 ) + f 0 (x0 ).∆x = 0, 9659 − 0, 2588. = 0, 8304
6

• ordem dois: f 00 (x) = −cos(x) → f 00 ( 12


π
) = −0, 9659
a aproximação de ordem dois é dada por,

0, 9659  π 2
Ord2 (x) ≈ Ord1 (x) − . = 0, 6980
2 6

no caso como estamos utilizando uma sequência numérica, o erro relatico é dado por,

| f (xi+1 ) − f (xi )|
Er =
| f (xi+1 )|

. Ou seja,
|0, 6980 − 0, 8304|
Er = = 0, 1897 > 10−3
|0, 6980|
50 Capítulo 3. Expansão em Séries de Taylor

• ordem três: f 000 (x) = sen(x) → f 000 ( 12


π
) = 0, 2588.
Portanto,
0, 2588  π 3
Ord3 (x) ≈ Ord2 + . = 0, 7042
6 6
|0, 7042 − 0, 6980|
Er = = 0, 0088 > 10−3
|0, 7042|

como o erro está diminuindo, significa que a sequência está covergindo para a solução
desejada.

• ordem quatro: f (4) (x) = −cos(x) → f (4) ( 12


π
) = −0, 9659.
Assim,
0, 9659  π 4
Ord4 (x) ≈ Ord3 − . = 0, 7012
24 6
|0, 7012 − 0, 7042|
Er = = 0, 0043 > 10−3
|0, 7012|

• ordem cinco: f (5) (x) = sen(x) → f (5) ( 12


π
) = 0, 2588.
Ou seja,
0, 2588  π 5
Ord5 (x) ≈ Ord4 + . = 0, 7013
120 6
|0, 7013 − 0, 7012|
Er = = 1.2104.10−4 < 10−3 .
|0, 7013|
Assim, podemos concluir que para a tolerância de erro solicitada, a solução é dada por:
π 
cos ≈ Ord5 (x) = 0, 7013.
4

Uma maneira mais rápida de resolução do exercício, é fazer uso da expansão obtida em
(3.10):

x2k
cos(x) = ∑ (−1)k
k=0 (2k)!
• ordem zero:
π 0
π  
4
cos ≈ =1
4 0!
• ordem um:
π 0 π 2
π   
4 4
cos ≈ − = 0, 6916
4 0! 2!
3.3 Exercícios 51

• ordem dois:
π 0 π 2 π 4
π    
4 4 4
cos ≈ − + = 0, 7074
4 0! 2! 4!
|0, 7074 − 0, 5230|
Er = = 0, 0224 > 10−3
|0, 7074|
• ordem três:

π 0 π 2 π 4 π 6
π     
4 4 4 4
cos ≈ − + − = 0, 7078
4 0! 2! 4! 6!

|0, 7078 − 0, 7074|


Er = = 4.6060.10−4 < 10−3
|0, 7078|
Assim, podemos concluir que para a tolerância de erro solicitada, a solução é
dada por: π 
cos ≈ Ord3 (x) = 0, 7078.
4
Ou seja, desta forma não é necessário conhecer o intervalo ∆x, bastar conhecermos
o ponto em que desejamos calcular o valor da função.
A seguinte figura, apresenta a convergência da série em direção ao valor desejado.


0.95

0.9

0.85

0.8

0.75 função
valor exato
Ord_0
0.7 Ord_1
Ord_2
Ord_3
0.65
0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8

Figura 3.2: Aproximação utilizando série de Taylor da função f (x) = cos(x), com 0, 2 ≤
x ≤ 0, 8, para determinar o cos(π/4). Com as aproximações da ordem zero a três.
52 Capítulo 3. Expansão em Séries de Taylor

Exercício 3.2 A partir das funções sen(x) e cos(x) definidas por:

eix − e−ix eix + e−ix


sen(x) = , cos(x) = .
2i 2

Mostre que as séries de Taylor (MacLaurin) das mesmas são dadas por,


1 ∞
x2k
sen(x) = ∑ (−1)k (2k + 1)! x2k+1, cos(x) = ∑ (−1)k (2k)!
k=0 k=0

Sabemos que,

xk x2 x3 x4
ex = ∑ k! = 1 + x + 2! + 3! + 4! + · · ·
k=0

substituindo x por ix, obtemos:


(ix)k x2 x3 x4 x5 x6 x7
eix = ∑ (ix)! = 1 + ix − 2! − i 3! + 4! + i 5! − 6! − i 7! + · · ·
k=0

x2 x4 x6 x3 x5 x7
   
ix
e = 1− + − +··· +i x− + − +···
2! 4! 6! 3! 5! 7!
! !

x 2k ∞
x 2k+1
eix = ∑ (−1)k + i ∑ (−1)k (3.12)
k=0 (2k)! k=0 (2k + 1)!
e, temos que


xk x2 x3 x4 x5
e−x = ∑ (−1)k = 1−x+ − + − +···
k=0 k! 2! 3! 4! 5!

substituindo x por −ix, obtemos:


(ix)k x2 x3 x4 x5
e−ix = ∑ (−1)k (ix)! = 1 − ix − 2! + i 3! + 4! − i 5! + · · ·
k=0

x2 x4 x6 x3 x5 x7
   
−ix
e = 1− + − +··· −i x− + − +···
2! 4! 6! 3! 5! 7!
! !

x 2k ∞
x 2k+1
e−ix = ∑ (−1)k − i ∑ (−1)k (3.13)
k=0 (2k)! k=0 (2k + 1)!
somando as equações 3.12 e 3.13, temos que
!
x2k
∞ ∞
x2k eix + e−ix
eix + e−ix = 2 ∑ (−1)k → ∑ (−1)k =
k=0 (2k)! k=0 (2k)! 2
3.3 Exercícios 53

e subtraindo-as, obteremos
!
ix −ix

k x2k+1 ∞
kx2k+1 eix − e−ix
e −e = 2i ∑ (−1) → ∑ (−1) =
k=0 (2k + 1)! k=0 (2k + 1)! 2i

3.3.2 Propostos
Exercício 3.3 Obtenha a série de Taylor da função f (x) = sen(x) em torno do ponto
x0 = 0. 

Exercício 3.4 Obtenha a série de Taylor da função f (θ ) = eiθ ∈ C em torno do ponto


θ0 = 0 em radianos e, sabendo que i2 = −1 é a unidade imaginária. 

Exercício 3.5 Sabemos do cálculo diferencial que a função tan : (−π/2, π/2) → R é
uma bijeção em C∞ com derivada positiva, e sua inversa tan−1 : R → (−π/2, π/2) possui
derivada igual a 1/(1 + x2 ), ∀x ∈ R. A partir das informações apresentadas obtenha a série
de Taylor da função tan−1 (x). 

Exercício 3.6 Obtenha a série de Taylor da função f (x) = (1 + x)γ , onde γ ∈ R. 

Exercício 3.7 Para Calcular as coordenadas espaciais de um planeta, é necessário


calcular a função

f (x) = x − 1 − 0, 5sen(x)

tome como base o ponto xi = π2 no intervalo [0; π].Determine a expansão em série


de Taylor de ordem mais alta que possa ser representada no sistema F(2, 5, −4, 4) com
erro relativo máximo de 5%. 

Exercício 3.8 Encontre o polinômio de Taylor de ordem 2 que representa a função f


na origem do sistema de coordenadas, onde a função f : R2 → R é dada por:

f (x, y) = xsen(y), (x, y) ∈ R2 .

Exercício 3.9 Utilizando a expansão em série de Taylor, demonstre que:


54 Capítulo 3. Expansão em Séries de Taylor

Z
cos(x)dx = sen(x) +C.

Exercício 3.10 Encontre via série de Taylor, um polinômio com coeficientes reais e
grau ≤ 5, de modo que Z π
|sen(x) − pn (x)|2 dx → 0.
−π


Exercício 3.11 Utilizando expansão em série de Taylor, calcule:


Z 1
2
I= e−t dt, com EA ≤ 10−2
0

Exercício 3.12 As funções senh(x) e cosh(x) são definidas por:

ex − e−x ex + e−x
senh(x) = , cosh(x) = .
2 2

Mostre que as séries de Taylor das mesmas são dadas por,


∞ ∞
1 2k+1 1
senh(x) = ∑ (2k + 1)! x , cosh(x) = ∑ (2k)! x2k
k=0 k=0

Exercício 3.13 As funções sen(x) e cos(x) são definidas por:

eix − e−ix eix + e−ix


sen(x) = , cos(x) = .
2i 2

Mostre que as séries de Taylor das mesmas são dadas por,


1 ∞
x2k
sen(x) = ∑ (−1)k (2k + 1)! x2k+1, cos(x) = ∑ (−1)k (2k)!
k=0 k=0

Exercício 3.14 Determine a expansão em série de Taylor da função f (x, y) = e(x,y) . 

——————————————————————————–
4. Solução de Equações não lineares

Este capítulo é devotado aos problemas de determinar raízes (ou zeros) de equações. Eis
um problema que ocorre frequentemente em trabalhos científicos e/ou voltados a resolver
alguns casos na Engenharia. Por exemplo, A área S da superfície lateral de um cone é dada
por: p
S = πr r2 + h2

onde r representa o raio da base e h a altura. Para determinar o raio do cone, uma forma é
resumir o problema a encontrar um valor de r > 0, que satisfaça a equação

f (r) = 0. (4.1)

No caso, f (r) = S − πr r2 + h2 = 0.
Em resumo, o principal objetivo é escrever o problema como uma função f : R → R, de
modo a encontrar os valores de x, que satisfaçam a relação f (x) = 0 (no caso unidimensio-
nal).
Antes de apresentar alguns métodos numéricos de resolução para tais problemas, eis um
teorema de extrema importância a ser aplicado em alguns casos para isolar a raiz num
determinado intervalo fechado em R.
56 Capítulo 4. Solução de Equações não lineares

Teorema 4.0.1 — Teorema do Valor Intermediário ou Teorema de Bolzano. Seja


f : [a, b] → R uma função contínua no intervalo, de modo que

f (a). f (b) < 0 (4.2)

então

∃x ∈ [a, b] ⇒ f (x) = 0. (4.3)

 Exemplo 4.1 Isole as raízes da função f (x) = x3 − 6x + 2.


Claramente,pelo gráfico.


0, para algum x ∈ [−3, −2] → f (−3) = −7 e f (−2) = 6

f (x) = 0, para algum x ∈ [0, 1] → f (0) = 2 e f (1) = −3 (4.4)


0, para algum x ∈ [2, 3] → f (2) = −2 e f (3) = 11

40

30

20

10
raiz 01 raiz 02 raiz 03
f(x)

−10

−20

−30

−40
−4 −3 −2 −1 0 1 2 3 4
x

Figura 4.1: Gráfico da função f (x) = x3 − 6x + 2, mostrando a localização de suas 03(três)


raízes.

Um vez que vimos como isolar uma raiz, o próximo passo consiste em refinar a busca
no intervalo, de modo a obtermos a solução (raiz) desejada. Ou seja, encontrar soluções
para a equação não linear univariável f (x) = 0 contínua em f : [a; b] ⊂ R 7→ R.Para isso,
iremos apresentar alguns métodos de resolução de tais equações.
4.1 Método da Bissecção 57

4.1 Método da Bissecção


O primeiro método apresentado será o da bissecção, que na verdade é uma ideia maravilho-
samente simples, baseada em pouco mais do que a continuidade da função e extremamente
eficiente, porém com um custo computacional elevado. Eis, de maneira intuitiva o algo-
ritmo do método:

Algorithm 1: Método da Bissecção


Passo 1: Escolha [a; b] de modo que f (a). f (b) < 0. Defina tol
Passo 2: Uma estimativa da raiz é determinada por:

a+b
xr =
2

if f (a). f (xr ) < 0 then


b = xr ;
volte ao passo 2;
else
a = xr ;
volte ao passo 2;
end
if Er ≤ tol then
xr é a solução.
Onde tol representa a tolerância definida pelo usuário.

6 b
5
4
3
f(x)

2
Raiz aproximadamente em 0.688
1
m2
0
mm
m3m5
4
6

−1 a m1
−2
−2 −1 0 1 2
x

Figura 4.2: Visualização gráfica do método da bissecção para encontrar a raiz da função
f (x) = ex − 2 no intervalo de [−2 , 2].
58 Capítulo 4. Solução de Equações não lineares

Uma estimativa do número de passos necessários ao cálculo da raiz pode ser obtida
por meio da seguinte expressão,
  
1 b−a
n≥ log
log(2) tol

e a condição de parada definida por,

|xi+1 − xi |
Er = ≤ tol
|xi+1 |

 Exemplo 4.2 Utilizando o algoritmo da bissecção. Quantos passos são necessários para
calcular a raiz de uma função f numa máquina de mantissa p = 32 com uma tolerância de
tol = 2101002 ? Considere a = 100002 e b = 100012 .

−101002 = 2−2010
2

1
 
17 − 16

1
a = 100002 = 1610 ⇒ n ≥ log −20
= (20.log(2)) = 20 → n ≥ 20.
 log(2) 2 log(2)
b = 100012 = 1710

Exercício 4.1 Usando o método da bissecção, resolva a equação

x2 = −ln(x)

com uma tolerância menor ou igual a 0, 02.


Escolhendo

a = 0, 5 → f (a) = −0, 4431 < 0


b = 1 → f (b) = 1 > 0
xr ∈ [a, b] = [−0, 4431; 1] ⇒ xr = 0, 6484

n a b xr f (xr ) erro
0 0,5 1,00 0,75 0,2748 —
1 0,5 0,75 0,625 -0,0794 0,2000
2 0,625 0,75 0,6875 0,0980 0,0909
3 0,625 0,6875 0,6562 0,0093 0,0476
4 0,625 0,6562 0,6406 -0,0035 0,0244
5 0,6406 0,6562 0,6484 -0,0128 0,0120
Tabela 4.1: Solução do exercício 4.1.
4.2 Método da Falsa Posição 59

Exercício 4.2 Num determinado circuito elétrico, a tensão V e a corrente I estão


relacionadas por meio das seguintes equações:
(
I = a ebV − 1


c = dI +V

onde a; b; c e d são constantes. Considerando a = 2; b = 2; c = 12 e d = 7. Determine


a tensão no circuito. 

Exercício 4.3 O empréstimo de uma quantia D em reais, em um certo banco. Cobra


uma taxa de juros anual de r = 5%, por um período de n anos, sendo o pagamento
mensal, M, inserido na seguinte equação,
 
12M  r −12n
D= 1− 1+
r 12

Um investidor necessita de um empréstimo de R$160.000, 00 para comprar um imóvel


com uma prestação de R$650, 00 mensais. Supondo uma hipoteca de 35 anos, utilizando
o método da bissecção determine a taxa de juros que o investidor irá pagar no período. 

4.2 Método da Falsa Posição


O método da falsa posição é uma alternativa ao método da bissecção. Sabendo através do
teorema de Bolzano que a raiz encontra-se no intervalo determinado. Podemos interligar
os pontos f (a) a f (b) via uma reta. A intersecção dessa reta com o eixo x representa
uma estimativa melhorada da raiz (conforme pode ser visto na figura (4.2)). O fato de
substituirmos a curva por uma reta dar uma “falsa posição” da raiz. Eis a possível origem
do nome do método.
Utilizando semelhança de triângulos na figura (4.2), podemos inferir uma equação para o
cálculo do ponto de intersecção da reta com o eixo x. Ou seja,

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


= → f (a)(c − b) = f (b)(c − a) → c =
c−a c−b f (a) − f (b)

que pode ser escrita como,

xi f (xi−1 ) − xi−1 f (xi )


xi+1 = (4.5)
f (xi−1 ) − f (xi )

se,
b f (a) a f (b)
c= −
f (a) − f (b) f (a) − f (b)
60 Capítulo 4. Solução de Equações não lineares
b f (a) a f (b)
c = b+ −b−
f (a) − f (b) f (a) − f (b)
b f (a) a f (b)
c = b+ −b−
f (a) − f (b) f (a) − f (b)
b f (a) f (a) − f (b) a f (b)
c−b = −b −
f (a) − f (b) f (a) − f (b) f (a) − f (b)
b f (a) − b f (a) + b f (b) − a f (a)
c−b =
f (a) − f (b)
f (b)(a − b)
c = b−
f (a) − f (b)
representada iterativamente por,

f (xi )(xi−1 − xi )
xi+1 = xi − (4.6)
f (xi−1 ) − f (xi )

que pode ser vista como uma aproximação da equação (4.8) referente ao método da secante.

Figura 4.3: Exemplo método da falsa posição.

4.3 Método de Newton


Seja f (x) uma função contínua no intervalo [a; b] e x sua única raiz no intervalo; as
derivadas f 0 (x), ( f 0 (x) 6= 0) e f 00 (x) devem ser contínuas no intervalo. Encontra-se uma
aproximação xi para a raiz x feita pela expansão em série de Taylor para f (x) = 0 :

f (x) ≈ f (xi ) + f 0 (xi )(x − xi )

f (xi+1 ) = f (xi ) + f 0 (xi )(xi+1 − xi ) = 0


4.3 Método de Newton 61
f (xi )
xi+1 = xi − , i = 0, 1, · · ·
f 0 (xi )
onde : xi+1 ≈ x.
f (xi )
xi+1 = xi − (4.7)
f 0 (xi )

que é geralmente denominada fórmula de Newton.


É condição suficiente para a convergência do método de Newton que f 0 (x) e f 00 (x)
sejam não nulas e preservem o sinal no intervalo [a; b] e x0 seja tal que:

f (x0 ). f 00 (x0 ) > 0

.
Algorithm 2: Método de Newton
Passo 1: Escolha a condição inicial x0 tal que,

f (x0 ). f 00 (x0 ) > 0.

Defina tol
Passo 2: para i = 0, 1, 2, · · · , faça:

f (xi )
xi+1 = xi −
f 0 (xi )

if Er ≤ tol then
xi+1 é a solução.

2
Raiz aproximadamente em 0.693
1

0
x3 x2 x1 x0
−1

−2
−1 0 1 2

Figura 4.4: Visualização gráfica do método de Newton para encontrar a raiz da função
f (x) = ex − 2 no intervalo de [−1 , 2].
62 Capítulo 4. Solução de Equações não lineares

R Evita-se utilizar o método de Newton na resolução de equações cujo gráfico apresente


pouca inclinação próxima a pontos de intersecção com o eixo x. Pois, assim f 0 (x) ≈
0 → ff0(x)
(x) → ∞.

 Exemplo 4.3 Use o método de Newton para fazer uma estimativa da raiz de f (x) =
e−x − x, com tol ≤ 10−2 . 

i xi f (xi ) f 0 (xi ) xi+1 erro


0 1 -0,6321 -1,3678 0,5378 —
1 0,5378 0,0461 -1,5839 0,567 0,0513
2 0,567 0,0002 -1,5672 0,5671 0,00027
Tabela 4.2: Solução do exemplo 4.3.

 Exemplo 4.4 Utilizando o método de Newton, calcule uma raiz da equação,

f (x) = ex − 1, 5 − tg−1 (x)

com tol ≤ 10−2 (


f (x) = ex − 1, 5 − tg−1 (x)
f 0 (x) = ex − (1 + x2 )−1


i xi f (xi ) f 0 (xi ) xi+1 erro


0 1 0,4328 2,2183 0,8048 —
1 0,8048 0,0586 16295 0,7688 0,0468
2 0,7688 0,0018 1,5287 0,7676 0,0015
Tabela 4.3: Solução do exemplo 4.4.


Exercício 4.4 Calcular α com α > 0, utilizando o método de Newton.
Fazendo, (
√ f (x) = x2 − α
x = α → x2 = α →
f 0 (x) = 2x

(xi2 − α)
 
1 α
xi+1 = xi − → xi+1 = xi +
2xi 2 xi


Quando o método de Newton converge, geralmente o faz muito rapidamente, que ca-
racteriza uma vantagem em relação à bissecção. No entanto, no método de Newton é
necessário conhecer f 0 (x) explicitamente. Em alguns casos isso não é possível. O próximo
4.4 Método da Secante 63

método contorna essa situação, a um maior custo computacional e consequentemente uma


convergência mais lenta.

4.4 Método da Secante


Utilizando uma aproximação para a derivada (conforme visto na seção 1.2), tal como,

f (xi ) − f (xi−1 )
f 0(x) ≈
xi − xi−1

e substituindo na equação (4.7), obtemos:


 
(xi − xi−1 )
xi+1 = xi − f (xi ) , i = 1, 2, · · · . (4.8)
f (xi ) − f (xi−1 )

No cálculo de xi+1 , necessitamos dos valores iniciais de xi e xi−1 . No entanto, cada novo
xi+1 requer apenas uma nova avaliação do valor de f (xi ).
A interpretação gráfica do método da secante é similar ao de Newton. Ou seja, a reta
tangente é substituida pela reta secante.

Algorithm 3: Método da Secante


Passo 1: Escolha as condições iniciais x0 e x1 . Defina tol
Passo 2: para i = 0, 1, 2, · · · , faça:
 
(xi − xi−1 )
xi+1 = xi − f (xi )
f (xi ) − f (xi−1 )

if Er ≤ tol then
xi+1 é a solução.
 Exemplo 4.5 Utilize o método da secante para fazer uma estimativa da raiz de f (x) =
x3 − senh(x) + 4x2 + 6x + 9. Comece com as estimativas iniciais de x0 = 7 e x1 = 8. 

i xi xi−1 f (xi ) f (xi−1 ) xi+1 erro


1 8,0000 7,0000 -665,4788 41,6838 7,0589 —
2 7,0589 8,0000 20,7982 -665,4788 7,0874 0,0040
3 7,0874 7,0589 10,0376 20,7982 7,1140 0,0037
Tabela 4.4: Solução do exemplo 4.5.
64 Capítulo 4. Solução de Equações não lineares

 Exemplo 4.6 Um objeto é arremessado para cima com velocidade inicial v0 = 30m.s−1
a partir de uma altura h0 = 5m, em um local onde a aceleração da gravidade é g =
−9, 81m.s−2 . Sabendo que
gt 2
h(t) = h0 + v0t +
2
qual será o tempo gasto para o objeto tocar o solo, considerando o atrito desprezível?

g
h0 + v0ti + ti2 = 0 → f (ti ) = 5 + 30ti − 4, 905ti2
2


i ti ti−1 f (ti ) f (ti−1 ) ti+1 erro


1 8,0000 4,0000 -68,856 46,536 5,6131 —
2 5,6131 8,0000 18,8820 -68,856 6,1268 0,0838
3 6,1268 5,6131 4,7186 18,8820 6,2979 0,0271
4 6,2979 6,1268 -0,5747 4,7186 6,2793 0,0295
5 6,2793 6,2979 0,0139 -0,5747 6,2798 6,9.10−5
Tabela 4.5: Solução do exercício 4.5.

4.5 Iteração funcional e ponto fixo


O método de Newton é um exemplo onde uma sequência de pontos é calculada a partir de
uma expressão da forma,
xi+1 = φ (xi ), (i ≥ 0) (4.9)

O algoritmo definido de tal forma é denominado de iteração funcional. No método de


Newton, a função φ é dada por,

f (xi )
φ (xi ) = xi − .
f 0 (xi )

A expressão (4.9) pode ser utilizada para gerar sequências que podem não convergir. No
entanto, estamos interessados em casos onde limi→∞ xi existe. Supondo que,

lim xi = α.
i→∞

Se φ é contínua, então
 
φ (α) = φ lim xi = lim φ (xi ) = lim xi+1 = γ ⇒ φ (α) = γ.
i→∞ i→∞ i→∞
4.5 Iteração funcional e ponto fixo 65

Onde γ é um ponto fixo da função φ . Intuitivamente, pensar num ponto fixo, é denominar
um ponto onde a função “trava” no processo iterativo. Freqüentemente, um problema
matemático pode ser reduzido a um problema de encontrar um ponto fixo de uma função.
Aplicações interessantes podem ser vistas em equações diferenciais, teoria da otimização e
outras áreas.

Figura 4.5: Exemplo do método iterativo funcional.

Teorema 4.5.1 Seja φ (x) contínua e diferenciável no intervalo [a; b] tal que φ ([a; b]) ⊂
[a, b], e que
λ = max φ 0 (x) < 1.

a≤x≤b

Então,
• x = φ (x) possui uma única solução α ∈ [a; b];
• para alguma escolha de x0 ∈ [a; b], com xi+1 = Φ(xi ),i ≥ 0

lim xi = α
i→∞


λi
|α − xi | ≤ λ i |α − x0 | ≤ |x1 − x0 |
1−λ
α − xi+1
lim = φ 0 (α).
i→∞ α − xi

Ou seja, como condição suficiente, temos que se |φ 0 (x)| < 1, para todo x ∈ [a; b], então a
sequência (xi )i∈N gerada pela expressão (4.9) converge para a raíz.

 Exemplo 4.7 Utilizando o método de iteração funcional resolva a equação cos(x)−x = 0


com tol ≤ 10−2 . 
66 Capítulo 4. Solução de Equações não lineares

i xi xi+1 erro
0 0,5000 0,8775 —
1 0,8775 0,6390 0,3733
2 0,6390 0,8027 0,2039
3 0,8027 0,6947 0,1553
4 0,6947 0,7682 0,0955
5 0,7682 0,7191 0,0681
6 0,7191 0,7523 0,0441
7 0,7523 0,7301 0,0305
8 0,7301 0,7451 0,0201
9 0,7451 0,7350 0,0137
10 0,7350 0,7418 0,0091
Tabela 4.6: Solução do exemplo 4.6.

 Exemplo 4.8 Encontre opções da função φ (x) para o seguinte problema:

x3 + x − 1 = 0

x3 + x − 1 = 0 → x3 + x − x − 1 = 0 − x → x = 1 − x3 → φ (x) = 1 − x3

ou
√ √
x3 + x − 1 = 0 → x3 − x3 + x − 1 = 0 − x3 → x = 3
1 − x → φ (x) = 3 1 − x

ou

1 + 2x2 1 + 2x2
x3 +x−1 = 0 → x3 +2x3 +x = 1+2x3 → x(3x2 +1) = 1+2x2 → x = → φ (x) =
1 + 3x2 1 + 3x2

4.6 Sistemas de equações não lineares

Iremos considerar a problema de determinar raízes do seguinte sistema de equações não


lineares: (
f (x, y) = 0
(4.10)
g(x, y) = 0
Geometricamente, a solução desse sistema são os pontos no plano xy onde as curvas
definidas por f e g se interceptam.
4.6 Sistemas de equações não lineares 67

4.6.1 Método de Newton na solução de sistemas não lineares


Seja (x0 , y0 ) uma aproximação para o solução do sistema definido na equação (1). Admi-
tindo que f e g sejam suficientemente diferenciáveis, expandimos f (x, y) e g(x, y), usando
série de Taylor para funções de duas variáveis em torno de (x0 , y0 ). Assim:
(
f (x, y) = f (x0 , y0 ) + fx (x0 , y0 )(x − x0 ) + fy (x0 , y0 )(y − y0 ) + · · ·
(4.11)
g(x, y) = g(x0 , y0 ) + gx (x0 , y0 )(x − x0 ) + gy (x0 , y0 )(y − y0 ) + · · ·

Admitindo que (x0 , y0 ) esteja suficientemente próximo da solução a ponto de desprezarmos


os termos de alta ordem da série e fazendo f (x, y) = 0 e g(x, y) = 0, teremos:
(
fx (x − x0 ) + fy (y − y0 ) = − f
(4.12)
gx (x − x0 ) + gy (y − y0 ) = −g

todas as funções e derivadas parciais devem ser calculadas em (x0 , y0 ). Resolvendo o


sistema (3), temos: h i
xi+1 = xi − f .gJ(y −g. fy

f ,g)
h ixi ,yi (4.13)
yi+1 = yi − g. f x − f .gx
J( f ,g) xi ,yi

onde J( f , g) = fx .gy − fy .gx representa o Jacobiano.


 Exemplo 4.9 Determinar uma raiz do sistema não linear:
(
x2 + y2 = 2
(4.14)
x2 − y2 = 1

com tolerância de 10−3 , usando o método de Newton e considerando (x0 ; y0 ) = (1, 2; 0, 7)




 Exemplo 4.10 — Aplicação. Cada vez que um GPS é usado, o sistema de equações
não lineares 


(x − a1 )2 + (y − b1 )2 + (z − ci )2 = [(C(t1 − D)]2
(x − a )2 + (y − b )2 + (z − c )2 = [(C(t − D)]2

2 2 i 2
(4.15)


(x − a3 ) + (y − b3 ) + (z − ci ) = [(C(t3 − D)]2
2 2 2
(x − a )2 + (y − b )2 + (z − c )2 = [(C(t − D)]2

4 4 i 4

é resolvido para as coordenadas (x, y, z) do receptor. Para cada satélite i as localizações são
(ai , bi , ci ), e ti é o tempo de sincronização da transmissão a partir do satélite. Além disso,
temos a constante de velocidade da luz C e, D que representa a diferença entre o tempo de
sincronização do satélite e do receptor. 
68 Capítulo 4. Solução de Equações não lineares

4.7 Exercícios Propostos

Exercício 4.5 Utilizando o método de Newton, mostrar que


" #

p 1 a
a ≈ xi+1 = (p − 1)xi + p−1
p x i

Exercício 4.6 Determinar



8
3

utilizando o método de sua preferência com Er ≤ 10−3 . 

Exercício 4.7 A localização x̄ do centróide de um setor circular é dada por:

2rsen(θ )
x̄ = .

Determine o ângulo θ para o qual x̄ = 2r .Utilizando os seguintes métodos:


• Método da bissecção com a = 1 e b = 2. Realize as cinco primeiras iterações;
• Método da secante e comece com x0 = 1 e x1 = 2. Calcule as cinco primeiras
iterações;
• Método de Newton. Comece em x0 = 1 e realize as cinco primeiras iterações.


Exercício 4.8 A área S da superfície lateral de um cone é dada por:


p
S = πr r 2 + h2

onde r é o raio da base e h a altura. Determine o raio de um cone que tenha uma área
superficial de 1200 m2 e uma altura de 20 m, calculando cinco iterações com o método
da iteração de ponto fixo. Comece com r0 = 17 m. 

Exercício 4.9 Usando o método de Newton determine x ∈ R, com Ea ≤ 10−2 , tal que
a matriz:  
0.5 0.2 x
0.4 x 0.5
 

x 0.5 0.2
seja singular. 
4.7 Exercícios Propostos 69

Exercício 4.10 Encontre uma raiz da equação,

sen2 (x)
 
3 2 x
f (x) = x − 9x + 25x 1 + + − 24
25 sec2 (x)

no intervalo 1 ≤ x ≤ 2, 5 com Er ≤ 10−3 . 

Exercício 4.11 Num estudo de coleta em energia solar localizado num campo de
espelhos planos, com um coletor central, um pesquisador obteve a seguinte expressão
para o fator de concentração geométrico G:

π(h/cos(θ ))2 F
G=
0, 5πD2 (1 + sen(θ ) − 0, 5cos(θ ))

onde θ é o ângulo de borda do campo, F é a cobertura fracionária do campo de espelhos,


D é o diâmetro do coletor e, h é a altura do coletor. Determine o ângulo θ se, h = 300,
G = 1200, F = 0, 8 e D = 14. 

Exercício 4.12 A equação de Kepler para determinar órbitas de satélites, é dada por

M = x − E.sen(x).

Dado que E = 0, 2 e M = 0, 5, obtenha a raiz da equação de Kepler usando o método de


Newton. 

Exercício 4.13 A velocidade ascendente de um foguete pode ser calculada pela se-
guinte equação:  
m0
v = u.ln − g.t
m0 − q.t
onde v representa a velocidade de subida, u é a velocidade na qual o combustível é
repelido com relação ao foguete, m0 é a massa inicial (t = 0s), q é a taxa de consumo
de combustível, e g a aceleração da gravidade para baixo g ≈ 9, 81m/s2 . Se u = 2000m/s,
m0 = 150.000kg, e q = 2700kg/s. Calcule o instante no qual a velocidade é igual a
750m/s com 10 ≤ t ≤ 50s. Considere uma tolerância de 10−2 . 
III
Unidade II

5 Sistemas de Equações Lineares -


SEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.1 Métodos Diretos
5.2 Métodos de Decomposição
5.3 Métodos Iterativos
5.4 Exercícios Propostos

6 Ajuste de Curvas . . . . . . . . . . . . . . . . . 91
6.1 Regressão por Mínimos Quadrados
6.2 Ajuste trigonométrico
6.3 Exercícios Propostos

7 Interpolação . . . . . . . . . . . . . . . . . . . . 111
7.1 Polinômios interpoladores de Lagrange
7.2 Polinômios interpoladores por Diferenças Divi-
didas de Newton
7.3 Exercícios Propostos
5. Sistemas de Equações Lineares - SEL

Em muitas aplicações práticas nas ciências e nas engenharias, os dados são frequentemente
organizadas em linhas e colunas formando um sistema de equações lineares e para extrair
informações relevantes, geralmente temos que resolver tais sistemas. O objetivo principal
deste capítulo é o estudo de técnicas de resolução dos sistemas de equações lineares - SEL.
Como exemplo, 

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

 a21 x1 + a22 x2 + · · · + a2n xn = b2

..


 .

an1 x1 + an2 x2 + · · · + ann xn = bn .

Que escrito no forma matricial é dado por:


    
a11 a12 · · · a1n x1 b1
a21 a22 · · · a2n  x2  b2 
    
  ..  =  .. 
 . .. 
...
   
 .
 . · · · .  .   . 
an1 an2 · · · ann xn bn

Ax = b

onde,
• A → representa a matriz dos coeficientes;
• x → o vetor de parâmetros desconhecidos e;
• b → o vetor de parâmetros conhecidos ou vetor solução.
74 Capítulo 5. Sistemas de Equações Lineares - SEL

O método básico para resolver um sistema de equações lineares é substituir o sistema


fornecido por um novo sistema que tenha a mesma solução definida, mas de uma forma
mais simples de se obter. A solução geralmente é obtida através de um conjunto de técnicas,
tais como as que veremos a seguir.

5.1 Métodos Diretos

5.1.1 Método de Eliminação de Gauss

Seja o SEL:     
a11 a12 a13 · · · a1n x1 b1
a23 · · · a2n  x2  b2 
    
a21 a22
    
a a
 31 32 a33 · · · a3n 
 x3  b3 
   
 ..   ...  =  ... 
    

 .    
 ai1 ai2 ai3 · · · ain   xi   bi 
    
 ..  .   . 
 .   . 
.  .   . 


an1 an2 an3 · · · ann xn bn
que pode ser escrito na forma de matriz aumentada, em que a matriz de coeficientes A é
concatenada com o vetor solução b:
 
a11 a12 a13 · · · a1n b1
a23 · · · a2n b2 
 
 a21 a22
 
a a
 31 32 a33 · · · a3n b3 

 .. .
.

 . .

 ai1 ai2 ai3 · · · ain bi 
 
 .. .
.
. .



an1 an2 an3 · · · ann bn

[A|b] .

O método de eliminação de Gauss consiste em efetuar operações elementares nas linhas da


matriz aumentada, tomando os elementos da diagonal como pivô, de modo a transformar a
matriz no equivalente a um SEl triangular superior (ou inferior), tomando em cada passo o
elemento da diagonal principal como pivô.

[A|b] → [A∗ |b∗ ]


(op.element.)
5.1 Métodos Diretos 75

 Exemplo 5.1 Seja o SEL:


 
a11 a12 a13 | b1
a21 a22 a23 | b2 
 

a31 a32 a33 | b3


que após a eliminação progressiva, o SEL se resume a,
 
a11 a12 a13 | b1
 0 a022 a023 | b02 
 

0 0 a033 | b03

podendo ser resolvido via aplicação da substituição regressiva apresentando, em seguida, o


vetor solução. 

 Exemplo 5.2 Use o método de eliminação de Gauss para resolver o seguinte SEL:

 2x1 + 3x2 − x3 = 5

4x1 + 4x2 − 3x3 = 3

2x1 − 3x2 + x3 = −1.

Etapa 01 - Escrever a matriz aumentada do sistema, ou seja


 
2 3 −1 |5
 4 4 −3 |3 
 

2 −3 1 |−1

Etapa 02 - Operações elementares sobre as linhas da matriz aumentada até obter uma
matriz triangular superior (ou inferior).
 
2 3 −1 |5
 0 −2 −1 |−7 
 

0 0 5 |15

Etapa 03 - Aplicando as substituições retroativas, obtemos:

15
x3 = =3
3

−7 + 3
x2 = =2
2
5 − 3.2 + 3
x1 = =1
2

76 Capítulo 5. Sistemas de Equações Lineares - SEL

Armadilhas dos métodos de eliminação de Gauss


• Divisão por zero : tanto durante a fase de eliminação quanto durante a de substituição
é possível ocorrer uma divisão por zero.

 0x1 + 2x2 + 3x3 = 8

4x1 + 6x2 + 7x3 = −3

2x1 + x2 + 6x3 = 5

Também podem surgir problemas quando um coeficiente está muito próximo de zero.
A técnica de pivotamento foi desenvolvida para evitar parcialmente esses problemas.
• Erros de arredondamento : O problema de erros de arredondamento pode tornar-se
particularmente importante quando se resolve um número grande de equações, por
causa do fato de que cada resultado depende dos resultados anteriores. Conseqüente-
mente, um erro nas etapas iniciais tende a se propagar — isto é, irá causar erros nas
etapas subseqüentes
• Sistemas mal condicionados : são aqueles para os quais pequenas mudanças nos
coeficientes resultam em grandes mudanças nas soluções.
Técnicas para melhorar a solução
• Uso de mais variáveis significativas
• Pivotamento parcial: determinar o maior coeficiente disponível na coluna abaixo do
elemento pivô. As linhas podem ser trocadas de modo que o maior coeficiente seja o
elemento pivô.

5.1.2 Método de Gauss - Jordan


O método de Gauss - Jordan, consiste numa modificação no método de Gauss, de modo a
transformar o SEL, num sistema equivalente com a matriz dos coeficientes sendo a matriz
identidade.
[A|b] → [I|b∗ ]
(op.element.)

uma outra aplicação do método de Gauss - Jordan é o de encontrar a matriz inversa,


consistindo basicamente na resolução do SEL,

AX = I → X = A−1

 Exemplo 5.3 Resolva o SEL, utilizando o método de eliminação de Gauss - Jordan.



 3x1 + 2x2 + 4x3 = 1

x1 + x2 + 2x3 = 2

4x1 + 3x2 − 2x3 = 3

5.2 Métodos de Decomposição 77

e encontre a matriz inversa de,  


1 0 1
A = 0 1 2
 

0 1 1


5.2 Métodos de Decomposição


Consiste em decompor a matriz A no produto de uma matriz triangular inferior L e uma
matriz triangular superior U. Com isso podemos utilizar o método de decomposição na
resolução de sistemas A.x = b, bem como o cálculo da inversa da matriz A. É um método
vantajoso quando se necessita resolver um sistema de equações para inúmeros vetores b0 s
diferentes.
Outros métodos de decomposição consistem em,
• Decomposição Doolittle: L possui uma diagonal unitária;
• Decomposição Crout: U possui uma diagonal unitária;
• Decomposição Cholesky: U = LT ou L = U T .
 Exemplo 5.4
     
a11 a12 a13 1 0 0 u11 u12 u13
a21 a22 a23  = l21 1 0 .  0 u22 u23 
     

a31 a32 a33 l31 l32 1 0 0 u33



 3x1 − 0, 1x2 − 0, 2x3 = 7, 85

0, 1x1 + 7x2 − 0, 3x3 = −19, 3

0, 3x1 − 0, 2x2 + 10x3 = 71, 4

5.2.1 Decomposição Cholesky


Uma matriz simétrica A = AT e definida positiva xT .A.X > 0 pode ser decomposta como:
(
G.d = b
A = G.GT ⇒
GT .x = d

 Exemplo 5.5 Para a seguinte matriz


 
4 2 −4
A =  2 10 4 
 

−4 4 9
78 Capítulo 5. Sistemas de Equações Lineares - SEL

• Decompor a matriz A = G.GT ;


• Calcular o determinante de A;
• Resolver o SEL, considerando b = [0 6 5]T .


5.2.2 Decomposição LU
Dado um sistema A.X = b com A ∈ Rn×n , o método de decomposição LU consiste em
fatorar a matriz A como um produto de duas matrizes, A = L.U, de modo que uma
seja triangular inferior, L e a outra triangular superior, U. O sistema resultante a ser
resolvido se resume a,

Ax = b → L.U = b → L|{z}
U.x = b. (5.1)
y

Ou seja, O nosso objetivo é decompor a matriz A em duas matrizes, uma triangular inferior
(L) e uma triangular superior (U).
 
a11 a12 · · · a1n
· · · a2n 
 
a21 a22
 .
 . .. .. . =
 . . . .. 
an1 an2 · · · ann
  
1 0 · · · 0 u11 u12 · · · u1n
· · · 0  0 u22 · · · u2n 
  
l21 1
 . .. . . ..   .. .. .. .. 

 . . . . . . 
 . . . 
ln1 ln2 ··· 1 0 0 · · · unn
A = L.U

E, em seguida resolver por meio da substituição progressiva,

Ly = b

e por substituição regressiva,


Ux = y.

Exemplo da decomposição LU
 
a11 a12 a13
a21 a22 a23  =
 

a31 a32 a33


5.2 Métodos de Decomposição 79
 
u11 u12 u13
l21 u11 l21 u12 + u22 l21 u13 + u23
 

l31 u11 l31 u12 + l32 u22 l31 u13 + l32 u23 + u33
Daí,podemos concluir que:
a1n = u1n , n = 1, 2, 3
a21
a21 = l21 u11 → l21 =
u11
a22 = l21 u12 + u22 → u22 = a22 − l21 u12

a23 = l21 u13 + u23 → u23 = a23 − l21 u13

e,
a31
a31 = l31 u11 → l31 =
u11
(a32 − l31 u12 )
a32 = l31 u12 + l32 u22 → l32 =
u22
a33 = l31 u13 + l32 u23 + u33 → u33 = (a33 − l31 u13 ) − l32 u23

 Exemplo 5.6  
10 −7 0
A = −3 2 6
 

5 −1 5


Matriz inversa com decomposição LU

Sabendo que:
A.A−1 = A−1 .A = I

Podemos concluir que a inversa pode ser calculada coluna a coluna, gerando soluções para
vetores unitários.
     0   00       
1 0 0 d1 d1 d1 1 0 0
    0   00       
l21 1 0 . d2  , d2  , d2  = 0 , 1 , 0

l31 l32 1 d3 d30 d300 0 0 1


     0   00     0   00 
u11 u12 u13 x1 x1 x1 d1 d1 d1
    0   00     0   00 
 0 u22 u23  . x2  , x2  , x2  = d2  , d2  , d2 

0 0 u33 x3 x30 x300 d3 d30 d300

de modo que X = A−1 .


Podemos unir de maneira direta os métodos de eliminação de Gauss e decomposição LU,
80 Capítulo 5. Sistemas de Equações Lineares - SEL

de modo a obter de maneira direta e conjunta a solução do SEL, para isso iremos mostrar o
processo por meio do seguinte exemplo. Considerando,
 
a11 a12 a13 a14 b1
 
 a21 a22 a23 a24 b2 
Aa = 
a

 31 a32 a33 a34 b3 



a41 a42 a43 a44 b4

Passo 1 - Escolha o pivô e dos multiplicadores : p1 6= 0. Geralmente p1 = a11 e os


multiplicadores: m1 = ap211 , m2 = ap311 e m3 = ap311 , que correspondem, respectivamente aos
elemento l21 , l31 e l41 da matriz L.
Passo 2 - Calcular os termos da seguinte matriz, a partir da matriz original aumentada. Ou
seja,


1 a a 1 a a 1 a a 1 a b
(1) 11 12 (1) 11 13 (1) 11 14 (1) 11 1
a22 = , a23 = , a24 = , b2 =
p1 a21 a22 p1 a21 a23 p1 a21 a24 p1 a21 b2

1 a a 1 a a 1 a a 1 a b
(1) 11 12 (1) 11 13 (1) 11 14 (1) 11 2
a32 = , a33 = , a34 = , b3 =
p1 a31 a32 p1 a31 a33 p1 a31 a34 p1 a31 b3


(1) 1 a11 a12 (1) 1 a11 a13 (1) 1 a11 a14 (1) 1 a11 b3
a42 = , a = , a = , b =
p1 a41 a42 43 p1 a41 a43 44 p1 a41 a44 4

p1 a31 b4

gerando a seguinte matriz,


 
a11 a12 a13 a14 b1
 (1) (1) (1) (1) 
(1)
 0 a22 a23 a24 b2 
Aa =
 0 (1) (1) (1) (1)

 a32 a33 a34 b3  
(1) (1) (1) (1)
0 a42 a43 a44 b4

(1)
(1) a32
escolhendo-se um novo pivô p2 = a22 6= 0 e calculando os multiplicadores m4 = p2 e
(1)
a42
m5 = , correspondendo ao elementos l32 e l42 da matriz L e, calculando-se os seguintes
p2
termos,

(1) (1) (1) (1) (1) (1)
(2) 1 a22 a23 (2) 1 a22 a24 (1) 1 a22 b2
a33 = (1) , a34 = p (1) (1) , b3 = p (1)
p2 a(1) (1)

31 a33 2 a31 a34 2 a31 b3
5.2 Métodos de Decomposição 81

(1) (1) (1) (1) (1) (1)
(2) 1 a22 a23 (2) 1 a22 a24 (1) 1 a22 b3
a43 = (1) , a44 = p (1) (1) , b4 = p (1)
p2 a(1) (1)

42 a43 2 a42 a44 2 a31 b4

obteremos a seguinte matriz,


 
a11 a12 a13 a14 b1
 (1) (1) (1) (1) 
(2)
 0 a22 a23 a24 b2 
Aa =
 0 (2) (2) (2)

 0 a33 a34 b3  
(2) (2) (2)
0 0 a43 a44 b4

(2)
(2) a43
e, finalmente escolhendo p3 = a33 6= 0 e m6 = p3 = l43 , temos:

(2) (2) (1) (2)
(3) 1 a33 a34 (3) 1 a33 b3
a44 = (2) , b4 = p (1)
p3 a(2) (2)

43 a44 3 a43 b4

ou seja,  
a11 a12 a13 a14 b1
 (1) (1) (1) (1) 
(3)
 0 a22 a23 a24 b2 
Aa =
 0 (2) (2) (2)

 0 a33 a34 b3  
(3) (3)
0 0 0 a44 b4
que corresponde a matriz da eliminação de Gauss e de maneira similar, temos que
   
a11 a12 a13 a14 1 0 0 0
 (1) (1) (1)   
0 a22 a23 a24  m 1 1 0 0
U= (2) (2) ,
 L= 
0
 0 a33 a34 
m m
 2 4 1 0

(3)
0 0 0 a44 m3 m5 m6 1

correspondendo as matrizes da decomposição LU.

 Exemplo 5.7 Um Algoritmo de criptografia (cifra de Hill) para textos utilizando a


decomposição LU. Como exemplo, iremos criptografar o texto : Resolver sistema.

• Passo 01: Considere o seguinte conjunto, com m = 29, onde m representa a quanti-
dade de letras e caracteres:
A = 1, B = 2, C = 3, D = 4, E = 5 F = 6 G = 7, H = 8, I = 9 J = 10, K = 11, L = 12,
M = 13, N = 14, O = 15, P = 16, Q = 17, R = 18, S = 19, T = 20, U = 21, V = 22,
W = 23, X = 24, Y = 25, Z = 26, Espaço = 27, # = 28 e @ = 0.
Para o texto escolhido temos que:
Resolver sistema = 18, 5, 19, 15, 12, 22, 5, 18, 27, 19, 9, 19, 20, 5, 13, 1 que escrito na
82 Capítulo 5. Sistemas de Equações Lineares - SEL

forma matricial é equivalente a,


   
R E S O 18 5 19 15
   
L V E R 12 22 5 18
T = =
27 19 9 19


 S I S  
T E M A 20 5 13 1

• Passo 02 : Escolha uma matriz referente a chave K da criptografia. No caso, iremos


escolher a seguinte matriz,
 
1 1 1 1
 
2 4 8 16 
K=
3 9 27 81 

 
4 16 64 256

de modo que MDC(det(K), m) = 1. Esta condição garante a existência de uma


matriz inversa K −1 (mod m).
• Passo 03: Cifrar o texto por meio da seguinte operação matricial C = (K T )(mod m),
    
1 1 1 1 18 5 19 15 77 51 46 53
    
2 4 8 16  12 22 5 18  620 330 338 270 
C=
3 9 27 81  27 19 9 19 = 2511 1131 1398 801 
   
    
4 16 64 256 20 5 13 1 7112 2868 4060 1820 mod 29


 77 = 2 × 29 + 19    

 19 22 17 24 S V Q X
 620 = 21 × 29 + 11


    
11 11 19 9  K K S I
C = 2511 = 86 × 29 + 17 = 
17 0 6 18 = Q
  
 . @ F R


 ..    


1820 = 62 × 29 + 22
 7 26 0 22 G Z @ V

onde SV QXKKSIQ@FRGZ@V corresponde ao texto cifrado.


• Passo 04 : Decompor a matriz K = LU.
  
1 0 0 0 1 1 1 1
  
2 1 0 0
 0 2 6 14

K=
3

 3 1 0 

0 0 6 36
4 6 4 1 0 0 0 24
5.2 Métodos de Decomposição 83

• Passo 05 : Criptografar o texto cifrado por meio de X = L−1C (mod m)




    
1 0 0 0 19 22 17 24 19 22 17 24
    
−2 1 0 0 11 11 19 9  = −27 −33 −15 −39
   
X =
 3 −3 1
 0 17 0 6 18  41
    33 0 63 

−4 6 −4 1 7 26 0 22 −71 4 22 −99 mod 29
   
19 22 17 24 S V Q X
   
 2 25 14 19 B Y N S
=
12 4 0 5  = L
   =⇒ SV QXBY NSLD@EPDV X.
   D @ E
16 4 22 24 P D V X
Portanto, SV QXBY NSLD@EPDV X corresponde efetivamente ao texto criptogra-
fado.
Antes de explicar o processo de decriptografia, se faz necessário o entendimento da
inversa de uma matriz modular.
 Exemplo 5.8 – Calcular o determinante da matriz K:
n
det(K) = ∏ uii
i=1

e MDC(det(K), m) = 1 de modo a garantir que a matriz U é invertível mó-


dulo m. No exemplo anterior temos que det(K) = 288 e MDC(288 , 29) = 1.
Portanto, a matriz U é invertível módulo 29.
– Encontrar (det(K))−1 , onde

(det(K))(det(K))−1 ≡ 1(mod m).

Como temos que det(K) = 288 → 288.x ≡ 1(mod 29). onde x corresponde ao
inverso multiplicativo modular de 288, então


 x = 1 → 288 = 1 × 29 + 259

x = 2 → 288.2 = 976 = 33 × 29 + 19





 x = 3 → 288.3 = 864 = 29 × 29 + 23


 x = 4 → 288.4 = 1152 = 39 × 29 + 21

 ..
.





x = 14 → 288.14 = 4032 = 139 × 29 + 1.

Portanto, (det(K))−1 = 14.


– Sabemos que U −1 = (det(K))−1 .ad j(U) (mod m), onde ad j(U) corresponde

84 Capítulo 5. Sistemas de Equações Lineares - SEL

a adjunta da matriz U. Ou seja,


 
288 −144 96 −72
 
0 144 −144 132
U −1 = 14 
 

 0
 0 48 −72 

0 0 0 12
 
4032 −2016 1344 −1008
 
 0 2016 −2016 1848 
= 
 0
 0 672 −1008 

0 0 0 168 mod 29
de modo que,  
1 14 10 7
 
−1
0 15 14 21
U = 
0 0 5 7 

0 0 0 23


• Passo 06 : Obtenção do texto original por meio da seguinte operação,


To = (U −1 X)(mod m).
  
1 14 10 7 19 22 17 24
  
0 15 14 21  2 25 14 19
To = 
   
 0 0 5 7  12 4 0 5 
 
0 0 0 23 16 4 22 24
   
279 440 367 508 18 5 19 15
   
534 515 672 859 12 22 5 18
=
172 48
 =
 
 154 193
  27 19 9 19 

368 92 506 552 mod 29 20 5 13 1
 
R E S O
 
L V E R
=  =⇒ RESOLV ER SIST EMA.

 S I S
T E M A
Que corresponde ao texto original. 
5.3 Métodos Iterativos 85

5.3 Métodos Iterativos

Um método para calcular a solução única de um sistema Ax = b, A = (aij ) i, j = 1, · · · n e


det(A) 6= 0 é denominado iterativo quando fornece uma sequência de soluções aproximadas
a partir de iterações anteriores. Ou seja,

x(k+1) = Cxk + d, k = 0, 1, · · ·

em que Cnxn é a matriz das iterações e dnx1 é um vetor. De modo que,

lim xk = x̄
k→∞

5.3.1 Método iterativo de Jacobi - Richardson

seja o SEL: 

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

a12 x1 + a22 x2 + · · · + a2n xn = b2

..


 .

an1 x1 + an2 x2 + · · · + ann xn = bn



 x1 = a111 (b1 − (a12 x2 + a13 x3 + · · · + a1n xn ))

 x2 = 1 (b2 − (a21 x1 + a23 x3 + · · · + a2n xn ))

a22
..


 .
 1
xn = ann (bn − (an1 x1 + an2 x2 + · · · + ann−1 xn−1 ))

−a12 −a13 −a1n


      b 
x1 0 a11 a11 · · · a11 x1 1
a11
   −a22 −a23 −a2n     b2 
0 a22 · · ·
x2   a a22  x2   a22 
   
 .  =  22
 .   .. .. .. ..   ..  +  .. 
.  . . . .  .   . 
−an1 −an2 bn
xn ann ann ··· 0 xn ann .

Assim, podemos escrever o sistema como sendo x = Cx + d. onde:


(
0 se i = j
ci j = −ai j i, j = 1, 2, · · · , n
se i 6= j
aii

e
bi
di j = i, j = 1, 2, · · · , n
aii
Dessa forma podemos escrever o método iterativo de Jacobi - Richardson:

x(k+1) = Cx(k) + d k = 0, 1, · · ·
86 Capítulo 5. Sistemas de Equações Lineares - SEL

ou seja,   
(k+1) 1 (k) (k) (k)


 x1 = a11 b1 − (a12 x2 + a13 x3 + · · · + a1n xn )
  
 x(k+1) = (k) (k) (k)
 1
b2 − (a21 x1 + a23 x3 + · · · + a2n xn )

2 a22
.. .



  . 
xn(k+1) = 1 (k) (k) (k)

bn − (an1 x1 + an2 x2 + · · · + ann−1 xn−1 )

ann

Que na forma geral, pode ser escrito como:


" !#
n
(k+1) 1 (k)
xi = bi − ∑ ai j x j , i = 1, 2, · · · , n
aii j=1; j6=i

convergência
Sejam uma norma matricial consistente e x(0) ∈ Rn a solução inicial. Se kCk < 1, então a
sequência de soluções será tal que x(k+1) = Cxk + d, k = 0, 1, · · · converge para a solução
x̄ do sistema Ax = b.
Uma possível condição de parada:

(k+1) (k)
x − x
Er = ∞ ≤ε
x(k+1)

Algoritmo - Método de Jacobi


Dados : An×n , bn×1 , x(0) , max, tol
Para k = 1 : max, faça
Para i = 1 : n, faça
!
n
(k+1) 1 (k)
xi = bi − ∑ ai j x j
aii j=1, j6=i

Se Er ≤ tol, então
x = x(k+1)
Senão, se k = max, então
não houve convergência
 Exemplo 5.9 Usando o método de Jacobi - Richardson, determine uma solução aproxi-
mada para o seguinte SEL, com aproximação inicial x(0) = [0 0 0]T e precisão de ε = 0, 01.

10x1 + 2x2 + x3 = 14

x1 + 5x2 + x3 = 11

2x1 + 3x2 + 10x3 = 8


5.3 Métodos Iterativos 87

 Exemplo 5.10 Usando o método de Jacobi - Richardson, determine uma solução aproxi-
mada para o seguinte SEL, com aproximação inicial x(0) = [0, 7 − 1, 6 0, 6]T e precisão de
ε = 10−2 . 
 x1 + 5x2 + x3 = −8

10x1 + 2x2 + x3 = 7

2x1 + 3x2 + 10x3 = 6

5.3.2 Método de Gauss - Seidel

Esse método difere do processo de Jacobi por utilizar para o cálculo de uma componente
de x(k+1) o valor mais recente das demais componentes.
Forma geral:
" !#
i−1 n
(k+1) 1 (k+1) (k)
xi = bi − ∑ ai j x j + ∑ ai j x j , i = 1, 2, · · · , n
aii j=1 j=i+1

Testes de convergência

O método converge se:

• O critério das linhas for satisfeito:


n ∗
kAk1 = max ∑ ai j < 1
1≤i≤n
j=1; j6=i

• Ou o critério das colunas for satisfeito:


n ∗
kAk∞ = max ∑ ai j < 1
1≤ j≤n
i=1;i6= j

onde
ai j
a∗i j =
aii
• Ou a matriz é Extritamente Diagonalmente predominante:
n
∑ ai j < |aii | , i = 1, 2, · · · , n
j=1; j6=i

• Ou atender ao critério de Sassenfeld:

β = max βi < 1
1≤i≤n
88 Capítulo 5. Sistemas de Equações Lineares - SEL

Critério de Sassenfeld:
β = max βi < 1
1≤i≤n

onde
n
∑ a∗1 j

β1 =
j=2
e
i−1 n
∑ a∗i j β j +

βi = ∑ ai j , i = 2, · · · , n.
j=1 j=i+1

Se β < 1, a sequência x(k) , gerada pelo método iterativo de Gauss - Seidel, converge para
o solução do sistema.

Algoritmo - Método de Gauss - Seidel


Dados : An×n , bn×1 , x(0) , max
Para k = 1 : max, faça
Para i = 1 : n, faça
!
i−1 n
(k+1) 1 (k+1) (k)
xi = bi − ∑ ai j x j − ∑ ai j x j
aii j=1 j=i+1

 Exemplo 5.11 
 5x1 + x2 + x3 = 5

3x1 + 4x2 + x3 = 6

3x1 + 3x2 + 6x3 = 0

5.3.3 Métodos diretos x métodos iterativos


Métodos diretos
Recomendados para sistemas de pequeno porte com matrizes de coeficiente densas.

Métodos Iterativos
Bastante vatajosos para sistemas de grande porte cuja matriz de coeficiente seja esparsa.
No entanto, é necessário verificar as condições de convergência.
5.4 Exercícios Propostos 89

5.4 Exercícios Propostos


Exercício 5.1 Considere o SEL A.x = b,
     
1 α 3 x1 −2
α 1 4 . x2  = −3
     

5 2 1 x3 4

• Para que valores de α, a matriz A pode ser decomposta no produto LU?


• Considere α = 1 e resolva o sistema por Eliminação de Gauss.


Exercício 5.2 Resolva o SEL adequadamente, utilizando decomposição de Cholesky



 2x1 + yx2 − x3 = 3

x1 + 10x2 + zx3 = 6

kx1 + 2x2 + 4x3 = −6

Exercício 5.3 Num determinado circuito elétrico, as correntes i1 , i2 e i3 passam através


das impedâncias z1 , z2 e z3 por meio do seguinte SEL:

i1 + i2 + i3 = v1 − v3

z1 i1 − z2 i2 = v1 − v2

z2 i1 − z3 i3 = v2 − v3

com, v1 + v2 + v3 = 122V , v1 − v3 = 0, v1 − v2 = 70V , z1 = 6Ω, z2 = 8Ω e z3 = 4Ω.


Determine as correntes no circuito. 

Exercício 5.4 Um estudante de Engenharia deseja montar um computador, no entanto


ainda faltam 3 componentes. A, B e C. Se adquirir, respectivamente:
• 4, 5 e 6 componentes, gastará 1.700, 00;
• 5, 2 e 10 componentes, gastará 2.120, 00;
• 6, 6 e 4 componentes, gastará 1.670, 00.
Determine o preço de cada componente. 

Exercício 5.5 Resolva o SEL pelo método iterativo de Gauss - Seidel, de modo que o
erro relativo sejam menor que 10−2 ,
90 Capítulo 5. Sistemas de Equações Lineares - SEL


 x1 + x2 − 5x3 = 4

x1 − 10x2 − x3 = 2

5x1 + x2 + x3 = 1

Exercício 5.6 Ordene o seguinte SEL de modo que o critério de convergência de


Sassenfeld seja atendido.

 3x1 + 3x2 − 5x3 = 2

10x1 + 3x2 + 2x3 = −20

5x1 + 5x2 − 3x3 = 10

Exercício 5.7 Sistemas idealizados de massa-mola desempenham um papel importante


na mecânica e em outros problemas da engenharia. A Figura abaixo mostra tal sistema.
Assim que são soltas, as massas são puxadas para baixo pela força da gravidade.
Observe que o deslocamento de cada mola é medido em coordenadas locais relativas à
sua posição inicial.
• Usando a segunda lei de Newton e a lei de Hooke modele um sistema de equações
lineares;
• considerando as derivadas nulas e, m1 = 2kg, m2 = 3kg, m3 = 2, 5kg e k = 10 kg
s2
,
use a decomposição LU para determinar os deslocamentos.

6. Ajuste de Curvas

Um problema básico na engenharia é ajustar um modelo matemático a um conjunto de


dados sujeito a erros (possivelmente erros de medição e no modelo). Como exemplo,
considere os pares ordenados (xi ; yi )m
i=1 , para serem ajustadas a um modelo descrito
por uma função ou curva y = f (w, x), onde w ∈ Rn é um vetor de parâmetros a serem
determinados e a função deve ser tal que possa representar a tendência geral dos dados.
Claramente, quanto mais dados (observações) estiverem disponíveis, mais preciso será
o modelo proposto na determinação dos parâmetros a ajustar no modelo. Na engenharia
um problema de ajuste de curvas ou regressão, pode ser visto por exemplo, como um
meio de filtrar um sinal atenuando ou até eliminando o ruído (muitas vezes, indesejável)
presente ao sinal. Questões como essas, estão diretamente relacionadas à Estatística e a
teoria de aproximação de funções. Na formulação da teoria, os modelos de regressão são
frequentemente ajustados utilizando uma abordagem denominada de mínimos quadrados.

6.1 Regressão por Mínimos Quadrados


Seja o modelo apresentado na figura (6.1), onde um sinal u(k) é apresentado a um sistema
desconhecido e ao mesmo tempo a um modelo matemático adaptativo. De modo a
obtermos dois sinais, y(k) fornecido pelo sistema desconhecido e ŷ(k) fornecido pelo
modelo adaptativo. Ao compararmos os respectivos sinais, obtemos um erro E = y(k) −
ŷ(k). O objetivo num problema dessa natureza é ajustar a saída do modelo adaptativo
ŷ, de modo ao mesmo ficar o mais próximo possível do sinal apresentado pelo sistema
desconhecido y, minimizando o erro quadrático. Uma vez atingido o objetivo, dizemos
92 Capítulo 6. Ajuste de Curvas

Figura 6.1: Clássico problema de regressão.

que o modelo matemático adaptativo, ajustou-se ao sistema desconhecido, representando


assim toda a dinâmica do mesmo. Ou seja, o modelo “identifica” o sistema.
Suponha que ao ser apresentado um sinal u(k) ao sistema desconhecido da figura (6.1),
foi fornecido o seguinte sinal de saída y(k). Uma pergunta natural é, dentre os modelos

25

20

15

10

0
1 2 3 4 5 6 7 8 9 10

Figura 6.2: Exemplo aplicado ao sistema da figura (6.1).

matemático apresentados na figura (6.3), qual o que “melhor” se ajusta ao sistema? Baseado
em qual métrica? Como escolher o “melhor” modelo?
Pela tendência dos dados, claramente vemos que uma hipótese razoavel seria um modelo
matemático, tal como:
ŷ(ui ) = f (wi ; ui ) = w0 + w1 ui

com isso, nosso problema se resume a encontrar os valores w0 e w1 que melhor ajustam o
modelo. Mas, ainda resta uma dúvida. qual a métrica utilizada para medir a qualidade do
ajuste?. Ou seja, dado o conjunto de dados de entrada e saída do modelo (desconhecido),
como identificá-lo ou representá-lo pelo método de regressão? Para isso iremos utilizar
um funcional de custo, definido como:

1 m
J= ∑ (Ei )2 (6.1)
2 i=1
6.1 Regressão por Mínimos Quadrados 93

25

20

15

10

0
1 2 3 4 5 6 7 8 9 10

Figura 6.3: Diferentes modelos de ajuste aos dados da figura (6.2).

onde E = y − ŷ representa o erro do processo. De modo que para o problema proposto,


podemos reescrever a expressão (6.1) como,

1 m 1 m
J= ∑ (yi − ŷ(ui ))2 ⇒ J = ∑ (yi − (w0 + w1 ui ))2 .
2 i=1 2 i=1

Para minimizar o erro precisamos encontrar os valores de w0 e w1 que nos dão o ponto de
mínimo na superfície quadrática dada pelo funcional de custo.

Figura 6.4: Gráfico do funcional de custo para duas variáveis w0 e w1 .

Para isso, utilizaremos o conceito do vetor gradiente, iremos operar da seguinte forma:

∂J ∂J
=0 e =0
∂ w0 ∂ w1
94 Capítulo 6. Ajuste de Curvas

obtendo as seguintes expressões,


" #
m
∂J
∂ w0
= ∑ (yi − (w0 + w1ui)) (−1) = 0
i=1

" # !
m m
∂J
∂ w1
= ∑ (yi − (w0 + w1ui)) − ∑ xi =0
i=1 i=1

que corresponde a um sistema de equações lineares, que escrito na forma matricial,


corresponde a
! ! ! ! ! !
m ∑m
i=1 ui w0 ∑mi=1 yi h1, 1i h1, ui w0 h1, yi
= → =
∑m
i=1 ui ∑m 2
i=1 ui w1 ∑m
i=1 yi .ui hu, 1i hu, ui w1 hy, ui
(6.2)
T T T
em que 1 = (11 , 12 , · · · , 1m ) , y = (y1 , y2 , · · · , ym ) e u = (u1 , u2 , · · · , um ) pertencem ao
Rm e w = (w0 , w1 )T ∈ R2 .
 Exemplo 6.1 Obter a reta que melhor se ajusta os dados da tabela (6.1)

0 1 2 3 4
0,98 -3,01 -6,99 -11,01 -15
Tabela 6.1: Dados do exemplo 6.1.

! ! ! ! !
5 10 w0 −35, 03 w0 0, 986
= → =
10 30 w1 −110, 02 w1 −3, 996

ŷ = 0, 986. 1 − 3, 996.u

2
Dados reais
0 aproximação

-2

-4

-6

-8

-10

-12

-14

-16
0 0.5 1 1.5 2 2.5 3 3.5 4

Figura 6.5: Gráfico do exemplo 6.1.


6.1 Regressão por Mínimos Quadrados 95

6.1.1 Caso Geral


Se o modelo que desejamos ajustar for uma combinação linear de várias funções φi (x) na
forma
n
y = f (x) = ∑ wi φi (x) = w0 φ0 (x) + w1 φ1 (x) + · · · + wn φn (x) (6.3)
i=0

onde as constantes w0 s são desconhecidas, e as φ 0 s são as denominadas funções de base.

 Exemplo 6.2 Seja φi (x) = xi , i = 1, · · · , n uma classe de funções que constituem uma
base {1, x, x2 , · · · , xn } no espaço n dimensional de funções polinomiais. De modo que
qualquer função neste espaço pode ser escrito como uma combinação linear de funções da
base palinomial. Ou seja,
n
f (x) = ∑ wi xi = w0 + w1 x + w2 x2 + · · · + wn xn
i=0

Para resolver um problema com funções de base polinomiais, em que dado o conjunto
de pares ordenados (xi ; f (xi ))m
i=0 , obter os valores dos parâmetros desconhecidos, se
resume a resolver o seguinte sistema de equações lineares,



 w0 + w1 x0 + w2 x02 + · · · + wn x0n = f (x0 )
2 n

 w0 + w1 x1 + w2 x1 + · · · + wn x1 = f (x1 )



w0 + w1 x2 + w2 x22 + · · · + wn x2n = f (x2 )

 ..



 .
w + w x + w x2 + · · · + w xn = f (x )

0 1 m 2 m n m m

que escrito na forma matricial equivale a,


     
1 x0 x02 ··· x0n w0 f (x0 )
x1 x12 x1n 
     
1
 ··· 
w1 
 
 f (x1 ) 
 
1
 x2 x22 ··· x2n 

w 
 2 =  f (x2 ) 
 
⇒ X.w = f.
. .. ... ..   .   . 
 .. . ··· .  ..   .. 
     
1 xm xm2 · · · xmn wn f (xm )
m×n n×1 m×1

Utilizando o funcional de custo,

1 1 1
kf − Xwk2 = (f − Xw)T (f − Xw) = fT f − fT Xw − wT XT f + wT XT Xw

J=
2 2 2

fazendo,
∂J
=0
∂w
96 Capítulo 6. Ajuste de Curvas

obteremos:
−XT f + XT Xw = 0

XT Xw = XT f (6.4)

que representa as equações normais que fornecem o vetor de parâmetros w0 s que minimi-
zam o erro quadrático. Assim,
−1
w = XT X XT f (6.5)

 Exemplo 6.3 Obtenha uma aproximação polinomial do tipo,

f (x) = w0 + w1 x + w2 x2

para o conjunto de dados da tabela

xi -2 -1 1 2 3
yi 13,86 4,935 5,79 15,99 32,48

   
1 −2 4 13, 86
  
1 −1 1 w0 04, 93
 
    
 w1  = 05, 79
1 1 1   

1 2 4 w2 15, 99
   

1 3 9 32, 48

XT Xw = XT f
    
5 3 19 w0 3, 05
 3 19 27  w1  = 102, 56
    

19 27 115 w2 422, 44
   
w0 2, 1541
→ w1  = 0, 5154
   

w2 3, 1965

f (x) = 2, 1541 + 0, 5154x + 3, 1965x2 .


6.1 Regressão por Mínimos Quadrados 97

60
Dados reais
aproximação
50

40

30

20

10

0
-2 -1 0 1 2 3 4

Figura 6.6: Gráfico do exemplo 6.3.

Para medir a qualidade do ajuste iremos utilizar como referência o vetor erro residual,
ou seja
r = f − Aw

Iremos adotar 2 (duas) formas para expressar um quantitativo para o residual. A norma
euclidiana, q
||r||2 = r12 + r22 + · · · + rn2

e, a raiz da média da norma do erro quadrático.

√ ||r||2
RMSE = m (6.6)
m

Para o exemplo (6.3) temos,


 
−0, 0492
 0, 0948 
 
 
 −0, 0759  → ||r||2 = 0, 1329 e RMSE = 0, 0594.
r= 
 0, 01915
 

0, 01129


98 Capítulo 6. Ajuste de Curvas

Voltando a equação (6.3) e considerando m = n temos o seguinte sistema de equações


lineares, 


 w0 φ0 (x0 ) + w1 φ1 (x0 ) + w2 φ2 (x0 ) + · · · + wn φn (x0 ) = f (x0 )

w0 φ0 (x1 ) + w1 φ1 (x1 ) + w2 φ2 (x1 ) + · · · + wn φn (x1 ) = f (x1 )



w0 φ0 (x2 ) + w1 φ1 (x2 ) + w2 φ2 (x2 ) + · · · + wn φn (x2 ) = f (x2 )

 ..



 .
w φ (x ) + w φ (x ) + w φ (x ) + · · · + w φ (x ) = f (x )

0 0 n 1 1 n 2 2 n n n n n

na forma matricial,
    
φ0 (x0 ) φ1 (x0 ) φ2 (x0 ) · · · φn (x0 ) w0 f (x0 )
φ0 (x1 ) φ1 (x1 ) φ2 (x1 ) · · · φn (x1 ) w1   f (x1 )
    
 .  =  . 
 . .. .. 
...
   
 .
 . . ··· .   ..   .. 
φ0 (xn ) φ1 (xn ) φ2 (xn ) · · · φn (xn ) wn f (xn )

onde !2
n
1 1
J = (Ei )2 = f (xi ) − ∑ w j φ j (xi )
2 2 j=0

e, fazendo  
∂ Ei
=0
∂wj j=0,··· ,n
temos, !! !
n n
∂ Ei
= f (xi ) − ∑ w j φ j (xi) − ∑ φi (xi ) =0
∂wj j=0 i=1
!
n n n
⇒ − ∑ f (xi )φi (xi ) + ∑ ∑ w j φ j (xi)φi(xi) =0
i=1 i=0 j=0

podemos simplificar a notação da solução por meio do produto interno. Ou seja,


!
n

⇒ ∑ w j φ j (x), φi(x) − h f (x)φi(x)i = 0
j=0

n

∑ wj φ j (x), φi (x) = h f (x), φi (x)i , i = 0, 1, · · · , n
j=0
6.1 Regressão por Mínimos Quadrados 99

de modo que a solução é dada por,


 
   −1 h f (x), φ0 (x)i
w0 hφ0 (x), φ0 (x)i hφ0 (x), φ1 (x)i ··· φ0 (x), φn (x)  
  h f (x), φ 1 (x)i
w1  hφ1 (x), φ0 (x)i hφ1 (x), φ1 (x)i ··· φ1 (x), φ (x)  
   
 . = .. ..
 
..

 .   .   
 .   . ··· .   .. 
. 
wn hφn (x), φn (x)i hφn (x), φn (x)i ··· φn (x), φn (x)
 
h f (x), φn (x)i
(6.7)
 Exemplo 6.4 Encontre uma função na forma f (x) = w0 cos(x) + w1 ex que melhor se
ajuste ao seguinte conjunto de dados discretos:

xi 0 1 2 3
yi 3,18 3,9 6,5 17,82

3
hφ0 , φ0 i = ∑ cos2 (xi ) = cos2 (0) + cos2 (1) + cos2 (2) + cos2 (3) = 2, 4452
i=0

3
hφ0 , φ1 i = ∑ cos(xi )exi = cos(0)e0 + cos(1)e1 + cos(2)e2 + cos(3)e3 = −20, 4907
i=0

pela simetria do produto interno,

hφ0 , φ1 i = hφ1 , φ0 i = −20, 4907

3
hφ1 , φ1 i = ∑ e2x = e0 + e2 + e4 + e9 = 466, 4160
i=0
3
hy, φ0 i = ∑ yi cos(xi ) = y0 cos(x0 ) + y1 cos(x1 ) + y2 cos(x2 ) + y3 cos(x3 ) = −15, 0594
i=0
3
hy, φ1 i = ∑ yi exi = y0 ex0 + y1 ex1 + y2 ex2 + y3 ex3 = 419, 7344
i=0

cuja solução é
! !−1 ! !
w0 2, 4452 −20, 4907 −15, 0594 2, 1880
= =
w1 −20, 4907 466, 4160 419, 7344 0, 9960

→ f (x) = 2, 1880 cos(x) + 0, 9960 ex


√ ||r||2 1
RMSE = 4 = 0, 0556 = 0, 028.
4 2
100 Capítulo 6. Ajuste de Curvas

que caracteriza um bom ajuste conforme pode ser conferido no gráfico da seguinte figura, 

18
dados reais
16 aproximação

14

12

10

2
0 0.5 1 1.5 2 2.5 3

Figura 6.7: Gráfico do exemplo 6.4.

6.1.2 Ajuste não linear


Existem algumas funções em que não é possível escrever a priori como uma combinação
linear de funções de base, nestes casos se faz necessário algum “artifício matemático” para
ser possível ajustar o conjunto de dados com comportamento similar as funções citadas.
Como exemplo, temos:

 Exemplo 6.5
y = α1 eβ1 x



 f (x) = ln(y)

φ =1


 0


ln(y) = ln(α1 ) + β1 x ⇒ φ1 = x

w0 = ln(α1 ) → α1 = ew0







w = β
1 1


 Exemplo 6.6
y = α2 xβ2



 f (x) = log(y)

φ =1


 0


log(y) = log(α2 ) + β2 log(x) ⇒ φ1 = log(x)

w0 = log(α2 ) → α2 = 10w0







w = β
1 2

6.1 Regressão por Mínimos Quadrados 101

 Exemplo 6.7
x
y = α3
β3 + x
1


 f (x) =



 y

 1
φ0 =


x



1 β3 1 
= + ⇒ φ1 = 1
y α3 x α3 

 β3
w0 =





 α3


 1
w1 =

α3


Podemos de certa forma “linearizar” estas funções de forma a usar a regressão linear
por mínimos quadrados definida na equação (6.2).

 Exemplo 6.8 Um experimento no laboratório de física gerou os pontos dados na seguinte


tabela. Obtenha uma ajuste do tipo y = αeβ x para o conjunto. obtenha uma ajuste do tipo

xi -2 -1 0 1 2 3
yi 0,05 0,15 0,4 1,1 2,3 7,1
Tabela 6.2: Tabela do exemplo 6.8.

y = αeβ x para o conjunto.



 5
hφ0 , φ0 i = ∑ 1 = 6




i=0





 5
hφ i hφ i


 0 1

 , φ = ,
0 1φ = ∑ xi = 3


 i=0
5


hφ1 , φ1 i = ∑ xi2 = 19
i=0






 5



 h f , φ 0 i = ∑ ln(yi) = −2, 9208


 i=0
5



h f , i = ∑ ln(yi)xi = 15, 5299



 φ 1
i=0

cuja solução é obtida por meio de


! ! ! !
w0 6 3 −2, 9208 −0, 9722
= = → α = ew0 = 0, 3782
w1 3 19 15, 5299 0, 9708
102 Capítulo 6. Ajuste de Curvas

com
f (x) = αeβ x = 0, 3782 e0,9708x

e, √
6
RMSE = 0, 3786 = 0, 1545
6


8
dados reais
7 aproximação

0
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2 2.5 3

Figura 6.8: Gráfico do exemplo 6.8.

6.2 Ajuste trigonométrico


Agora iremos abordar uma tipo especial de aproximação ou ajuste utilizando mínimos
quadrados denominada aproximação de Fourier. Para isso iremos considerar a equação
(6.3), escrita da seguinte forma,

a0
f (x) = +a1 cos(x)+a2 cos(2x)+· · ·+cos(nx)+b1 sen(x)+b2 sen(2x)+· · ·+bn sen(nx).
2
(6.8)
Num subespaço do C ([0 ; 2π]) com funções de base,

℘ = {1, cos(x), cos(2x), · · · , cos(nx), sen(x), sen(2x), · · · , sen(nx)}

que são ortogonais, tal como mostrado no exercício 0.3 na página 16. No entanto, no
mesmo exercício, vimos que normalizando cada função da base ℘, podemos obter uma
base ortonormal,
B = {v0 , v1 , · · · , vn , vn+1 , · · · , v2n }
 
1 1 1 1 1
= √ , √ cos(x), · · · , √ cos(nx), √ sen(x), · · · , √ sen(nx) .
2π π π π π
6.2 Ajuste trigonométrico 103

Pela proposição (0.2.1), equação (12) na página 17, podemos então, escrever cada função
nesse subespaço como,

f (x) = h f , v0 i v0 + h f , v1 i v0 + · · · + h f , vn i vn . (6.9)

Para que a equação (6.8) seja igual a (6.9). É necessário que,


Z 2π Z 2π
a0 2 1 1
= h f , v0 i v0 → a0 = √ f (x) √ dx → a0 = f (x)dx
2 2π 0 2π π 0

Z 2π Z 2π
cos(x) cos(x) 1
a1 cos(x) = h f , v1 i v1 → a1 cos(x) = √ f (x) √ dx → a1 = f (x)cos(x)dx
π 0 π π 0
..
.
Z 2π
1
an cos(nx) = h f , vn i vn → an = f (x)cos(nx)dx
π 0

1 2π
Z
b1 sen(x) = h f , vn+1 i vn+1 → b1 = f (x)sen(x)dx
π 0
..
.
1 2π
Z
bn sen(nx) = h f , v2n i v2n → bn = f (x)sen(nx)dx.
π 0
A função f (x) é a aproximação trigonométrica de Fourier no intervalo [0 ; 2π]. Com
coeficientes
1 2π
 Z


 a0 = f (x)dx


 π 0
1 2π
 Z
ak = f (x)cos(kx)dx, k = 1, 2, · · · , n (6.10)

 π 0
1 2π

 Z

bk = f (x)sen(kx)dx, k = 1, 2, · · · , n


π 0

 Exemplo 6.9 Encontre a aproximação de Fourier de n-ésima ordem da função f (x) = x


no intervalo [0 ; 2π].

n
a0
f (x) = + ∑ (ak cos(kx) + bk sen(kx))
2 k=1


x2 4π 2
Z 2π
1
a0 = x dx = = = 2π
π 0 2 0 2π
 
Z 2π Z 2π
1 1 
(xsen(kx)|2π −

ak = x cos(kx) dx = 0 sen(kx)dx=0
π 0 kπ |
 {z } |0
0
{z }
0
104 Capítulo 6. Ajuste de Curvas
 
Z 2π Z 2π
1 1 
(xcos(kx)|2π −  = −2

bk = x sen(kx) dx = − 0 cos(kx)dx
π 0 kπ | {z } |0  k

{z }
0

cuja aproximação de ordem n-ésima é dada por,


n
sen(kx)
f (x) ≈ 2π − 2 ∑
k=1 k
 
1 1 1 1
= π − 2 sen(x) + sen(2x) + sen(3x) + sen(4x) + · · · + sen(nx)
2 3 4 n


2
função
aproximação
1

-1
0 1 2 3 4 5 6 7

Figura 6.9: aproximação da função f (x) = x, com n = 8.

R função par f (x) = f (−x)


função ímpar f (−x) = − f (x)

Se a função dada for uma função par e como sen(x) é uma função ímpar, temos:
Z 2π
f (x)sen(x)dx = 0, (6.11)
0

portanto,
n
a0
f (x) ≈ + ∑ ak cos(kx). (6.12)
2 k=1
Caso contrário, ou seja, f (x) for ímpar, temos:

n
f (x) ≈ ∑ bk sen(kx).
k=1
6.2 Ajuste trigonométrico 105

 Exemplo 6.10 Obter uma aproximação de terceira ordem para a função:

f (x) = |x| , −π ≤ x < π.

Como a função f (x) = |x| é uma função par, a aproximação será dada pela expressão
(6.12), com  π
2 π 2 x2
Z
a0 = x dx = =π
π 0 π 2 0
 
 π
2 π 2 x sen(kx) 1 π
Z Z 
ak = x cos(kx)dx =  − + sen(kx)dx

π 0 π k 0 k 0 
| {z }
0

2 4
= [cos(kx)]π0 = −
k2 π k2 π
π 4 n cos((2k − 1)x)
f (x) ≈ − ∑
2 π k=1 (2k − 1)2


Uma outra forma, geralmente a mais conveniente, pode ser obtida por meio das
fórmulas de Euler,
ikx + e−ikx
 
e
cos(kx) =





 2
e (6.13)

ikx −ikx
 
sen(kx) = e − e



2i
onde i2 = −1 é a unidade imaginária. Substituindo as equações (6.2) na expressão (6.8).
Obtemos, !
eikx + e−ikx eikx − e−ikx
n

a0
f (x) = + ∑ ak + bk
2 k=1 2 2i
" #
n h 
1 ikx −ikx
 
ikx −ikx
i
f (x) = a0 + ∑ ak e + e − ibk e − e
2 k=1
" #
n h
1 i
f (x) = a0 + ∑ (ak − ibk )eikx + (ak + ibk )e−ikx
2 k=1
a0 ak −ibk ak +ibk
fazendo, c0 = 2 , ck = 2 e ck = 2 , podemos reescrever a expressão anterior como,

n
f (x) = ∑ ck eikx (6.14)
k=−n
106 Capítulo 6. Ajuste de Curvas

que corresponde uma outra forma de aproximação trigonométrica utilizando variáveis


complexas graças a presença da exponencial complexa. O foco do nosso estudo têm sido
funções periódicas com período fundamental 2π, que são totalmente definidas por seus
valores num intervalo de [−π π], ou [0 2π]. Se uma função de x possui período ∆x, então
n
podemos dividir o intervalo considerando, por exemplo, t = 2π ∆x x, n = 0, 1, · · · , N − 1
que converte a função em uma função na variável t com período 2π. A função pode ter
valores complexos, pois a função exponencial complexa é conveniente para manipulações.
Nosso problema se resume então a encontrar ck ∈ C tal que, se a série na equação (6.14)
converge para f (x) no intervalo 0 ≤ x ≤ 2π. Para algum inteiro m, multiplicando (6.14)
por e−imx , obtemos:
n Z 2π n Z 2π
−imx i(k−m)x −imx
f (x)e = ∑ ck e → f (x)e dx = ∑ ck ei(k−m)x dx;
k=−n 0 k=−n 0

no entanto,  2π
i(n−m)x
 e

= 0 se k 6= m
Z 2π 
i(k−m)x
e dx = i(n − m) 0
0 
 2π

x|0 = 2π se k = m
onde,
1 2π
Z
cm = f (x)e−imx dx, (6.15)
2π 0
que é válida se a série descrita em (6.14) for convergente.
Definição 6.2.1 Se f possui período 2π e é integrável no intervalo de [−π ; π], a série


∑ cn eint
n=−∞

com coeficientes obtidos via (6.15) é denominada a série de Fourier da f ; e os números


complexos cn são os coeficientes de Fourier da função.

Geralmente, se a função f (t) possui período T , a série de Fourier pode ser escrita como,
∞ nt
∑ cn e2πi T ,
n=−∞

e os coeficientes de Fourier,
T
1
Z
2 nt
cn = f (t)e−2πi T dt.
T − T2
6.3 Exercícios Propostos 107

No entanto, a maioria das funções de uso na engenharia, são representadas por meio de um
conjunto finito de valores discretos. Quando não, os dados são coletados ou convertidos
do contínuo para o discreto por meio de conversores. Neste caso, representamos a função
discreta como,
N−1 nk
Fk (n) = ∑ f (n)e−2πi N , k = 0, 1, · · · , N − 1.
n=0

cuja inversa é dada por

1 N−1 nk
f (n) = ∑ Fk (n)e2πi N , n = 0, 1, · · · , N − 1.
N k=0

O subscrito n é usado para designar os instantes discretos nos quais as medidas foram
tomadas. Logo, f (n) designa o valor da função definida no contínuo f (t) no instante tn .

6.3 Exercícios Propostos


Exercício 6.1 Considere o seguinte funcional de custo

1 n
J= ∑ (yi − f (xi ))2
2 i=1

onde f (x) = ax + bsen(x) e (xi ; yi ) é um conjunto de pontos no plano. Para minimizar o


funcional de custo, tome as derivadas parciais em relação as parâmetros a e b, monte o
SEL e encontre sua solução para os pares ordenados:(1; 1, 68), (1, 2; 2, 05) e (2; 2, 51). 

Exercício 6.2 O pH em um reator varia senoidalmente no decorrer de um dia. Utilize


regressão por mínimos quadrados para ajustar uma curva senoidal ao conjunto de dados,

t(h) 0 2 4 5 7 9 12 15 20 22 24
pH 7,6 7,2 7 6,5 7,5 7,2 8,9 9,1 8,9 7,9 7

Use o ajuste obtido para determinar a média, a amplitude e o instante de pH máximo.


Observe que o período é de 24h. 

Exercício 6.3 Após serem efetuadas medições num gerador elétrico, foram obtidos os
seguintes valores,

I(A) 1, 58 2, 15 4, 8 4, 9 3, 12 3, 01
V (v) 210 180 150 120 60 30

• ajuste os dados por uma função polinomial de grau adequado;


108 Capítulo 6. Ajuste de Curvas

• estime o valor da tensão obtida no voltímetro para um valor de 3, 05A.




Exercício 6.4 É conhecido que a queda de voltagem através de um indutor segue a lei
de Faraday,

di
VL = L.
dt
onde VL é a queda de tensão no indutor (em volts), L é a indutância (em henrys) e i
a corrente (em ampères). Use os seguintes dados para fazer uma estimativa do valor da
indutância,
di A
dt , s 1 2 4 6 8 10
VL ,V 5,5 12,5 17,5 32 38 49


Exercício 6.5 Os seguintes dados mostram a relação entre a viscosidade de um deter-


minado óleo e a temperatura. Use regressão não linear para ajustar uma equação de
potência para esses dados,

T 26,67 93,33 148,89 315,56


µ 1,35 0,085 0,012 0,00075

onde µ representa a viscosidade e T a temperatura. 

Exercício 6.6 Seja o seguinte conjunto de pontos,

xk −1, 0 −0, 6 −0, 2 0, 2 0, 6 1, 0


yk −0, 9602 0, 6405 −0, 2013 −0, 1647 0, 3449 −0, 3201
ci −1, 5 −0, 5 0, 0 0, 4 1, 0

encontre a função

f (x) = a0 φ0 (x) + a1 φ1 (x) + a2 φ2 (x) + a3 φ3 (x) + a4 φ4 (x)


 −1 
2 2
com φi (xk ) = exp − 2σ (xk − ci ) , i = 0, 1, · · · , 4 (e, σ definido pelo usuário)
que melhor ajusta o conjunto de pontos. De modo que RMSE ≤ 0, 03. 
6.3 Exercícios Propostos 109

Exercício 6.7 Obter uma aproximação de quarta ordem para a função:


(
−1, −π ≤ x < 0
f (x) =
1, 0 ≤ x < π

Exercício 6.8 Faça uma aproximação trigonométrica das seguintes funções:


(
0, −π ≤ x < 0
f (x) = n=6
x, 0 ≤ x < π

(
−1, −π ≤ x < 0
f (x) = n=6
3, 0 ≤ x < π
x
f (x) = , x ∈ [−π, π], n = ∞

2

x
f (x) = , x ∈ [−π, π[, n = 5
2
(
1, 0 ≤ x < π
f (x) = n=6
0, π ≤ x < 2π

 1, −π ≤ x < π

f (x) = 0, π ≤ x < 2π n = 4.

0, −2π ≤ x < −π


7. Interpolação

Interpolação polinomial geralmente é o início de algum processo numérico. Geralmente,


são utilizados como blocos de construção para algoritmos mais complexos em diferen-
ciação, integração, solução de equações diferenciais, teoria da aproximação, bem como
outras aplicações.A interpolação é um caso especial de ajuste de curvas ou aproximação.
Por exemplo, assim como ajuste de curvas, dado um conjunto de pontos, (xi ; yi )ni=0 in-
terpolar equivale a encontrar uma função f (x) que passe exatamente pelos pontos dados,
satisfazendo
f (xi ) = yi , i = 0, 1, · · · , n.

Geralmente, representamos a função interpolante, como uma combinação linear de funções


de base, linearmente independentes. Ou seja,
n
f (x) = ∑ w j φ j (x) = w0φ0(x) + w1φ1(x) + · · · + wnφn(x),
j=0

assim, como num problema de ajuste de curvas, {w j }nj=0 são os parâmetros desconhecidos
do modelo e {φ j (x)}nj=0 funções de base pré-definidas. Neste curso, iremos considerar a
interpolação polinomial.
Teorema 7.0.1 — Existência do polinômio interpolador. Sejam x0 , x1 , · · · , xn pon-
tos distintos, então para os valores y0 , y1 , · · · , yn , existe um único polinômio p de grau
menor ou igual a n tal que p(xi ) = yi para 0 ≤ i ≤ n.
112 Capítulo 7. Interpolação

7.1 Polinômios interpoladores de Lagrange


Seja a função y = f (x) definida num intervalo [x0 ; x2 ], cujo gráfico é dado pela figura 7.1.
Aparentemente o gráfico consiste de uma função quadrática. Portanto, devemos aproximar
nossa função por meio de um simples polinômio de ordem 2. Ou seja,

p2 (x) = w0 + w1 x + w2 x2 . (7.1)

O método de interpolação consiste em no intervalo dado [x0 ; x2 ], escolher um ponto

Figura 7.1: aproximação da função quadrática.

interior x1 , cujas imagens são: 


y = f (x0 )
 0


y1 = f (x1 )


y2 = f (x2 ).

Iremos construir o polinômio (7.1) tal que os pontos x0 , x1 , x2 possuam imagem na função
quadrática original. Ou seja, 
p (x ) = y0
 2 0


p2 (x1 ) = y1


p2 (x2 ) = y2 .

Para auxiliar na resolução do problema, vamos começar construindo um polinômio auxiliar


Li (x j ) de segunda ordem, satisfazendo as seguintes condições,
(
1 se i = j
Li (x j ) =
0 se i 6= j.

Por exemplo, L0 (x0 ) = 1, L0 (x1 ) = 0 e L0 (x2 ) = 0. Portanto,

L0 (x) = A(x − x1 )(x − x2 ). (7.2)


7.1 Polinômios interpoladores de Lagrange 113

Mas,
1
L0 (x0 ) = A(x0 − x1 )(x0 − x2 ) = 1 → A = .
(x0 − x1 )(x0 − x2 )
Substituindo na equação (7.2), obtendo:

(x − x1 )(x − x2 )
L0 (x) = .
(x0 − x1 )(x0 − x2 )

De maneira similar podemos obter,

(x − x0 )(x − x2 )
L1 (x) =
(x1 − x0 )(x1 − x2 )

(x − x0 )(x − x1 )
L2 (x) = .
(x2 − x0 )(x2 − x1 )
Portanto o polinômio desejado é dado pela seguinte expressão:

p2 (x) = y0 L0 (x) + y1 L1 (x) + y2 L2 (x)

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


= y0 + y1 + y2 .
(x0 − x1 )(x0 − x2 ) (x1 − x0 )(x1 − x2 ) (x2 − x0 )(x2 − x1 )

 Exemplo 7.1 Interpolar a curva y = sen(x) no intervalo [0 ; π], por um polinômio de


grau 2.
Solução: Escolhendo x1 = π2 , temos que,

 y0 = sen(0) = 0

y1 = sen( π2 ) = 1

y2 = sen(π) = 0

que resume nossa solução ao seguinte polinômio,

(x − x0 )(x − x2 ) (x − 0)(x − π) 4
p2 (x) = y1 L1 (x) = = π π = 2 x(π − x).
(x1 − x0 )(x1 − x2 ) ( 2 − 0)( 2 − π) π

Generalizando, vamos denotar um interpolador polinomial de grau n, por


n
f (x) ≈ pn (x) = ∑ w j x j = w0 + w1x + w2x2 + · · · + wnxn.
j=0
114 Capítulo 7. Interpolação

0.9

0.8

0.7

0.6

0.5 função original


função interpoladora
0.4

0.3

0.2

0.1

0
0 0.5 1 1.5 2 2.5 3 3.5

Figura 7.2: interpolação da função do exemplo 7.1.

para n + 1 pontos de dados. Na interpolação devemos calcular os coeficientes desconheci-


dos w0 , w1 , · · · , wn de modo que

pn (xi ) = yi , i = 0, 1, · · · , n.

Assumiremos, inicialmente que xi 6= x j sempre que i 6= j e sejam, os n + 1 polinômios


pi (x) de grau n escritos na sua forma fatorada, através do seguinte SEL:



 p0 (x) = (x − x1 )(x − x2 ). · · · .(x − xn )

 p1 (x) = (x − x0 )(x − x2 ). · · · .(x − xn )



p2 (x) = (x − x0 )(x − x1 ). · · · .(x − xn )

 ..



 .
 p (x) = (x − x )(x − x ). · · · .(x − x )

n 0 1 n−1

Ou de forma simplificada
n
pi (x) = ∏ (x − x j ), i = 0, 1, · · · , n
j=0
j6=i

que possuem as seguintes propriedades:


(
pi (xi ) 6= 0 ∀ i
pi (x j ) = 0 ∀ j 6= i.

e, são conhecidos como polinômios de Lagrange. Como o polinômio p(x) que desejamos
encontrar é de grau n e contém os pontos {(xi , yi )}ni=0 , podemos escrevê-lo como uma
7.1 Polinômios interpoladores de Lagrange 115

combinação linear dos polinômios pi (x), i = 0, 1, · · · , n. Então,

pn (x) = w0 + w1 p1 (x) + · · · + wn pn (x)

ou
n
pn (x) = ∑ wi pi (x)
i=0

seja
n
pn (xm ) = ∑ wi pi (xm ) = w0 p0 (xm ) + w1 p1 (xm ) + · · · + wm pm (xm ) + · · · + wn pn (xm )
i=0

pela propriedade dos polinômios de Lagrange, temos que pi (xm ) = 0 e pm (xm ) 6= 0 de


modo que,
pn (xm ) = wm pm (xm )

daí temos
pn (xm )
wm =
pm (xm )
como consideramos inicialmente que pn (xi ) = yi , vale a relação:

yi
wi =
pi (xi )

Concluindo, temos:
n
yi
pn (x) = ∑ pi (x)
i=0 pi (xi )
ou
n
pi (x)
pn (x) = ∑ yi
i=0 pi (xi )
com isso teremos o polinômio interpolador de Lagrange:
n n (x − x j )
pn (x) = ∑ yi ∏
i=0 j=0 (xi − x j )
j6=i

 Exemplo 7.2 Determinar o polinômio interpolador de Lagrange para a função conhecida


pelos seguintes pontos e determinar o valor p(0, 3):

i 0 1 2 3
xi 0 0, 2 0, 4 0, 5
yi 0 2, 0 4, 06 5, 12
116 Capítulo 7. Interpolação
x(x − 0, 4)(x − 0, 5) 250
L1 (x) = = x(x − 0, 4)(x − 0, 5)
0, 2(0, 2 − 0, 4)(0, 2 − 0, 5) 3

x(x − 0, 2)(x − 0, 5)
L2 (x) = = −125x(x − 0, 2)(x − 0, 5)
0, 4(0, 4 − 0, 2)(0, 4 − 0, 5)
x(x − 0, 2)(x − 0, 4) 200
L3 (x) = = x(x − 0, 2)(x − 0, 4)
0, 5(0, 5 − 0, 2)(0, 5 − 0, 4) 3
de modo que o polinômio interpolador é dado por:

500 1015 1024


p3 (x) = x(x − 0, 4)(x − 0, 5) − x(x − 0, 2)(x − 0, 5) + x(x − 0, 2)(x − 0, 4)
3 2 3

6
função original
função interpoladora
5

0
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5

Figura 7.3: interpolação da função do exemplo 7.2.

Teorema 7.1.1 — Erro de truncamento E(x). Seja f (x) uma função definida e (n + 1)
vezes diferenciável num intervalo [a; b]. Sejam x0 , x1 , · · · , xn , (n + 1) pontos distintos no
intervalo. Se p(x) interpola f (x) nestes pontos, então o erro cometido E(x) é dado por,

|ψ(x)|
E(x) = f (x) − p(x) ≤ M
(n + 1)!

em que M = max[ f (n+1) (x)], x ∈ [a; b],e

n
ψ(x) = ∏(x − xi )
i=0

Teorema 7.1.2 — Erro de truncamento E(x) para pontos equidistantes. Seja f (x)
uma função definida e (n + 1) vezes diferenciável num intervalo [a; b].
7.2 Polinômios interpoladores por Diferenças Divididas de Newton 117

Sejam x0 , x1 , · · · , xn , (n+1) pontos distintos equidistantes no intervalo. Se p(x) interpola


f (x) nestes pontos, então o erro cometido E(x) é dado por,
2
h
E(x) = f (x) − p(x) ≤ M
8

em que M = max[ f (2) (x)], x ∈ [a; b]

 Exemplo 7.3 Considere a função f (x) = cos(x), tabelada nos pontos,

xi 0, 2 0, 4 0, 6
yi 0, 9801 0, 9211 0, 8253

• Determine o polinômio interpolador de Lagrange, calcule o valor da função no ponto


x = 0, 5 e o limite superior do erro.
1
• Qual deve ser a amplitude do intervalo a ser considerado na função f (x) = (1+x)
no intervalo [0; 2], de modo que utilizando um polinômio interpolador de primeira
ordem, apresente um erro menor ou igual a 0, 0001?


7.2 Polinômios interpoladores por Diferenças Divididas de Newton


Definição 7.2.1 Seja f (x) uma função contínua, (n + 1) vezes diferenciável e definida
em x0 , x1 , · · · xn , (n + 1) pontos distintos num intervalo [a; b].
Definimos diferença dividida de ordem zero de uma função f (x) definida nos pontos
xi , i = 0, 1, · · · , n por:
f [xi ] = f (xi ), i = 0, 1, · · · , n

Definimos diferença dividida de ordem n de uma função uma função f (x) definida
nos pontos xi , i = 0, 1, · · · , n por:

f [x1 , x2 , · · · , xn ] − f [x0 , x1 , · · · , xn−1 ]


f [x0 , x1 , · · · , xn ] =
xn − x0

 Exemplo 7.4 Construir a tabela de diferenças divididas da função,

1
f (x) =
x

definida nos pontos x0 = 1, x1 = 2, x2 = 4 e x3 = 5. 

Teorema 7.2.1 — Diferenças divididas. Seja f (x) uma função contínua (n + 1) vezes
diferenciável num intervalo [a; b]. Sejam x0 , x1 , · · · , xn , (n + 1) pontos distintos no
118 Capítulo 7. Interpolação

intervalo. Então, temos


n
f (xi )
f [x0 , x1 , · · · , xn ] = ∑ n
i=0 ∏ j=0, j6=i (xi − x j )

Considerando os pontos x0 e x, temos:

f [x] − f [x0 ]
f [x0 , x] = , x 6= x0
(x − x0 )

portanto,
f (x) = f (x0 ) + (x − x0 ) f [x0 , x]

Da mesma forma, considerando x0 , x1 e x, temos:

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

substituindo f [x0 , x] na expressão anterior, temos:

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

Assim, sucessivamente, temos:

f [x0 , x1 , · · · , xn−1 , x] − f [x0 , x1 , · · · , xn ]


f [x0 , x1 , · · · , xn , x] = , x 6= xn
(x − xn )

Logo, temos,

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

· · · + (x − x0 )(x − x1 ) · · · (x − xn ) f [x0 , x1 , · · · , xn , x]

Desta forma, podemos escrever:

f (x) = P(x) + R(x)

em que,

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

· · · + (x − x0 )(x − x1 ) · · · (x − xn ) f [x0 , x1 , · · · , xn , x]

R(x) = (x − x0 )(x − x1 ) · · · (x − xn ) f [x0 , x1 , · · · , xn , x]


7.3 Exercícios Propostos 119

Teorema 7.2.2 — Polinômio Interpolador de Newton. seja f (x) uma função con-
tínua e definida em x0 , x1 , · · · , xn , (n + 1) pontos distintos de um intervalo [a; b]. O
polinômio de grau ≤ n baseado nas diferenças divididas e dado por,

n i−1
P(x) = f [x0 ] + ∑ ∏ (x − x j ) f [x0 , x1 , · · · xi ]
i=1 j=0

interpola f (x) nos pontos x0 , x1 , · · · , xn . Sendo,

f n+1 (ε)
f [x0 , x1 , · · · xi ] = , ε ∈ [a; b]
(n + 1)!

Limitante superior do erro


|∏ni=0 (x − xi )|
|E(x)| ≤ M
(n + 1)!
em que
(n+1)
M = max f (x) , x ∈ [x0 , xn ]

ou
M = | f [x0 , x1 , · · · xi ]| , x ∈ [x0 , xn ]

 Exemplo 7.5 Considere a função f (x) = ex + sen(x), tabelada nos pontos,

xi 0 0, 5 1, 0
yi 1 2, 1281 3, 5598

determine o polinômio interpolador de Newton, calcule o valor da função no ponto x = 0, 7


e o limite superior do erro. 

7.3 Exercícios Propostos


Exercício 7.1 A tabela seguinte apresenta a velocidade de queda de um paraquedista
em função do tempo:

t(s) 1 3 5 7 20
v( cm
s ) 800 2310 3090 3940 8000

• Estime o valor da velocidade no instante de tempo t = 10s, utilizando um polinô-


mio interpolador de grau 3;
• Calcule uma aproximação do erro cometido na questão anterior.

120 Capítulo 7. Interpolação

Exercício 7.2 Para a função dada, seja x0 = 0, x1 = 0, 6 e x2 = 0, 9. Construa polinô-


mios de grau n ≤ 2, para aproximar f (0,45), e encontre o erro relativo.
• f (x) = cos(x)

• f (x) = 1 + x
• f (x) = ln(x + 1)


Exercício 7.3 A velocidade ascendente de um foguete é dada como uma função do


tempo, conforme a seguinte tabela:

t(s) 0 10 15 20 22, 5 30
v( ms ) 0 22, 04 362, 78 517, 35 602, 97 901, 67

• determine a velocidade do foguete em t = 16s;


• determine a distância percorrida pelo foguete entre t = 11s e t = 16s;
• determine a aceleração do foguete em t = 16s.


Exercício 7.4 Considere a seguinte função


Z x
sen(t)
Si (x) = dt t ∈ [0 ; 10].
0 t

Construa um polinômio interpolador que melhor ajusta a função original. Considere


n = 6. 

Exercício 7.5 Num determinado experimento, levou-se a água ao ponto de ebulição,


desejamos no entanto calcular o calor específico da água a 61◦ C. O calor específico da
água é dado conforme a seguinte tabela:

Temperatura 22 42 52 82 100
Calor específico 4181 4179 4186 4199 4217

Determine o valor do calor específico na temperatura de 61◦ C utilizando os polinômios


interpoladores de Lagrange. 
IV
Unidade III

8 Integração Numérica . . . . . . . . . . 123


8.1 Regra do trapézio
8.2 As Regras de Simpson
8.3 Quadratura de Gauss
8.4 Exercícios Propostos

9 Resolução Numérica de EDO’s 137


9.1 Método de Euler
9.2 Métodos de Runge - Kutta
9.3 EDO’s de ordem superior
9.4 Exercícios Propostos
8. Integração Numérica

A existência da integral definida de uma função f não negativa num intervalo fechado
[a ; b] é baseada na interpretação da integral como o cálculo da área sob o gráfico de uma
função no intervalo. A integral definida pode ser definida pelo conceito de integral de
Riemann. Para isso, vamos particionar o intervalo [a ; b] de modo que a partição P seja
dada por,
P = {a = x0 < x1 < x2 < · · · < xn−1 < xn = b}

que divide o intervalo [a ; b] em n subintervalos [xi−1 ; xi ].

Definição 8.0.1 Para cada subintervalo Ii = [xi−1 ; xi ] em P, seja

mi = inf{ f (x); x ∈ [xi−1 ; xi ]}

e
Mi = sup{ f (x); x ∈ [xi−1 ; xi ]}

o ínfimo e o supremo da função f

[xi−1 ; xi ]

Definição 8.0.2 A Soma inferior da f com relação a partição P é dada por

n
L( f ; P) = ∑ mi (xi − xi−1 )
i=1
124 Capítulo 8. Integração Numérica

e a soma superior da f com relação a P é dada por,


n
U( f ; P) = ∑ Mi (xi − xi−1 )
i=1

Figura 8.1: Exemplo de uma soma inferior e superior.

Claramente, temos que


n
L( f ; P) ≤ ∑ f (xi )(xi−1 − xi ) ≤ U( f ; P)
|i=1 {z }

em que o termo central da desigualdade (*) é denominado de soma de Riemann.

Teorema 8.0.1 — Integral de Riemann.. Suponha que f : [a ; b] :→ R é contínua no


intervalo, então Z b n

a
f (x)dx = lim
n→∞
∑ f (xi)(ti−1 − ti) (8.1)
i=1

Portanto, pela soma de Riemann, podemos aproximar a integral definida de uma função no
intervalo [a ; b] por meio da seguinte expressão. Ou seja,
Z b n
f (x)dx ≈ ∑ wi f (xi ) (8.2)
a i=0

8.1 Regra do trapézio


considerando o caso mais elementar, ou seja, calcular a área sobre uma reta de modo que a
função f (x) pode ser aproximada via interpolação de Lagrange por um polinômio de grau
1. Ou seja,
f (x) ≈ p1 (x) = f (x0 )L0 (x) + f (x1 )L1 (x), (8.3)
8.1 Regra do trapézio 125

para n = 1 e considerando x0 = a e x1 = b, temos que:

x−b x−a
L0 (x) = e L1 (x) = . (8.4)
a−b b−a

Com isso, igualando as expressões (8.2) a (8.3), obtemos:


Z b Z b Z b
f (x)dx ≈ w0 f (a) + w1 f (b) = f (a) L0 (x)dx + f (b) L1 (x)dx.
a a a

Assim, Z b  Zb Z b 
x−b 1
w0 = L0 (x)dx = dx = b dx − x dx
a a−b b−a a a
b
x2
 2
2b − 2ba − b2 + a2 (b − a)2
   
1 1 1 b−a
w0 = bx − = = =
b−a 2 a b−a 2 b−a 2 2
de maneira semelhante obtemos,
b−a
w1 =
2
Ou seja,
Z b
f (x)dx ≈ w0 f (a) + w1 f (b)
a
Z b
b−a
f (x)dx ≈ ( f (a) + f (b)) (8.5)
a 2
que é conhecida como regra do trapézio.
Seja,
− f 00 (ε)h3
Et =
12
o erro de truncamento com, h = (b − a) e ε como o valor que maximiza | f 00 (x)|. De
maneira que podemos definir o limitante superior para o erro por,

h3
max f 00 (x)

|Et | ≤
12

 Exemplo 8.1 Calcule numericamente pelo método do trapézio e em seguida calcule o


erro real e o erro máximo pela fórmula do erro de truncamento.
Z π
2
I1 = sen(x)dx
0

π
−0  2
 π  π
I1 = sen(0) + sen =
2 2 4
π

1 − 4 π 4−π
4
Er = = − = = 0, 2149
1 4 4 4
126 Capítulo 8. Integração Numérica

− f 00 (ε)h3 sen π2  π
 3
Et = = − 0 = 0, 3230
12 12 2
que corresponde ao erro máximo. 

 Exemplo 8.2 Para I2 , temos:


Z 3,6
1
I2 = dx
3 x
 
3, 6 − 3 1 1 11
I2 = + =
2 3 3, 6 60
|0, 1823 − 0, 1833|
Er = = 5, 48 × 10−3
0, 1823
Repitindo o cálculo de I2 , considerando o limite de integração entre 3 e 100.
 
100 − 3 1 1 9991
I2 = + =
2 3 100 600

|0, 1823 − 16, 6516|


Er = = 90, 3417.
0, 1823


Pelo exemplo, ficou claro que quando o intervalo é grande a regra do trapézio não se
mostra eficiente, sendo necessário uma aprimoramento. Para isso, iremos abordar a regra
do trapézio composto.

Regra do trapézio composta


Se o intervalo [a, b] for de grande amplitude, o erro também terá amplitude elevada.
Uma forma de atenuar este erro, consiste em dividir o intervalo de integração [a, b] em n
subintervalos de tamanho h = (b−a)/n. Conforme pode ser visto na seguinte figura e, em
cada subintervalo, podemos utilizar o método do trapézio. De modo que

Figura 8.2: Exemplo da regra do trapézio composto.

Z b n−1 Z xi+1 n−1


h
f (x)dx = ∑ f (x)dx ≈ ∑ 2 ( f (xi) + f (xi+1))
a i=0 xi i=0
8.2 As Regras de Simpson 127
n−1
h
≈ ∑ 2 ( f (x0) + 2 f (x1) + 2 f (x2) + · · · + 2 f (xn−1) + f (xn))
i=0
!
Z b n−1
(b − a)
f (x)dx ≈ f (a) + 2 ∑ f (xi ) + f (b) (8.6)
a 2n i=1

que é conhecida como regra do trapézio composto.

Erro de truncamento

Em cada um dos n subintervalos, comete-se um erro ligado ao método dos trapézios. Ou


seja,
00
!
− f (ε)h 3
Et ∼
=n
12

b − a 00
Et ∼
=− f (ε)h2
12
O erro é aproximado pois ε varia para cada segmento. Sendo assim podemos definir o
limitante superior para o erro como sendo,

h2 00
|Et | ≤ (b − a) max f (ε)

12

 Exemplo 8.3 Calcule numericamente a seguinte integral utilizando a regra dos trapézios
composta com n = 3.
Z 1
I= x2 dx
0
e, calcule numericamente a seguinte integral com o limitante superior do erro,
Z 1
cos(x)
dx
0 1+x

8.2 As Regras de Simpson

Considere uma função f (x) definida em três pontos distintos e igualmente espaçados
x0 , x1 e x2 num intervalo [a; b], de modo que possamos aproximar a função por um polinô-
mio interpolador (Lagrange) de grau 2 (conforme visto na seguinte figura). Escrito da
128 Capítulo 8. Integração Numérica

Figura 8.3: Exemplo ilustrativo para o método de Simpson.

seguinte forma,
 
a+b
f (x) ≈ p2 (x) = f (a)L0 (x) + f L1 (x) + f (b)L2 (x)
2

tal que 
2 x−xj
Li (x) = ∏  , i = 0, 1, 2.
j=0 xi − x j
j6=i

Considerando, x0 = a, x1 = (a+b)/2 e x2 = b. Tal que,



x − x0 = h
 1


x2 − x1 = h


x2 − x0 = 2h.

Assim, p2 (x) pode ser escrito como,

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


p2 (x) = f (x0 ) + f (x1 ) + f (x2 )
(x0 − x1 )(x0 − x2 ) (x1 − x0 )(x1 − x2 ) (x2 − x0 )(x2 − x1 )

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


= f (x0 ) + f (x1 ) + f (x2 )
(−h)(−2h) h(−h) 2h(h)
f (x0 ) f (x1 ) f (x2 )
= 2
(x − x1 )(x − x2 ) − 2 (x − x0 )(x − x2 ) + (x − x0 )(x − x1 ).
2h h 2h2
Portanto, Z b Z x2 Z x2
f (x)dx = f (x)dx ≈ p2 (x)dx
a x0 x0

onde, Z x2
p2 (x)dx =
x0
Z x2 Z x2 Z x2
f (x0 ) f (x1 ) f (x2 )
(x−x1 )(x−x2 )dx− 2 (x−x0 )(x−x2 )dx+ (x−x0 )(x−x1 )dx.
2h2 x0 h x0 2h2 x0
8.2 As Regras de Simpson 129

De modo que,
Z x2 Z x2
h
f (x)dx ≈ p2 (x)dx = ( f (x0 ) + 4 f (x1 ) + f (x2 ))
x0 x0 3

ou, Z b    
h a+b
f (x)dx ≈ f (a) + 4 f + f (b)
a 3 2
que é denominada de primeira regra de Simpson ou regra do 1/3. Onde h = (b−a)/2.

Limitante superior para o erro


h5
max f 4 (ε)

|E2 | ≤
90

8.2.1 Regra 1/3 de Simpson generalizada


Consiste em dividirmos o intervalo [a; b] em n subintervalos de tamanho constante (h) e
a cada par de subintervalos aplicar a primeira regra de Simpson. OBS: O número n de
subintervalos deverá sempre ser par, de maneira que:
Z b
f (x)dx ≈
a

h h
[ f (x0 ) + 4 f (x1 ) + f (x2 )] + [ f (x2 ) + 4 f (x3 ) + f (x4 )] + · · · +
3 3
h
[ f (xn−2 ) + 4 f (xn−1 ) + f (xn )]
3
Z b
f (x)dx ≈
a
h h
[ f (x0 ) + 4 f (x1 ) + f (x2 )] + [ f (x2 ) + 4 f (x3 ) + f (x4 )] + · · · +
3 3
h
[ f (xn−2 ) + 4 f (xn−1 ) + f (xn )]
3
Z b
f (x)dx ≈
a

h n
∑ [ f (x2i) + 4 f (x2i+1) + f (x2i+2)]
3 i=0
(b − a)
h=
n
Limitante superior para o erro
h4
(xn − x0 )max f 4 (ε)

|Et | ≤
180
130 Capítulo 8. Integração Numérica

 Exemplo 8.4 Calcule numericamente a integral:


Z 3
I= (xex + 1)dx
0

utilizando a primeira regra de Simpson para n = 2 e para n = 6.


Calcule o valor de π, dado pela expressão:
Z 1
dx
I=4
0 1 + x2

com um erro menor que 10−4 . 

 Exemplo 8.5 Calcular o trabalho realizado por um gás sendo aquecido segundo a tabela,
onde,

V (m3 ) 1,5 2,0 2,5 3,0 3,5 4,0 4,5


P( mkg2 ) 80 72 64 53 44 31 22
Z Vf
W= P dV
Vi


8.2.2 Regra 3/8 ou segunda regra de Simpson


A regra 3/8 de Simpson consiste em aproximar a função f (x) entre quatro pontos consecu-
tivos x0 , x1 , x2 e x3 por um polinômio de grau 3.
Neste caso, teremos a seguinte aproximação:
Z b Z x3
3h
f (x)dx ≈ p3 (x)dx = [ f (x0 ) + 3 f (x1 ) + 3 f (x2 ) + f (x3 )]
a x0 8

(b − a)
h= .
n
O erro de truncamento é:
3 f (4) (ε)h5
Et = −
80
Considere a divisão do intervalo [a, b] num número múltiplo de 3 (3n) subintervalos de
tamanho h = (b−a)
n .
Neste caso, teremos a seguinte aproximação:
Z b Z xn
f (x)dx = f (x)dx
a x0

3h
≈ [ f (x0 ) + 3 f (x1 ) + 3 f (x2 ) + f (x3 )]
8
8.3 Quadratura de Gauss 131
3h
+[ f (x3 ) + 3 f (x4 ) + 3 f (x5 ) + f (x6 )] + · · ·
8
3h
+ [ f (xn−3 ) + 3 f (xn−2 ) + 3 f (xn−1 ) + f (xn )]
8

8.3 Quadratura de Gauss


Considere a integral
Z b
f (x)dx
a
desejamos desenvolver uma fórmula de integração da forma:
Z b
f (x)dx = w0 f (x0 ) + w1 f (x1 ) + · · · + wn f (xn ).
a

se f (x) = pm (x),
Z b n
pm (x)dx ≈ ∑ wi pm (xi )
a i=0

Ideia principal
Os pontos a = x0 < x1 < · · · < xn = b não são necessariamente equidistantes,
Z b
f (x)dx ∼
= w0 f (x0 ) + w1 f (x1 ) + · · · + wn f (xn ), f ε p
a

escolher um polinômio de maior grau possível,

pm (x) = am xm + am−1 xm−1 + · · · + a1 x + a0

de modo que: f (x) = 1, x, x2 , x3 , · · · , xm ,


com a escolha apropriada de valores e constantes, podemos obter que a aproximação seja
exata nesse conjunto. A Quadratura de Gauss mais comum é a de Gauss - Legendre, por
estarem associadas ao polinômio de Legendre.

1 dn 2
Pn (x) = n n
[(x − 1)n ].
2 n! dx

Os polinômios de Legendre são ortogonais com relação ao produto interno definido por,
Z 1
h f , gi = f (x)g(x)dx
−1

os quatro primeiros polinômios de Legendre são:

1 3
p0 (x) = 1, p1 (x) = x, p2 (x) = x2 − , p3 (x) = x3 − x.
3 5
132 Capítulo 8. Integração Numérica

Propriedades básicas dos polinômios de Legendre


• Os polinômios de Legendre são ortogonais a outros polinômios. Ou seja,
Z 1
hpn (x) , qm (x)i = pn (x)qm (x)dx = 0, n > m,
−1

sendo qm (x) um, polinômio qualquer de grau menor que n.


• Os polinômios de Legendre são ortogonais entre si,
Z 1
hpn (x) , pm (x)i = pn (x)pm (x)dx = 0, n 6= m.
−1

• Se os polinômios de Legendre forem iguais, então


Z 1
2
hpn (x) , pn (x)i = kpn (x)k2 dx = .
−1 2n + 1

• pn (1) = 1 e pn (−1) = (−1)n , n = 0, 1, 2, · · · .


• O polinômio de Legendre pn (x) de grau n ≥ 1 possui n zeros reais, distintos, perten-
centes ao intervalo (−1 , 1) e simétricos em relação à origem.

Figura 8.4: Polinômios de Legendre da ordem zero a ordem 5.

Quadratura de Gauss para n = 1


Z b
f (x) ∼
= w0 f (x0 ), a ≤ x0 ≤ b
a

f (x) ≈ p1 (x) = a0 + a1 x
(b2 − a2 )
Z b b
2 b

(a0 + a1 x)dx = a0 x + a1 x2 = a0 (b − a) + a1 (8.7)

a a a 2
e,
w0 f (x0 ) = w0 (a0 + a1 x0 ) = a0 w0 + a1 w0 x0 (8.8)
8.3 Quadratura de Gauss 133

igualando as equações (8.7) com a (8.8) obtemos:

b+a
w0 = b − a e x0 =
2

de modo que,
Z b  
b+a b−a
f (x)dx ∼
= (b − a) f ⇐⇒ ( f (a) + f (b))
a 2 2

que corresponde simplesmente a regra do trapézio já estudada.

Quadratura de Gauss para n = 2 e n = 3


Z b
f (x) ∼
= w0 f (x0 ) + w1 f (x1 )
a

f (x) ≈ p2 (x) = a0 + a1 x + a2 x2
Z b b
2 b 3 b

(a0 + a1 x + a2 x2 )dx = a0 x + a1 x2 + a2 x3 =

a a a a

(b2 − a2 ) (b3 − a3 )
a0 (b − a) + a1 + a2
2 3
se considerarmos, Z b Z 1
f (x)dx = f (x)dx
a −1
após algumas manipulações matemáticas, obtemos:
Z 1    
∼ 1 1
f (x)dx = f − √ + f √
−1 3 3

de maneira similar para n = 3, temos:


Z 1
∼ 1  p  p 
f (x)dx = 5 f − 0, 6 + 8 f (0) + 5 f 0, 6
−1 9

uma integral
Z b
f (x)dx, [a, b]
a

pode ser transformada em uma integral em [−1, 1] utilizando mudança de variável. Ou


seja,
2x − (a + b) 1
t= ⇐⇒ x = [(b − a)t + a + b] .
b−a 2
Isso permite que a quadratura de Gauss seja aplicada a todo intervalo [a , b], já que:
Z b Z 1  
b−a b−a b+a
f (x)dx = f t+ dt
a 2 −1 2 2
134 Capítulo 8. Integração Numérica

e, Z b Z 1  
b−a b−a b+a
f (t)dt = f x+ dx.
a 2 −1 2 2
 Exemplo 8.6 Calcular
Z 1
ex cos(x)dx, n = 3
−1
Z 1,5
2
e−x dx, n = 3
1
Z 2
1 x2
√ e− 2 dx, n = 2
2π 0


8.4 Exercícios Propostos


Exercício 8.1 Calcule a seguinte integral
Z π
ecos x dx
0

com erro menor ou igual a 10−3 . 

Exercício 8.2 Um Boeing 727-200 de massa m = 97000 kg aterrissa a uma velocidade


de 93 m/s (em torno de 181 nós) e liga os seus reversos em t = 0. A força F aplicada no
avião à medida que ele reduz a sua velocidade é dada por F = −(5v2 + 570000), onde v
é a velocidade do avião. Usando a segunda lei de Newton do movimento e da dinâmica
dos fluidos, a relação entre a velocidade e a posição x do avião pode ser escrita como:

dv
mv =F
dx

onde x é a distância medida a partir da localização do jato em t = 0.Determine a distância


percorrida pelo avião antes que sua velocidade se reduza a 40 m/s (em torno de 78 nós)
usando o método trapezoidal composto. 

Exercício 8.3 A função f(x) é dada na forma tabulada a seguir.

x 0 0,25 0,5 0,75 1,0


f(x) 0,9162 0,8109 0,6931 0,5596 0,4055

compare 01 f (x)dx com h=0,25 e h=0,5. Utilizando,


R

• O método trapezoidal composto.


8.4 Exercícios Propostos 135

• Use interpolação linear para determinar f(x) nos pontos centrais.


• A regra de Simpson 1/3 generalizada.


Exercício 8.4 Para estimar a área superficial de uma bola de futebol americano, mede-
se o seu diâmetro em diferentes pontos. A área superficial S e o volume V podem ser
determinados usando:
Z L
S= rdz
0
e Z L
V= r2 dz
0
Use o método de Simpson 1/3 composto com os dados abaixo para determinar o
volume e a área superficial da bola.

z(cm) 0 2,5 5,1 7,6 10,2 12,7 15,2 17,8 20,3 22,9 25,4 30,5
d(cm) 0 6,6 8,1 12,2 14,2 15,2 15,7 15,2 14,2 12,2 8,1 0

9. Resolução Numérica de EDO’s

Uma EDO (Equação Diferencial Ordinária) é uma equação regida por uma ou mais
derivadas de uma função. São geralmente utilizadas para modelar e descrever a dinâmica
em inúmeros modelos nas Ciências e na Engenharia.
Em alguns casos, tais equações não apresentam uma solução exata, sendo necessário a
utilização de algum método numérico de modo a apresentar uma solução aproximada ao
problema, que dentro de uma certa margem de erro, pode ser bastante útil na análise e
solução de tais problemas. Se definirmos um valor inicial na análise de tais euqações,
teremos então um problema de PVI (Problema de Valor Inicial) que irá nos auxiliar na
resolução da EDO, que consiste em encontrar uma função y(t) que satisfaz,

dy(t)
y0 = = f (t, y(t)) (9.1)
dt

com a condição inicial y(t0 ) = y0 .


Nauma solução numérica o objetivo se resume a encontrar uma sequência em que a solução
analitica é aproximada por uma solução numérica convergente. Ou seja,

kyi − y(ti )k ≤ tol

com tamanho de passo h = ti+1 − ti , e o erro controlado por uma tolerância definida.
138 Capítulo 9. Resolução Numérica de EDO’s

Problema de Valor Inicial - PVI

A equação diferencial ordinária (9.1) sem uma condição inicial geralmente possui uma
família de soluções. Ao especificar uma condição inicial, podemos identificar qual função
dentre as apresentadas na famílias estamos interessados. Um PVI para uma equação
diferencial ordinária de primeira ordem é a equação juntamente com uma condição inicial
em um intervalo específico a ≤ t ≤ b, em que,

y0 = f (t, y(t)), y(t0 ) = y0 .

onde y0 define a inclinação da reta tangente a uma curva y(t) num ponto (t, y).
Podemos usar essa informação para conhecer a evolução ou a forma da solução y(t). Por
exemplo, a equação
y0 = y

nos diz que a inclinação da reta tangente num ponto (t, y) é igual a sua coordenada y.
Podemos também pensar a solução de uma equação diferencial como um campo vetorial
de isóclinas, como pode ser vista na seguinte figura, e a equação (9.1) pode ser vista como
uma inclinação para quaisquer valores atuais de (t, y). Se usarmos um vetor para plotar a
inclinação em cada ponto do plano, obtemos o campo de inclinação ou o campo direcional,
da equação diferencial.

Figura 9.1: Exemplo ilustrativo de uma família de soluções e PVI com aproximação.

A geometria da figura (9.1) sugere uma abordagem alternativa para ”resolver” computacio-
nalmente a equação diferencial por meio de vetores. Começando de uma condição inicial
(t0 , y0 ) e seguindo iterativamente na direção especificada. Uma vez efetuado o cálculo,
reavalia-se a inclinação no novo ponto (t1 , y1 ) e assim sucessivamente, de modo a obtermos
uma boa aproximação à solução do problema do valor inicial.
9.1 Método de Euler 139

9.1 Método de Euler

O objetivo do método de Euler é obter uma aproximação para a solução do PVI

y0 = f (t, y(t)), a ≤ t ≤ b, y(t0 ) = y0

Considerando t0 um ponto de referência e h um número positivo. De modo que,

ti = t0 ± ih, i = 1, 2, · · ·

as aproximações da função y(t) serão calculadas nesses pontos.


Se assumirmos que a função y(t) possui derivadas de ordem n + 1 em t, sua expansão em
série de Taylor é dada por,

h2 00 hn hn+1 (n+1)
y(t + h) = y(t) + hy0 (t) + y (t) + · · · + y(n) (t) + y (ε)
2! n! (n + 1)!

onde t < ε < t + h.


O último termo da série representa o erro da aproximação de y(t + h) pelos n + 1 termos
da série.
Truncando a série de Taylor no termo de ordem dois, obtemos:

h2 00
y(t + h) = y(t) + hy0 (t) + y (ε)
2!

pela equação (9.1) y0 = f (t, y(t)), temos:

h2 00
y(t + h) = y(t) + h f (t, y(t)) + y (ε)
2!

como h = ti+1 − ti , substituindo na equação anterior, obtemos:

(ti+1 − ti )2 00
y(ti + ti+1 − ti ) = y(ti ) + (ti+1 − ti ) f (ti , y(ti )) + y (ε)
2!

com isso concluimos que,


Definição 9.1.1
y(ti+1 ) = y(ti ) + h f (ti , y(ti )) (9.2)

corresponde ao método de Euler para resolução numérica de EDO’s de primeira ordem


com PVI.
140 Capítulo 9. Resolução Numérica de EDO’s

 Exemplo 9.1 Resolver o PVI




y0 = y − t 2 + 1;


y(0) = 0, 5



0≤t ≤1


h = 0, 2.

i ti ¨y(ti ) y(ti+1 )
0 0,0 0,5 0,8
1 0,2 0,8 1,152
2 0,4 1,152 1,5504
3 0,6 1,5504 1,9885
4 0,8 1,9885 2,4582
5 1,0 2,4582 2,9498

y1 = y0 + h(y0 − t02 + 1) = 0, 5 + 0, 2(0, 5 − 0 + 1) = 0, 8

y2 = y1 + h(y1 − t12 + 1) = 0, 8 + 0, 2(0, 8 − 0.22 + 1) = 1, 152

y3 = y2 + h(y2 − t22 + 1) = 1, 152 + 0, 2(1, 152 − 0.42 + 1) = 1, 5504

y4 = y3 + h(y3 − t32 + 1) = 1, 5504 + 0, 2(1, 5504 − 0.62 + 1) = 1, 9885

y5 = y4 + h(y4 − t42 + 1) = 1, 9885 + 0, 2(1, 9885 − 0.82 + 1) = 2, 4582

y6 = y5 + h(y5 − t52 + 1) = 2, 4582 + 0, 2(2, 4582 − 12 + 1) = 2, 9498

Estimativa do erro para o método de Euler

Iremos utilizar a expansão em Série de Taylor para obtermos uma estimativa do erro obtido
na aproximação utilizando o método de Euler. Ou seja,

n
f (k) (tk , yk ) (k+1)
Et = ∑ h
k=1 (k + 1)!

que no método de Euler, se resume a

f 0 (tk , yk ) 2
Et = h
2
9.1 Método de Euler 141

Método de Euler modificado

Considerando a equação (9.1) e intregrando ambos os lados da mesma, temos:


Z ti+1 Z ti+1
0
y dt = f (ti , y(ti ))dt
ti ti

aplicando a regra do trapezio, obtemos:

ti+1 − ti
y(ti+1 ) − y(ti ) = ( f (ti , y(ti )) + f (ti+1 , y(ti+1 )))
2

h
y(ti+1 ) = y(ti ) + ( f (ti , y(ti )) + f (ti+1 ), y(ti+1 )))
2
h
= y(ti ) + ( f (ti , y(ti )) + f ((ti + h), y(ti ) + h. f (ti , y(ti ))))
2
considerando as variáveis auxiliares k1 e k2 . Tais que,
Definição 9.1.2 

k1 = f (ti , y(ti ))


k2 = f (ti + h, y(ti ) + h.k1 ) (9.3)
y(ti+1 ) = y(ti ) + h (k1 + k2 )



2
corresponde ao método de Euler modificado.

 Exemplo 9.2 Usando o método de Euler modificado, calcule uma aproximação para o
PVI, 

y0 = x − y + 2

y(0) = 2


x ∈ [0; 1], h = 0, 2

i xi k1 k2 y(xi+1 )
0 0,0 0,0 0,2 2,02
1 0,2 0,18 0,344 2,0724
2 0,4 0,3276 0,4621 2,1514
3 0,6 0,4486 0,5588 2,2521
4 0,8 0,5478 0,6382 2,3708
Tabela 9.1: Tabela solução do exemplo 9.2.

Para i = 0,
k1 = f (xi , yi ) = f (x0 , y0 ) = x0 − y0 + 2 = 0 − 2 + 2 = 0

k2 = f (xi + h, yi + h.k1 ) = (x0 + h) − (y0 + h.k1 ) + 2 = 0, 2 − (2 + 0, 2.0) + 2 = 0, 2


142 Capítulo 9. Resolução Numérica de EDO’s
h 0, 2
y(ti+1 ) = y(ti ) + (k1 + k2 ) = 2 + (0 + 0, 2) = 2, 02.
2 2
Para i = 1,

k1 = f (xi , yi ) = f (x1 , y1 ) = x1 − y1 + 2 = 0, 2 − 2, 02 + 2 = 0, 18

k2 = f (xi +h, yi +h.k1 ) = (x1 +h)−(y1 +h.k1 )+2 = 0, 4−(2, 02+0, 2.0, 18)+2 = 0, 344
h 0, 2
y(ti+1 ) = y(ti ) + (k1 + k2 ) = 2, 02 + (0, 18 + 0, 344) = 2, 0724.
2 2
Para i = 2,

k1 = f (xi , yi ) = f (x2 , y2 ) = x2 − y2 + 2 = 0, 4 − 2, 0724 + 2 = 0, 3276

k2 = f (xi +h, yi +h.k1 ) = (x2 +h)−(y2 +h.k1 )+2 = 0, 6−(2, 0724+0, 2.0, 3276)+2 = 0, 4621
h 0, 2
y(ti+1 ) = y(ti ) + (k1 + k2 ) = 2, 0724 + (0, 3276 + 0, 4621) = 2, 1514.
2 2
Para i = 3,

k1 = f (xi , yi ) = f (x3 , y3 ) = x3 − y3 + 2 = 0, 6 − 2, 1514 + 2 = 0, 4486

k2 = f (xi +h, yi +h.k1 ) = (x3 +h)−(y3 +h.k1 )+2 = 0, 8−(2, 1514+0, 2.0, 4486)+2 = 0, 5588
h 0, 2
y(ti+1 ) = y(ti ) + (k1 + k2 ) = 2, 1514 + (0, 4486 + 0, 5588) = 2, 2521.
2 2


Como a Equação (9.3) foi obtida direteamente da regra do trapézio, o erro de trunca-
mento local é dado por por,
f 00 (ξ ) 3
Et = − h .
12
em que xi ≤ ξ ≤ xi+1 .Além disso, os erros local e global são O(h3 ) e O(h2 ), respec-
tivamente. Portanto, a diminuição do tamanho do passo h faz o erro decrescer mais
rapidamente que no método de Euler.

9.2 Métodos de Runge - Kutta

Os métodos de Runge–Kutta são uma família de métodos de solução de EDO’s que incluem
os métodos de Euler e o Euler modificado, bem como outros métodos sofisticados de ordem
superior. Existem inúmeras variações na literatura, mas todas podem ser escritas por meio
9.2 Métodos de Runge - Kutta 143

da forma geral: 
y(t ) = y(ti ) + h.ϕ(ti , y(ti ), h)
 i+1


ϕ(ti , y(ti ), h) = α1 k1 + α2 k2 + · · · + αn kn


α1 k1 + α2 k2 + · · · + αn kn = 1

com, 
k = f (ti , y(ti ))
 1



k2 = f (ti + p1 h , y(ti ) + h(q11 k1 ))






k3 = f (ti + p2 h , y(ti ) + h(q21 k1 + q22 k2 ))



 k4 = f (ti + p3 h , y(ti ) + h(q31 k1 + q32 k2 + q33 k3 ))
..




 .


kn = f (ti + pn h , y(ti ) + h(qn−1,1 k1 + · · · + qn−1,n−1 kn−1 ))

em que os p0 s e q0 s são constantes e como cada k é um cálculo da função, essa recorrência


torna os métodos Runge - Kutta (ou métodos RK) eficientes na solução numérica de
EDO’s.

9.2.1 Métodos de Runge-Kutta de Segunda Ordem - RK2


Definição 9.2.1 O método de Runge-Kutta de Segunda Ordem é dado por:

y(ti+1 ) = y(ti ) + h(α1 k1 + α2 k2 ) (9.4)

com 
α + α2 = 1
 1


k1 = f (ti , y(ti ))


k2 = f (ti + p1 h , y(ti ) + h(q11 k1 )) p1 = q11

para determinar as constantes α1 , α2 e p1 , iremos desenvolver k2 via série de Taylor, em


torno do ponto de operação (ti , y(ti )) até o termo de segunda ordem, ou seja,

f 0 (ti , y(ti )) 2
y(ti+1 ) = y(ti ) + f (ti , y(ti ))h + h (9.5)
2

mas, pela regra da cadeia sabemos que

f 0 (ti , y(ti )) = fx (ti , y(ti )) + fy (ti , y(ti ))y0 (9.6)

substituindo a expressão (9.6) na expressão (9.5), obtemos:

fx (ti , y(ti )) + fy (ti , y(ti ))y0 2


y(ti+1 ) = y(ti ) + f (ti , y(ti ))h + h (9.7)
2
144 Capítulo 9. Resolução Numérica de EDO’s

como a expansão da série de Taylor de uma função em duas variáveis, é dada por:

f (ti + h, y(ti ) + k) =

1
fxx (ti , y(ti ))h2 + 2 fxy (ti , y(ti ))hk + fyy (ti , y(ti ))k2 +· · ·

f (ti , y(ti ))+( fx (ti , y(ti ))h + fy (ti , y(ti ))k)+
2
e k2 expandida via série de Taylor é dada por,

k2 = f (ti + p1 h , y(ti ) + q11 k1 h) = f (ti , y(ti )) + p1 h fx (ti , y(ti )) + q11 k1 h + O(h2 ) (9.8)

que juntamente com a expressão de k1 , podem ser substituidas na expressão (9.14), de


modo a termos a seguinte equação,

y(ti+1 ) = y(ti ) + [α1 f (ti , y(ti )) + α2 f (ti , y(ti )] h + [α2 p1 fx + α2 q11 fx f (ti , y(ti ))] h2 + O(h3 )
(9.9)
comparando termo a termo nas equações (9.9) com (9.7), podemos tirar a seguinte relação:


α1 + α2 = 1

1


α2 p1 =
 2
α2 q11 = 1



2

com o sistema de equações apresenta mais equações que incógnitas, podemos obter
inúmeras soluções, dentre elas podemos escolher,

1
α2 = 1 → α1 = 0 e p1 = q11 = .
2

Obtendo,
Definição 9.2.2
y(ti+1 ) = y(ti ) + hk2 (9.10)

com 
k1 = f (ti , y(ti ))


h h
 (9.11)
k2 = f ti + , y(ti ) + k1

2 2
corresponde ao método do ponto médio.

considerando,
2 1 3
α2 = → α1 = e p1 = q11 = .
3 3 4
Teremos, então:
9.2 Métodos de Runge - Kutta 145
Definição 9.2.3
h
y(ti+1 ) = y(ti ) + (k1 + 2 k2 ) (9.12)
3
com 
k1 = f (ti , y(ti ))


3 3
 (9.13)
k2 = f ti + h , y(ti ) + h k1

4 4
corresponde ao método de Ralston.

 Exemplo 9.3 Usando o método do ponto médio e o de Ralston resolva o seguinte PVI,


y0 = x − y + 2

y(0) = 2


t ∈ [0; 1], h = 0, 2

i xi k1 k2 y(xi+1 )
0 0,0 0,0 0,15 2,02
1 0,2 0,18 0,303 2,0724
2 0,4 0,3276 0,4285 2,1514
3 0,6 0,4486 0,5313 2,2521
4 0,8 0,5478 0,6157 2,3707
Tabela 9.2: Tabela solução do método de Ralston.

i xi k1 k2 y(xi+1 )
0 0,0 0,0 0,1 2,02
1 0,2 0,18 0,262 2,0724
2 0,4 0,3276 0,3948 2,1514
3 0,6 0,4486 0,5037 2,2521
4 0,8 0,5478 0,5931 2,3707
Tabela 9.3: Tabela solução do método do ponto médio.

2.4
Solução exata
Solução aprox.
2.35

2.3

2.25

2.2

2.15

2.1

2.05

2
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
146 Capítulo 9. Resolução Numérica de EDO’s

9.2.2 Métodos de Runge-Kutta de Terceira Ordem - RK3


Definição 9.2.4 O método de Runge-Kutta de Terceira Ordem é dado por:

y(ti+1 ) = y(ti ) + h(α1 k1 + α2 k2 + α3 k3 ) (9.14)

com 

α1 + α2 + α3 = 1


k1 = f (ti , y(ti ))



k2 = f (ti + p1 h , y(ti ) + h(q11 k1 )) p1 = q11


k3 = f (ti + p2 h , y(ti ) + h(q21 k1 + q22 k2 )) p2 = q21 = q22

seguindo o mesmo raciocínio da dedução do método RK2, podemos obter a seguinte


expressão:
Definição 9.2.5
h
y(ti+1 ) = y(t1 ) + (2k1 + 3k2 + 4k3 ) (9.15)
9
com 

k1 = f (ti , y(ti ))
  
h h



k2 = f ti + , y(ti ) + k1
 2 2
  

 3 3
k3 =
 f ti + h, y(ti ) + hk2
4 4
que corresponde ao método de Runge - Kutta de ordem 3 ou RK3.

e
Definição 9.2.6
h
y(ti+1 ) = y(t1 ) + (k1 + 2k2 + 2k3 + k4 ) (9.16)
6
com 

k1 = f (ti , y(ti ))
  
h h



k2 = f ti + 2 , y(ti ) + 2 k1


 
 h h

k3 = f ti + , y(ti ) + hk2
2 2





k4 = f (ti + h, y(ti ) + hk3 )

que é definido como o método de Runge - Kutta de ordem 4 ou RK4.

 Exemplo 9.4 Considerando P como uma determinada população, a equação do modelo


9.2 Métodos de Runge - Kutta 147

de Malthus é dada por,


dP(t)
= β P(t), P(0) = P0
dt
onde β representa a taxa de crescimento intrínseco da população. A solução analítica desta
equação é,
P(t) = P0 eβt .

Apesar de equivocado e criticado em alguns conceitos, este modelo serviu de base à


evolução de inúmeros modelos populacionais. A seguir, iremos aplicar técnicas estudadas
ao longo da disciplina para resolver um problema de ordem prática e aplicado a tal modelo.
Seja o seguinte conjunto de dados, que constitui o senso demográfico em uma determinada
cidade ao longo dos anos apresentado:

ti 0, 0 1, 0 2, 0 3, 0 4, 0
Ano 1980 1991 2000 2007 2010
População 9204 11620 16197 18687 19825

Primeiramente iremos ajustar uma curva ao modelo: P(t) = P0 eβt .

P(t) = P0 eβt → ln(P(t)) = ln(P0 ) + βt.

Considerando o caso geral temos,


" #" # " # " # " # (
5 10 ln(P0 ) 47, 9107 ln(P0 ) 9, 1802 P0 = 9703, 15
= =⇒ = →
10 30 β 97, 8312 β 0, 2 β = 0, 2

Assim, o modelo ajustado corresponde a P(t) = 9703, 19 e0,2t e a EDO inicial pode ser re
escrita como:
dP(t)
= 0, 2.P(t), P0 = 9703, 19.
dt
Para resolver numericamente, primeiro iremos utilizar o método de Euler. Considerando
t = 0, 1, 2, 3. Obtemos:

P(t1 ) = P(t0 ) + 0, 2.P(t0 ) = 9703, 19 + 0, 2.9703, 19 = 11643, 83

P(t2 ) = P(t1 ) + 0, 2.P(t1 ) = 11643, 83 + 0, 2.11643, 83 = 13972, 59

P(t3 ) = P(t2 ) + 0, 2.P(t2 ) = 13972, 59 + 0, 2.13972, 59 = 16767, 11

P(t4 ) = P(t3 ) + 0, 2.P(t3 ) = 16767, 11 + 0, 2.16767, 11 = 20120, 53.

Em seguida, considerando as mesmas condições e utilizando o método de Euler modificado.


148 Capítulo 9. Resolução Numérica de EDO’s

Obtemos: 

 k1 = 0, 2.P(t0 ) = 1940, 64
t =0 k2 = 0, 2.(P(t0 ) + h.k1 ) = 2328, 76

P(t1 ) = P(t0 ) + h2 (k1 + k2 ) = 11837, 89



 k1 = 0, 2.P(t1 ) = 2367, 58
t =1 k2 = 0, 2.(P(t1 ) + h.k1 ) = 2841, 09

P(t2 ) = P(t1 ) + 2h (k1 + k2 ) = 14442, 22



 k1 = 0, 2.P(t2 ) = 2888, 44
t =2 k2 = 0, 2.(P(t2 ) + h.k1 ) = 3466, 13

P(t3 ) = P(t2 ) + 2h (k1 + k2 ) = 17619, 52



 k1 = 0, 2.P(t3 ) = 3523, 90
t =3 k2 = 0, 2.(P(t2 ) + h.k1 ) = 4228, 68

P(t4 ) = P(t3 ) + 2h (k1 + k2 ) = 21495, 81

Para finalizar apresentaremos uma tabela de valores obtidos utilizando diferentes métodos
de solução numérica para EDO’s:

ti sol. analítica Ajuste Euler Euler modif. RK3 RK4


0 9204 9703,19 9703,19 9703,19 9703,19 9703,19
1 11620 11851,50 11643,83 11837,89 11850,83 11851,48
2 16197 14475,45 13972,59 14442,22 14473,81 14475,40
3 18687 17680,36 16767,11 17619,52 17677,35 17680,24
4 19825 21594,85 20120,53 21495,81 21589,94 21594,65

Figura 9.2: Dados ajustados e suas respectivas soluções numéricas.


9.3 EDO’s de ordem superior 149

9.3 EDO’s de ordem superior

Uma EDO de ordem superior (maior que 1), dada por

y(n) = f (t, y, y0 , y00 , · · · , y(n−1) )

de modo que a EDO original pode ser decomposta como um sistema de n equações
diferenciais de primeira ordem. Ou seja,

y01 = f1 (t, y1 , y2 , · · · , yn )



y02 = f2 (t, y1 , y2 , · · · , yn )


..



 .

y0 = f (t, y , y , · · · , y )

n n 1 2 n

em que 


y1 = y

y2 = y0


..



 .

y = y(n−1)

n

com f1 , f2 , · · · , fn funções dadas e as condições iniciais:

(n−1)
y1 (t0 ) = y0 , y2 (t0 ) = y00 , · · · , yn (t0 ) = y0

que pode ser escrito na forma matricial e facilmente ser resolvido por qualquer método
numérico de resolução de EDO’s de primeira ordem.
Por exemplo, o método de Euler pode ser escrito vetorialmente da seguinte forma:

Yi+1 = Yi + hF(ti , Yi )

 Exemplo 9.5 Seja o sistema modelado pela seguinte EDO,

d2 θ g
+ sen(θ ) = 0
dt 2 l

que pode ser escrita como, 


y01 = y2
y02 = − g sen(y1 )
l
150 Capítulo 9. Resolução Numérica de EDO’s

considerando l = 1m e as condições iniciais,

π
y1 (0) = , y2 (0) = 0.
2

9.4 Exercícios Propostos


Exercício 9.1 Considere a EDO de primeira ordem:

dy
= yx − x3
dx

com 0 ≤ x ≤ 1, 8 e y(0) = 1. Resolva manualmente utilizando o método de Euler com


h = 0, 6. 

Exercício 9.2 Considere o seguinte sistema de duas equações diferenciais:

dx
= x+y
dt

dy
= y−x
dt
com 0 ≤ t ≤ 2, x(0) = 1 e y(0) = 3.
• Resolva manualmente utilizando o método de Euler e o RK4 com h = 0, 5.
• A solução analítica do sistema é x(t) = et (3sen(t) + cos(t)) e y(t) = et (3cos(t) −
sen(t)). Calcule em cada passo o erro absoluto entre a solução exata e a solução
numérica.


Exercício 9.3 Escreva as seguintes EDOs de segunda ordem como um sistema de


EDOs de primeira ordem:
d2y QL Q 2
• dx 2 = −Py + 2 x − 2 x , onde P, Q, L são constantes.
  2  32
d2y dy
• dx2 = M 1 + dx , onde M é constante.


Exercício 9.4 Um indutor e um resistor não-linear de resistência R = 500 + 250I 2 Ω


estão conectados em série com uma fonte de tensão CC e uma chave. A chave está
inicialmente aberta, sendo então fechada no tempo t = 0. A corrente I no circuito para
9.4 Exercícios Propostos 151

t > 0 é determinada a partir da solução da equação:

dI V0 R
= − I
dt L L

Para V0 = 1000V e L = 15H, determine e trace a corrente em função do tempo (em


segundos). 

Exercício 9.5 O movimento de um sistema massa/mola/amortecedor conforme mos-


trado na seguinte figura:

é descrito pela seguinte equação diferencial,

d2x dx
m + c + kx = 0
dt 2 dt

em que x é o deslocamento a partir da posição de equilíbrio (m), t é o tempo (s),


m = 20kg é a massa e c é o coeficiente de amortecimento (N · s/m). O coeficiente de
amortecimento c será analisado com três valores: 5 (subamortecido), 40 (criticamente
amortecido) e 200 (superamortecido). A constante da mola é k = 20N/m. A velocidade
inicial é zero e o deslocamento inicial é x = 1m.
Resolva essa equação a partir de um sistema de equações diferenciais de primeira ordem
usando um método numérico no período de tempo 0 ≤ t ≤ 1, 5s. 

Exercício 9.6 Encontre a equação diferencial que modela o sistema físico do pêndulo
(com e sem atrito) e,
• resolva a EDO computacionalmente através dos métodos de Euler e RK4;
• apresente gráficos da velocidade e posição em relação ao tempo para diferentes
valores de massa e do comprimento da haste;
• apresente os gráficos do diagrama de fase para os diferentes cenários simulados;
• apresente conclusões coerentes dos resultados obtidos.

V
Laboratórios

10 Laboratórios . . . . . . . . . . . . . . . . . . . . . 155
10.1 Laboratório 01 : Expansão em Séries de Taylor
10.2 Laboratório 02 : Solução de Equações não
lineares
10.3 Laboratório 03 : Sistemas de Equações Linea-
res - SEL
10.4 Ajuste de Curvas
10.5 Interpolação
10.6 Resolução Numérica de EDO’s

Bibliografia . . . . . . . . . . . . . . . . . . . . . . 189

Índice Remissivo . . . . . . . . . . . . . . . . 191


10. Laboratórios

10.0.1 Python e Pacotes necessários

Os Laboratórios foram desenvolvidos em linguagem de programação Python 3. Segue


uma lista dos pacotes necessários para o sucesso nas implementações necessárias a todas
as atividades desenvolvidas nos laboratórios da disciplina. Recomenda-se a instalação das
versões mais recentes.
• jupyter
• IPython
• NumPy
• SciPy
• matplotlib
Existem diferentes maneiras de instalar o Python e os pacotes relacionados, recomendamos
o uso do Anaconda ou Miniconda para instalar e gerenciar seus pacotes. Dependendo
do sistema operacional (Windows, Mac OS X ou Linux), você pode precisar baixar um
instalador específico à sua máquina. Tanto o Anaconda quanto o Miniconda têm como
objetivo fornecer maneiras fáceis de gerenciar o Python num ambiente de trabalho amigável
em computação científica e numérica.
As principais diferenças entre Anaconda e Miniconda são:
• Anaconda é uma estrutura de distribuição completa que inclui o interpretador Python,
gerenciador de pacotes e os pacotes comumente usados em computação científica.
• Miniconda é uma versão (leve) do Anaconda que não inclui os pacotes comumente
usados.Neste caso, você precisará instalar todos os pacotes adicionais, mas inclui o
156 Capítulo 10. Laboratórios

interpretador Python e gerenciador de pacotes.

10.1 Laboratório 01 : Expansão em Séries de Taylor


Uma expansão em série de Taylor é uma representação de uma função por meio de série
polinomial infinita em torno de um ponto de operação. Matematicamente, a série de Taylor
de uma função f (x), é definida como,


f (k) (c)(x − c)k
f (x) = ∑ ,
k=0 k!

onde f (k) representa a k−ésima derivada da f e considerando c = 0, temos a série de


MacLaurin.
 Exemplo 10.1 Calcule a expansão da série de Taylor para a função f (x) = 5x2 + 3x + 5
em torno da origem.
f (x) = 5x2 + 3x + 5 → f (0) = 5,

f 0 (x) = 10x + 3 → f 0 (0) = 3,

f 00 (x) = 10 → f 00 (0) = 10.


5(x − 0)0 3(x − 0)1 10(x − 0)2
f (x) = + + + 0 + 0 + · · · = 5x2 + 3x + 5.
0! 1! 2!
Note que a expansão em séries de Taylor de funções polinomiais possui termos finitos, as
derivadas de ordem maior que o grau do polinômio são nulas. 

10.1.1 Aproximação utilizando séries de Taylor


Claramente, podemos notar que computacionalmente não temos como expressar uma soma
infinita. Nesta caso, se faz necessário aproximar a função por meio de uma série de Taylor
de ordem k. Esta técnica é especialmente poderosa quando o ponto de operação é bem
definido.
 Exemplo 10.2 Utilizando o Python, gere o gráfico da expansão em série de Taylor da
função f (x) = sen(x) com primeira, terceira, quinta e sétima ordem, respectivamente.

import numpy as np
import matplotlib.pyplot as plt

plt.style.use('seaborn-poster')

x = np.linspace(-np.pi, np.pi, 200)


10.1 Laboratório 01 : Expansão em Séries de Taylor 157

y = np.zeros(len(x))

labels = ['Primeira Ordem', 'Terceira Ordem', 'Quinta Ordem', 'Sétima Ordem']

plt.figure(figsize = (10,8))
for n, label in zip(range(4), labels):
y = y + ((-1)**n * (x)**(2*n+1)) / np.math.factorial(2*n+1)
plt.plot(x,y, label = label)

plt.plot(x, np.sin(x), 'k', label = 'Sol. Analítica')


plt.grid()
plt.title('Aproximação utilizando Série de Taylor')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.show()

Obviamente, a aproximação tende a solução analítica rapidamente, quando x está


próximo da origem. Observe que no código acima, usamos uma função zip, que nos
permite percorrer dois intervalo de parâmetros (4) e rótulos para usar em nosso gráfico.
 Exemplo 10.3 Calcule o valor aproximado da função em ordem 7 no ponto x = π/2.

x = np.pi/2
y = 0

for n in range(4):
y = y + ((-1)**n * (x)**(2*n+1)) / np.math.factorial(2*n+1)

print(y)


 Exemplo 10.4 Calcule a aproximação em série de MacLaurin da função f (x) = ex ,


em seguida calcule o valor de e1 e e0,01 por meio da aproximação obtida. Compare os
resultados com os obtidos numa calculadora. 

10.1.2 Erros de truncamento nas séries de Taylor


Em computação numérica, geralmente analisamos duas fontes de erro, arredondamento
e truncamento, que foram amplamente discutidos no capítulo 02. Quando trabalhamos
158 Capítulo 10. Laboratórios

com aproximação de uma sequência infinita, surge naturalmente um erro de truncamento


associado ao processo. Por exemplo, considerando os quatro primeiros termos para
aproximar e2 , obtemos:

2 22 23
e ≈ 1 + 2 + + = 6, 3333.
2! 3!

Obviamente, há um erro associado ao cálculo, tendo em vista que truncamos a série


descartando os termos de ordem superior. Assim, a função f (x) pode ser escrita como

f (x) = fn (x) + Et (x).

Quanto mais termos usarmos, mais próxima será a aproximação do valor exato. Vamos
usar o Python para calcular o exemplo acima.

import numpy as np

exp = 0
x = 2
for k in range(10):
exp = exp + ((x**k)/np.math.factorial(k))
print(f'Usando {k}-termos, {exp}')

print(f'A solução analítica de e^2 é: \n{np.exp(2)}')

Estimando o erro de truncamento


Podemos observar que quanto maior a ordem utilizada para aproximar a função em um
dado ponto, mais próximo estaremos da solução analítica. Para cada escolhido há um
erro associado, e a aproximação se fará útil se tivermos uma noção de quão precisa é a
aproximação. Esta é a motivação para o que iremos discutir a partir de agora.
Utilizando a série de Taylor e considerando somente os n primeiro termos, podemos
observar que,
n
f (k) (c)(x − c)k
f (x) = fn (x) + Et (x) = ∑ + Et (x).
k=0 k!
Onde Et (x) é o termo remanescente da série, ou erro de truncamento que mede o quanto
próximo está fn (x) de f (x). Assim, podemos estimar o erro obtido utilizando o Teorema
da estimação do resto. Ou seja,
10.1 Laboratório 01 : Expansão em Séries de Taylor 159

Teorema 10.1.1 Se a função f (x) possui n + 1 derivadas para todo x num dado intervalo
I contendo c, então para cada x ∈ I existe um x ≤ a ≤ c tal que

f (n+1) (a)(x − c)n+1


Et (x) = .
(n + 1)!

Se f (n+1) ≤ M ∈ I, então obtemos

M |x − c|n+1
|Et (x)| ≤ .
(n + 1)!

Isso nos fornece um limitante superior para o erro de truncamento usando este teorema.
 Exemplo 10.5 Estime o limitante superior para o erro de truncamento a partir da
aproximação utilizando a expansão em séries de Taylor para e2 com n = 9.
Considerando c = 0, o erro estimado para x = 2 é,

f (9+1) (a)(x)9+1 ea 210


Et (x) = = .
(9 + 1)! 10!

Sabendo que 0 ≤ a ≤ 2, e e < 3; temos que,

32 210
|Et (x)| ≤ = 0, 00254.
10!

Portanto, utilizando a expansão da série de Taylor com n = 9 para aproximar e2 , o


erro absoluto será menor que 0, 00254. Que pode facilmente ser verificado por meio do
seguinte comando,

abs(7.3887125220458545-np.exp(2))

10.1.3 Exercícios Propostos


Exercício 10.1 Use a expansão em série de Taylor para mostrar que eix = cos(x) +
i sen(x), onde i2 = −1. 

sen(x)
Exercício 10.2 Use a expansão em série de Taylor para mostrar que x ≈ 1 com um
valor pequeno em x. 
160 Capítulo 10. Laboratórios

2
Exercício 10.3 Escreva a expansão da série de Taylor para ex em torno da origem.
2
Escreva uma função exp− dupla(x, n), para calcular uma aproximação de ex usando os
primeiros n termos da expansão da série de Taylor. Adapte a função para receber como
parâmetro de entrada um vetor. 

Exercício 10.4 Escreva uma função aprox− cosh(x, n), onde a saída será a aproximação
via série de Taylor do cosh(x) em torno da origem. Assuma que o parâmetro de entrada
x é um vetor e n a ordem da série. Lembre-se que,

ex + e−x
cosh(x) = .
2

10.2 Laboratório 02 : Solução de Equações não lineares


Os zeros ou raízes de uma função, f (x), é um valor xr tal que f (xr ) = 0. Para ilustrar o
método iremos iniciar considerando um simples exemplo de um método iterativo. Ou seja,
seguir os seguintes passos:
1 - Escrever a equação isolando uma variável.

2x2 − 5x + 3 = 0

2x2 + 3
x=
5
ou r
5x − 3
x=
2

2 - Defina uma condição inicial, x0 = 0.


3 - Substitua o valor inicial em uma das equações acima e calcule o valor da próxima
iteração. Por exemplo,
2x2 + 3
x1 = 0
5
x_0 = 0
x_1 = (2*x_0**2 + 3)/5
print(x_1)

Se o valor calculado é diferente do valor anterior, atribua a variável o novo valor. Ou seja,
x1 = 0.6 e repita o passo 3 e 4 até o valor calculado seja igual ao anterior.
10.2 Laboratório 02 : Solução de Equações não lineares 161

x = 0
for i in range(1,101):
x_novo = (2*x**2 + 3)/5
print(i,x)
if x_novo == x:
break
x = x_novo
print(i,x_novo)

10.2.1 Acuracidade da solução


Satisfazer a condição de igualdade na equação é uma condição extremamente difícil,
trabalhosa e em alguns casos até impossível. Neste caso, se faz necessário estabeler
uma condição de parada. Aqui, iremos primeiramente considerar o erro absoluto e uma
tolerância como condições de parada. Ou seja,

x = 0
for i in range(1,101):
x_novo = (2*x**2 + 3)/5
print(i,x)
if abs(x_novo - x) < 0.000001:
break
x = x_novo
print(i,x_novo)

ou,

x = 0
for i in range(1,101):
x_novo = (2*x**2 + 3)/5
print(i,x)
if abs(x_novo - x) < 0.000001:
break
x = x_novo
print('O valor calculado : %.5f' %x_novo)
print('O total de iterações : %d' %i)

Um exemplo de uma condição em que a série é divergente no caso anterior pode ser obtida
considerando a condição inicial igual a 2. Considerando agora, a segunda equação, vemos
que x = 2 como condição inicial, converge. Ou seja:
162 Capítulo 10. Laboratórios

from math import sqrt


x = 2
for i in range(1,101):
x_novo = sqrt((5*x - 3)/2)
print(i,x)
if abs(x_novo - x) < 0.000001:
break
x = x_novo
print('O valor calculado : %.5f' %x_novo)
print('O total de iterações : %d' %i)

podemos verificar a condição convergência por meio do seguinte gráfico.

import numpy as np
import matplotlib.pyplot as plt

fn = lambda x: (2*x**2 + 3)/5 # função 1: exemplo de convergência


#fn = lambda x: 1/np.cos(x) # função 2: exemplo de convergência
# Lista para salvar valores para o gráfico
xlist = list()
xnewlist = list()
itrlist = list()

x = 0

for i in range(1,50):

x_novo = fn(x)

# salvando dados para o geração do gráfico


xlist.append(x)
xnewlist.append(x_novo)
itrlist.append(i)
# Condição de convergência
if abs(x_novo - x) < 0.000001:
break
x = x_novo

print('O valor calculado : %.5f' %x_novo)


10.2 Laboratório 02 : Solução de Equações não lineares 163

print('O total de iterações : %d' %i)

#gráfico
plt.plot(itrlist, xlist,'b-o',itrlist,xnewlist,'r-*')
plt.legend(['x','x_novo'],loc = 'lower right')
plt.xlabel('iterações')
plt.ylabel('x')
plt.grid()
plt.show()

 Exemplo 10.6 Refaça o código fonte acima, substituindo a estrutura de repetição for
pelo while. 

10.2.2 Método da Bissecção


O Teorema do valor intermediário (capítulo 04) nos diz que se f (x) é uma função contínua
num intervalo [a , b], e f (a). f (b) < 0, então existe um valor xr ∈ [a , b] tal que f (xr ) = 0.
O Método da bissecção utiliza do Teorema da valor intermediário para encontrar raízes,
que pode ser exemplificado por meio do seguinte código fonte:

import numpy as np

def met_bisseccao(f, a, b, tol):


# aproxima o valor de uma raiz, r, da função f
# limitada no intervalo [a,b] com uma dada tolerância de modo que
# | f(m) | < tol sendo m o ponto médio calculado no intervalo dado.

# verifica se o intervalo [a,b] contém uma raiz


if np.sign(f(a)) == np.sign(f(b)):
raise Exception(
"Não há raiz no intervalo")

# Cálculo do ponto médio


m = (a + b)/2

if np.abs(f(m)) < tol:


# Condição de parada, apresenta m como raiz
return m
elif np.sign(f(a)) == np.sign(f(m)):
# caso em que m é um refinamento para a.
164 Capítulo 10. Laboratórios

# a recebe m
return met_bisseccao(f, m, b, tol)
elif np.sign(f(b)) == np.sign(f(m)):
# caso em que m é um refinamento para a.
# b recebe m
return met_bisseccao(f, a, m, tol)

 Exemplo 10.7 Utilizando o método da bissecção calcule o valor de 2 com uma
tolerância de 0, 1 e 0, 01.

f = lambda x: x**2 - 2

r1 = met_bisseccao(f, 0, 2, 0.1)
print("r1 =", r1)
r01 = met_bisseccao(f, 0, 2, 0.01)
print("r01 =", r01)

print("f(r1) =", f(r1))


print("f(r01) =", f(r01))

10.2.3 Método da Falsa Posição ou Regula Falsi


Este método é similar ao da bissecção, uma vez que requer dois valores iniciais de x que
devem abranger a localização da raiz desejada e atender a condição em que f (x) evaluada
em tais valores possuem sinais contrários. A diferença básica está no cálculo iterativo dos
valores de x, conforme discutido no capítulo 04.
 Exemplo 10.8 Resolva as seguintes equações 2x2 −5x+3 = 0 e f (x) = x2 +cos2 (x)−4x

from math import cos


def Regulafalsi(fn, x1, x2, tol = 0.001, iteracoes = 100):
y1 = fn(x1)
y2 = fn(x2)
xh = 0
ipos = 0 # contador de falsa posições
if y1 == 0: xh = x1 # se x1 é uma raiz
elif y2 == 0: xh = x2 # se x2 é uma raiz
elif y1 * y2 > 0: # se y1 = f(x1) e y2 = f(x2) possuem
# o mesmo sinal
10.2 Laboratório 02 : Solução de Equações não lineares 165

print('Não existe raiz no intervalo escolhido.')


else:
for ipos in range(1,iteracoes + 1):
xh = x2 - (x2-x1)/(y2-y1) * y2
yh = fn(xh)
if abs(yh) < tol:
break
elif y1 * yh < 0: # se y1 e yh possuem sinais opostos
x2 = xh
y2 = yh
else:
x1 = xh
y1 = yh
return xh, ipos

def y(x): return 2*x**2 - 5*x + 3 # Equação 01


# y = lambda x: x**2 + cos(x)**2 - 4*x # Equação 02

x1 = float(input('Digite o valor de x1: '))


x2 = float(input('Digite o valor de x2: '))
x, n = Regulafalsi(y,x1,x2)

10.2.4 Método de Newton-Raphson


O objetivo principal do método é a obtenção da raiz por meio da escolha de uma condição
inicial e o cálculo da equação da reta tangente (através da derivada) da função no ponto
dado e a intersecção dela com o eixo das abcissas. O processo é repetido iterativamente
até atender as condições de parada estipuladas. O método é defindio por meio da seguinte
equação:
f (xi )
xi+1 = xi − 0
f (xi )
166 Capítulo 10. Laboratórios

 Exemplo 10.9 Encontre a raiz quadrada de 2 utilizando o método de Newton - Raphson


com x0 = 1, 5 e tol = 10−6 .

import numpy as np

f = lambda x: x**2 - 2
f_prime = lambda x: 2*x

def metodo_newton(f, df, x0, tol):


# A saída é uma estimativa da raiz da função f
# usando o método de Newton Raphson por meio
# de uma implementação recursiva
if abs(f(x0)) < tol:
return x0
else:
return metodo_newton(f, df, x0 - f(x0)/df(x0), tol)

R_est = metodo_newton(f, f_prime, 1.5, 1e-6)


print("Raiz estimada =", R_est)
print("sqrt(2) =", np.sqrt(2))

10.2.5 Método da Secante


O método da secante é similar ao método da posição falsa, mas em vez de procurar dois
pontos envolvendo a raiz, as raízes das linhas secantes são encontradas consecutivamente
até coincidir com a raiz aproximada da função dada. No entanto, não há a necessidade de
que f (x0 ). f (x1 ) < 0. Ou seja, os dois valores iniciais de x não precisam estar em ambos
os lados da raiz desejada.
 Exemplo 10.10 Utilizando o método da secante, encontre uma raiz da seguinte equação
f (x) = 2x2 = 5x + 3 e f (x) = x2 + cos2 (x) − 4x

from math import cos

def met_secante(fn,x1,x2 = 0,tol = 0.000001,max_iter = 100):


for i in range(max_iter):
xnovo = x2 - (x2-x1)/(fn(x2)-fn(x1)) * fn(x2)
if abs(xnovo - x2) < tol : break
else:
10.2 Laboratório 02 : Solução de Equações não lineares 167

x1 = x2
x2 = xnovo
else:
print("Atenção: Atingiu o número máximo de iterações!")
return xnovo, i

f = lambda x: 2*x**2 - 5*x # Equação 01


#f = lambda x: x**2 + cos(x)**2 - 4*x # Equação 02

x1 = float(input("Digite o valor de x1: "))


x2 = float(input("Digite o valor de x2: "))

10.2.6 Exercícios Propostos


Exercício 10.5 Encontre a menor raiz real positiva da equação f (x) = x3 − 3, 23x2 −
5, 54x + 9.84 por meio do método da bissecção. 

Exercício 10.6 Utilizando o método de Newton Raphson e da secante. Determine as


raízes da função f (x) = x + 3cos(x) − 2. 

Exercício 10.7 A frequência natural de uma certa viga uniforme possui uma relação
com as raízes da αi da equação f (α) = cosh(α)cos(α) + 1 = 0, onde

mL3
αi4 = (2π fi )2
EI

sendo, fi a i−ésima frequência natural, m a massa da viga, L o comprimento, E o


módulo da elasticidade e I o momento de inércia da seção transversal. Determine as
duas menores frequências de uma viga em aço de 0, 9 m de comprimento, com uma
seção transversal de 25 mm de largura e 2, 5 mm de altura. A densidade de massa do aço
é de 7850 kg/m3 e E = 200GPa. 

Exercício 10.8 A velocidade v de um foguete Saturno V em vôo vertical perto da


superfície da terra pode ser aproximada por,
 
M0
v = u ln − gt
M0 − ṁt
168 Capítulo 10. Laboratórios

onde
• u = 2510 m/s é a velocidade de exaustão relativa ao foguete;
• M0 = 2, 8 × 106 kg é a massa da foguete na decolagem;
• ṁ = 13, 3 × 103 kg/s é a taxa de consumo do combustível;
• g = 9, 81 m/s2 a aceleração da gravidade;
• t o tempo medido desde a decolagem.
Determine o momento em que o foguete atinge a velocidade do som ≈ 335 m/s. 

Exercício 10.9 Considerando um dado sistema massa-mola com deslocamento harmô-


nico dado por y(t) = A sen(ω t) imposto, a resposta do deslocamento da massa é dado
por x(t) = Bsen(ω t − θ ), onde

B Dsen(φ )
q
= (1 + Dcos(φ ))2 + (Dsen(φ ))2 e tan(θ ) = .
A 1 + Dcos(φ )

Nas duas equações usamos as seguintes notações,

(ω/p)2 2ζ ω/p
D = rh e tan(φ ) =
2
i2
2 1 − (ω/p)2
1 − ( /p) + ( /p)
ω 2ζ ω

p
com p = k/m sendo a frequência natural do sistema e ζ = c/2mp o fator de amorteci-
mento. Considerando, m = 0, 2 kg, k = 2880 N/m, e ω = 96 rad/s. Determine o menor
valor de c (coeficiente de amortecimento) de modo que a relação B/A seja menor ou
igual a 1, 5. 


n
Exercício 10.10 Escreva uma função raiz− enesima(x, n, tol) para calcular r = x,
por meio do método de Newton-Raphson. 

Exercício 10.11 Considere o problema de construir um oleoduto a partir de uma plata-


forma de petróleo offshore, a uma profundidade de H milhas e uma distância L milhas
de uma refinaria em terra. O custo de construir o tubo é Coceano/milha enquanto o tubo está
sob o oceano, e Cterra/milha enquanto o tubo está ligado a terra. O tubo será construído em
linha reta em direção à costa, onde fará contato com algum ponto, x, entre 0 e L. Ele
continuará ao longo da costa em terra até chegar à refinaria de petróleo. Escreva uma
função construtor− tubos(Coceano , Cterra , L, H) onde os argumentos de entrada são os
descritos anteriormente e x é o valor que minimiza o custo total da construção. Use um
dos métodos estudados para determinar este valor dentro de uma tolerância de 10−6 ,
começando em um limite inicial de a = 0 e b = L, por exemplo.
10.3 Laboratório 03 : Sistemas de Equações Lineares - SEL 169

Um teste:

In: construtor_tubos(20, 10, 100, 50)


Out: 28.867512941360474

10.3 Laboratório 03 : Sistemas de Equações Lineares - SEL


Inúmeros problemas em Ciências e Engenharias envolvem Sistemas de Equações Lineares
com um número específico de equações e variáveis. Geralmente, os SEL’s são represen-
tados na sua forma matricial. De modo que, os métodos utilizados na solução de tais
sistemas, consistem em operações vetorias e matriciais. Assim, seja o seguinte SEL:

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


a21 x1 + a22 x2 + · · · + a2n xn = b2

 ...



an1 x1 + an2 x2 + · · · + ann xn = bn

que na forma matricial pode ser escrito como:


    
a11 a12 · · · a1n x1 b1
a21 a22 · · · a2n  x2  b2 
    
  ..  =  .. 
 . .. 
..
   
 . .
 . ··· .  .   . 
an1 an2 · · · ann xn bn

No capítulo 05, estudamos basicamente duas formas de determinar a solução de um SEL.


• Métodos Diretos: Elimina partes da matriz aumentada por meio de operações
elementares nos vetores linha, de modo a obter um sistema triangular equivalente.
• Métodos Iterativos: As equações são reorganizadas de forma a permitir operações
iterativas até que a convergência seja alcançada. Se faz necessário uma estimativa
inicial.
170 Capítulo 10. Laboratórios

Método direto forma inicial forma final


Eliminação de Gauss Ax = b Ux = c
Decomposição LU Ax = b LUx = b
Eliminação de Gauss- Jordan Ax = b Ix = c

10.3.1 Método de Eliminação de Gauss

O método de eliminação de Gauss é o mais familiar para resolver equações simultanea-


mente. Consiste em duas partes: a fase de eliminação e a fase de retrosubstituição.

 Exemplo 10.11 Resolva o seguinte SEL utilizando o método de eliminação de Gauss.


    
2 7 −1 3 1 x1 5
2 3 4 1 7  x2  7
    
    
6
 2 −3 2 −1 x3  = 2
   
2 1 2 −1 2  x4  3
    

3 4 1 −2 1 x5 4

from numpy import array, zeros # módulo vetorial

A = array([[2, 7, -1, 3, 1], # matriz dos coeficientes


[2, 3, 4, 1, 7],
[6, 2, -3, 2, -1],
[2, 1, 2, -1, 2],
[3, 4, 1, -2, 1]],float)
b = array([5, 7, 2, 3, 4], float) # vetor solução ou dos termos constantes
n = len(b); # A dimensão do SEL
x = zeros(n,float); # inicializando o vetor solução

# Fase de eliminação
for k in range(n-1):
for i in range(k+1, n):
pivo = A[k, k] / A[i, k]
b[i] = b[k] - pivo*b[i]
for j in range(k, n):
A[i, j] = A[k, j] - pivo*A[i, j]

# Fase de retro substituição


x[n-1] = b[n-1] / A[n-1, n-1]
for i in range(n-2,-1,-1):
10.3 Laboratório 03 : Sistemas de Equações Lineares - SEL 171

termos = 0
for j in range(i+1, n):
termos += A[i, j] * x[j]
x[i] = (b[i] - termos) / A[i, i]

print('A Solução do sistema:')


print(x)

10.3.2 Decomposição LU
Mostraremos que qualquer a matriz quadrada (A) pode ser expressa como o produto de
duas matrizes, uma triangular inferior (L) e uma triangular superior (U):

A = L.U

O processo do cálculo das matrizes L e U é conhecido como decomposição ou fatoração


LU. O método em sí não é único, alguns são comumente denominados conforme a seguinte
tabela,

Decomposição Doolittle lii , i = 1, 2, · · · , n


Decomposição Crout uii , i = 1, 2, · · · , n
Decomposição Choleski L = UT

Após decompor a matriz A, a resolução do sistema de equações lineares, segue o que


foi discutido no capítulo 05, ou seja: Primeiramente, escrevemos o SEL como LUx = b.
Em seguida, consideramos, Ux = y e resolvemos

Ly = b

de modo a encontrarmos os valores correspondentes ao vetor y. Então,

Ux = y → x

onde o vetor x é obtido pelo processo de retrosubstituição.

## método da decomposição LU (Doolittle)


''' A = LUdecomp(A)
LUdecomposicao: [L][U] = [A]
172 Capítulo 10. Laboratórios

x = LUsolve(A,b)
Fase da solução : Resolve [L][U]{x} = {b}
'''
import numpy as np

def LUdecomp(A):
n = len(A)
for k in range(0,n-1):
for i in range(k+1,n):
if A[i,k] != 0.0:
pivo = A[i,k]/A[k,k]
A[i,k+1:n] = a[i,k+1:n] - pivo*A[k,k+1:n]
A[i,k] = pivo
return A

def LUsolve(A,b):
n = len(A)
for k in range(1,n):
b[k] = b[k] - np.dot(A[k,0:k],b[0:k])
b[n-1] = b[n-1]/A[n-1,n-1]
for k in range(n-2,-1,-1):
b[k] = (b[k] - np.dot(A[k,k+1:n],b[k+1:n]))/A[k,k]
return b

 Exemplo 10.12 Utilize o método de decomposição de Doolittle para resolver o seguinte


SEL: 
 x1 + 4 x2 + x3 = 7

x1 + 6 x2 − x3 = 13

2 x1 − x2 + 2 x3 = 5

import numpy as np

A = np.array([[ 1.0, 4.0, 1.0], \


[ 1.0, 6.0,-1.0], \
[ 2.0,-1.0, 2.0]])
b = np.array([ 7.0, 13.0, 5.0])

A = LUdecomp(A)
10.3 Laboratório 03 : Sistemas de Equações Lineares - SEL 173

for i in range(len(b)):
x = LUsolve(A,b[i])
print("x",i+1,"=",x)
input("\nPress return para sair")

10.3.3 Método Iterativo de Gauss - Seidel


O método de Gauss–Seidel é especificamente um dos métodos iterativos que vai atualizando
os valores do vetor solução a partir do valor mais recente das demais componentes e tais
iterações continuam até que os valores convirjam a uma solução, dentro de uma certa
tolerância definida.No entanto, se faz necessário um teste de convergência antes de iniciar
o algoritmo propriamente dito.

'''
Um simples exemplo de funcionamento do método de Gauss-Seidel,
no caso um sistema (3,3)
'''

def Gauss_seidel(A, x ,b):

n = len(A)

for j in range(0, n):


# Variável temporária para armazenar b[j]
d = b[j]

# Calcular respectivamente xi, yi, zi


for i in range(0, n):
if(j != i):
d-=A[j][i] * x[i]
# Atualização dos valores do vetor x
x[j] = d / A[j][j]
return x

# inicialização
n = 3
A = []
b = []
174 Capítulo 10. Laboratórios

# condições iniciais (considerando n=3)


x = [0, 0, 0]
a = [[4, 1, 2],[3, 5, 1],[1, 1, 3]]
b = [4,7,3]
print(x)

#Consideramos neste exemplo apenas o número de iterações,


#ou seja apenas 25 iterações.

for i in range(0, 25):


x = Gauss_seidel(A, x, b)
#Imprime cada valor atualizado no vetor x
print(x)

outro exemplo utilizando a função lambda.

# Definindo o SEL de modo a ser diagonalmente predominante


f1 = lambda x,y,z: (17-y+2*z)/20
f2 = lambda x,y,z: (-18-3*x+z)/20
f3 = lambda x,y,z: (25-2*x+3*y)/20

# Initial setup
x0 = 0
y0 = 0
z0 = 0
cont = 1

# definindo a tolerância
e = float(input('Entre com o erro tolerável : '))

# Implementação das iterações do método de Gauss Seidel


print('\nCont\tx\ty\tz\n')

condition = True

while condition:
x1 = f1(x0,y0,z0)
y1 = f2(x1,y0,z0)
z1 = f3(x1,y1,z0)
10.3 Laboratório 03 : Sistemas de Equações Lineares - SEL 175

print('%d\t%0.4f\t%0.4f\t%0.4f\n' %(cont, x1,y1,z1))


e1 = abs(x0-x1);
e2 = abs(y0-y1);
e3 = abs(z0-z1);

cont += 1
x0 = x1
y0 = y1
z0 = z1

condition = e1>e and e2>e and e3>e

print('\nSolucao: x=%0.3f, y=%0.3f and z = %0.3f\n'% (x1,y1,z1))

10.3.4 Exercícios Propostos


Exercício 10.12 Quatro blocos de diferentes massas mi são conectados por cordas de
massa desprezível. Três blocos estão em um plano inclinado, os coeficientes de atrito
entre os blocos e plano são µi . As equações de movimento para o bloco são definidas
por, 


 T1 + m1 a = m1 g (senθ − µ1 cosθ )

T − T + m a = m g(senθ − µ cosθ )
2 1 2 2 2
T3 − T2 + m3 a = m3 g(senθ − µ3 cosθ )



 m4 a − T3 = −m4 g

onde Ti representa o torque e a a aceleração do sistema. Determine a e Ti para um


ângulo de θ = π/4, g ≈ 9, 8 m/s2 , µ = [0, 25 0, 3 0, 2]T e m = [10 4 5 6]T . 
176 Capítulo 10. Laboratórios

Exercício 10.13 Sistemas idealizados de massa-mola desempenham um papel impor-


tante na mecânica e em outros problemas da engenharia. A Figura abaixo mostra tal
sistema. Assim que são soltas, as massas são puxadas para baixo pela força da gravidade.
Observe que o deslocamento de cada mola é medido em coordenadas locais relativas à
sua posição inicial.
• Usando a segunda lei de Newton e a lei de Hooke modele um sistema de equações
lineares;
• considerando as derivadas nulas e, m1 = 2kg, m2 = 3kg, m3 = 2, 5kg e k = 10 kgs2
,
use a decomposição LU para determinar os deslocamentos.


10.4 Ajuste de Curvas

O ajuste de uma curva se resume a encontrar uma equação que melhor se ajusta a um
conjunto de pontos fornecidos, com o menor desvio possível, baseado numa métrica.
Geralmente, a técnica utilizada para encontrar tal equação é conhecida como o método
dos mínimos quadrados, onde os quadrados das diferenças entre determinados pontos e
valores de função de curva de ajuste são minimizados.

Regressão Linear

Se os dados fornecidos representam um comportamento linear de um certo experimento,


então o ajuste é feito por meio da equação de uma reta. Ou seja,

f (x) = a + bx
10.4 Ajuste de Curvas 177

onde os coeficientes a e b podem ser calculados por meio das seguintes expressões:

ȳ ∑ xi2 − x̄ ∑ xi yi
a= (10.1)
∑ xi2 − nx̄2

∑ xi yi − x̄ ∑ yi
b= . (10.2)
∑ xi2 − nx̄2
Sendo,
1 n 1 n
x̄ = ∑ i x e ȳ = ∑ yi
n i=1 n i=1
representando os valores médios, respectivamente.
 Exemplo 10.13 Encontre a reta que melhor ajusta o seguinte conjunto de pontos:

xi 3 4 5 6 7 8
yi 0 7 17 26 35 45

x = [3, 4, 5, 6, 7, 8]
y = [0, 7, 17, 26, 35, 45]
n = len(x) # tamanho dos vetores x e y
sumx = sumx2 = sumxy = sumy = 0 # inicialização dos somatórios

for i in range(n):
sumx += x[i] # Somatório em x
sumx2 += x[i]**2 # Somatório em x^2
sumxy += x[i]*y[i] # Somatório x.y
sumy += y[i] # Somatório em y

# Cálculo das médias


xm = sumx / n # Cálculo da média de x
ym = sumy / n # Cálculo da média de y

# Cálculo da variável a conforme equação 10.1


a = (ym*sumx2 - xm*sumxy)/(sumx2 - n*xm**2)
# Cálculo da variável b conforme equação 10.2
b = (sumxy - xm*sumy)/(sumx2 - n*xm**2)

print('A equação da reta é :')


print('f(x) = (%.3f) + (%.3f)x'%(a,b))
Atividade : Gere o gráfico. 
178 Capítulo 10. Laboratórios

Caso geral do ajuste de curva polinomial


Como vimos no capítulo 06, as equações normais fornecem o vetor de parâmetros desco-
nhecidos que minimizam o erro quadrático por meio da seguinte equação:
−1 T
w = XT X X f.

Assim, podemos resolver o caso geral utilizando um método de resolução direta.


 Exemplo 10.14 Considerando o caso mais simples, discutido anteriormente. Seja f (x) =
bx+a a função a ser ajustada, x = np.linspace(0, 1, 101) e y = 1+x+x∗np.random.random(len(x))
o conjunto de dados. Então:

import numpy as np
from scipy import optimize
import matplotlib.pyplot as plt

plt.style.use('seaborn-poster')

# gerando as dados x e f
x = np.linspace(0, 1, 101)
f = 1 + x + x * np.random.random(len(x))

# Construção da matriz X
X = np.vstack([x, np.ones(len(x))]).T

# representando f como um vetor coluna


f = f[:, np.newaxis]

# Resolução direta
w = np.dot((np.dot(np.linalg.inv(np.dot(X.T,X)),X.T)),f)
print(w)

# Gráfico dos dados e do resultado obtido


plt.figure(figsize = (10,8))
plt.plot(x, f, 'b.')
plt.plot(x, w[0]*x + w[1], 'r')
plt.xlabel('x')
plt.ylabel('f')
plt.show()
10.4 Ajuste de Curvas 179

 Exemplo 10.15 Adapte o código fonte anterior para ajustar o seguinte conjunto de
pontos

xi -2 -1 1 2 3
yi 13,86 4,93 5,79 15,99 32,48

a função f (x) = w0 + w1 x + w2 x2 . 

Regressão para funções não lineares


Regressão com mínimos quadrados (ajuste de curvas) pode ser utilizada para estimar uma
função que seja uma combinação linear de funções de base. Para isso, considere o seguinte
conjunto de dados

import numpy as np
from scipy import optimize
import matplotlib.pyplot as plt

plt.style.use('seaborn-poster')

# gerar o conjunto de pontos x e y, com o vetor y


# adicionado de ruído aos dados
x = np.linspace(0, 10, 101)
y = 0.1*np.exp(0.3*x) + 0.1*np.random.random(len(x))

# Visualização dos dados


180 Capítulo 10. Laboratórios

plt.figure(figsize = (10,8))
plt.plot(x, y, 'b.')
plt.xlabel('x')
plt.ylabel('y')
plt.show()

Uma Aplicação em Aprendizagem de Máquina

Considere o modelo de ajuste linear que prediz uma saída y como uma combinação linear
nas variáveis de entrada x1 , x2 , · · · , xn como,
 
1
 
x1 
 
T
y = w x = w0 + w1 x1 + w2 x2 + · · · + wn xn = [w0 w1 · · · wn ] x2  (10.3)
 
.
 .. 
 
xn

onde o vetor w = [w0 w2 · · · wn ]T contém os parâmetros do modelo x = [1 x1 · · · xn ]T


corresponde ao vetor das variáveis de entrada.
Dado um conjunto de treinamento com N exemplos de entrada {xn }N−1 n=0 juntamente com
N−1
a saída desejada {tn }n=0 . Então, o objetivo é encontrar um modelo baseado na equação
(10.3) que minimize o funcional de custo

N−1 N−1
2
J(w) = ∑ (yn − tn) = ∑ ((w0 + w1x1 + w2x2 + · · · + wnxn) − tn)2 .
n=0 n=0

Como estudado no capítulo 06, a solução desta equação se dá por meio da equação normal:
−1
w = XT X XT t (10.4)

Embora a equação (10.4) forneça uma fórmula fechada para o problema de ajuste via
mínimos quadrados ou filtragem desejada, as vezes não é computacionalmente viável.
Para contornar esse problema, podemos recorrer ao método do gradiente para refinar
iterativamente o cálculo dos parâmetros w, na direção do mínimo na função custo via
gradiente descendente. Ou seja, para minimizar o funcional de custo, derivando-o e
igualando a zero, obtemos:

1 N−1 T
xn w − tn xn = x xT w − t .
 
∇J(w) = ∑ (10.5)
2 n=0
10.4 Ajuste de Curvas 181

Onde x = xT = [x0 x1 · · · xN−1 ] e,

wk+1 = wk − µ∇J(wk ), k = 0, 1, · · · , (10.6)

onde µ > 0 representa a taxa de aprendizagem. Às vezes, calcular o gradiente em (10.6) é


lento e com um custo computacional alto. Uma forma de contornar o problema é substituir
a soma do gradiente sobre todas amostras por uma soma num determinado subconjunto
das mesmas. Em particular,

w p+1 = w p + µ xTp w p − t p x p

(10.7)

Esta aproximação é denominada como método do gradiente estocástico descendente (GED)


e a atualização na equação (10.7) é o famoso algoritmo (LMS - Least Mean Square). O
GED é um dos algoritmos mais utilizado em treinamento de redes neurais e aprendizagem
de máquinas. A grande vantegem do LMS é que ele pode ser utilizado em treinamento
on-line.
O seguinte código corresponde a um exemplo do algoritmo LMS utilizado em filtragem.

import matplotlib.pyplot as plt


import numpy as np
import math
from scipy import signal
%matplotlib inline

N = 4000 # quantidade de amostras na entrada


K = 31 # Ordem do filtro

x = np.sin(np.random.randn(N)) # Entrada do filtro


h = signal.firwin(K, 0.2) # Filtro FIR
t = signal.convolve(x, h) # Sinal desejado
t = t + 0.01 * np.random.randn(len(t)) # sinal desejado acréscido de ruído

mu = 0.05

plt.figure(figsize=(12,5))
plt.title('Janela do filtro')
plt.plot(h,"r")
plt.show()
182 Capítulo 10. Laboratórios

# Inicialização dos parâmetros do filtro


w = np.zeros(K)
e = np.zeros(N-K)
y = np.zeros(N)

for n in range(0, N-K):


xn = x[n+K:n:-1]
en = t[n+K] - np.dot(xn,w) # Atualização do erro
w = w + mu * en * xn # Atualização do filtro (algoritmo LMS)
y = w*xn

e[n] = en # Sinal do erro

plt.figure(figsize=(12,5))
plt.title('Saída do Filtro')
plt.plot(y,"--b")
plt.show()

Exercício 10.14 Execute o código do algoritmo LMS e comente testes executados


com diferentes filtros h, inclusive com tamanhos e coeficientes diferentes. Em seguida,
execute e comente a convergência do algoritmo com diferentes valores na taxa de
aprendizagem, incluindo valores negativos. 

Exercício 10.15 Escreva uma função ajuste− exponencial(x, y) onde x e y são vetores
coluna de mesma dimensão e contendo os dados experimentais, e a função irá retornar
os valores de α e β da estimação y(x) = α eβ x . Teste com o seguinte conjunto de dados:

x = np.linspace(0, 1, 1000)
y = 2*np.exp(-0.5*x) + 0.25*np.random.random(len(x))
alpha, beta = ajuste_exponencial(x, y)

Exercício 10.16 Escreva a função ajuste− geral(φ , x, y) onde φ representa uma função
de base, x e y os vetores contendo os dados acrescidos de ruído. Assuma x e y de mesma
dimensão. Sendo ŷ = ∑nk=1 wk φk (x) a função que ajusta os dados via uma combinação
linear de funções de base. Teste no seguinte conjunto de dados:
10.4 Ajuste de Curvas 183

x = np.linspace(0, 2*np.pi, 1000)


y = 3*np.sin(x) - 2*np.cos(x) + np.random.random(len(x))
phi = [np.sin, np.cos]
w = ajuste_geral(phi, x, y)

Exercício 10.17 A partir da estrutura e funcionamento do neurônio biológico, pesqui-


sadores tentaram simular este sistema em computador. O modelo mais bem aceito foi
proposto por McCulloch e Pitts em 1943, o qual implementa de maneira simplificada os
componentes e o funcionamento de um neurônio biológico. Em termos simples, um
neurônio matemático de uma rede neural artificial é um componente que calcula a soma
ponderada de vários entradas, aplica uma função e passa o resultado adiante. Ou seja,

y = φ wT x .


Tomando este modelo como referência, podemos utilizar o algoritmo LMS estudado
para calcular os pesos sinápticos de um neurônio. Tomando, o seguinte exemplo
como referência, adapte o modelo a um neurônio de forma a criar um filtro adaptativo
classificador de padrões (DICA: Escolha como função de ativação a função tangente
hiperbólica).

import numpy as np
import matplotlib.pylab as plt
import padasip as pa

# criando os dados
N = 500
t = np.linspace(start=[-np.pi, -np.pi/2, -2*np.pi, 0],
stop=[np.pi, np.pi/2, 2*np.pi, 2*np.pi], num = N)
x = np.sin(t) + np.cos(2*t)
#x = np.sin(np.random.normal(0, 1, (N, 4))) # sinal de entrada
v = np.random.normal(0, 0.03, N) # ruído
d = 2*x[:,0] + 0.1*x[:,1] - 4*x[:,2] + 0.5*x[:,3]+ v#desejado+ruído

# Parâmetros do filtro
#f = pa.filters.FilterLMS(n = 4, mu = 0.1, w = "random")
184 Capítulo 10. Laboratórios

f = pa.filters.FilterLMS(n = 4, mu = 0.1, w = np.random.rand(4))


y, e, w = f.run(d, x)

print("%.3f",w) # Valores dos parâmetros do filtro

# Resultados obtidos
plt.figure(figsize=(12,9))
plt.subplot(211);plt.title("Adaptação");plt.xlabel("amostras - N")
plt.plot(d,"b.", label="d - sinal ruidoso")
plt.plot(y,"--r", label="y - sinal filtrado");plt.legend()
plt.subplot(212);plt.title("Erro da adaptação")
plt.xlabel("amostras - N")
plt.plot((e**2)/N,"--r", label="erro médio quadrático");plt.legend()
#plt.plot(10*np.log10(e**2),"r", label="e - erro [dB]");plt.legend()
plt.tight_layout()
plt.show()

10.5 Interpolação
Assumindo um conjunto de dados consistindo dos pares ordenados {xi , yi }ni=1 . Na interpo-
lação o objetivo é estimar uma função P(x) tal que P(xi ) = yi para todo ponto no conjunto
de dados. No nosso caso, abordaremos duas formas de interpolação: Lagrange e Newton.

Polinômio Interpolador de Lagrange


O polinômio interpolador de Lagrange consiste de um polinômio de grau n que passa
por todos os pontos dados. Geralmente denominado por P(x) e possui a propriedade que
P(xi ) = yi . Ao calcular o polinômio de Lagrange, é conveniente escrevê-lo como uma
combinaçao linear de polinômios da base de Lagrange, Li (x), onde

n (x − x j )
Li (x) = ∏ ,
j=0
(xi − x j )
j6=i

e
n
P(x) = ∑ yi Li (x).
i=0

Pi (x) possui as propriedades discutidas no capítulo 07, como desejado.


 Exemplo 10.16 Encontre os polinômios base de Lagrange para o seguinte conjunto de
10.5 Interpolação 185

dados: x = [0 1 2] e y = [1 3 2] e gere os respectivos gráficos. Verifique as propriedades


em que Li (x j ) = 1 quando i = j e Li (x j ) = 0 qunado i 6= j. Ou seja,

(x − x1 )(x − x0 ) 1
= x2 − 3x + 2 ,

L0 (x) =


(x0 − x1 )(x0 − x2 ) 2





 (x − x0 )(x − x2 )
L1 (x) = = −x2 + 2x,

 (x1 − x0 )(x1 − x2 )

 (x − x0 )(x − x1 ) 1
= x2 − x .
 
L2 (x) =

(x2 − x0 )(x2 − x1 ) 2

import numpy as np
import numpy.polynomial.polynomial as poly
import matplotlib.pyplot as plt

x = [0, 1, 2]
y = [1, 3, 2]
P1_coeff = [1,-1.5,.5]
P2_coeff = [0, 2,-1]
P3_coeff = [0,-.5,.5]

# Funções Polinomiais
P1 = poly.Polynomial(P1_coeff)
P2 = poly.Polynomial(P2_coeff)
P3 = poly.Polynomial(P3_coeff)

x_new = np.arange(-1.0, 3.1, 0.1)

fig = plt.figure(figsize = (10,8))


plt.plot(x_new, P1(x_new), 'b', label = 'P1')
plt.plot(x_new, P2(x_new), 'r', label = 'P2')
plt.plot(x_new, P3(x_new), 'g', label = 'P3')

plt.plot(x, np.ones(len(x)), 'ko', x, np.zeros(len(x)), 'ko')


plt.title('Base Polinomial de Lagrange')
plt.xlabel('x')
plt.ylabel('y')
plt.grid()
plt.legend()
plt.show()
186 Capítulo 10. Laboratórios

L = P1 + 3*P2 + 2*P3 # Polinômio de Lagrange

fig = plt.figure(figsize = (10,8))


plt.plot(x_new, L(x_new), 'b', x, y, 'ro')
plt.title('Interpolação por Lagrange')
plt.grid()
plt.xlabel('x')
plt.ylabel('y')
plt.show()

Interpolação de Lagrange usando a biblioteca scipy.

from scipy.interpolate import lagrange

f = lagrange(x, y)

fig = plt.figure(figsize = (10,8))


plt.plot(x_new, f(x_new), 'b', x, y, 'ro')
plt.title('Interpolação por Lagrange')
plt.grid()
plt.xlabel('x')
plt.ylabel('y')
plt.show()

De maneira similar podemos utilizar o polinômio interpolador de Newton.

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

def divided_diff(x, y):


'''
função que calcula a tabela
das diferença divididas

'''
n = len(y)
10.5 Interpolação 187

coef = np.zeros([n, n])


# A primeira coluna é y
coef[:,0] = y

for j in range(1,n):
for i in range(n-j):
coef[i][j] = \
(coef[i+1][j-1] - coef[i][j-1]) / (x[i+j]-x[i])

return coef

def newton_poly(coef, x_data, x):


'''
evalua o polinômio de Newton
em x
'''
n = len(x_data) - 1
p = coef[n]
for k in range(1,n+1):
p = coef[n-k] + (x -x_data[n-k])*p
return p

x = np.array([-5, -1, 0, 2])


y = np.array([-2, 6, 1, 3])

# pega os coeficientes da tabela


# de diferenças divididas

a_s = divided_diff(x, y)[0, :]

# evalua em novos pontos


x_new = np.arange(-5, 2.1, .1)
y_new = newton_poly(a_s, x, x_new)

plt.figure(figsize = (12, 8))


plt.plot(x, y, 'bo')
plt.plot(x_new, y_new)
188 Capítulo 10. Laboratórios

10.6 Resolução Numérica de EDO’s


Bibliografia

• CHAPRA, Steven C; CANALE, Raymond P. Métodos numéricos para engenharia.


São Paulo: McGraw-Hill, c2008. xxi, 809 p. ISBN: 9788586804878.
• FRANCO, Neide Maria Bertoldi. Cálculo numérico. São Paulo: Pearson Prentice
Hall, 2006. 505 p. ISBN: 9788576050872.
• ARENALES, Selma; Cálculo Numérico : aprendizagem com apoio de software 2.
ed. São Paulo: Cengage Learning, 2015. ISBN: 9788522112876
• EPPERSON, James F., author. An introduction to numerical methods and analysis /
James F. Epperson, Mathematical Reviews. — Second edition.
• VIEIRA, Vandenberg Lopes. Um curso básico em teoria dos números ; São Paulo:
Livraria da Física, 2015.
• HALMOS, Paul R.Finite Dimensional Vector Spaces. ISBN - 13: 978-0-486-81486-
5 9788586804878.
• LANG, S.Undergraduate Analysis. ISBN: 94841-7.
• LIMA, Elon L. Análise Real vol I - Funções de uma variável, 11 ed. Rio de Janeiro:
IMPA, 2011.
• AXLER, S. Linear Algebra - Done Right
• ANTON, H. e Rorres, C. Elementary linear algebra with applications
Índice

Determinante e Matriz Inversa . . . . . . . . 22

E
Método de Eliminação de Gauss . . . . . . 74
Método de Gauss - Jordan . . . . . . . . . . . . 76 EDO’s de ordem superior . . . . . . . . . . . 149
Erro absoluto × erro relativo . . . . . . . . . 34
Erros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
A
Erros em soluções numéricas . . . . . . . . . 39
Ajuste de Curvas . . . . . . . . . . . . . . . . . . . 176 Exercícios . . . . . . . . . . . . . . . . . . . . . . . 30, 49
Ajuste não linear . . . . . . . . . . . . . . . . . . . 100 Exercícios Propostos 41, 68, 89, 107, 119,
Ajuste trigonométrico . . . . . . . . . . . . . . . 102 134, 150
Aproximação . . . . . . . . . . . . . . . . . . . . . . . 28 Expansão em Séries de Taylor . . . . . . . 156
As Regras de Simpson . . . . . . . . . . . . . . 127
I
C
Interpolação . . . . . . . . . . . . . . . . . . . . . . . 184
Caso Geral . . . . . . . . . . . . . . . . . . . . . . . . . 95 Iteração funcional e ponto fixo . . . . . . . . 64
Conversão de base . . . . . . . . . . . . . . . . . . . 35
M
D
Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Decomposição Cholesky . . . . . . . . . . . . . 77 Modelagem Matemática e Resolução de
Decomposição LU. . . . . . . . . . . . . . . . . . .78 Problemas . . . . . . . . . . . . . . . . . . . 27
192 ÍNDICE

Método da Bissecção . . . . . . . . . . . . . . . . 57 Regra do trapézio . . . . . . . . . . . . . . . . . . 124


Método da Falsa Posição . . . . . . . . . . . . . 59 Regra do trapézio composta . . . . . . . . . 126
Método da Secante . . . . . . . . . . . . . . . . . . 63 Regressão por Mínimos Quadrados . . . . 91
Método de Euler . . . . . . . . . . . . . . . . . . . 139 Representação em ponto fixo . . . . . . . . . 38
Método de Gauss - Seidel . . . . . . . . . . . . 87 Representação em ponto flutuante . . . . . 38
Método de Newton . . . . . . . . . . . . . . . . . . 60 Representação numérica no computador38
Método de Newton na solução de sistemas Resolução Numérica de EDO’s . . . . . . 188
não lineares . . . . . . . . . . . . . . . . . 67 Resolvido . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Método iterativo de Jacobi - Richardson85
Método RK2 . . . . . . . . . . . . . . . . . . . . . . . 143 S
Método RK3 . . . . . . . . . . . . . . . . . . . . . . . 146
Métodos de Decomposição . . . . . . . . . . . 77 Segunda regra de Simpson . . . . . . . . . . 130
Métodos de Runge - Kutta . . . . . . . . . . 142 sequências Convergentes . . . . . . . . . . . . . 24
Métodos Diretos . . . . . . . . . . . . . . . . . . . . 74 Sistemas de Equações Lineares - SEL 169
Métodos diretos x métodos iterativos . . 88 Sistemas de equações não lineares . . . . 66
Métodos Iterativos . . . . . . . . . . . . . . . . . . . 85 Sistemas numéricos. . . . . . . . . . . . . . . . . .34
Solução de Equações não lineares . . . . 160
Série de Taylor . . . . . . . . . . . . . . . . . . . . . . 43
N
Série de Taylor em duas variáveis . . . . . 48
Norma Matricial . . . . . . . . . . . . . . . . . . . . . 21
Norma no Rn . . . . . . . . . . . . . . . . . . . . . . . 15

P
Polinômios interpoladores de Lagrange112
Polinômios interpoladores por Diferenças
Divididas de Newton . . . . . . . . 117
Produto Interno . . . . . . . . . . . . . . . . . . . . . 16
Projeção Ortogonal . . . . . . . . . . . . . . . . . . 17
Propostos . . . . . . . . . . . . . . . . . . . . . . . 31, 53

Quadratura de Gauss . . . . . . . . . . . . . . . . 131

R
1
Regra 3 de Simpson generalizada . . . . 129

Você também pode gostar