Post on 09-Nov-2015
description
Clculo Numrico
Notas de Aula
Adalberto Ayjara Dornelles Filho
aadornef@ucs.br
19 de fevereiro de 2015
verso 11
Sumrio
Apresentao v
1 Introduo ao Matlab 1
1.1 Obtendo ajuda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Calculando com o Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 Programando com o Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3.1 Estruturas lgicas de um algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3.2 Estrutura de sequncia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3.3 Estruturas de deciso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3.4 Estruturas de repetio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2 Erros e Aritmtica Computacional 14
2.1 Resoluo de problemas numricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2 Representao numrica de ponto utuante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3 Erros nos processos numricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.3.1 Erro de arredondamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.3.2 Erro de truncamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.4 Notao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.5 Estimativas para o erro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.6 Convergncia nos processos numricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
i
SUMRIO ii
2.7 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3 Zeros de funes 25
3.1 Denio do problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2 Mtodo da bisseo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.2.1 Critrios de parada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.3 Mtodo de Newton-Raphson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.4 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4 Sistemas Lineares 34
4.1 Denio do problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.2 Mtodo de Gauss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.2.1 Pivotamento Parcial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.3 Mtodos iterativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.4 Mtodo de Gauss-Jacobi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.4.1 Convergncia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.5 Mtodo de Gauss-Seidel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.6 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5 Interpolao 47
5.1 Denio do problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.2 Mtodo de Vandermonde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.3 Mtodo de Lagrange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.3.1 Frmulas para 2 e 4 nodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.3.2 Erro na interpolao polinomial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.4 Mtodo do spline cbico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.4.1 Denio e propriedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.4.2 Deduo dos coecientes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.4.3 Determinao do spline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.5 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
SUMRIO iii
6 Ajuste de funes 61
6.1 Denio do problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
6.2 Resduo quadrtico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
6.3 Ajuste polinomial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
6.3.1 Um pouco de lgebra Linear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
6.3.2 Obtendo o polinmio de ajuste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.4 Ajuste exponencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
6.5 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
7 Integrao Numrica 74
7.1 Denio do problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
7.2 Mtodo de Newton-Cotes simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
7.2.1 Deduo dos pesos de integrao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
7.3 Mtodo de Newton-Cotes composto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
7.4 Mtodo de Newton-Cotes adaptvel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
7.5 Mtodo do Spline Cbico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
7.6 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
8 Equaes Diferenciais Ordinrias 86
8.1 Denio do problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
8.2 Mtodo de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
8.3 Mtodo de Runge-Kutta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
8.4 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
A Respostas para problemas selecionados 96
Lista de Algoritmos
1 VPol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2 MVander . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3 PivotamentoParcial . . . . . . . . . . . . . . . . . . . . 13
4 EpsilonMaq . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5 ErroRel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
6 RaizQuadrada . . . . . . . . . . . . . . . . . . . . . . . . 21
7 ZeroBisseo . . . . . . . . . . . . . . . . . . . . . . . . . 27
8 ZeroNewton . . . . . . . . . . . . . . . . . . . . . . . . . 29
9 SLGaussProv . . . . . . . . . . . . . . . . . . . . . . . . . 36
10 SLGauss . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
11 ErroRelVet . . . . . . . . . . . . . . . . . . . . . . . . . 39
12 SLGaussJacobi . . . . . . . . . . . . . . . . . . . . . . . . 40
13 SLGaussSeidel . . . . . . . . . . . . . . . . . . . . . . . . 42
14 ILagrange . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
15 CoefSpline3 . . . . . . . . . . . . . . . . . . . . . . . . . . 56
16 ISpline3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
17 AjustePol . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
18 QuadNCAdapt . . . . . . . . . . . . . . . . . . . . . . . . 80
19 QuadRec . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
20 QuadSpline3 . . . . . . . . . . . . . . . . . . . . . . . . . 82
21 EDOEuler . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
22 EDORK4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
iv
Apresentao
cada vez mais intenso o uso de tcnicas computacionais para a re-
soluo de problemas nas Cincias Exatas e Engenharias. Boa parte dessas
tcnicas requer o conhecimento dos fundamentos do Clculo Numrico.
Diante da importncia dessa disciplina na formao de prossionais, as uni-
versidades a incluem em seus currculos (em intensidades muito variadas).
Estas Notas de Aula foram preparadas especicamente para o estudante
que se inicia nessa disciplina.
No Captulo 1, veremos uma explicao breve das funcionalidades b-
sicas do Matlab (incluindo clculo e programao). No Captulo 2, apre-
sentamos a forma de representao numrica bem como os conceitos de
erro (de truncamento e arredondamento) inerentes aos processos compu-
tacionais. O estudo dos mtodos numricos propriamente ditos se iniciam
no Captulo 3 com os mtodos para determinar zeros de funes (bisse-
o e Newton). No Captulo 4 estudamos mtodos diretos (escalonamento
de Gauss) e iterativos (Gauss-Jacobi e Gauss-Seidel) para resoluo de
sistemas de equaes lineares. No Captulo 5 estudamos o problema da in-
terpolao polinomial (Vandermonde e Lagrange) e por spline cbico. Em
seguida, no Captulo 6 estudamos o mtodo dos quadrados mnimos para
ajuste de curvas polinomiais. O problema clssico da integrao numrica
estudado no Captulo 7 com a apresentao dos mtodos de Newton-Cotes
(regras simples, compostas e adaptveis) e por spline cbico. Por m, a
resoluo de equaes diferenciais ordinrias vista no Captulo 8 a partir
dos mtodos de Euler e Runge-Kutta. No apndice A, so apresentadas as
respostas e dicas problemas selecionados.
Existem muitos mtodos disponveis para resolver cada um dos proble-
mas abordados. Para tornar o material sucientemente compacto para uso
em sala de aula tivemos que optar por escolher apenas um punhado deles.
Seguindo a orientao de Burden e Faires [8], os mtodos foram escolhidos
de modo a seguir os seguintes critrios:
Simplicidade: O desenvolvimento e a implementao so suciente-mente claros e simples de modo que o estudante iniciante seja capaz
entender como funcionam;
Desempenho: Os algoritmos resolvem satisfatoriamente uma boaquantidade de problemas que o estudante pode encontrar em sua
vida prossional;
Base: A maioria das tcnicas mais avanadas toma por base as ideias,ou combinaes de ideias, de mtodos mais simples como os aqui
estudados.
O leitor interessado em outros mtodos pode (e deve) recorrer a literatura
especializada como, por exemplo, [8, 19, 30, 40].
Para complementar o entendimento da teoria, muitos problemas so
propostos. Os problemas assinalados pelo smbolo . indicam que o
mesmo sucientemente simples para ser resolvido mo (com ajuda de
uma calculadora, se for o caso) ou apresenta alguma resoluo algbrica
(no numrica). Esse tipo de problema importante para que o estudante
exercite passo-a-passo e absorva as ideias subjacentes aos mtodo numri-
cos apresentados
O estudo do Clculo Numrico no pode ser realizado sem a efetiva
implementao dos algoritmos em alguma linguagem de programao. O
presente texto enfatiza essa viso, atravs dos exerccios propostos onde a
implementao dos algoritmos sempre solicitada nos exerccios precedidos
pelo smbolo + . Nesse sentido, o conhecimento de alguma linguagem de
programao deveria ser pr-requisito (o que nem sempre o caso). Aos
estudantes que j conhecem linguagens de programao, esta disciplina
ser uma excelente oportunidade de aplicao desse conhecimento. Aos
v
APRESENTAO vi
que no o possuem, ser uma excelente oportunidade de aprendizagem de
tais linguagens.
A princpio, qualquer linguagem pode ser utilizada (C, Pascal, Java,
...), desde que apresente os comandos matemticos mnimos necessrios.
Por preferncia pessoal do autor, estas notas utilizam a linguagem do
Matlab. Essa aproximao se reete em duas caractersticas do texto:
Primeiramente, os algoritmos, apresentados em pseudo-cdigo, esto escri-
tos usando uma estrutura sinttica muito similar a do Matlab o que faz
com que a implementao seja bastante simplicada. Em segundo lugar,
ao longo do texto, diversos pargrafos precedidos pelo smbolo mostram
informaes relativas ao uso do Matlab e aos algoritmos implementados.
Para os exemplos mostrados nestas notas, foi utilizada a verso R2012a.
Existem boas opes (livres) ao Matlab: pode-se citar o Scilab e o Freemat.
O autor agradece aos colegas
Ana Grisa, Eliana S. Soares, Mnica Scotti,
Oclide J. Dotto, Vania P. Slaviero,
pelas correes, comentrios e sugestes recebidas.
O texto foi editado usando o sistema de preparao de documentos
L
A
T
E
X (www.latex-project.org). O editor de texto utilizado foi oWinEdt
(www.winedt.com). A atualizao de pacotes tipogrcos foi feita com o
auxlio do MiKTeX (www.miktex.com). Os grcos foram elaborados com
o software matemtico Matlab (www.mathworks.com) e os desenhos com o
IPE Draw (ipe7.sourceforge.net).
Captulo 1
Introduo ao Matlab
Neste captulo, estudaremos brevemente algumas caractersticas e fun-
cionalidades do Matlab.
O Matlab (acrnimo de Matrix Laboratory) um software que permite
ao usurio efetuar clculos via digitao direta de comandos e tambm a
construo de programas que automatizam procedimentos de clculo mais
complexos. O Matlab uma ferramenta de larga utilizao tanto no mundo
acadmico (ensino, pesquisa, etc.) quanto no prossional (desenvolvimento
de produtos, anlise de problemas, etc.). Tem um interface simples e in-
tuitiva, e constitui ferramenta indispensvel (na viso do autor) para o
estudante de cincias exatas e engenharia. Existem vrias e boas refern-
cias bibliogrcas para o estudante interessado. Para citar apenas uma:
Essential MATLAB for Engineers and Scientists de Brian D. Hahn e Da-
niel T. Valentine [24].
1.1 Obtendo ajuda
Existem trs nveis de ajuda:
1. Ao se digitar help na rea de trabalho do Matlab, se ob-
tm uma breve informao sobre o comando especicado, por exem-
plo:
>> help log
log Natural logarithm.
log(X) is the natural logarithm of the elements of X.
Complex results are produced if X is not positive.
See also log1p, log2, log10, exp, logm, reallog.
2. No menu HELP >> MATLAB HELP, possvel obter informaes mais
detalhadas sobre os comandos, exemplos, informaes tcnicas, algo-
ritmos e referncias bibliogrcas detalhadas.
3. Na internet, acessando o stio ocial do fabricante (www.mathworks.
com), possvel acessar o suporte tcnico, fruns de discusso, tuto-
riais e manuais (em formato PDF), etc.
1.2 Calculando com o Matlab
No Matlab, a janela de trabalho o espao onde os comandos so digitados,
as operaes so executadas e os resultados so mostrados. O smbolo >>,
chamado prompt, denota que o Matlab est esperando que o usurio digite
um comando. Aps teclar Enter , o resultado apresentado como mostra
a Figura 1.1.
Variveis
No Matlab, todos os resultados (nmeros, vetores, matrizes, etc.) so
armazenados em variveis. Os nomes das variveis devem comear com
uma letra seguida de qualquer nmero de letras, dgitos ou underscores:
>> a = 3, b = 7, c = a + b
1
CAPTULO 1. INTRODUO AO MATLAB 2
Figura 1.1: A janela de trabalho do Matlab.
a = 3
b = 7
c = 10
>> fatorial_de_5 = 5 * 4 * 3 * 2 * 1
fatorial_de_5 = 120
Se uma varivel no explicitada pelo usurio, o resultado ser arma-
zenado na varivel ans:
>> 7 * 8
ans = 56
O Matlab distingue letras maisculas de minsculas. Assim var, VAR,
e Var representam variveis distintas:
>> Num_1 = 1234, Num_2 = 4567
Num_1 = 1234
Num_2 = 4567
>> Tot = Num_1 + num_2
??? Undefined function or variable 'num_2'.
No so permitidos diacrticos (acento, cedilha, til, etc.):
>> soluo = a * b * c
soluo = a * b * c
|
Error: The input character is not valid in MATLAB
statements or expressions.
O uso de ; no nal de um comando de atribuio inibe a apresentao
do resultado:
>> a = 1 + 3
a = 4
>> b = 5 - 2;
>>
Comentrios (muito teis em programao) so escritos aps um %:
>> b = 5; % base
>> h = 7; % altura
>> A = b * h % rea do retngulo
A = 35
Operaes elementares
O Matlab realiza operaes matemticas elementares como uma calcula-
dora.
As operaes aritmticas elementares:
Adio, subtrao, multiplicao, diviso:
>> 4 + 5 % adio
ans = 9
>> 4 - 5 % subtrao
ans = -1
>> 4 * 5 % multiplicao
ans = 20
>> 4 / 5 % diviso
ans = 0.8000
>> 1 * 2 + 3 / 4 - 5 % Qual o resultado?
CAPTULO 1. INTRODUO AO MATLAB 3
Potenciao, raiz quadrada e outras razes:
>> a = sqrt(5), b = a^2
a = 2.2361
b = 5.0000
>> a = 7^(1/3), b = a^3
a = 1.9129
b = 7.0000
Valor absoluto, resto da diviso inteira:
>> n = abs(-500)
n = 500
>> r = rem(n, 3)
r = 2
Arredondamento:
>> x = sqrt(10)
x = 3.1623
>> a = floor(x), b = ceil(x), c = round(x)
a = 3 % arredonda para o inteiro inferior
b = 4 % arredonda para o inteiro superior
c = 3 % arredonda para o inteiro mais prximo
Operaes trigonomtricas:
O nmero pi:
>> pi
ans = 3.1416
Seno, cosseno e tangente de um ngulo em radianos:
>> a = sin(pi/3), b = cos(pi/3), c = tan(pi/3)
a = 0.8660
b = 0.5000
c = 1.7321
Seno, cosseno e tangente de um ngulo em graus:
>> a = sind(60), b = cosd(60), c = tand(60)
a = 0.8660
b = 0.5000
c = 1.7321
Funes trigonomtricas inversas
>> t1 = asin(sqrt(2)/2), t2 = asind(sqrt(2)/2)
t1 = 0.7854 % ngulo em radianos
t2 = 45.0000 % ngulo em graus
Exponencial e Logaritmo:
Potncia de base natural: ex
>> exp(4)
ans = 54.5982
Logaritmos: lnx, log10 x, log2 x
>> log(5) % logaritmo de base natural
ans = 1.6094
>> log10(1000) % logaritmo de base 10
ans = 3
>> log2(512) % logaritmo de base 2
ans = 9
Vetores e matrizes
O Matlab opera com vetores e matrizes com facilidade.
Vetor denido por seus elementos:
>> x = [1 2 3 4 5]
x = 1 2 3 4 5
Vetor denido por intervalo de valores:
CAPTULO 1. INTRODUO AO MATLAB 4
>> y = 1 : 0.5 : 3
y = 1.0000 1.5000 2.0000 2.5000 3.0000
Operaes com o vetores:
>> x + y % adio
ans = 2.0000 3.5000 5.0000 6.5000 8.0000
>> x .* y % multiplicao elemento-elemento
ans = 1 3 6 10 15
>> x.^2 % potncia dos elementos
ans =
1 4 9 16 25
>> exp(y) % operaes elementares
ans = 2.7183 4.4817 7.3891 12.1825 20.0855
>> dot(x, y) % produto escalar entre x e y
ans = 35
>> n = length(x) % tamanho do vetor
n = 5
Matriz denida por seus elementos:
>> A = [-2 0 1; -2 -3 0; 3 -2 -2] % uma matriz 3x3
A =
-2 0 1
-2 -3 0
3 -2 -2
Operaes matriciais:
>> det(A) % o determinante de A
ans = 1
>> inv(A) % a matriz inversa da A
ans =
6.0000 -2.0000 3.0000
-4.0000 1.0000 -2.0000
13.0000 -4.0000 6.0000
>> A^2 % multiplicando matrizes: A * A
ans =
7 -2 -4
10 9 -2
-8 10 7
>> A.^2 % cada elemento de A ao quadrado
ans =
4 0 1
4 9 0
9 4 4
>> [l, c] = size(A) % nmero de linhas e colunas de A
l = 3
c = 3
Os comandos length e size so semelhantes mas tm uso distinto: o
primeiro indicado para determinar o tamanho de um vetor enquanto o
ltimo indicado para determinar o tamanho de uma matriz.
Transposio de vetores e matrizes:
>> A = [1 2 3; 4 5 6], x = [2 4 6]
A =
1 2 3
4 5 6
x =
2 4 6
>> A', x'
ans =
1 4
2 5
3 6
ans =
2
4
6
Matrizes especiais:
CAPTULO 1. INTRODUO AO MATLAB 5
>> B = zeros(3,2) % matriz de zeros
B =
0 0
0 0
0 0
>> W = ones(2,3) % matriz de uns
W =
1 1 1
1 1 1
>> I = eye(3) % matriz identidade
I =
1 0 0
0 1 0
0 0 1
>> rand(2,4) % matriz com elementos aleatrios
ans =
0.6223 0.4123 0.1355 0.2896
0.7159 0.3622 0.9021 0.7814
Comandos teis para vetores e matrizes
Os comandos max, min e sum, so bastante teis na manipulao de vetores:
>> x = [4 -2 5 0 -3] % Um vetor x
x =
4 -2 5 0 -3
>> M = max(x) % O maior elemento de x
M =
5
>> m = min(x) % O menor elemento de x
m =
-3
>> S = sum(x) % A soma dos elementos de x
S =
4
Os comandos acima funcionam tambm para matrizes:
>> A = [1 5; 3 -4] % Uma matriz A
A =
1 5
3 -4
>> M = max(A) % Os maiores elementos de cada coluna de A
M =
3 5
>> MM = max(max(A)) % O maior elemento de A
MM =
5
>> S = sum(A) % A soma dos elementos de cada coluna de A
S =
4 1
>> S = sum(sum(A)) % A soma de todos os elementos de A
S =
5
Os colchetes [ ] podem ser usados para justapor (concatenar) vetores
ou matrizes:
>> A = [1 2; 4 5], b = [3; 6]
A =
1 2
4 5
b =
3
6
>> Ab = [A b]
Ab =
1 2 3
4 5 6
Funo annima
O comando @ dene funes a partir de expresses algbricas. Por exemplo:
CAPTULO 1. INTRODUO AO MATLAB 6
>> f = @(z) 1/sqrt(2*pi) * exp(-0.5 * z.^2)
f =
@(z)1/sqrt(2*pi)*exp(-0.5*z.^2)
>> a = f(0), b = f(1)
a =
0.3989
b =
0.2420
>> z = 0 : 5, d = f(z)
z =
0 1 2 3 4 5
d =
0.3989 0.2420 0.0540 0.0044 0.0001 0.0000
>>
A varivel f pode ser passada como argumento para outras funes,
como no exemplo a seguir, onde o comando quad calcula a integral da
funo no intervalo 2 < z < 2:>> P = quad(f, -2, 2)
P =
0.9545
Grcos
O Matlab possui uma variedade de comandos para produzir grcos. O
comando plot, para grcos bidimensionais, o mais simples deles.
>> z = -4 : 0.1 : 4; % valores para z
>> d = f(z); % valores para f(t)
>> plot(z, d ,'r--') % grfico
>> grid on % grade
>> xlabel('valor da varivel aleatria') % rtulo horiz.
>> ylabel('densidade de probabilidade') % rtulo vert.
>> title('Distribuio normal padro') % ttulo
A Figura 1.2 mostra o resultado dos comandos.
Figura 1.2: Janela grca do Matlab com um grco 2D simples.
CAPTULO 1. INTRODUO AO MATLAB 7
1.3 Programando com o Matlab
O Matlab permite a execuo de conjuntos de comandos a partir de pro-
gramas. Os programas so arquivos de texto escritos em um editor de
programas. A Figura 1.3 mostra a janela de edio.
Figura 1.3: A janela de edio de programas com uma function.
Os programas do Matlab so de dois tipos: scripts e functions. Os
scripts so programas que realizam operaes especcas com dados xos
enquanto functions realizam operaes mais genricas com entrada e sada
de dados.
Exemplo: Um script para o clculo da mdia harmnica:
clear all
clc
P1 = 7.6
P2 = 8.1
P3 = 8.6
H = 3 / (1/P1 + 1/P2 + 1/P3)
Exemplo: Uma function para o clculo da mdia harmnica:
function H = MH2(P1, P2, P3)
H = 3 / (1/P1 + 1/P2 + 1/P3);
O quadro a seguir, resume as principais diferenas entre scripts e func-
tions:
script function
Uso: especco geral
Variveis: globais (workspace) locais
Entrada de dados: workspace ou no corpo do texto argumentos
Sada de dados: workspace ou eco na tela argumentos
A Figura 1.3 mostra a janela de edio com uma function e a Figura 1.4
mostra a janela de edio com um script. Observe a sintaxe do cabealho
da function. Observe tambm a forma como os dados esto inclusos no
corpo do script.
1.3.1 Estruturas lgicas de um algoritmo
Um algoritmo uma sequncia determinada de passos para a resoluo
de algum problema. Do ponto de vista lgico, existem 3 estruturas que
determinam quais, e como, os passos devem ser executados:
Sequncia: determina qual passo deve ser executado antes de outro; Deciso: determina se um conjunto de passos deve ou no ser exe-cutado;
Repetio: determina se (e quantas vezes) um conjunto de passosdeve ser repetido.
A seguir veremos como essas estruturas lgicas podem ser implemen-
tadas na linguagem do Matlab, isto , qual a sintaxe dos comandos
utilizados
CAPTULO 1. INTRODUO AO MATLAB 8
Figura 1.4: A janela de edio de programas com um script.
1.3.2 Estrutura de sequncia
No Matlab os comandos so executados um de cada vez (no h processa-
mento paralelo). E a sintaxe simples: os comandos so escritos um a um
de cima para baixo. Embora seja possvel, no se recomenda escrever dois
comando em uma mesma linha.
Exemplo: Determinao das razes de uma equao quadrtica
ax2 + bx+ c = 0 com a 6= 0:
clear all
clc
a = 1
b = 2
c = -4
d = b^2 - 4*a*c
x1 = (-b + sqrt(d))/(2*a)
x2 = (-b - sqrt(d))/(2*a)
1.3.3 Estruturas de deciso
O Matlab possui duas estruturas de deciso bsicas: if...else...end e
switch...case.
Exemplo: Clculo da mdia harmnica com if...else...end:
function [H, C] = MH3(P1, P2, P3)
% Calcula mdia harmnica
if P1 = 7.0
CAPTULO 1. INTRODUO AO MATLAB 9
C = 2;
elseif H >= 6.0
C = 1;
else
C = 0;
end
Exemplo: Clculo do intervalo de conana para uma estimativa de
mdia, com switch...case:
function [a, b] = ICMed(xb, sig, n, alfa, L)
switch L
% IC lateral esquerdo
case -1
z_alfa = norminv(1 - alfa);
a = -inf;
b = xb + z_alfa * sig / sqrt(n);
% IC bilateral
case 0
z_alfa_2 = norminv(1 - alfa/2);
a = xb - z_alfa_2 * sig / sqrt(n);
b = xb + z_alfa_2 * sig / sqrt(n);
% IC lateral direito
case +1
z_alfa = norminv(1 - alfa);
a = xb - z_alfa * sig / sqrt(n);
b = +inf;
end
1.3.4 Estruturas de repetio
So duas as estruturas de repetio no Matlab: A estrutura for...end e
a estrutura while...end.
Exemplo: Clculo da tabuada com for...end:
function T = Tabuada(n)
T = zeros(10,1);
for i = 1 : 10
T(i) = i * n;
end
Exemplo: Clculo da tabuada com for...end aninhados:
clear all
clc
T = zeros(10,10);
for j = 1 : 10 % para cada coluna j ...
for i = 1 : 10 % para cada linha i ...
T(i,j) = i * j;
end
end
T
Exemplo: Encontrando uma matriz singular com while...end:
function [A] = MatrizSingular(n)
D = 1; % para "entrar" no lao...
while D ~= 0
A = fix(20 * rand(n) - 10);
D = det(A);
end
Exemplo: Ordenamento de uma lista com vrias estruturas:
function [L] = Ordenar(L)
% Mtodo 'Bubble Sort'
% Inicializao
n = length(L);
cont = 1;
% Enquanto ocorrerem trocas...
while cont > 0
cont = 0;
% ... faz varredura na lista
CAPTULO 1. INTRODUO AO MATLAB 10
for i = 1 : n - 1
% Se elementos fora de ordem...
if L(i) > L(i + 1)
temp = L(i);
L(i) = L(i + 1);
L(i + 1) = temp;
cont = cont + 1;
end
end
end
1.4 Problemas
Comandos do Matlab
Nos problemas 1.1 a 1.6 a seguir, escreva a linha de comando do Matlab necessria
para calcular os valores dados. Justique.
1.1. a = 25, b =
7.
1.2. a = e2, b = 3
2, c = 38.1.3. a = cos(60), b = tg(pi/4).
1.4. a = log(1000), b = ln(1000), c = log2(1000).
1.5. a = |5|, b = 9!.1.6. a = 3,5603 104 + 2,0034 103.
Nos problemas 1.7 a 1.10 a seguir, escreva a linha de comando do Matlab
necessria para construir os vetores dados. Justique.
1.7. x = [6 2 0 5] (um vetor-linha), y = [6 2 0 5]T (um vetor-coluna).
1.8. w = [0,0 0,1 0,2 9,8 9,9 10,0].1.9. z = [0 0 0 0 0 0] (um vetor-linha com 20 zeros).1.10. u = [1 1 1 1 1 1]T (um vetor-coluna com 20 uns).
Nos problemas 1.11 e 1.12 a seguir, escreva a linha de comando do Matlab
necessria para construir as matrizes dadas. Justique.
1.11. A =
[1 74 3
].
1.12. B =
0 1 23 3 11 0 3
2 1 1
.Nos problemas 1.13 a 1.18 a seguir, determine o resultado do comando no
Matlab. Justique.
1.13. >> a = 1 + 2 / 3 - 4 * 5
1.14. >> x = 30, b = sin(x) * cos(x)
1.15. >> y = 100, c = sqrt(y) - log(y)
1.16. >> z = 0.0001, d = abs(log10(z))
1.17. >> w = pi/2, e = exp(cos(w))
1.18. >> A = [1 2 3; 4 5 6], [m, n] = size(A)
Ao se digitar os comandos mostrados nos problemas 1.19 a 1.22 a seguir, se
obtm mensagens de erro. O que elas signicam? Como corrigir o comando?
1.19. >> a = ln(5)
Undefined function 'ln' for input arguments of type 'double'.
1.20. >> y = 1 + e^3
Undefined function or variable 'e'.
1.21. >> t = cos(3,1416)
Error using cos
Too many input arguments.
1.22. >> x = 16, y = sqrt(X)
Undefined function or variable 'X'.
1.23. Ao calcular o vetor de coecientes de um polinmio interpolador, um es-
tudante obteve o seguinte resultado:
c =
1.0e+003 *
0.0033
0.1742
-6.6277
CAPTULO 1. INTRODUO AO MATLAB 11
Quais so os valores dos coecientes? Qual o polinmio?
Nos problemas 1.24 a 1.27 a seguir, desenhe os grcos das funes mostra-
das. Adicione grade, legenda, rtulos nos eixos x e y e ttulo. Use os comandosplot, grid, legend, xlabel, ylabel, title.
1.24. f(x) = x2 + x 41.25. g(x) = ex 11.26. h(x) = 2 + 3 cos(pix)
1.27. i(x) =x+ 1
x 11.28. Se C uma matriz de ordem nm, p um nmero real e i e j so inteirospositivos tais que 1 i, j n. O que fazem as seguintes linhas de cdigo?Justique. D um exemplo. (Estas operaes sero utilizadas nos algoritmos do
Captulo 4).
>> C(i,:) = C(i,:) + p * C(j,:);
>> T = C(i,:);
>> C(i,:) = C(j,:);
>> C(j,:) = T;
Programao no Matlab
1.29. (a) Escreva um script que gera um vetor de 5 elementos aleatrios e, em se-
guida, calcula a mdia aritmtica desses elementos. (b) Escreva uma function que
recebe um vetor de n elementos e retorna a mdia aritmtica dos seus elementos.(c) Compare os resultados com o comando mean.
1.30. (a) Escreva um script que gera um vetor de n elementos aleatrios e, emseguida, determina o valor e a localizao do maior elemento do vetor. (b) Escreva
uma function que recebe um vetor de n elementos e retorna o valor e a posiodo maior elemento do vetor. (c) Compare os resultados com o comando max.
1.31. Escreva uma function que calcula a soma de todos os elementos de uma
matriz A dada. Compare o resultado com o comando sum.
1.32. Com trs segmentos de reta de comprimento a, b e c somente possvelconstruir um tringulo se o comprimento de cada segmento menor que a soma
dos outros dois. Escreva uma function que recebe os comprimentos a, b e c de3 segmentos de reta e retorna o valor 1 se eles podem representar lados de um
tringulo e 0 em caso contrrio.
1.33. Escreva uma function que recebe um inteiro n e retorne um vetor d con-tendo todos os divisores de n entre 1 e n, inclusive. Use os comandos mod ourem.
1.34. Escreva uma function que recebe um inteiro n e retorna o valor 1 se n primo e 0 se n composto. Compare os resultados com o comando isprime.Sugesto: modique a function do problema anterior.
1.35. Considere a funo polinomial
F (x) = 3x4 2x3 + 7x2 5x+ 4.Essa funo pode ser reescrita na forma fatorada de Horner
1
:
H(x) = (((3x 2)x+ 7)x 5)x+ 4.Do ponto de vista computacional, essa forma fatorada preferida por realizar
uma quantidade menor de operaes.
(a) Verique esse fato determinando quantas operaes de multiplicao e adio
so necessrias para calcular F (x) e H(x). Considere que o clculo de xn efetuado com multiplicaes.
(b) Generalize o resultado do item anterior para o caso de um polinmio de grau
m.
1.36. + Implemente o algoritmoVPol que usa a forma de Horner para avaliaopolinomial, isto , recebe um vetor c com os coecientes de uma funo polinomialp, o valor x e determina y = p(x). Use y = y .* x + c(i) para implementara linha 4, assim x pode ser tanto um escalar quanto um vetor. Compare com ocomando polyval do Matlab. (Esse algoritmo ser utilizado no Captulo 5).
1.37. Em 1674, Leibniz
2
mostrou que o nmero pi pode ser calculado pela srie
pi = 4
(1 1
3+
1
5 1
7+
),
1 William George Horner (1786 - 1837), clrigo metodista e estudioso ingls, conhe-cido pelo mtodo (que leva seu nome) de resoluo de equaes algbricas publicado em
A new method of solving numerical equations of all orders, by continuous approximation
em 1819. No entanto o mtodo no original, foi antecipado no sculo XIX por Paolo
Runi na Itlia e, antes disso, no sculo XIII por Zhu Shijie na China [38].
2 Gottfried Wilhelm von Leibniz (1646 - 1716), matemtico e lsofo alemo,desenvolveu a teoria do Clculo ( dele a notao
dydx) na mesma poca que Newton.
conhecido ainda pelos estudos na aritmtica binria e pelo desenvolvimento de uma
mquina mecnica de calcular. Tanto quanto matemtico, Leibniz foi importante lsofo
e, entre outros temas, tratou do problema da conciliao da noo do mal em um mundo
criado por um deus bom [38].
CAPTULO 1. INTRODUO AO MATLAB 12
Algoritmo 1 VPol
entrada : c, xsada : y1: n tamanho de c2: y 03: para i 1 : n4: y y x+ ci5: m
[4, p. 132]. Escreva uma function que recebe um valor n e que retorna umaaproximao P (n) para o valor de pi usando os n primeiros termos da srie.Quantos termos so necessrios para se obter uma aproximao P cuja diferenapara o valor exato de pi seja menor que 0,0005?
1.38. + Implemente o algoritmo MVander, que recebe um vetor x =[x1, x2, . . . , xn]T
e um inteiro positivo m e retorna a matriz
X =
xm1 x21 x1 1xm2 x22 x2 1.
.
.
.
.
.
.
.
.
.
.
.
xmn x2n xn 1
,denominada matriz de Vandermonde
3
. Esse algoritmo ser utilizado nos Ca-
ptulos 5 e 6. Compare com o comando vander do Matlab.
1.39. A sequncia
1, 1, 2, 3, 5, 8, 13, 21, . . .
conhecida como sequncia de Fibonacci
4
. Ela pode ser escrita recursivamente
3 Alexandre-Thophile Vandermonde (1735 - 1796), matemtico francs, conhe-cido como o fundador da teoria do determinante de uma matriz. Embora j utilizados
na resoluo de sistemas lineares, as propriedades algbricas dos determinantes ainda
no eram bem conhecidas. de Vandermonde a demonstrao do efeito da permutao
de linhas ou colunas de uma matriz sobre seu determinante. Dessa propriedade, deduziu
que se duas linhas ou colunas de uma matriz so iguais, o seu determinante zero [38].
4 Leonardo Pisano (1170 - 1250), matemtico italiano, mais conhecido por seuapelido Fibonacci, teve papel importante na histria da matemtica. Seu livro Liber
Abaci de 1202 introduziu a notao decimal posicional com algarismos hindu-arbicos
que usamos at hoje. A sequncia numrica que leva seu nome a soluo de um
problema envolvendo a reproduo de coelhos. A revista The Fibonacci Quarterly,
editada ininterruptamente desde 1963, publica artigos sobre a matemtica relacionada
a essa sequncia [38] [17, p. 108].
Algoritmo 2 MVander
entrada : x, msada : X1: n tamanho de x2: X Zeros(n,m+ 1)3: para i 1 : n4: Xi,m+1 15: para j m : 1 : 16: Xi,j xi Xi,j+17: m
8: m
com
F1 = 1, F2 = 1, Fk = Fk1 + Fk2.
Escreva uma function que recebe um inteiro positivo k 2 e retorna a razo
Rk =FkFk1
.
Observe que a medida que k aumenta, a razo Rk aproxima-se de um certonmero. Que nmero esse?
1.40. + Implemente o algoritmo PivotamentoParcial que recebe uma matrizC, seu nmero de linhas n e um inteiro j tal que 1 j n 1. Em seguida,procura entre os elementos da coluna j, nas linhas i j o elemento de maiorvalor absoluto p (denominado piv). Se p est na linha i, sendo i 6= j, entopermuta as linhas i e j entre si. O programa retorna a matriz C pivotada. Essealgoritmo ser utilizado pelo algoritmo SLGauss (p. 37) no Captulo 4.
CAPTULO 1. INTRODUO AO MATLAB 13
Algoritmo 3 PivotamentoParcial
entrada : C, n, jsada : CInicializao
1: p |Cj,j |2: k jBusca piv
3: para i j + 1 : n4: se |Ci,j | > p ento5: p |Ci,j |6: k i7: m
8: m
Pivotamento impossvel
9: se p = 0 ento10: Erro: Pivotamento impossvel
11: m
Permutao das linhas j e k12: se k > j ento13: T Cj,:14: Cj,: Ck,:15: Ck,: T16: m
Captulo 2
Erros e Aritmtica Computacional
Ao contrrio do senso comum, o computador no uma mquina de cal-
cular perfeita. Os clculos efetuados no computador esto sujeitos a erros
(em maior ou menor magnitude). A compreenso da natureza desses erros
permite estabelecer estratgias (algoritmos) para a resoluo de problemas.
Neste captulo abordaremos a forma com que os nmeros so armazena-
dos pelo computador e como os erros aparecem. Veremos tambm uma
estratgia geral de abordagem dos algoritmos numricos: os renamentos
sucessivos.
2.1 Resoluo de problemas numricos
Resolver problemas uma arte. Nas Cincias e Engenharias, o computador
cumpre um papel importante no processo de resoluo de problemas, espe-
cialmente naqueles onde o uso de clculos aritmticos intenso. O processo
de resoluo de problemas numricos segue, em geral, os seguintes passos:
1. Denio do problema: O que se quer resolver? Qual a natureza
do problema? terico ou prtico? Quais as informaes dispon-
veis? Quais reas do conhecimento so aplicveis?
2. Modelagem matemtica: Como representar o problema matema-
ticamente? Desenho, esquemas, equaes, frmulas?
3. Resoluo do problema matemtico: Existe soluo? nica?
Como determinar a soluo? possvel encontrar soluo exata (ana-
ltica) ou devemos optar por uma soluo aproximada (numrica)?
No caso de se optar por uma resoluo numrica:
1. Determinao do mtodo: Existe algum mtodo (algoritmo) dis-
ponvel? Qual mtodo mais indicado? Alguma adaptao ou ela-
borao necessria?
2. Codicao e implementao: Qual a linguagem a ser utili-
zada? Em que mquina ou sistema o programa vai rodar? O pro-
grama est funcionando corretamente?
3. Processamento: Resolver o problema.
4. Anlise de resultados: O resultado o esperado? soluo para
o problema? Qual a estimativa de erro? Qual a preciso do
resultado?
Exemplo 2.1. Consideremos o problema seguinte. Uma esfera de
madeira (densidade relativa e = 0,638) e raio r = 10 cm colocadaa utuar sobre a gua (densidade relativa a = 1) conforme mostraa Figura 2.1. Qual a altura d da esfera que car submersa? [30,p. 43]
Soluo: Para encontrar o valor de d, inicialmente observamos que, peloPrincpio de Arquimedes
1
, o peso da esfera deve ser equilibrado pelo peso
da gua deslocada por sua poro submersa:
14
CAPTULO 2. ERROS E ARITMTICA COMPUTACIONAL 15
dr
a
e
Figura 2.1: Uma esfera utuante.
Meg = Mag
e4pir3
3= a
d0
pi[r2 (x r)2
]dx
= apid2(3r d)
3
4er3 = ad
2(3r d). (2.1)
Aps a substituio de valores, a expresso (2.1) pode ser reescrita como
d3 30d2 + 2552 = 0. (2.2)
A soluo do problema consiste em encontrar o valor de d que satisfaz(2.2). A soluo analtica de (2.2), embora existente, um tanto complicada
(veja o Problema 3.27). A soluo numrica pode ser obtida calculando os
valores de f(x) = x3 30x2 + 2552 de forma sistemtica.Na primeira tabela mostrada a seguir vemos os valores de x e f(x)calculados no intervalo 0 x 20. Como a funo contnua e troca desinal no intervalo 10 x 12 (assinalado com *), deduzimos que o valorprocurado de d est dentro desse intervalo. A segunda tabela mostra osvalores calculados no intervalo renado 10,0 x 12,0. Por raciocniosemelhante deduzimos que 11,8 < d < 12,0, depois que 11,86 < d < 11,88 epor m 11,860 < d < 11,862.
x f(x) x f(x) x f(x) x f(x)0 2552 10,0 552,0 11,80 17,83 *11,860 0,4349
2 2440 10,2 492,0 11,82 12,03 *11,862 -0,1444
4 2136 10,4 432,1 11,84 6,23 11,864 -0,7235
6 1688 10,6 372,2 *11,86 0,43 11,866 -1,3027
8 1144 10,8 312,5 *11,88 -5,36 11,868 -1,8818
*10 552 11,0 253,0 11,90 -11,14 11,870 -2,4608
*12 -40 11,2 193,7 11,92 -16,92 11,872 -3,0398
14 -584 11,4 134,7 11,94 -22,70 11,874 -3,6187
16 -1032 11,6 76,1 11,96 -28,47 11,876 -4,1977
18 -1336 *11,8 17,8 11,98 -34,24 11,878 -4,7765
20 -1448 *12,0 -40,0 12,00 -40,00 11,880 -5,3553
Assim um valor aceitvel para a poro d da esfera que carsubmersa d 11,861 cm.
Importante: O Exemplo 2.1 demonstra um recurso muito comum na
resoluo de problemas numricos: a partir de uma estimativa inicial de
soluo, segue uma sequncia de renamentos que convergem para uma
estimativa nal de soluo com a qualidade desejada.
1 Arquimedes de Siracusa (287 a. C. - 212 a. C.) foi o maior matemtico de suapoca. Seu principal legado so suas contribuies na geometria onde seus mtodos
para determinao de reas e volumes anteciparam o clculo integral dois mil anos
antes de Newton e Leibniz. Homem bastante prtico, inventou uma grande variedade
de mquinas e dispositivos, incluindo polias e bombas d'gua [38].
CAPTULO 2. ERROS E ARITMTICA COMPUTACIONAL 16
2.2 Representao numrica de ponto utuante
Na maioria dos computadores, os nmeros so representados na base bin-
ria normalizada (semelhante a notao cientca). Por exemplo,
x = (5,125)10
= 4 + 1 + 0,125
= 22 + 20 + 23
= 1 22 + 0 21 + 1 20 + 0 21 + 0 22 + 1 23= (101,001)2
= (1,01001)2 22= (1,01001)2 2(10)2= (1,f)2 2(e)2 ,onde f = 01001 e e = 10 so, respectivamente, a parte fracionria e oexpoente da representao binria de ponto utuante de x.
Nos sistemas computacionais que utilizam o padro aritmtico IEEE
754, um nmero representado por uma sequncia de k dgitos binrios(bits)
(s, e1, e2, . . . , ep, f1, f2, . . . , ft) .
O bit s representa o sinal no nmero: s = 0 para nmeros positivos es = 1 para nmeros negativos. Os bits f1f2 . . . ft = f representam a partefracionria do nmero. Os bits e1e2 . . . ep esto associados ao expoente edo nmero. Aqui os detalhes tcnicos so um tanto complicados mas pode-
mos simplicar um pouco dizendo que o expoente e est em um intervaloespecicado por [emin, emax].
A mais importante consequncia dessa representao que, ao contrrio
do conjunto R dos nmeros reais, o conjunto F dos nmeros efetivamenterepresentveis pela mquina intrinsecamente nito, discreto e limitado.
Isto , nem todo nmero real pode ser representado na mquina.
A Figura 2.2 mostra os nmeros de ponto utuante (positivos) repre-
sentveis com os parmetros t = 2, emin = 2 e emax = 2.Observe que apenas vinte valores positivos so representveis (pois F nito). Observe que existe um espao entre cada dois nmeros (pois
Figura 2.2: Nmeros de ponto utuante com parmetros t = 2, emin = 2e emax = 2.
F discreto), bem como a existncia de um maior nmero Fmax e de ummenor nmero Fmin (pois F limitado).Nos padro IEEE 754, os nmeros de ponto utuante so representados
por um conjunto de k = 64 bits com t = 52 bits para a parte fracionria ep = 11 para o expoente.
Observemos que o espao entre (1.00...00)2 e (1.00...01)2 tem tamanho
= 2t = 252 2,2204 1016. (2.3)Isso determina a preciso da representao numrica.
Usando o Matlab: Para obter a preciso da mquina usamos o comando
>> eps
ans = 2.2204e-016
Observe-se que
>> 1 + eps > 1
ans = 1 (verdadeiro!)
>> 1 + eps/2 > 1
ans = 0 (falso!)
O algoritmo EpsilonMaq calcula a preciso de qualquer sistema com-
putacional.
Com p = 11 dgitos so possveis 211 = 2048 combinaes que repre-sentam 2046 expoentes, desde emin = 1022 at emax = 1023. O maiornmero representvel
Fmax = (2 ) 2emax = (1,11...11)2 21023 1,7977 10308. (2.4)
CAPTULO 2. ERROS E ARITMTICA COMPUTACIONAL 17
Algoritmo 4 EpsilonMaq
entrada : nenhuma
sada : 1: t 12: enquanto 1 + t > 13: t t/24: m
5: 2t
Usando o Matlab: O maior nmero representvel dado pelo comando
>> realmax
ans = 1.7977e+308
Observe-se que,
>> realmax + 1 > realmax
ans = 0 (falso!)
>> 2*realmax
ans = Inf (overflow!)
O menor nmero representvel (normalizado)
Fmin = 1 2emin = (1,00...00)2 21022 2,2251 10308. (2.5)
Usando o Matlab: O menor nmero representvel dado pelo comando
>> realmin
ans = 2.2251e-308
O menor nmero representvel (no-normalizado)
(0,00...01)2 21022 = 21022 4,9407 10324.
Usando o Matlab: No Matlab,
>> a = eps * 2^-1022
a = 4.9407e-324
>> b = a/2
b = 0 (underflow!)
As duas combinaes no utilizadas para o expoente so reservadas
para os valores especiais NaN (Not a Number) que representa resultados
aritmticos indenidos e Inf que representa overow.
Usando o Matlab: Alguns resultados de operaes aritmticas:
>> 1/0
ans = Inf
>> 0/0
ans = NaN
Exemplo 2.2. Os parmetros utilizados na representao numrica
mostrada na Figura 2.2 so t = 2, emin = 2 e emax = 2. Determineos valores de , Fmin e Fmax.
Soluo: Usando as equaes (2.3), (2.4) e (2.5) temos
= 2t = 22 = 0,25
Fmin = 1 2emin = 1 22 = 0,25Fmax = (2 ) 2emax = (2 0,25) 22 = 7
2.3 Erros nos processos numricos
Em decorrncia do que foi visto nas sees anteriores, os clculos aritm-
ticos efetuados pela mquina estaro impregnados de algum tipo de im-
preciso, de erro. Nesta seo descrememos, de forma sucinta, dois tipos
bsicos de erros: o erro de arredondamento e o erro de truncamento.
CAPTULO 2. ERROS E ARITMTICA COMPUTACIONAL 18
2.3.1 Erro de arredondamento
O erro de arredondamento devido a representao numrica nita da
mquina. Por exemplo, o nmero pi irracional e sua representao decimaltem innitos dgitos. No entanto a mquina armazena e apresenta apenas
uma quantidade nita de dgitos. O Matlab realiza clculos usando uma
preciso de 52 dgitos binrios e apresenta seus resultados arredondados
em, no mximo, 16 dgitos decimais:
Usando o Matlab:
>> format long
>> pi
ans = 3.141592653589793
Tambm pode ocorrer erro de arredondamento quando um nmero na
base 10 convertido para a base 2. Por exemplo, o nmero 0,6 possuirepresentao decimal nita mas representao binria innita:
(0,6)10 = (0,1001100110011 . . .)2.
Esse tipo de situao pode acarretar erros de arredondamento nas ope-
raes aritmticas de ponto utuante. Por exemplo:
Usando o Matlab:
>> a = 0.1 + 0.2 + 0.3 + 0.4, b = 0.4 + 0.3 + 0.2 + 0.1
a =
1
b =
1.0000
>> a == b
ans =
0
>> format hex, a, b
a =
3ff0000000000000
b =
3fefffffffffffff
Cada dgito hexadecimal representa quatro dgitos binrios: (0)16 =(0000)2, (1)16 = (0001)2, (2)16 = (0010)2, ..., (e)16 = (1110)2, (f)16 =(1111)2.
No formato hexadecimal, os trs primeiros dgitos representam os bits do
sinal e do expoente e os demais representam os bits da parte fracionria [33].
Assim, podemos visualizar a diferena na representao binria nos dois valo-
res a e b.
2.3.2 Erro de truncamento
O erro de truncamento devido a interrupo de processos innitos. Por
exemplo, o processo de clculo do valor de d no Exemplo 2.1 foi interrom-pido no intervalo
11,860 d 11,862.Poderamos ter levado o processo adiante e ter encontrado o intervalo
11,861501508120412 d 11,861501508120413.No entanto, no poderamos renar (subdividir) mais esse intervalo pois
a preciso da mquina no permite distinguir extremos de intervalos de
tamanho menor que esse.
Por exemplo, a constante de Euler
2
(e = 2,7183 . . .) pode ser obtidapela srie innita
e =
+k=0
1
k!= 1 + 1 +
1
2!+
1
3!+
1
4!+
1
5!+ (2.6)
Computacionalmente, no possvel somar os innitos termos de (2.6),
logo a srie deve ser truncada. A soma dos trs primeiros termos 2,5000enquanto a soma dos seis primeiros termos 2,7167. Quanto mais termos,maior ser a quantidade de dgitos corretos.
2.4 Notao
No estudo dos erros computacionais, alguns termos e denies (bem como
sua notao) so importantes. Seguem alguns:
2
Ver nota biogrca na p. 86
CAPTULO 2. ERROS E ARITMTICA COMPUTACIONAL 19
1. Valor exato, x. O valor verdadeiro, correto, real, de uma varivel.Em geral, a soluo procurada de algum problema. Por exemplo,
x = e = 2,718281828459046...
2. Valor aproximado, x. Aproximao para o valor exato, estimativa,impregnada de algum erro. Em geral, a resposta de algum processo
numrico. Valor estimado, valor computado. Por exemplo,
x =1264
465 2,718279569892473.
3. Erro, . Diferena entre valor aproximado e exato:
= x x.
Por exemplo,
=1264
465 e
2,718279569892473 2,718281828459046= 2,258566572432841 106.
4. Erro relativo, rel
. a razo entre o erro e o valor exato:
rel
=x xx
.
Por exemplo,
rel
=2,718279569892473 2,718281828459046
2,718281828459046
= 8,308802085150933 107.
Note que tanto o erro quanto o erro relativo podem ser positivos
ou negativos. No entanto, nos critrios de parada dos algoritmos,
utiliza-se, em geral, o valor absoluto destas quantidades.
5. Dgitos signicativos exatos, DSE. Se os nmeros x e x so ar-redondados para os primeiros k dgitos decimais e esses dgitos so
iguais ento esses k dgitos so os dgitos signicativos exatos de xem relao a x. Por exemplo,
x =1264
465 2,718279569892473 2,71828
x = e 2,718281828459046 2,71828 DSE = 6.
Ateno: Existe uma importante relao entre o erro relativo e a
quantidade de dgitos signicativos exatos:
|rel
| < 0,5 10m DSE m. (2.7)
Por exemplo,
|rel
| 8 107= 0,8 106= 0,08 105 < 0,5 105 DSE 5.
6. Tolerncia, tol. Valor mximo admitido para o erro relativo (ouerro) em um processo numrico. Em geral, usado como critrio de
parada em algoritmos iterativos. Para clculos manuais, usa-se, em
geral, o valor de 0,5 103. Para clculos computacionais, os valo-res tpicos so 0,5 106 (preciso simples) e 0,5 1012 (precisoestendida).
Exemplo 2.3. Determine o erro, o erro relativo e o nmero de dgitos
signicativos exatos de x = 227 em relao a x = pi.
Soluo: Como x = pi = 3,141592653589793 . . . e x = 227 =3,142857142857143 . . . o erro dado por
= x x 3,142857142857143 3,141592653589793= 0,00126448926735.
CAPTULO 2. ERROS E ARITMTICA COMPUTACIONAL 20
Algoritmo 5 ErroRel
entrada : x1, x2sada : rel
1: se x2 = 0 ento2: rel
x13: seno
4: rel
x1 x2x25: m
O erro relativo
rel
=x xx
=3,142857142857143 3,141592653589793
3,141592653589793
= 4,024994347707008 104.
Os valores de x e x podem ser arredondados para
x 3,142857142857143 3,14x 3,141592653589793 3,14 DSE = 3.
Observemos que se o valor exato x = 0, ento o erro deve ser usado emvez do erro relativo.
Como o clculo do erro relativo e da diferena relativa so utilizados
com frequncia, conveniente escrever um algoritmo especco. Veja o
algoritmo ErroRel.
Importante: Note que se as entradas do algoritmo, x1 e x2, repre-sentam duas aproximaes para um dado valor exato x ento a sada, rel
representa a diferena relativa entre as aproximaes. Caso as entradas do
algoritmo sejam x e x representando uma aproximao e um valor exatoento a sada, rel
representa o erro relativo entre a aproximao e o valor
exato.
2.5 Estimativas para o erro
Como no possvel conhecer o erro exatamente sem conhecer o valor exato
x. Em geral assumimos uma aproximao para o erro ou uma tolerncia(cota) para o erro. Em geral essa estimativa ou tolerncia depende de
algum fato terico sobre o problema a ser resolvido. O exemplo a seguir
mostra como se pode estimar usando um argumento engenhoso.
Exemplo 2.4. Encontre, de forma iterativa, uma representao deci-
mal de x =
53 usando apenas as quatro operaes aritmticas.
Soluo: Como a funo dada por f(x) =x estritamente crescentetemos que a < b a < b. Assim, se 49 < 53 < 64 podemosarmar que 7 < x < 8. Fazendo a primeira estimativa
x1 = 7,5
tem-se que o erro || = |x x| 0,5. Isto signica que 0,5 uma cota parao erro.
No entanto, o valor x1 = 7,5 no uma boa estimativa, uma vez que(7,5)2 = 56,25 est um pouco afastado de 53 (um resduo de 3,25). Umraciocnio mais sosticado pode nos levar a resultados melhores.
Se x =
53 e = x x ento
x = x , (2.8)
logo
x2 = (x )2,53 = x2 2x+ 2.
Se || < 1 ento 2 < ||, logo
53 x2 2x
e, portanto,
x2 532x
=1
2
(x 53
x
). (2.9)
CAPTULO 2. ERROS E ARITMTICA COMPUTACIONAL 21
Da estimativa inicial x1 = 7,5 e de (2.9) podemos estimar
1 0,2167.
Assim, a partir de (2.8), podemos obter uma segunda estimativa
x2 = x1 1= 7,5 0,2167= 7,2833
Agora, o valor x2 uma estimativa melhor, uma vez que (7,2833)2 =
53,0469 53 (um resduo de 0,0469). Combinando as equaes (2.8) e (2.9)obtemos
x 12
(x+
53
x
).
Substituindo x por xk e x por xk1 obtemos uma frmula recursiva:
xk =1
2
(xk1 +
53
xk1
). (2.10)
A partir de uma estimativa inicial x1, a frmula recursiva (2.10) forneceuma sequncia de valores x2, x3, x4, . . . que converge rapidamente para
53como mostra a tabela a seguir.
k xk diferena relativa DSE (estimativa)
1 7,500000000000000 - -
2 7,283333333333333 2,9748 102 13 7,280110602593441 4,4268 104 34 7,280109889280553 9,7981 108 65 7,280109889280518 4,7580 1015 146 7,280109889280518 0 16
Observaes:
1. O valor calculado para x6 coincide com o valor exato obtido com oMatlab:
>> sqrt(53)
ans = 7.280109889280518
Algoritmo 6 RaizQuadrada
entrada : n, x, tol, kmax
sada : x, rel
, k1: k 12: rel
+3: enquanto k < kmax
e |rel
| > tol4: k k + 15: u x6: x 12
(x+ nx
)7: rel
ErroRel(u, x)8: m
2. Os valores de DSE mostrados na tabela so estimados: Durante o
processo iterativo, o valor exato x desconhecido mas podemos esti-mar o erro relativo usando a diferena relativa de valores sucessivos
de x:
rel
diferena relativa = xk1 xkxk
.
3. Na ltima iterao, o DSE estimado vericando que todos os 16
dgitos de x5 e x6 so iguais. No Matlab, usando o padro IEEE 754,no possvel obter DSE 16.
O algoritmo RaizQuadrada generaliza o problema. Note que o al-
goritmo apresenta a estrutura tpica de processos iterativos: estimativa
inicial, renamentos sucessivos, estimativa para erro relativo, nmero m-
ximo de passos permitido, tolerncia para erro relativo, etc.
2.6 Convergncia nos processos numricos
Nos processos iterativos, as solues so obtidas a partir de uma sucesso
de estimativas x1, x2, . . . que se aproxima do valor exato x. Dizemos queuma sequencia xk converge para x se, e somente se,
limk+
xk = x.
A velocidade com que a sequncia converge para o valor exato indica quo
rpida ser a aproximao. Quantomaior for a velocidade de convergncia,
CAPTULO 2. ERROS E ARITMTICA COMPUTACIONAL 22
menor ser a quantidade necessria de passos para se atingir uma dada
tolerncia.
Dada uma sequncia xk que converge para x, se existem constantespositivas c e r tais que
limk+
|xk x||xk1 x|r = limk+
|k||k1|r = c, (2.11)
ento c dito coeciente assinttico de convergncia e r dito or-dem de convergncia. Quanto maior o valor de r, mais rpida ser aconvergncia da sequncia:
Se r = 1 e c < 1, ento a convergncia dita de ordem linear; Se r > 1, ento a convergncia dita de ordem superlinear; Se r = 2, ento a convergncia dita de ordem quadrtica.
Observe que a denio dada pela equao (2.11) equivalente a dizer
que a medida que o processo iterativo avana tem-se
|k| c |k1|r .
De forma intuitiva, a ordem de convergncia est associada ao ganho de
DSE a cada passo. Para sequncias de ordem linear, a quantidade de DSE
ganhos a cada passo aproximadamente constante. J para sequncias de
ordem superlinear, a quantidade de DSE ganhos aumenta a cada passo. Asequncia obtida no Exemplo 2.4 tem convergncia de ordem quadrtica:
observe como a quantidade de DSE aproximadamente dobra a cada passo.
A anlise de convergncia dos mtodos numricos no trivial e ser
omitida nesse texto. No entanto o estudante interessado pode consultar,
por exemplo, [8], [10] e [30].
2.7 Problemas
Representao de ponto utuante
Nos problemas 2.1 e 2.2 a seguir, suponha que uma mquina tenha representa-
o de ponto utuante com os parmetros dados. Determine (a) a preciso da
mquina, (b) o menor nmero representvel Fmin e (c) o maior nmero repre-sentvel Fmax.
2.1. t = 8, emin = 63, emax = 64.2.2. t = 45, emin = 255, emax = 256.2.3. O que overow? D um exemplo de comando do Matlab que resultaria
em overow.
2.4. O que underow? D um exemplo de comando do Matlab que resultaria
em underow.
Considere as expresses mostradas nos problemas 2.5 e 2.6 a seguir. Para
cada uma, (a) determine o seu valor exato algebricamente (resolva mo). (b)
Determine o seu valor aproximado numericamente (use o Matlab). Use o co-
mando format hex e verique se o que foi calculado em (a) igual ao calculado
em (b).
2.5. x = 16 +16 +
16 +
16 +
16 +
16 .
2.6. y =
4
11 1
31
6 5
31
+4
11.
2.7. Na aritmtica, a igualdade n ( 1n) = 1 verdadeira para todo n 6= 0. Naaritmtica computacional isso nem sempre verdade. Encontre o menor inteiro
positivo para o qual a igualdade seja falsa.
2.8. As vezes, utilizando o Matlab, obtemos um NaN como resultado de uma
operao aritmtica. O que isso signica? D um exemplo.
2.9. + Implemente, na sua linguagem favorita, o algoritmo EpsilonMaq edetermine a preciso de seu sistema computacional. Compare o resultado com o
comando eps do Matlab.
Erro, Erro relativo, DSE
Nos problemas 2.10 a 2.13 a seguir, determine (a) o erro , (b) o erro relativorel
e (c) o nmero de dgitos signicativos exatos DSE obtidos ao se aproximar
x por x.
2.10. . x = 123 456, x = 123 400;
CAPTULO 2. ERROS E ARITMTICA COMPUTACIONAL 23
2.11. . x = 1,000000, x = 0,999999;
2.12. . x =
2, x = 577408 ;
2.13. . x = = (1 +
5)/2, x = 987610 ;
2.14. . Hoje sabemos que a rea de um crculo dada por A = pir2, onde r oraio do crculo. No papiro de Ahmes
3
a rea do crculo aproximada pela rea de
um octgono (no regular) circunscrito (recorte A, direita, na gura a seguir)
e em seguida utilizada para determinar a rea de um campo circular (recorte
B, esquerda, na gura a seguir). Em linguagem moderna, essa aproximao
equivalente a:
A =
(8
9d
)2,
onde d o dimetro do crculo. Determine uma expresso algbrica para o errorelativo rel
associado a essa aproximao.
Nos problemas 2.15 a 2.16 a seguir, o nmero r uma aproximao para ovalor exato r com erro relativo rel
dado. Estime a quantidade de DSE que rpossui?
2.15. . rel
= 7,23 1083 Ahmes (1680? a.C. - 1620? a.C.) escriba egpcio que transcreveu uma srie deproblemas matemticos envolvendo multiplicao, diviso, fraes unitrias, equaes,
progresses, reas e volumes. O papiro (descoberto em 1858 por Alexander Henry
Rhind) atualmente se encontra no Museu Britnico [38].
2.16. . rel
= 4,92 1012
2.17. . O nmero s uma aproximao para o valor exato s com, no mximo,5 dgitos signicativos exatos. Qual o erro relativo?
2.18. + Implemente, na sua linguagem favorita, o algoritmo ErroRel. Veri-que seu funcionamento comparando os resultados com os do Exemplo 2.3.
2.19. A tabela a seguir mostra algumas aproximaes para pi usadas nos primr-dios da Matemtica [4].
valor autor poca
p1 = 318 Babilnios 2000 a. C.
p2 = (169 )
2Egpcios 2000 a. C.
p3 = 3 Chineses 1200 a. C.p4 = 3
17 Arquimedes 300 a. C.
p5 =377120 Ptolomeu 200
p6 =
10 Chung Hing 300p7 =
355113 Valentius Otho 1573
(a) Qual o erro relativo de cada aproximao?
(b) Quais erram por excesso? Quais erram por falta?
(c) Qual a melhor aproximao? Qual a pior aproximao?
2.20. Considere a funo fatorial
f(n) = n! = n (n 1) 3 2 1.
Em 1730, Stirling desenvolveu a frmula de aproximao
f(n) =
2pin(ne
)npara a funo fatorial.
(a) Obtenha os valores de f(n) e f(n) para n = 5, 10, 15, 20.
(b) Determine o erro relativo rel
de cada aproximao. Adaptado de [43, p. 48]
e [26, p. 52].
CAPTULO 2. ERROS E ARITMTICA COMPUTACIONAL 24
2.21. Considere a seguinte expanso em srie para sen(x):
sen(x) = x x3
3!+x5
5! x
7
7!+
(a) Obtenha as aproximaes para t =22 = sen(
pi4 ) usando os n = 3, 6, 9 pri-meiros termos da srie.
(b) Determine erro relativo rel
de cada aproximao.
Estimativas para o erro
2.22. Implemente o algoritmo RaizQuadrada na sua linguagem preferida e
use-o para calcular os valores
a =
2 e b =
834.
Verique o seu funcionamento comparando os resultados com o comando sqrt
do Matlab. Use tol = 0,5 1012.2.23. Generalize o algoritmo RaizQuadrada para calcular
mn. Use-o paracalcular os valores
a =3
23 e b =5
527.
Sugesto: Leia atentamente a seo 2.5 e obtenha uma frmula recursiva seme-
lhante a 2.10. Compare os resultados nais com nthroot.
As sequncias recursivas mostradas nos problemas 2.24 a 2.25 a seguir so
convergentes para os valores x mostrados. Para cada sequncia, monte uma tabelacontendo (a) os valores de xk para k = 1, . . . , 20, (b) as diferenas relativasxk1xk
xke (c) os erros relativos
xkxx . Verique que os valores obtidos em (b)
so aproximaes razoveis para os valores obtidos em (c).
2.24. x1 = 1, xk = 1 +1
xk1, x = 1+
5
2
2.25. x1 = 1, xk =
2 + xk1, x = 2
2.26. . Sejam x e y valores aproximados para os valores exatos x (x 6= 0) e y(y 6= 0), respectivamente. Os erro relativos so dados por
x =x xxe y =
y yy
.
Se z = x+ y (z 6= 0), mostre que o erro relativo para z tal que:
(a) z =x x+ y y
x+ y;
(b) min(x,y) z max(x,y).
O resultado obtido em (a) ser usado no algoritmo QuadRec (p. 80).
Captulo 3
Zeros de funes
3.1 Denio do problema
Seja f : R R. Um nmero z dito zero de f se, e somente se,f(z) = 0.
O problema que estudaremos consiste em encontrar os zeros de uma funo,
isto , determinar os valores de z, se existirem, tais que z seja zero de f .
Exemplo 3.1. Verique que z1 = 1, z2 = 1,465571231876768 e z3 =0,588532743981861 so, respectivamente, zeros de
f(x) = x3 x2, g(x) = x3 x2 1 e h(x) = ex sen(x).
Soluo: Inicialmente, veriquemos que, trivialmente,
f(1) = 13 12 = 1 1 = 0.
J para g e h a vericao requer um pouco mais de trabalho. NoMatlab:
>> z2 = 1.465571231876768; g = z2^3 - z2^2 - 1
g = -4.4409e-16
>> z3 = 0.588532743981861; h = exp(-z3) - sin(z3)
h = 1.1102e-16
Observe que os valores calculados de g(z2) e h(z3) no so exatamente
zero, mas esto muito prximos de zero, isto , muito prximos da preci-
so da mquina. Para efeitos computacionais, podem ser considerados
efetivamente zeros.
Embora seja fcil vericar que os valores de z1, z2 e z3 so os zeros dasrespectivas funes, encontr-los e que mais trabalhoso. A funo f doexemplo uma funo polinomial de grau 3 e que seus zeros so bvios:
z = {0, 1}. Sendo z = 0 um zero de multiplicidade 2. J o zero de g no to fcil de encontrar pois no h uma fatorao imediata de g e a frmulaexata um tanto trabalhosa (Veja o Problema 3.27). Ainda, na funo h adeterminao algbrica de z3 impossvel, isto , no se pode encontr-laem termos de funes elementares.
Os mtodos numricos para determinar zeros de funes consistem,
basicamente, de duas fases:
1. Isolamento: Vericao da existncia e unicidade dos zeros (con-
sideraes tericas). Determinao de um intervalo [a, b] contendoum zero de f ou determinao de uma estimativa inicial x1 z. Namaioria dos casos, uma tabela de valores e um grco da funo so
sucientes.
2. Renamento: Processo iterativo em que o intervalo [a, b] reduzidoou que novas estimativas x2, x3, . . . so obtidas at que algum critriode parada seja satisfeito.
25
CAPTULO 3. ZEROS DE FUNES 26
3.2 Mtodo da bisseo
O mtodo da bisseo semelhante ao procedimento utilizado na resoluo
do Exemplo 2.1 e toma por base o seguinte teorema:
Teorema 3.1. (Teorema do Anulamento) Seja f uma funo contnua emum intervalo [a, b] tal que f(a) e f(b) tenham sinais contrrios. Entoexiste (pelo menos) um z (a, b) tal que f(z) = 0.
Embora uma prova rigorosa do teorema possa ser encontrada em alguns
livros de Clculo [23, p. 511], gracamente o seu entendimento imediato:
se o grco de uma funo est (digamos) abaixo do eixo horizontal em
x = a e segue continuamente at que que acima do eixo horizontal emx = b ento em algum ponto entre a e b ele passou sobre o eixo horizontal!
Considere a funo g do Exemplo 3.1. Como toda funo polinomial,g contnua em toda parte. Alm disso, g(1) = 3 e g(2) = 3, isto ,a funo troca de sinal em [1, 2]. Pelo teorema 3.1 existe um zero em(1, 2). Figura 3.1 que mostra o grco da funo bem como a localizaode seu zero.
O mtodo da bisseo consiste nos seguintes passos
1. Partir de um intervalo inicial [a, b] tal que f(a) e f(b) tenham sinaiscontrrios;
2. Dividir o intervalo [a, b] em dois subintervalos [a, x] e [x, b], sendo
x =a+ b
2
o ponto mdio entre a e b;
3. Decidir qual subintervalo contm o zero de f e obter um novo inter-valo [a, b] tal que f(a) e f(b) tenham sinais contrrios;
4. Repetir os passos 2 e 3 at atingir a preciso desejada.
3.2.1 Critrios de parada
Usualmente so utilizados os seguintes critrios de parada:
Figura 3.1: O grco da funo g(x) = x3 x2 1 e seu zero.
1. |rel
| xk1 xkxk
< tol;2. |rel
| bk ak2xk
< tol;3. |rel
| = |f(xk)| < tol;
4. k > kmax
.
Os critrios 1 e 2 estabelecem estimativas para o erro relativo rel
entre
z e xk. O critrio 3 fornece a magnitude do resduo da funo, isto ,a diferena entre f(z) = 0 e f(xk). O critrio 4 estabelece um nmeromximo de iteraes.
Exemplo 3.2. Usar o mtodo da bisseo para determinar o zero de
g(x) = x3 x2 1 com pelo menos 3 DSE.
Soluo: O grco de g j est desenhado na Figura 3.1. Usando oMatlab, obtemos uma tabela de valores:
CAPTULO 3. ZEROS DE FUNES 27
>> x = 1 : 0.2 : 2
x =
1.0000 1.2000 1.4000 1.6000 1.8000 2.0000
>> y = x.^3 - x.^2 - 1
y =
-1.0000 -0.7120 -0.2160 0.5360 1.5920 3.0000
Vericamos que g troca de sinal no intervalo[1,4; 1,6], isto , isolamos o zeronesse intervalo.
Agora, com tol = 0,5 103, usamos o mtodo da bisseo para obteros valores mostrados na tabela a seguir
k ak xk bk g(ak) g(xk) g(bk) rel
1 1,4000 1,5000 1,6000 -0,2160 0,1250 0,5360 -
2 1,4000 1,4500 1,5000 -0,2160 -0,0539 0,1250 0,0345
3 1,4500 1,4750 1,5000 -0,0539 0,0334 0,1250 -0,0169
4 1,4500 1,4625 1,4750 -0,0539 -0,0108 0,0334 0,0085
5 1,4625 1,4688 1,4750 -0,0108 0,0112 0,0334 -0,0043
6 1,4625 1,4656 1,4688 -0,0108 0,0002 0,0112 0,0021
7 1,4625 1,4641 1,4656 -0,0108 -0,0053 0,0002 0,0011
8 1,4641 1,4648 1,4656 -0,0053 -0,0026 0,0002 -0,0005
9 1,4648 1,4652 1,4656 -0,0026 -0,0012 0,0002 -0,0003
Assim podemos estabelecer z 1,47 com 3 DSE.
Para obter x = 1,465571231876768 com rel
= 3,0301 1016 sonecessrias 49 iteraes. Observe, na tabela acima, que o sinal de g(a)e de g(b) permanecem os mesmos durante todo o processo iterativo. Oalgoritmo ZeroBisseo sistematiza o mtodo da bisseo utilizando os
critrios de parada 1 e 4.
Convergncia
Quanto a convergncia do mtodo da bisseo, observemos o seguinte:
1. As condies necessrias para que o mtodo funcione so mnimas:
f deve ser contnua e trocar de sinal em um intervalo [a, b] inicial.
Algoritmo 7 ZeroBisseo
entrada : f, a, b, tol, kmax
sada : x, rel
, kEstimativa inicial
1: k 12: x 12(a+ b)3: fx f(x)4: fa f(a)5: fb f(b)6: rel
+Processo iterativo
7: enquanto k < kmax
e |rel
| > tol8: se fa fx 0 ento9: b x10: fb fx11: seno
12: a x13: fa fx14: m
15: k k + 116: u x17: x 12(a+ b)18: fx f(x)19: rel
ErroRel(u, x)20: m
CAPTULO 3. ZEROS DE FUNES 28
Assumida essas condies, do Teorema 3.1, o processo seguramente
convergente.
2. Como |k| 12 |k1|, o mtodo possui convergncia linear. So ne-cessrias cerca de 3,3 iteraes para cada DSE adicional: uma con-
vergncia considerada lenta.
3.3 Mtodo de Newton-Raphson
O mtodo de Newton
1
-Raphson
2
consiste em, a partir de uma estimativa
inicial x1 para o zero de f , obter aproximaes sucessivas x2, x3, queconvergem para z. O mtodo toma por base a expanso de f em sua sriede Taylor
3
:
f(x) = f(x0) + f(x0)(x x0) + f
(x0)(x x0)22!
+ + f(k)()(x x0)k
k!.
Truncando a srie a partir do terceiro termo, obtm-se a aproximao
f(x) f(x0) + f (x0)(x x0).1 Isaac Newton (1643 - 1727) cientista ingls. Newton desenvolveu as bases doclculo diferencial e integral. Por seus trabalhos na ptica e gravitao, considerado
o maior cientista de todos os tempos. Em seu De metodis uxionum et serierum inni-
tarum Newton descreve o mtodo para encontrar zeros de funes polinomiais, dando
como exemplo a funo f(x) = x3 2x 5 que possui um zero entre 2 e 3 (veja oProblema 3.13). Embora escrito em 1671, somente foi publicado como Method of uxi-
ons em 1736. O nome de Newton tambm est relacionado s tcnicas de quadratura
numrica (veja o captulo 7) quando, em 1676, descreveu o mtodo em uma carta a
Leibniz [38].
2 Joseph Raphson (1648 - 1715) matemtico ingls colega de Newton na RoyalSociety. Em seu Analysis aequationum universalis de 1690 descreve, de forma indepen-
dente, o mesmo mtodo para encontrar zeros de funes [38]. A frmula iterativa (3.1)
tal como conhecida atualmente devida a Thomas Simpson em seu A new method for
the solution of equations in numbers de 1740 [37].
3 Brook Taylor (1685 - 1731) matemtico ingls. Contribuiu signicativamentepara o estabelecimento do Clculo. Criou o clculo de diferenas nitas, inventou a tc-
nica da integrao por partes, e generalizou a expanso em srie que leva seu nome em
seu livro Methodus incrementorum directa et inversa de 1715. A importncia desse tra-
balho foi reconhecida e enaltecida por Lagrange em 1772 como o Teorema Fundamental
do Clculo Diferencial [38].
Trocando x0 por x e x por z tem-se
f(z) f(x) + f (x)(z x) 0,
pois f(z) = 0. Dessa forma, pode-se resolver a equao para z obtendo
z x f(x)f (x)
,
que pode ser transformada em uma frmula de iterao:
xk = xk1 f(xk1)f (xk1)
. (3.1)
Geometricamente, xk a projeo sobre o eixo horizontal da reta tan-gente ao grco de f em (xk1, f(xk1)) como mostra a Figura 3.2.
Figura 3.2: Interpretao geomtrica do mtodo de Newton.
CAPTULO 3. ZEROS DE FUNES 29
Exemplo 3.3. Usar o mtodo de Newton para determinar o zero de
g(x) = x3 x2 1 com pelo menos 3 DSE.
Soluo: J sabemos do Exemplo 3.1 que o zero de f encontra-se nointervalo [1,4 : 1,6] ento podemos usar como estimativa inicial o valor x =1,5. Como g(x) = x3 x2 1, temos
g(x) = 3x2 2x.
Com tol = 0,5 103, usamos o mtodo de Newton para obter os valoresmostrados na tabela a seguir
k xk g(xk) g(xk) rel
1 1,5000 0,1250 3,7500 -
2 1,4667 0,0039 3,5200 0,0227
3 1,4656 0,0000 3,5126 0,0007
4 1,4656 0,0000 3,5126 0,0000
Assim podemos estabelecer z 1,47 com 3 DSE.
De fato, na ltima iterao da tabela acima, rel
= 7,9061 107 tol6: k k + 17: u x8: x x F/D9: F f(x)10: D f (x)11: rel
ErroRel(u, x)12: m
2. Embora a convergncia do mtodo de Newton seja, em geral, mais
rpida que a do mtodo da bisseo, ela no garantida em todos os
casos. A Figura 3.3 mostra o caso de uma funo em que a aplica-
o do mtodo de Newton produz uma sequncia de estimativas xkdivergente.
3. Existem vrios teoremas descrevendo as condies que garantem a
convergncia do mtodo. No entanto, do ponto de vista prtico,
pode-se dizer que o mtodo (geralmente) funciona se
(a) em torno de z, f sucientemente suave (contnua e diferenci-vel);
(b) a estimativa inicial x1 est sucientemente prxima de z.
Comparativamente, os mtodos da bisseo e de Newton so comple-
mentares, sendo a principal caracterstica do primeiro a robustez e do l-
timo a velocidade.
CAPTULO 3. ZEROS DE FUNES 30
Figura 3.3: Uma sequncia de estimativas divergente para o mtodo de
Newton.
Usando o Matlab: Para determinar zeros de funes podemos usar o
comando fzero.
>> format long
>> f = @(x) x^3 - x^2 - 1;
>> z = fzero(f, 1.5)
z = 1.465571231876768
Este recurso utiliza o algoritmo WDB (Wijngaarden-Dekker-Brent) que uma
combinao dos mtodos de bisseo, interpolao linear e interpolao inversa
quadrtica [20, p. 161] e [40, p. 454]. Sobre a interpolao linear veja o
Problema 3.37 e sobre a interpolao inversa veja o Problema 5.29.
3.4 Problemas
Mtodo da Bisseo
Nos problemas 3.1 a 3.4 a seguir so dados a expresso de uma funo f e umintervalo [a, b]. Para cada uma das funes faa o seguinte: (a) Desenhe o grcoda funo no intervalo dado, vericando que a funo contnua e que f(a) ef(b) tem sinais contrrios. (b) Use o mtodo da bisseo e, partindo do intervalodado, preencha uma tabela contendo os valores de k, ak, xk, bk, f(ak), f(xk),f(bk) e rel como no Exemplo 3.2. Preencha a tabela para as 4 primeiras iteraes.
3.1. . f(x) = x2 53 em [0, 10].3.2. . f(x) =
x2 + 1 x2 em [0, 3].3.3. . f(x) = x+ cos(x) em [1, 1].3.4. . f(x) = ex + x2 10 em [2, 4].3.5. . No mtodo da bisseo, o tamanho do intervalo em uma dada iteraok a metade do tamanho do intervalo na iterao anterior, isto ,
Tk =Tk1
2.
Determine o nmero k de passos necessrios para que um intervalo inicial detamanho T0 = b a seja reduzido a
Tk < 0,5 1012 (b a).
CAPTULO 3. ZEROS DE FUNES 31
3.6. + Implemente o algoritmo ZeroBisseo na sua linguagem preferida.Para vericar a correo da implementao, refaa o Exemplo 3.2.
Nos problemas 3.7 a 3.10 a seguir utilize o algoritmo ZeroBisseo para
encontrar o zero da funo. Use tol = 0,5 1012.3.7. Funo do Problema 3.1.
3.8. Funo do Problema 3.2.
3.9. Funo do Problema 3.3.
3.10. Funo do Problema 3.4.
3.11. . Mostre que os critrios de parada 1 e 2 (p. 26) do mtodo da bisseoso equivalentes.
3.12. Modique o algoritmo ZeroBisseo de modo a empregar os critrios de
parada 3 e 4 (p. 26). Compare o nmero de iteraes utilizadas pelo algoritmo
original e pelo modicado para encontrar os zeros das funes dos problemas 3.1
a 3.4. Use tol = 0,5 1012.
Mtodo de Newton
Nos problemas 3.13 a 3.16 a seguir so dadas a expresso de uma funo f ,um intervalo [a, b] e uma aproximao x1 para o zero de f . Para cada uma dasfunes faa o seguinte: (a) Desenhe o grco da funo, vericando que a funo
contnua e possui um zero no intervalo dado. (b) Encontre uma expresso para
f (x). (c) Use o mtodo de Newton e, partindo da aproximao x1, preencha umatabela contendo os valores de k, xk, f(xk), f
(xk) e rel como no Exemplo 3.3.Preencha a tabela para as 4 primeiras iteraes.
3.13. . f(x) = x3 2x 5 em [3, 3], x1 = 2,5.3.14. . f(x) = x+ ln(x) em (0, 1], x1 = 0,5.
3.15. . f(x) = x cos(x) em [pi, pi], x1 = 1,0.3.16. . f(x) = x cos(x2) em [1, 2], x1 = 1,2.
3.17. . Verique que a sequncia recursiva dada pela equao (2.10) pode serobtida atravs da equao (3.1) aplicada a determinao do zero da funo
f(x) = x2 53pelo mtodo de Newton.
3.18. + Implemente o algoritmo ZeroNewton na sua linguagem preferida.Para vericar a correo da implementao, refaa o Exemplo 3.3.
Nos problemas 3.19 a 3.22 a seguir utilize o algoritmo ZeroNewton para
encontrar o zero da funo dada. Use tol = 0,5 1012.3.19. Funo do Problema 3.13.
3.20. Funo do Problema 3.14.
3.21. Funo do Problema 3.15.
3.22. Funo do Problema 3.16.
3.23. Modique o algoritmo ZeroNewton de modo a empregar os critrios de
parada 3 e 4 (p. 26). Compare o nmero de iteraes utilizadas pelo algoritmo
original e pelo modicado para encontrar os zeros das funes dadas nos proble-
mas 3.13 a 3.16. Use tol = 0,5 1012.3.24. Omtodo de Newton tem diculdade de encontrar zeros com multiplicidade
elevada. A funo
fn(x) = (x 1)npossui um nico zero (z = 1) com multiplicidade n. Determine o nmero deiteraes necessrias para encontrar o zero de cada funo f1, f2, . . . , f10. Use aestimativa inicial x1 = 2.
O mtodo de Newton pode no ser convergente. Verique que, para as funes
e estimativas iniciais mostradas nos problemas 3.25 e 3.26 a seguir, o mtodo no
funciona.
3.25. f(x) = 110 + xexcom x1 = 2.
3.26. f(x) = x3 x 3 com x1 = 3.
Sortidos
3.27. . Devido a sua praticidade, os mtodos numricos (aproximados) sofrequentemente usados em vez dos mtodos analticos (exatos). A determinao
de zeros de funes polinomiais de grau 3 (cbicas) um bom exemplo. Pes-
quise a frmula Frmula de Cardano
4
(em [47, 1], por exemplo) para determinar
exatamente o zero real da funo g(x) = x3 x2 1 dos Exemplos 3.2 e 3.3.4 Girolamo Cardano (1501 - 1576) mdico, astrnomo e matemtico italiano. Seumais famoso trabalho Ars magna, de 1545, considerado o primeiro livro latino dedicado
apenas a lgebra. Neste tratado, descreve a soluo de equaes polinomiais cbicas e
qurticas [38].
CAPTULO 3. ZEROS DE FUNES 32
3.28. Determine os zeros das funes dos Problemas 3.25 e 3.26.
3.29. Reconsidere o Exemplo 2.1 e encontre o zero da equao (2.2).
3.30. Considere a funo dada por f(x) = ex lnx com x > 0.
(a) Faa um esboo do grco de f no intervalo (0, 2] e verique que a funopossui um ponto de mnimo nesse intervalo.
(b) Determine a abscissa xmin
desse mnimo sabendo que f (xmin
) = 0.
3.31. Um estudante comprou um notebook no valor de R$ 2499,00 e vai pagar
12 parcelas de R$ 249,00. A matemtica nanceira estabelece que
P =F i
1 (1 + i)n ,
onde F o valor nanciado, P o valor da parcela, n o nmero de parcelas e i a taxa de juros. Qual a taxa de juros do nanciamento?
3.32. A gura a seguir mostra uma seo circular de rea S.
r
S
Da geometria, sabemos que a rea da seo dada por
S =r2
2( sen()),
onde r o raio do crculo e o ngulo que subtende a seo circular. Determineo ngulo tal que a rea S seo seja um tero da rea do crculo. Uma soluogeomtrica do problema pode ser encontrada em [11].
3.33. A Lei da Radiao,
S() =2pic2h
51
ehc/kT 1 ,
descreve a quantidade de energia luminosa S (em watt por metro cbico) emitidapor um corpo de prova na temperatura T (em kelvin) em funo do comprimentode onda (em metros). Nessa expresso, c = 2,9979108m/s, h = 6,62611034Jse k = 1,3807 1023J/K [25].
(a) Obtenha o grco de S() para a temperatura T = 3500 K. Sugesto: Use no intervalo [0,5; 4,0] 106m.(b) Pode-se mostrar [55, p. 390] que o maior valor de S ocorre em max
dado por
max
=hc
zkT,
onde z o zero positivo de
f(x) =x
5+ ex 1.
Encontre z, o zero de f , e em seguida determine o valor de max
.
3.34. Em Termodinmica, sob determinadas condies, a relao entre a calor
Q fornecido a um gs e sua variao de temperatura Tf Ti dada por
Q = nR
[A(Tf Ti) + B
2(T 2f T 2i ) +
C
3(T 3f T 3i )
].
Para o gs metano, R = 8,314 J/mol.K, A = 1,702, B = 9,081 103K1, C =2,164 106K2 [46, p. 131]. Em uma cmara, tem-se n = 2 mol de metano atemperatura Ti = 300 K. Qual ser a temperatura nal Tf se 20 kJ de energia absorvido pelo gs?
3.35. A tenso eltrica sobre o capacitor de um circuito RLC-paralelo dada por
u(t) = u0et cos(dt), t 0,onde
u0 a tenso inicial sobre o capacitor,
=1
2RC a constante de amortecimento,
0 =1LC a frequncia angular de oscilao (natural),
d =20 2 a frequncia angular de oscilao (amortecida).A tenso u dada em volts e o tempo t em segundos [36, p. 177]. Considereum circuito em que R = 200 , L = 0,3 H, C = 40 F e u0 = 50 V. Substituaos valores na equao, desenhe o grco de u(t) e determine os instantes t1, t2 et3 onde a tenso atinge o valor 10 V.
CAPTULO 3. ZEROS DE FUNES 33
3.36. Na lgebra Linear, os autovalores de uma matriz A so denidos comoos zeros do polinmio caracterstico
pA(x) = det(A Ix).Considere a matriz
A =
3 0 30 1 23 2 3
.(a) Encontre a expresso algbrica de pA(x).
(b) Encontre os autovalores 1, 2 e 3 de A.
3.37. Uma variao para o mtodo da bisseo consiste em dividir o intervalo
[a, b] no ponto c sobre o eixo horizontal que intercepta o reta que passa por(a, f(a)) e (b, f(b)) como mostra a gura a seguir. Essa tcnica denominadainterpolao linear e, em geral, apresenta velocidade de convergncia maior que
a o mtodo da bisseo.
(a) Mostre que
c = a f(a)f(b) f(a) (b a).
(b) Modique o algoritmo ZeroBisseo de modo a empregar a tcnica da in-
terpolao linear. Compare o nmero de iteraes necessrias para encontrar
os zeros das funes dadas nos problemas 3.1 a 3.4 com o algoritmo Zero-
Bisseo original.
3.38. Uma variao para o mtodo de Newton, conhecida como mtodo de
Halley
5
, consiste em truncar a srie de Taylor a partir do seu quarto termo e
usar a informao da segunda derivada de f [51]. A frmula de iterao dadapor
xk = xk1 2f(xk1)f(xk1)