Buscar

Apostila_Claudino

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 269 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 269 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 269 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Licenciatura em Física – EaD 
MAT094 Cálculo Numérico - 2011 
 
Prof. R Claudino – UNIFEI 
 
 
Em seqüência aos cursos de Cálculo 1, 2 e 3, estudamos em Cálculo Numérico 
uma variedade de métodos numéricos para a resolução de determinados 
problemas, para os quais soluções analíticas não podem ser obtidas. 
 
Ementa: 
 
1. Erros 
 1.1 Representação de números. 
 1.2 Erro absoluto e erro relativo. 
 1.3 Erros de arredondamento e truncamento. 
 1.4 Análise de erros. 
 
2. Zeros de Funções reais 
2.1 Isolamento das raízes. 
2.2 Refinamento. 
2.3 Comparação entre métodos 
 
3. Resolução de Sistemas de Equações Lineares 
 3.1 Métodos Diretos. 
 3.2 Métodos Iterativos. 
 
4. Aproximação de Funções Reais de uma Variável Real 
 4.1 Interpolação. 
 4.2 Método dos mínimos quadrados. 
 
5. Integração Numérica 
 5.1 Fórmulas de Newton-Cotes. 
 5.2 Quadratura Gaussiana. 
 
6. Resolução Numérica de Equações Diferenciais Ordinárias 
 6.1 Problemas da valor inicial. 
 6.2 Equações de ordem superior. 
 6.3 Problemas de valor de contorno. 
 
 
Objetivos do Curso: 
Os principais objetivos do curso são: 
Apresentar diversos métodos numéricos para a resolução de diferentes 
problemas matemáticos. Pretende-se deixar bem claro a importância desses 
métodos, mostrando: 
o a essência de um método numérico; 
o a diferença em relação a soluções analíticas; 
o as situações em que eles devem ser aplicados; 
o as vantagens de se utilizar um método numérico; 
o e as limitações na sua aplicação e confiabilidade na solução obtida. 
Melhorar a familiarização e “intimidade” do aluno com a matemática, mostrando 
seu lado prático e sua utilidade no dia-a-dia. Rever conceitos já vistos, exercitá-
los e utilizá-los de maneira prática; 
Apresentar maneiras práticas de se desenvolver e utilizar métodos numéricos. 
Isso significa mostrar como usar esses métodos numéricos na calculadora e 
em um computador. 
Treinar o aluno a aprender outros métodos numéricos por própria conta. No 
seu dia-a-dia profissional, ele pode se deparar com um problema cuja solução 
depende de um método numérico que não foi visto no curso. Portanto, ele 
deverá ser capaz de encontrar a literatura pertinente, estudar o método e 
aprender a sua utilização de maneira conceitual e prática (usando um aplicativo 
computacional) por conta própria. 
 
 
Bibliografia: 
- Ruggiero, Márcia A. G.; Lopes, Vera L. R.; Cálculo Numérico: aspectos 
teóricos e computacionais; 2ªed; Makron Books; 2005. 
 - Sperandio, Décio; Mendes, João T.; Monken e Silva, Luz H.; Cálculo 
Numérico: características matemáticas e computacionais dos métodos 
numéricos; Prentice Hall; 2003. 
Cálculo Numérico aula 01
Introdução 
A natureza é extremamente complexa. Para tentar entendê-la, criam-se 
modelos que seguem leis mais simples do que a realidade, dando resultados 
aproximados. Essas leis, que procuram simular a natureza, são, em geral, 
expressas matematicamente. As formulações matemáticas, embora 
simplificações do que se passa na realidade, ainda assim, com freqüência, são 
muito complexas para serem resolvidas analiticamente. 
É comum uma lei física ser expressa por uma equação diferencial cuja solução 
exata não é possível de ser obtida. Uma integral definida, mesmo que não seja 
muito complexa em sua formulação, pode não ser analiticamente resolvida. 
Mesmo um cálculo da raiz quadrada de um número, aparentemente simples, 
pode exigir operações que transcendam as contas elementares. 
Para essas situações temos no Cálculo Numérico um conjunto de ferramentas 
ou métodos usados para se obter uma solução aproximada. Os métodos 
numéricos buscam soluções aproximadas para essas formulações. Além disso, 
nos problemas reais, os dados com que se trabalha são medidas e, como tais, 
não são exatos. 
Ao resolver um problema numericamente, o mais comum é o pesquisador, ou 
profissional, utilizar um pacote computacional. Porém, ele terá que tomar uma 
série de decisões antes de resolver o problema. E para tomar essas decisões, 
é preciso ter conhecimento de métodos numéricos: 
o Pela utilização ou não de um método numérico (existem métodos numéricos 
para se resolver este problema?); 
o Escolher o método a ser utilizado, procurando aquele que é mais adequado 
para o seu problema. Que vantagens cada método oferece e que limitações 
eles apresentam; 
o Saber avaliar a qualidade da solução obtida. Para isso, é importante ele 
saber exatamente o que está sendo feito pelo computador ou calculadora, 
isto é, como determinado método é aplicado. 
Supondo estar diante de um problema que exige uma solução numérica, em 
princípio com a ajuda de um computador e, ainda precisar resolvê-lo sem 
contar com um método “já conhecido” veremos que a resolução envolve várias 
etapas, esquematizadas na figura a seguir, já incluída a etapa relacionada ao 
emprego de métodos numéricos. 
Inicialmente, é necessário construir um modelo matemático do problema em 
questão em que um conjunto de variáveis relevantes são incorporadas ao 
modelo ao passo que outras variáveis são desprezadas, o que pode acarretar 
incertezas. 
 
 
 
Na etapa de resolução, o método numérico permite obter uma solução 
aproximada para o problema; os erros que surgem desta aproximação 
precisam ser controlados. 
Por sua vez, na implementação computacional do método numérico, o número 
finito de dígitos com que o computador trabalha acarreta outros erros. 
Finalmente, a análise dos resultados obtidos poderá levar a uma modificação 
da implementação computacional, do método numérico ou do modelo 
matemático, dependendo da identificação da origem dos erros cometidos. 
Em resumo, os erros na resolução de um problema têm origem variada: 
o modelagem: é necessário escolher variáveis e adequar equações. 
o método numérico: aproximação. 
o implementação computacional: representação dos números. 
Neste curso, somente os erros que se originam do método numérico e da 
implementação computacional serão tratados. Os erros correspondentes às 
aproximações associadas aos métodos numéricos serão discutidos no contexto 
específico de cada método numérico é apresentado. Inicia-se o curso com a 
discussão dos erros que surgem na implementação computacional, associados 
à representação dos números. 
 
Cálculo Numérico aula 02
1. Erros
A noção de erro está presente em todos os campos do Cálculo Numérico, e 
passa por considerações quanto a:
o Dados: cada medida realizada é um intervalo e não um número;
o Incerteza: cada medida propaga sua incerteza nas operações matemáticas;
o Aproximações: os métodos de cálculo em si são aproximações e,
o Representação numérica: o computador representará os números reais com 
um número finito de dígitos, sendo forçado a aproximá-los quando os 
números reais exigirem mais dígitos do que ele está preparado para usar, 
por exemplo, o número π.
1.1 Representação de números.
Para realizarmos de maneira prática qualquer operação com números, nós 
precisamos representá-los em uma determinada base numérica. O que isso 
significa? Vamos tomar como exemplo o número √2 .
A fim de calcularmos, por exemplo, o valor de √2−1 , precisamos escrever o 
número √2 de alguma outra forma, caso contrário não é possível realizar essa 
operação.
Podemos escrevê-lo na base decimal, por exemplo, que é a base mais usada 
na história da humanidade (graças a nossa anatomia). O valor de √2 na base 
decimal pode ser escrito como:
1,41 ou 1,4142 ou ainda 1,41421356237.
Qual é a diferença entre essas várias formas de representar √2 ? 
A diferença é a quantidade de algarismos significativos usados em cada 
representação. Agora podemos realizar a operação proposta:
√2−1 = 0.41 ou 0.4142 ou ainda 0.41421356237
Conforme o número de algarismos significativos adotados na nossa 
representação. 
Em uma máquina digital, como uma calculadora ou um computador, os 
números não são representados na base decimal. Eles são representados na 
base binária,ou seja, usam o número 2 como base ao invés do número 10.
Como na base decimal existem 10 algarismos diferentes (0, 1, 2 ,3, 4, 5, 6, 7, 
8, 9), na base binária existem somente 2 números: 0 e 1. Portanto, a base 
binária é usada porque essas máquinas utilizam sinais elétricos, sendo o 0 
correspondente a ausência de sinal e o número 1 a presença do sinal elétrico. 
No computador o armazenamento dessa informação (0 ou 1) corresponde ao 
bit = binary digit, que por sua vez concatenados em blocos de oito formarão o 
byte que é a unidade de medida para espaço de armazenamento.
Representação de um número na base dois
Escrever um número inteiro em binário, isto é, na base dois usada nos 
computadores, não apresenta problema. Cada posição digital representará 
uma potência de dois, da mesma forma que nos números decimais, cada 
posição representa uma potência de dez. Assim, 23.457 significa: 
2×104 + 3×103 + 4×102 + 5×101 + 7×100.
Na base dois, o número 110101 representa: 
1×25 + 1×24 + 0×23 + 1×22 + 0×21 + 1×20 = (53)10
Os números com parte fracionária, da mesma forma, podem ser representados, 
usando-se potências negativas de dez, na base dez e de dois, na base dois.
Exemplos:
456,78 = 4×102 + 5×101 + 6×100 + 7×10-1 + 8×10-2 e,
101,101 = 1×22 + 0×21 + 1×20 + 1×2-1 +0×2-2 + 1×2-3 = (5,625)10
Sabe-se que, na base dez, para se multiplicar um número pela base, isto é, por 
dez, basta deslocar a vírgula uma casa para a direita.
O mesmo ocorre com qualquer base, em particular com a base dois. Para 
multiplicar um número por dois, basta deslocar a vírgula uma casa para a 
direita.
7 = 111 14 = 1110 28 = 11100 3,5 = 11,1
Mostra-se que:
0,8 = 0,1100110011001100...
0,4 = 0,01100110011001100...
1,6 = 1,1001100110011...
1,2 = 1,001100110011... 
Conversão: Decimal  Binário e Binário  Decimal
Números Inteiros
A conversão do número inteiro, de decimal para binário, será feita da direita 
para a esquerda, isto é, determina-se primeiro o algarismo das unidades ( o 
que vai ser multiplicado por 20 ) , em seguida o segundo algarismo da direita ( o 
que vai ser multiplicado por 21 ), etc.
A questão chave é observar se o número é par ou ímpar.
Em binário, o número par termina em 0 e o ímpar em 1. Assim determina-se o 
algarismo da direita, pela simples divisão do número por dois; se o resto for 0 
(número par) o algarismo da direita é 0; se o resto for 1 (número ímpar) o 
algarismo da direita é 1.
Por outro lado, é bom lembrar que, na base dez, ao se dividir um número por 
dez, basta levar a vírgula para a esquerda. Na base dois, ao se dividir um 
número por dois, basta levar a vírgula para a esquerda.
Assim, para se determinar o segundo algarismo, do número em binário, basta 
lembrar que ele é a parte inteira do número original dividido por dois, 
abandonado o resto. Vamos converter 25 de decimal para binário.
Para conversão de binário para decimal, de número inteiro, basta somar os 
algarismos multiplicados pela respectiva potência de 2, não esquecendo que 
da direita para a esquerda as potências começam em zero. 
Seja, por exemplo o número binário (1000101)2 que escrevendo sua forma 
polinomial temos:
(1001101)2 = 1×26 + 0×25 + 0×24 + 1×23 + 1×22 + 0×21 + 1×20.
Efetuadas as operações indicadas resulta:
1×64 + 0×32 + 0×16 + 1×8 + 1×4 + 0×2 + 1×1 =
= 64 + 0 + 0 + 8 + 4 + 0 + 1 = (77)10
Parte Fracionária do Número
A conversão da parte fracionária do número será feita, algarismo a algarismo, 
da esquerda para a direita, baseada no fato de que se o número é maior ou 
igual a 0,5 - em binário aparece 0,1 - isto é, o correspondente a 0,5 decimal.
Assim, 0,6 será 0,1_ _ ..., ao passo que 0,4 será 0,0_ _ ...
Tendo isso como base, basta multiplicar o número por dois e verificar se o 
resultado é maior ou igual a 1. Se for, coloca-se 1 na correspondente casa 
fracionária, se 0 coloca-se 0 na posição.
Em qualquer dos dois casos, o processo continua, lembrando-se, ao se 
multiplicar o número por dois, a vírgula move-se para a direita e, a partir desse 
ponto, estamos representando, na casa à direita, a parte decimal do número 
multiplicado por dois.
Vamos ao exemplo, representando, em binário, o número 0,625.
0,625 x 2 = 1,25 logo a primeira casa fracionária é 1
Resta representar o 0,25 que restou ao se retirar o 1 já representado.
0,25 x 2 = 0,5 logo a segunda casa é 0
Falta representar o 0,5 
0,5 x 2 = 1 logo a terceira casa é 1
0,62510 = 0,1012
Quando o número tiver parte inteira e parte fracionária, podemos calcular cada 
uma, separadamente.
Tentando representar 0,8 verifica-se que é uma dízima.
0,8 = 0,110011001100....
Da mesma forma, 5,8 = 101,11001100... , também uma dízima.
E consequentemente, 11,6 = 1011,10011001100... também, bastaria 
deslocar a vírgula uma casa para a direita, pois 11,6 = 2 × 5,8 .
A conversão da parte fracionária de binário para decimal segue a mesma forma 
empregada para a parte inteira, ou seja, basta somar o produto dos algarismos 
pela respectiva potência de 2, porém lembrando que os expoentes serão 
menores que zero exemplo:
(0,11001)2 = 1×2-1 + 1×2-2 + 0×2-3 + 0×2-4 + 1×2-5 
Efetuando as operações teremos o resultado na base 10:
(0,11001)2 = 1× (1/2) + 1× (1/4) + 0× (1/8) + 0× (1/16) + 1× (1/32) =
 = 1×0,5 + 1×0,25 + 0×0,125 + 0×0,0625 + 1×0,03125 = 0,78125(10)
Cálculo Numérico aula 03
1. Erros 
1.1 Representação de números (continuação) 
Ponto fixo e ponto flutuante 
Em todos os exemplos de números apresentados, a posição da vírgula está 
fixa, separando a casa das unidades da primeira casa fracionária. Entretanto, 
pode-se variar a posição da vírgula, corrigindo-se o valor com a potência da 
base, seja dez ou dois, dependendo do sistema que se use. 
Façamos, mais uma vez, analogia com o sistema decimal: 
45,31 corresponde a 4×101 + 5×100 + 3×10-1 +1×10-2 
Esse mesmo número poderia ser escrito como sendo 
4,531 × 101 ou 0,4531 × 102 ou 453,1 × 10-1 etc. 
Chama-se a isso ponto flutuante (floating point), pois no lugar de se deixar 
sempre a posição da vírgula entre a casa das unidades e a primeira casa 
decimal, flutua-se a posição da vírgula e corrige-se com a potência de dez. 
Com a base dois pode-se fazer exatamente a mesma coisa, escrevendo-se o 
mesmo número 110101 como sendo 
110,101×23 ou 1,10101×25 ou 0,0110101×27 ou outras formas. 
Claro que os expoentes das potências também poderão ser escritos na base 
dois, onde (3)10 = (11)2 e (7)=(111)2, e assim por diante, ficando: 
110,101 × (10)11 ou 1,10101× (10)101 ou 0,0110101× (10)111. 
Forma normalizada 
Forma normalizada é a que apresenta o número com um único dígito, diferente 
de zero, antes da vírgula; no caso de 45,31 seria: 4,531 × 101. 
Enquanto na base dois, o número 110101 seria 1,10101×25 ou, escrevendo-se 
o próprio expoente da base, 5, também na base dois: 1,10101×2101. 
A apresentação da base 2 está sendo mantido na forma decimal, 2expoente, e 
não na binária “10 expoente”, porque ela não precisará ser representada, por ser 
implícita. 
Para o número apresentado na forma normalizada, como 4,531 × 101, na base 
10, chama-se mantissa ao número 4,531 e de expoente ao número 1. 
E para o número 1,10101×2101, na base dois, chama-se mantissa ao número 
1,10101 e expoente ao número 101 deste exemplo. 
Seguem-se outros exemplos: 
o 1110,01 ou 1,11001 × 23 ou 1,11001 × 211 , que corresponde a 14,25 
o 0,0011 ou 1,1 × 2-3 ou 1,1 × 2-11 , que corresponde a 0,1875 
o 0,1001 ou 1,001 × 2-1 , que corresponde a 0,5625 
Pode-se observar que, para se representar um número real, é necessário 
armazenar a mantissa e o expoente, sendo dispensável representar o "1,", por 
estar sempre presente, sendo, também desnecessário, armazenar o “2” que é 
a base do sistema. 
Para se definir a maneira como o computador (e igualmente uma calculadora) 
armazenará o número real em ponto flutuante, é preciso definir o número debits que ele usará para representar a mantissa e o número de bits para o 
expoente. 
Suponha-se que um determinado computador reserve 1 byte, isto é, 8 bits, 
para representar os números reais. Admita-se que usa o primeiro bit para sinal 
do número, três bits seguintes para o expoente e os últimos quatro bits para o 
restante da mantissa. 
 
bit 0 bit 1 bit 2 bit 3 bit 4 bit 5 bit 6 bit 7 
sinal exp exp exp mant mant mant mant 
O bit 0 indica o sinal do número: 0 positivo ou 1 negativo. 
Os bits 1, 2 e 3 constituem o expoente e precisam representar tanto expoentes 
positivos quanto expoentes negativos. Com esses três bits, há 8 possibilidades: 
000, 001, 010, 011, 100, 101, 110, 111, que representariam números de 0 até 
7. Isso não serviria, pois precisamos de expoentes negativos, além dos 
positivos. Deram-se aos expoentes 000 e 111 significados especiais, a serem 
tratados daqui a pouco. 
Admita-se que o número 3, isto é, 011 represente o expoente zero. Os 
anteriores representarão os expoentes negativos e os posteriores os expoentes 
positivos. Dessa maneira, o número que representa o expoente será o número 
em binário menos três, conforme tabela a seguir. 
 
bits 001 010 011 100 101 110 
valor 1 2 3 4 5 6 
expoente -2 -1 0 1 2 3 
É importante observar que num número diferente de zero, normalizado na base 
2, a mantissa sempre começará por 1. Assim sendo, não há necessidade de se 
representar o (1, ) pois isso ficaria implícito, bastando representar os dígitos 
que aparecem depois da vírgula. Sendo m o número de bits representados da 
mantissa, o número representado terá, sempre, m+1 dígitos. 
Observe os exemplos a seguir: 
na base 10: na base 2: normalizado: nº binário: mant+exp representação 
3,5 11,1 1,11 x 21 1,1100 x 21 01001100 
2,75 10,11 1,011 x 21 1,0110 x 21 01000110 
7,5 111,1 1,111 x 22 1,1110 x 210 01011110 
-7,25 -111,01 -1,1101 x 22 -1,1101 x 210 11011101 
-0,375 -0,011 -1,1000 x 2-2 -1,1000 x 2-10 10011000 
Como se pode ver, o maior número positivo que pode ser representado nesse 
computador com a seqüência de 8 bits (ou 1 byte), é 01101111, 
que corresponde a 1,1111 × 2110 = 1,1111 × 23, isto é: 1111,12 ou 15,510. 
O menor número positivo seria: 00010000, 
que corresponde a 1,0000 × 2-2 , isto é: 0,2510. 
Aqui há uma observação a ser feita. 
Lembremo-nos que os expoentes 000 e 111, não foram considerados, até 
agora; eles teriam tratamento especial. 
Todos os números estão na forma normalizada, isto é: ( ± 1,_ _ _ …. x 2exp ). 
Usa-se o expoente 000, quando se quer indicar que o número não está 
normalizado, ficando o 000 como o menor expoente, isto é, -2 , no nosso 
exemplo. 
A mantissa passa a ser 0, _ _ _ _ onde, depois da vírgula, estão os dígitos da 
mantissa, só que, agora, sem a precedência do (1, ) , como era antes. Assim, 
temos a precedência de (0, ), e neste caso, não teremos, mais, m+1 dígitos 
significativos, como tínhamos quando os números eram normalizados. 
Exemplos: 
representação corresponde a: número binário na base decimal 
00001111 0,1111 x 2-2 0,001111 0,234375 
00001110 0,1110 x 2-2 0,001110 0,21875 
00000100 0,0100 x 2-2 0,0001 0,0625 
00000001 0,0001 x 2-2 0,000001 0,015625 
O último exemplo é o menor número positivo nessa representação, 
correspondendo a 1 x 2-6 . 
O número 00000000 representa + 0 e o número 10000000 representa - 0, 
devendo ambos ser reconhecidos como iguais nas comparações. 
O expoente 111 é reservado para representar mais infinito, com zero na 
frente (01110000) e menos infinito com 1 na frente (11110000), em ambos os 
casos a mantissa sendo 0000. 
O mesmo expoente 111 é ainda utilizado para caracterizar indeterminação, 
11111000. 
As demais combinações com o expoente 111 não são válidas, sendo 
desconsideradas (not a number). 
Nesse exemplo que estamos explorando, o número real é representado em 8 
bits, sendo 1 para o sinal, 3 para o expoente e 4 para a mantissa, não sendo 
representado o 1, que antecede os 4 bits. 
E quando a mantissa não cabe nos 4 bits ? 
Somos obrigados a arredondar a mantissa para que ela caiba nos 4 bits. 
Assim, vamos perder precisão no número e ele não mais representará, 
exatamente, o número desejado. 
Como exemplo, vamos tentar representar, nesse nosso computador hipotético, 
o número 9,375. 
9,375 = 1001,011 = 1,001011 x 23 
Mas só existem bits para 4 dígitos, sobrando 0,000011 x 23 
É feito o arredondamento ! 
Assim, se a parte abandonada é inferior à metade da última unidade 
representada, ela é abandonada, se for superior à metade, soma-se 1 à última 
unidade. 
Só havendo 4 bits, armazenam-se os 4 primeiros bits após o 1, isto é: 0010. 
Seria abandonado 11 após o último zero. Isso representa 0,11 da última 
unidade, que é maior que a metade da última unidade. 
Logo, soma-se 1 à última unidade, que fica sendo 1 e não zero. Portanto: 
1,001011 x 23 = 1,0011 x 23 
Este número não é mais 9,375 e sim 9,5. Perdemos precisão! 
Na verdade, esse computador não sabe representar 9,375 e, ao tentar fazê-lo, 
representa 9,5. Ele não tem bits suficientes para fazer uma representação 
melhor. 
Se quiséssemos representar 9,125 = 1001,001 = 1,001001 x 23 , a quantidade a 
ser abandonada, após os 4 bits, seria 01, o que representa 0,01 da última 
unidade representada. 
Isso é menor que metade dessa unidade e, portanto, será simplesmente 
abandonada, sem alterar o último bit representado. 
Portanto: 9,125 = 1001,001 = 1,001001 x 23 = 1,0010 x 23 = 1001. 
Esse número vale 9 e não 9,125. 
Resumindo, é feito o arredondamento na última casa (bit) representado. 
Quando o que restar for maior que metade da última unidade, soma-se 1 a 
essa unidade; quando for menor que metade da última unidade, essa parte 
restante é abandonada. 
E quando for exatamente igual à metade ? 
Por exemplo, vamos tentar representar 9,25, nesse computador hipotético. 
9,25 = 1001,01 = 1,00101 x 23 . 
Sobra 1 após os quatro bits, isto é, sobra exatamente a metade da última 
unidade. Neste caso, observa-se o bit anterior. Se for zero, mantêm o zero, se 
for 1, soma-se 1 a esse bit. 
No exemplo o último bit é zero, logo assim permanece: 
9,25 = 1001,01 = 1,00101 x 23 = 1,0010 x 23 = 1001 = 9. 
Se fôssemos representar 10,75 = 1010,11 = 1,01011 x 23 . Sobra 1 após os 
quatro bits, isto é, sobra exatamente a metade da última unidade. 
O bit que resta segue um bit 1. Neste caso, soma-se 1 a este bit, ficando com: 
1,0110 x 23 = 1011 = 11 (onze). 
Como se vê, ora se aumenta o número, ora se diminui. Isso evita que, no caso 
de grande número de aproximações, haja tendência num certo sentido, 
buscando-se equilibrar os aumentos com as diminuições. 
Usamos, até agora, a hipótese de representar o número real em 8 bits. 
Na realidade, usam-se mais bits, nessa representação. 
A norma IEEE 754, publicada em 1985, procurou uniformizar a maneira como 
as diferentes máquinas representam os números em ponto flutuante, bem 
como devem operá-los. Tal norma estabeleceu padrões para os USA e demais 
países integram seus interesses, a serem seguidos por fabricantes de 
equipamentos computacionais e desenvolvedores de programas básicos para 
uniformizar seu funcionamento independendo de local, cultura ou industria. 
Essa norma define dois formatos básicos para os números em ponto flutuante: 
o formato simples, com 32 bits e o duplo com 64 bits. 
O primeiro bit é para o sinal: 0 representa número positivo e 1 representa 
número negativo. No formato simples o expoente tem 8 bits e a mantissa tem 
23 bits; no formato duplo, o expoente tem 11 bits e a mantissa 52 bits. 
No formato simples, o menor expoente é representado por 00000001, valendo 
-126, e o maior expoente é representado por 11111110, valendo +127. Em 
ambos os casos, o expoente vale o número representado em binário menos 
127. 
No formato duplo, o menor expoente é representado por 00000000001, 
valendo -1022, e o maior expoente é representado por 11111111110, valendo 
+1023. Em ambos os casos, o expoente vale o número representado embinário menos 1023. 
Em ambos os formatos, a norma IEEE 754 prevê o chamado underflow 
gradual, permitindo obter números bem mais próximos de zero. Para isso, 
como mostrado no exemplo hipotético, o expoente representado por 000…000 
representa o menor expoente, "-126" no formato simples e "–1022" no formato 
duplo, e a mantissa deixa de ser normalizada. Dessa maneira podemos 
representar, como menor número positivo: 
o no formato simples: 0 00000000 00….01 isto é: 2-126 x 2-23 = 2-149 
o no formato duplo: 0 00000000000 00….01 isto é: 2-1022 x 2-52 = 2-1074 
No formato simples, o zero possui, ainda, duas representações 
 0 00000000 000...00 , correspondendo a mais zero e 
 1 00000000 000...00 , correspondendo a menos zero, 
ambas iguais em qualquer operação de comparação. 
Mais infinito é representado por 0 11111111 000...00 e 
 menos infinito por 1 11111111 000...00 . 
Indeterminado é representado por 1 11111111 100...00 . 
As demais combinações não são válidas, sendo consideradas "not a number". 
Dessa maneira, o intervalo de números representáveis será: 
o no formato simples: 
números negativos: de -[2, 2-23] x 2127 a –2-149 
zero 
números positivos: de 2-149 a [2, 2-23] x 2127 . 
obs.: [2, 2-23] representa o intervalo: de 1,00...00 até 1,11...11 
o no formato duplo: 
números negativos: de - [2, 2-52] x 21023 a –2-1074 
zero 
números positivos: de 2-1074 a [2, 2-52] x 21023 . 
 
Valor verdadeiro do número armazenado 
Vimos que ao se tentar armazenar o número 0,8 em ponto flutuante, o número 
será arredondado, tendo seu valor alterado. Assim, sabendo-se que 
0,8 = 0,1100110011001100.... = 1,100110011001100... x 2-1 
e que, em precisão simples, terem os 23 bits após a vírgula, qual será o 
verdadeiro valor armazenado ? 
Vamos calcular: 
0,8 → 1,10011001100110011001100110011001100... x 2-1 
onde em vermelho estão os bits depois do vigésimo terceiro. 
Como os bits que serão abandonados representam mais do que a metade da 
última unidade, soma-se 1 ao vigésimo terceiro bit, obtendo-se: 
0,8 → 1,10011001100110011001101 x 2-1 > 0,8 
Será armazenado um número maior que 0,8, neste caso. 
Chamando esse valor armazenado de A, tem-se: 
A - 0,8 = (1,0 - 0,110011001100...) x 2-1 x 2-23 = 
= (1,0 - 0,8) x 2-24 = 0,2 x 2-24 = 1,19209... x 10-8 
A = 0,8000000119209... 
Neste caso, tem-se um número ligeiramente maior que 0,8. 
E se quiséssemos armazenar 1,8 ... o que seria, de fato, armazenado? 
1,8 = 1,1100110011001100... → 1,11001100110011001100110 x 20 = B 
B será ligeiramente menor que 1,8 
pois foi abandonado 0,011001100... x 2-23 = 0,4 x 2-23 
1,8 - B = 0,4.2-23 = 4,76837..10-8 
B = 1,79999995232... 
Tem-se um número ligeiramente menor que 1,8. 
O importante disso tudo é ver que, em binário, o número é formado pela soma 
de potências de dois: potências positivas e negativas. Quando um número 
não pode ser formado por um número finito dessas potências, como é o caso 
de 0,8, ele se torna no que em decimal se chama dízima, necessitando de 
infinitos bits para representá-lo. Como, em ponto flutuante, temos um número 
finito de bits, o número será arredondado, para caber nesse número de bits. 
Daí o erro em sua representação. O arredondamento pode ser para mais ou 
para menos, como acabamos de ver. 
Tudo depende do valor a ser abandonado. Se esse valor for maior que metade 
da unidade representada pelo último bit, arredonda-se para cima, somando-se 
1 ao último bit representado. Se esse valor for menor que metade da unidade 
representada pelo último bit, arredonda-se para baixo, eliminando-se os bits a 
partir do vigésimo quarto. 
No caso de precisão dupla, onde se tem 52 bits após a vírgula, o erro no 
arredondamento será menor: 
0,8 = 1,100110011001100110011001100110011001100110011001100110011... x 2-1 
A parte a ser abandonada é maior que metade da unidade, pois é 0,1001100... 
Logo, arredonda-se para cima, somando-se 1 ao última bit: 
0,8 = 1,1001100110011001100110011001100110011001100110011010 x 2-1 = A 
A - 0,8 = (10 - 1,100110011...) x 2-1 x 2-52 
A - 0,8 = (2 - 1,6).2-53 = 4,44089...10-17 
A = 0,8000000000000000444089... 
 
Cálculo Numérico aula 04
1. Erros 
Vamos supor o seguinte problema: como calcular o valor de 2 ? 
Provavelmente, a primeira resposta que vem a mente de qualquer pessoa que 
nasceu no século XX será: utilizando uma calculadora ou um computador. 
Indiscutivelmente, essa é a resposta mais sensata e prática. Porém, um 
profissional que utilizará o resultado fornecido pela calculadora para uma 
atividade como projetar, construir ou manter pontes, edifícios, máquinas, 
dispositivos eletrônicos, etc., não pode aceitar o valor obtido antes de fazer 
alguns questionamentos (pelo menos uma vez na sua vida profissional!). 
Quando calculamos, por exemplo, o valor de 2 em uma calculadora ou em 
um computador, o que realmente estamos fazendo? Em outras palavras, o que 
a calculadora fez para obter o resultado? E mais ainda: qual é a confiabilidade 
do resultado que obtemos? 
1.2 Erro absoluto e erro relativo. 
Essa pergunta faz sentido, pois 2 é um número irracional, isto é, não existe 
uma forma de representá-lo com um número finito de algarismos. Portanto, o 
número apresentado pela calculadora é uma aproximação do valor real de 
2 , já que ela não pode mostrar infinitos algarismos. E quão próximo do valor 
real está o resultado mostrado? 
Vamos definir a diferença entre o valor real da grandeza que queremos calcular 
e o valor aproximado que efetivamente calculamos como sendo o erro, ou seja: 
erro = valor real – valor aproximado 
Quanto menor for esse erro, mais preciso será o resultado da operação. 
Essa definição corresponde ao erro absoluto de um cálculo. 
Porém, se estivermos lidando com números muito grandes, o erro pode ser 
grande em termos absolutos, mas o resultado ainda será preciso. E o caso 
inverso também pode ocorrer: um erro absoluto pequeno, mas um resultado 
impreciso. 
Por exemplo, digamos que o resultado de uma operação nos forneça o valor 
2.123.542,7 enquanto o valor real que deveríamos obter é 2.123.544,5. O erro 
absoluto neste caso é 1,8. Comparada com o valor real, essa diferença (o erro) 
é bem pequena, portanto, podemos considerar o resultado preciso. 
Em outro caso, digamos que o resultado da operação seja 0,234 e o resultado 
esperado era 0,128. Desta vez o erro será igual a 0,106 , porém o resultado é 
bastante impreciso. 
A fim de evitar esse tipo de ambigüidade, podemos criar uma nova definição. 
Podemos definir o erro relativo, que corresponde ao quociente entre o erro 
absoluto e o valor aproximado da grandeza a ser calculada, ou seja: 
aproximado valor
aproximado valor - real valorerro = 
O erro relativo é uma forma muito mais geral de se avaliar a precisão de um 
cálculo efetuado. Nos exemplos, teremos um erro relativo de 0,0000008 ou 
0,00008% no primeiro caso e um erro relativo igual a 0,83 ou 83% no segundo. 
Como vimos na seção anterior, ao se tentar representar um número real em 
ponto flutuante, normalmente, ele é arredondado, de modo a poder ser escrito 
no número finito de bits onde precisa ser armazenado. Dessa forma, é, 
automaticamente, introduzido um erro e ele não mais representa o número 
desejado. Ainda assim, é possível determinar o maior erro relativo possível 
dessa representação. 
Vamos admitir que, no nosso sistema, a mantissa seja representada em m bits. 
Seja o número a, que representado na forma normalizada seria: 1,b x 2c . 
Vamos admitir que c esteja dentro dos limites dessa representação, caso 
contrário teríamos overflow. Entretanto, a mantissa b precisa caber no número 
previsto de bits, reservados para a mantissa. Isso pode levar à necessidade de 
arredondar a mantissa b, introduzindo erro. 
Considere, por exemplo, que o número a seja : 
a = 1,101010110100101… x 2 c e que m, número de bits da mantissa, seja 5. 
Teríamos que escrever a como sendo: 
1,10101 x 2c , abandonando 0,000000110100101... x 2c, 
queseria o erro introduzido. 
O erro de a será, portanto: Erroa = 0,0110100101… x 2c-5 , 
onde 5 é o valor de m, número de bits da mantissa. 
O erro relativo será: 
Ea = Erroa / a , isto é: 0,0110100101… x 2c-5 / 1,101010110100101… x 2c 
Ea = 0,0110100101… x 2-5 / 1,101011110100101… 
O erro relativo será máximo, quando tivermos o maior numerador e o menor 
denominador, isto é: 
Ea (max) = 0,01111111….. x 2-5 / 1,0000000… 
Lembrando que 0,0111112…. < 0,510 , tem-se: 
Ea (max) < 0,5 x 2-5, onde 5 está representando m, número de bits da mantissa. 
Portanto, Ea (max) < 2 –(m+1) . Assim, o número de bits da mantissa condiciona 
a precisão com que se pode trabalhar. 
A expressão do erro máximo, só é válida na região normalizada, pois na 
região não normalizada, bem próxima a zero, pelo underflow gradual, fica 
reduzida a precisão dos números que passam a não ter mais m+1 dígitos 
significativos, preço necessário para se obter valores mais próximos do zero. 
O número de bits do expoente indica a faixa de variação dos números 
possíveis, indicando os limites, fora dos quais haverá overflow ou underflow. 
1.3 Erros de arredondamento e de truncamento. 
O erro cometido ao se calcular o valor de 2 , por exemplo, é apenas um tipo 
de erro que pode surgir ao se resolver um problema real. Outros tipos de erros 
também podem aparecer devido a outros tipos de problemas ou limitações. 
A solução matemática de um determinado problema envolve diversas etapas, 
como discutido na introdução desta disciplina. A solução do problema se inicia 
com a criação de um modelo matemático do sistema em questão. Esse modelo 
sempre apresentará aproximações e limitações. 
Além disso, na grande maioria das vezes, dados experimentais serão utilizados 
para se obter a solução. Como toda medida experimental apresenta uma 
incerteza, a solução do problema será influenciada pelas mesmas. Portanto, 
logo de início, existem diversos fatores que introduzem incertezas na solução 
numérica do problema. Esse tipo de erro é chamado de erro inicial. 
O problema discutido para o cálculo de 2 , que se refere a inevitável limitação 
na representação de números irracionais (por exemplo), introduz erros no 
resultado. Esse tipo de erro é chamado de erro de arredondamento. 
Outro exemplo, já discutido de erro de arredondamento refere-se à conversão 
de números, como 0,4 para a representação binária, e o valor verdadeiro 
armazenado. Vamos ilustrar, considerando a máquina hipotética que armazena 
números reais utilizando 1 bit para o sinal do número, 3 bits para o expoente e 
8 bits para a mantissa: 
0,4 = 0,011001100110... = 1,100110011001100... x 2-2 
Como a mantissa tem só 8 bits desprezamos: 0,000000001001100... x 2-2 
Porém, é preciso arredondar o último termo somando 1 pois é maior que a 
metade do último termo: 
0,4 = 1,100110011001100... = 1, 10011010 x 2-2 
Dessa forma, temos outro número representado pois: 
1, 10011010 x 2-2 = 0,400390625 
E o erro de arredondamento será: 
Erro = 0,000390625 
Vamos considerar outro tipo de problema prático que pode surgir ao 
realizarmos determinadas operações: considere o cálculo do valor de xe . 
Mais uma vez, iremos utilizar uma máquina digital (calculadora ou computador). 
Porém: Como esse equipamento irá realizar essa operação? Sabemos que a 
exponencial é uma função que pode ser representada por: 
...
!n
x...
!
x
!
x
!
xxe
n
x +++++++=
432
1
432
 
Como a exponencial é uma série infinita, na prática é impossível calcular seu 
valor exato. Portanto, mais uma vez, teremos que fazer uma aproximação, que 
levará a um erro no resultado final de xe . 
Neste caso, faremos um truncamento dessa série, e o erro gerado no valor de 
xe é chamado de erro de truncamento. 
Para ilustrar, considere um cálculo da exponencial empregando apenas os 4 
primeiros termos da série, isto é: 
!
x
!
xxex
32
1
32
+++≅ 
Desprezando os termos de potência maiores do que 4, ou seja, truncamos a 
série no termo de potência de ordem 3. 
Vamos calcular essa aproximação de xe para x = 2. 
Obtemos: 3333362 ,e = , que é um valor com erro de truncamento bem 
significativo quando comparado com o valor 3890672 ,e = obtido numa máquina 
(calculadora ou computador) que armazena uma quantidade maior de termos 
da série. 
 
Cálculo Numérico aula 05
1. Erros 
Vamos supor que queremos calcular o valor de 52 e− . Como visto 
anteriormente, ao calcularmos o valor de 2 , teremos que realizar um 
arredondamento, que leva ao um resultado aproximado de 2 , ou seja, existe 
um erro de arredondamento associado ao resultado. Para calcularmos o valor 
de 5e teremos que fazer um truncamento, que também irá gerar um erro no 
resultado obtido. 
Portanto, o resultado da operação de subtração entre 2 e 5e apresentará 
um erro que é proveniente dos erros nos valores de 2 e 5e separadamente. 
Em outras palavras, os erros nos valores de 2 e 5e se propagam para o 
resultado de 52 e− . Podemos concluir então que, ao se resolver um 
problema numericamente, a cada etapa e a cada operação realizada, devem 
surgir diferentes tipos de erros gerados das mais variadas maneiras, e estes 
erros se propagam e determinam um erro no resultado final obtido. 
A propagação de erros é muito importante, pois, além de determinar o erro final 
de uma operação numérica, ela também determina a sensibilidade de um 
determinado problema ou método numérico. 
Se uma pequena variação nos dados de entrada de um problema levar a uma 
grande diferença no resultado final, considera-se que essa operação é mal-
condicionada, ou seja, existe uma grande propagação de erros nessa 
operação. Por outro lado, se uma pequena variação nos dados de entrada leva 
a apenas uma pequena diferença no resultado final, então essa operação é 
bem-condicionada. 
1.4 Análise de erros 
Vamos agora examinar os erros mais comuns que aparecem quando um 
computador manipula os números. O primeiro tipo de erro corresponde aos 
erros de arredondamento e truncamento que está presente na forma como 
computadores lidam com números, pois precisam representar os números com 
uma quantidade finita de algarismos. 
Vamos supor, para simplificar o exemplo, um computador hipotético com uma 
representação de ponto flutuante na base decimal (b=10) e uma mantissa de 4 
algarismos (m=4). 
Para representarmos em ponto flutuante nesse computador, por exemplo, o 
número 734,68 : 
teríamos que truncá-lo para: 0,7346×103 
ou arredondá-lo para: 0,7347×103. 
Portanto, no truncamento, estaríamos cometendo um erro de 0,8×10-1 e 
no arredondamento, um erro de 0,2×10-1. 
Podemos generalizar esse exemplo e dizer que, em uma representação de 
ponto flutuante na base b e mantissa de m algarismos, os erros de 
truncamento serão dados por: 
erro < baseexpoente – nº algarismos mantissa ou, meberro −< 
E os erros de arredondamento serão dados por: 
meberro −<
2
1
 
Portanto, para uma representação numérica com m = 23 ou m = 52 (como 
padronizado para a maioria dos computadores) esse erro é muito pequeno. 
É importante lembrar que apesar de pequeno, esse erro se propagará nas 
operações aritméticas realizadas pelo computador. 
Vamos tomar como exemplo a soma dos números 6563 (= 0,6563×104) e 3,375 
(= 0,3375×101) no nosso computador fictício de mantissa com 4 algarismos. A 
soma desses dois números corresponde a 6566,375. 
Como nosso computador pode representar com apenas 4 algarismos, o 
resultado dessa operação será 0,6566×104 = 6566. Ou seja, apesar de 
partirmos de dois números exatos, o resultado da soma não será exata. 
Mais uma vez, para um computador real, esse erro é pequeno, porém, se um 
número muito grande de operações for realizado e se existir a necessidade de 
se obter um resultado bastante preciso, será preciso se levar em consideração 
esse tipo de erro para avaliar o resultado obtido. 
Existe mais um tipo de erro que aparece quando computadores manipulam 
números. Esse erro se refere à conversão de números de uma base para a 
outra. O tipo de conversãomais comum é da base decimal (usada por 
humanos) para a base binária (usada por computadores) e vice-versa. 
Um exemplo bastante peculiar é o número 0,1. Ao convertermos esse número 
da base decimal para a base binária (já fizemos essa conversão em 
exercícios), obtemos como resposta: 0,1 = 0,0001100110011...2 
Portanto, notamos que, ao se converter o número 0,1 da base decimal para a 
base binária, obtemos um número com infinitos algarismos! Como esse número 
não pode ser representado pelo computador, ele será truncado, introduzindo 
um erro na sua representação. Uma forma interessante de constatar esse 
problema é escrevendo um pequeno programa que calcule o valor de 
∑
=
10000
1
10
i
, 
Processando, você verá que esse resultado não é 1000, 
más encontraremos: 999,902893066406. 
Para a análise dos erros nas operações aritméticas de com ponto flutuante, 
temos em foco problemas com o seguinte enunciado: 
Num sistema de aritmética de ponto flutuante de três dígitos (que é outra forma 
de dizer que a máquina armazena os números em uma mantissa de 3 
algarismos) qual seria o resultado da operação 
(0,835 × 103 ) × (0,689 × 102) × (0,787 × 105)? 
 O valor exato dessa operação seria: 0,452772905 × 1010. 
A máquina efetuará cada operação e, para cada resultado, ela registra na 
memória o valor truncado ou arredondado, de acordo com o processo 
programado na mesma. Usando o truncamento temos: 
Na primeira multiplicação que tem como valor exato: 0,575315 × 105, 
armazenamos: 0,575 × 105 
Em seguida esse valor é multiplicado por 0,787×105, resultando exatamente 
0,452525 x 1010, e registrado na memória o valor 0.452 . 1010. 
Na primeira operação já subsiste um erro que será levado para a segunda 
operação onde novo erro será cometido. 
Note a diferença entre o resultado exato: 0,452772905 × 1010 
e o resultado sem truncamento após a segunda operação: 0.452 . 1010 
É fundamental que se conheça a limitação da máquina para que se tenha 
confiança no resultado final da operação. Imagine que os valores iniciais sejam 
as arestas de um paralelepípedo e que a operação represente o volume do 
mesmo. Até que ponto é confiável o resultado? 
Estimativa de erros nas operações aritméticas de ponto flutuante 
Sejam x e y os valores absolutos exatos de dois números e x’ e y’ os valores 
absolutos arredondados ou truncados num sistema aritmético de ponto 
flutuante. De acordo com a definição de erro absoluto, temos: 
x = x’ + ex e, y = y’ + ey 
Para um número n, en = n - n’ torna-se o erro absoluto, enquanto o erro relativo 
será: En = en/n’. Estimando os erros nas operações: 
Adição x + y = (x’ + ex) + (y’ + ey) = (x’ + y’) + (ex + ey) 
Erro absoluto (ead): ex+y = ex + ey 
Erro relativo (Ead): 
)'y'x(
'yE
)'y'x(
'xE
)'y'x(
'y
'y
e
)'y'x(
'x
'x
e
)'y'x(
)ee(
)'y'x(
e
E yx
yxyxyx
yx +
⋅+
+
⋅=
+
⋅+
+
⋅=
+
+
=
+
= ++ 
Portanto, Ex+y = Ex × [x’/(x’ + y’)] + Ey ×[y’/(x’ + y’)] 
 
Subtração x - y = (x’ + ex) - (y’ + ey) = (x’ - y’) + (ex - ey) 
Erro absoluto (esub): ex-y = ex - ey 
Erro relativo (Esub): 
)'y'x(
'yE
)'y'x(
'xE
)'y'x(
'y
'y
e
)'y'x(
'x
'x
e
)'y'x(
)ee(
)'y'x(
e
E yx
yxyxyx
yx −
⋅−
−
⋅=
−
⋅−
−
⋅=
−
−
=
−
= −− 
Portanto, Ex-y = Ex × [x’/(x’ - y’)] - Ey ×[y’/(x’ - y’)] 
 
Multiplicação 
x × y = (x’ + ex) × (y’ + ey) = (x’ × y’) + (x’ × ey) + (y’ × ex) + (ex × ey) 
como (ex × ey) é muito pequeno, pode-se escrever: 
x × y = (x’ + ex) × (y’ + ey) = (x’ × y’) + (x’ × ey) + (y’ × ex) 
 
 
Erro absoluto (emult): ex×y = (x’ × ey) + (y’ × ex) 
Erro relativo (Emult): 
Ex×y = ex×y/(x’× y’) = [(x’ × ey) + (y’ × ex)]/(x’×y’) = 
= (x’ × ey)/(x’×y’) + y’ × ex)/(x’×y’)= ey/y’ + ex/x’ 
Portanto, Ex×y = ex/x’ + ey/y’ = Ex + Ey 
Divisão 
 
( )
( )
⎟⎟
⎠
⎞
⎜⎜
⎝
⎛
+
×
+
=
+
+
=
'y
ey
)e'x(
e'y
e'x
y
x
y
x
y
x
1
1
 
 
Analisando 
⎟⎟
⎠
⎞
⎜⎜
⎝
⎛
+
'y
ey1
1
 como ...xxx
)x(
+−+−≈
+
321
1
1
, onde 
'y
e
x y= 
obtemos, 
'y
e
'y
e
y
y
−≈
⎟⎟
⎠
⎞
⎜⎜
⎝
⎛
+
1
1
1
, abandonando-se os termos em x2 , x3... 
fica, 
'y'y
ee
'y'y
e'x
'y
e
'y
'x
'y
e
'y
e'x
y
x yxyxyx
×
×
−
×
×
−+=⎟⎟
⎠
⎞
⎜⎜
⎝
⎛
−×
+
= 1 
e finalmente, 
'y'y
e'x
'y
e
'y
'x
y
x yx
×
×
−+≈ , pois (ex × ey) é muito pequeno 
 
Erro absoluto (ediv): 
'y'y
e'xe'y
'y'y
e'x
'y
ee yxyxy/x ×
×−×
=
×
×
−≈ 
 
Erro relativo (Ediv): 
( ) yx
yx
yx
y/x EE'y
e
'x
e
'y/'x
'y'y
e'xe'y
E −=−=
⎟⎟
⎠
⎞
⎜⎜
⎝
⎛
×
×−×
= 
Exemplos de avaliação dos erros em aritmética de ponto flutuante: 
1. Calcular o erro absoluto e o erro relativo ao ser efetuado o cálculo de 
x+y×z num sistema de aritmética de ponto flutuante de 4 dígitos, sendo 
x = 0.65237 × 106; 
y = 0.23465 × 102 e 
z = 0.367891 × 104 
Adotando o truncamento, pois temos apenas 4 posições para armazenamento. 
O valor real de x+y×z é 
 0,65237 × 106 + 0,08632562315 × 106 = 0,73869562315 × 106. 
Ao efetuar o cálculo, a cada operação se faz a aproximação para os 4 dígitos 
do sistema. Assim, 
y’×z’ = 0,0863 x 106 e x’ + y’×z’ = 0,7386 × 106. 
Erro absoluto cometido: 
0,73869562315 × 106 – 0,7386 × 106 = 0,000039562315 × 106 = 0,3956 × 102. 
Erro relativo: 
 Eop = eop/ (x’ + y’×z’) = 0.39562315 × 102/0.7386 × 106 = 0.5357 × 10-4. 
2. Considere 
x = 0.5124 × 104, 
y = 0.123 × 102 e 
z = 0.8867 × 103. 
Para um sistema aritmético de ponto flutuante com 3 dígitos, calcule os erros 
absoluto e relativo ocorridos nas operações, usando o processo de 
arredondamento. Vamos calcular: a) x + y b) z × x c) 2 × x 
Calculando os erros absolutos: 
 - pelo arredondamento de cada número em função do tamanho da mantissa: 
x = 0,5124 x 104, considerando os 3 dígitos: x’ = 0,512 × 104 (apenas truncamos) 
ex = x – x’ = 0,5124 × 104 – 0,512 × 104 = 0,0004 × 104 = 0,400 × 101. 
Ex = ex/x’ = 0,4000 × 101/0,512 × 104 = 0,781 × 10-3. 
y = 0,123 × 102, considerando os 3 dígitos: y’ = 0,123 × 102 
ey = y – y’ = 0 e Ey = ey/y’ = 0. 
z = 0,8867 × 103, considerando os 3 dígitos: z’ = 0,887 × 103 (com arredondamento), 
ez = z – z’ = 0,8867 × 103 – 0,887 × 103 = -0,0003 × 103 
Ez = ez/z’ = -0,3/0,887 × 103 = -0,338 × 10-3. 
Efetuando agora os cálculos, temos: 
a) x + y 
ex+y = ex + ey = 0,4000 × 101 + 0 = 0,4000 × 101. 
Ex+y = Ex × [x’/(x’+y’)] + Ey × [y’/(x’+y’)] = 
= 0,781×10-3× [(0,512×104)/(0,512×104+0,123×102)] + 0 × [(0,123×102)/(0,512×104+0,123×102)]= 
= 0.781×10-3 × [0.512 × 104/(0.512 × 104 + 0.123 × 102)] = 0.779 x 10-1. 
b) z × x 
ez×y = (z’×ey) + (y’×ez) = 0,887×103 × 0 + 0,123×102× -0,3 = -0,369×101 
Ez×y = Ez + Ey = -0,338 × 10-3 + 0 = -0,338 × 10-3 
c) 2 × x 
e2x = 2 × ex = 2 × 0,400 × 101 = 0,8000 × 101 e, 
E2x = 2 × Ex = = 2 × 0,781 ×10-3 = 0.156 × 10-2. 
Cálculo Numérico aula 06
2. Zeros de funções reais 
 
Dada uma função f(x), dizemos que α é raiz, ou zero de f se e somente f(α)=0. 
Graficamente, os zeros de uma função correspondem ao ponto x em que a 
função intercepta o eixo do gráfico, como mostrado no exemplo abaixo: 
 
 
 
 
 
A função g(x) acima tem 5 raízes no intervalo [a,b]: x1, x2, x3, x4, x5. 
As raízes de uma função podem ser encontradas analiticamente, ou seja, 
resolvendo a equação f(x) = 0 de maneira exata, como mostrado nos exemplos 
abaixo: 
1) 3−= x)x(f x = 3 é raiz, pois f(3) = (3) – 3 = 0 
2) 4
3
8
−= x)x(g x = 3/2 é raiz, pois g(3/2) = (8/3)⋅(3/2-4 = 0 
3) 652 +−= xx)x(h x1 = 2 é raiz, pois h(2) = (2)2 -5(2) + 6 = 0 e 
 x2 = 3 é raiz, pois h(3) = (3)2 -5(3) + 6 = 0 
 
 
Porém, nem sempre é possível encontrar analiticamente a raiz de uma função, 
como nos exemplos a seguir: 
1) 12 23 +−+= xxx)x(f 
2) xe)x(sen)x(g += 
3) )xln(x)x(h += 
Nestes casos precisamos de um método numérico para encontrar uma 
estimativa para a raiz da função estudada. 
Um método numérico para se encontrar os zeros de uma função deve envolver 
as seguintes etapas: 
i) Determinar um intervalo em x que contenha pelo menos uma raiz da 
função f(x), ou seja, isolar as raízes;ii) Calcular a raiz aproximada através de um processo iterativo até a 
precisão desejada. 
Existe um grande número de métodos numéricos que são processos iterativos. 
Como o próprio nome já diz, esses processos se caracterizam pela repetição 
de uma determinada operação. A idéia nesse tipo de processo é repetir um 
determinado cálculo várias vezes, obtendo-se a cada repetição ou iteração um 
resultado mais preciso que aquele obtido na iteração anterior. E, a cada 
iteração utiliza-se o resultado da iteração anterior como parâmetro de entrada 
para o cálculo seguinte. 
Existem diversos aspectos comuns a qualquer processo iterativo, que iremos 
discutir abaixo: 
o Estimativa inicial: como um processo iterativo se caracteriza pela utilização 
do resultado da iteração anterior para o cálculo seguinte, a fim de se iniciar 
um processo iterativo, é preciso ter uma estimativa inicial do resultado do 
problema. Essa estimativa pode ser obtida de diferentes formas, conforme o 
problema que se deseja resolver; 
o Convergência: para obtermos um resultado próximo do resultado real 
esperado, é preciso que a cada passo ou iteração, nosso resultado esteja 
mais próximo daquele esperado, isto é, é necessário que o método convirja 
para o resultado real. Essa convergência nem sempre é garantida em um 
processo numérico. Portanto, é muito importante estar atento a isso e 
verificar a convergência do método para um determinado problema antes de 
tentar resolvê-lo; 
o Critério de Parada: obviamente não podemos repetir um processo numérico 
indefinidamente. É preciso pará-lo em um determinado instante. Para isso, 
devemos utilizar um critério, que vai depender do problema a ser resolvido e 
da precisão que desejamos obter na solução. O critério adotado para parar 
as iterações de um processo numérico é chamado de critério de parada. 
Para encontrarmos as raízes ou zeros de uma função iremos utilizar métodos 
numéricos iterativos. Portanto, teremos que abordar todos esses aspectos nos 
métodos que utilizaremos. 
Como mencionado acima, o primeiro passo para resolver um processo iterativo 
corresponde a obtenção de uma estimativa inicial para o resultado do 
problema. No caso de zeros de funções, essa operação é chamada de 
isolamento de raízes, que veremos na seção seguinte. 
 
 
2.1 Isolamento das raízes 
Para determinarmos o número e a localização aproximada de raízes de uma 
função para obtermos uma estimativa inicial a ser usada nos processos 
iterativos, podemos examinar o comportamento dessa função através de um 
esboço gráfico ou de uma análise teórica. 
Método Gráfico 
Como já foi observado, determinar os zeros de f é equivalente a determinar as 
raízes da equação f(x) = 0. Tendo em vista esta observação o método gráfico 
consiste em: 
o Escrever f como uma diferença de funções g e h, ou sejam f = g – h onde 
possamos sem muito esforço esboçar os gráficos das funções g e h; 
o Usar f(x) = 0 ⇔ g(x) = h(x); 
o Esboçar, da melhor maneira possível, os gráficos de g e h e determinar por 
inspeção os intervalos onde estão os pontos de intersecção de g(x) e h(x), 
ou seja, os pontos xi onde g(xi) = h(xi) 
Exemplos: 
1) Determinar os zeros da função 22 −+= xe)x(f x 
Solução: f(x) = 0 ⇔ 022 =−+ xex ⇔ 22 xex −= 
Assim temos xe)x(g = e 22 x)x(h −= , veja o gráfico: 
 
 Portanto verificamos os zeros de f : x1 ∈ [ 2− ,0] e x2 ∈ [0, 2 ] 
 
2) Determinar os zeros da função x)xln()x(f += 
Solução: f(x) = 0 ⇔ 0=+ x)xln( ⇔ x)xln( −= 
Assim temos )xln()x(h = e x)x(g −= , veja o gráfico: 
 
 Portanto verificamos o zero de f : x ∈ [0,1] 
3) Determinar os zeros da função xe)x(f x 1−= 
Solução: f(x) = 0 ⇔ 01 =− xex ⇔ xex 1= 
Assim temos x)x(g 1= e xe)x(h = , veja o gráfico: 
 
 Portanto verificamos o zero de f : x ∈ [0,1] 
 
Uma vez mais salientamos que esboçar os gráficos de g e h da melhor forma 
possível facilitará a inspeção para determinar os intervalos onde estão os 
pontos de intersecção de g(x) e h(x). 
 
 
Cálculo Numérico aula 07
2.1 Isolamento das raízes 
O esboço gráfico nem sempre é a forma mais prática de se obter um intervalo 
que contém pelo menos uma raiz da função f(x). Muitas vezes é preciso se 
utilizar um método algébrico. 
Método Analítico 
Uma propriedade que pode ser usada para a localização de intervalos que 
contém a raiz consiste em: 
“se f(x) é uma função contínua no intervalo [a, b] e f(a).f(b) < 0 então 
existe pelo menos um valor r entre a e b que é zero de f(x)”. 
A propriedade acima afirma que f(a) ⋅ f(b) < 0 existirá obrigatoriamente uma raiz 
no intervalo [a, b]. 
É evidente que se f(a) ⋅ f(b) = 0, pelo menos um dos fatores f(a) e f(b) será uma 
raiz de f(x). 
Entretanto, se f(a) ⋅ f(b) > 0 não é garantida a não existência de raízes no 
intervalo [a, b]. 
 
Usando as informações e observando o gráfico acima, temos: 
o Intervalo [a1, b1], f(a1) < 0 e f(b1) > 0 ⇒ f(a1).f(b1) < 0 ⇒ existe pelo menos 
uma raiz no intervalo [a1, b1]. Observamos que r1 é a única raiz no intervalo 
[a1, b1]. 
o Intervalo [a2, b2], f(a2) = 0 e f(b2) < 0 ⇒ f(a2).f(b2) = 0. Neste caso a2 ou b2 é 
raiz. Como pode ser notado a2 é raiz de f(x). 
o Intervalo [a3, b3], f(a3) < 0 e f(b3) < 0 ⇒ f(a3) ⋅ f(b3) > 0. Embora o produto 
seja positivo, existem duas raízes no intervalo: r2 e r3. 
o Intervalo [b2, a3], f(b2) < 0 e f(a3) < 0 ⇒ f(b2) ⋅ f(a3) > 0 e no intervalo não 
existem raízes de f(x). 
A derivada da função é muito útil para reconhecer se no intervalo [a, b], tal que 
f(a) ⋅ f(b) < 0, existe mais de uma raiz. Se no intervalo a função é crescente 
temos f’(x) > 0 e, se a função for decrescente f’(x) < 0. Se o sinal da derivada 
não modificar no intervalo, então nesse intervalo existe uma e somente uma 
raiz ou zero. 
Para obter intervalos onde se localizam as raízes podemos construir uma 
tabela com valores atribuídos a x e calcular os valores correspondentes de f(x). 
Exemplos: 
i) seja a função: f(x) = x3 – 8x + 6 
Calculando f(x) para alguns valores de x temos: 
x -5 -4 -3 -2 -1 0 1 2 3 4 5 
f(x) -79 -26 3 14 12 6 -1 -2 9 38 91 
sinal - - + + + + - - + + + 
 A tabela pode ser construída com ajuda de uma planilha, da seguinte forma: 
o Nas células superiores, digamos C2, D2, ..., M2, foram digitados valores 
para x; 
o Na célula C3, foi inserida a fórmula f(x) = x3 – 8x + 6, digitando 
 = C2^3 - 8*C2 + 6 e a seguir ENTER; 
o Selecionando C3, a fórmula foi copiada para as células D3, E3, ..., M3; 
o Na célula C4, foi digitado = SE (C3 < 0; "-"; "+") para serem exibidos os 
sinais de f(x); 
o A seguir, a fórmula de C4 foi copiada para as células D4, E4, ..., M4. 
Na tabela verifica-se que ocorre mudança de sinal nos intervalos: 
[-4, -3], [0, 1] e [2, 3] 
 Como a função é polinomial do terceiro grau, teremos apenas 1 raiz em cada 
um dos intervalos. 
i) seja agora a função: g(x) = 50x3 – 65x2 + 26x – 3. 
Calculando f(x) para alguns valores de x temos: 
x -1 0 1 2 3 
g(x) -144 -3 8 189 840 
sinal - - + + + 
Observa-se na tabela apenas uma mudança de sinal no intervalo [0, 1]. Pode-
se esperar que exista 1, ou 2 ou 3 raízes nesse intervalo. 
Devido à incerteza, vamos analisar os intervalos onde a função é estritamente 
crescente ou decrescente. Para isso, podemos derivar a função e fazer uma 
análise da mesma. 
Neste caso teremos: g’(x) = 150x2 – 130x + 26. 
Estudando a variação do sinal de g'(x): 
 ... g’(x) é uma função do 2º grau, logo: ∆ = 1302 – 4.150.26 = 1300 ⇒ 
e obtemos, x1 ≅ (130 + 36,05)/300 = 0,554 e, x2 = (130 - 36,05)/300 = 0,31. 
Como, nessa função A > 0, teremos: 
o g’(x) > 0 (função crescente) para x < 0,31 ou x > 0,554 e, 
o g’(x) < 0 (função decrescente) para 0,31 < x < 0,554. 
Vamos completar a tabela com os valores de x e f(x) para 0,31 e 0,554, temos: 
(ainda contando com o auxilio da planilha ...) 
x -1 0 0,31 1 0,554 2 3 
g(x) -144 -3 0,303 8 -0,044 189 840 
sinal - - + + - + + 
Da nova tabela pode-se concluir que existe uma raiz emcada um dos 
intervalos [0, 0.31], [0.31; 0.554] e [0.554; 1]. 
Encerrando essa seção, observamos que na fase de isolamento de raízes 
podemos aliar os métodos, gráfico e analítico, para determinar os intervalos 
onde estão localizados os zeros da função. Em particular, se empregamos uma 
planilha para tentar esboçar gráficos de f(x), poderemos também aplicar o 
método analítico. 
 
Cálculo Numérico aula 08
2.2 Refinamento 
Existem vários métodos numéricos de refinamento de raiz. A forma como se 
efetua o refinamento é diferencia os métodos. Todos eles pertencem à classe 
dos métodos iterativos. 
Um método iterativo torna possível determinar um valor aproximado para o ou 
os zeros de uma função. Consiste em executar instruções, passo a passo tendo 
como base o resultado anterior, sendo que algumas dessas instruções são 
repetidas. 
O processo deve ser continuado até que se atinja um resultado próximo ao 
esperado ou cujo erro seja inferior a um valor conhecido. 
Seja uma função f(x) com uma raiz r no intervalo [a, b]. 
Uma raiz r’ é dita aproximada com a precisão ε, se 
(1) |r’ – r| < ε, ou 
(2) r’ ∈ [a, b] e b – a < ε. 
No primeiro caso, a raiz exata deve ser conhecida, o que geralmente não 
acontece. 
Para o segundo caso, r´ pode ser qualquer valor pertencente ao intervalo. 
Nos itens a seguir veremos alguns métodos para o refinamento das raízes. 
Método da Bissecção 
O princípio fundamental do método da bissecção consiste em localizar a raiz 
em um intervalo [x1, x2], onde a função é estritamente crescente ou 
estritamente decrescente, é considerar a raiz aproximada como o ponto médio 
desse intervalo, ou seja, a raiz será: 
2
)( 21 xx + . 
Para que a raiz pertença a tal intervalo, nas condições citadas, devemos ter 
f(x1).f(x2) < 0. 
Nesta consideração o erro cometido será menor ou igual à metade da 
amplitude do intervalo [x1, x2]. 
Isto é: erro = ε < | x1, x2|. Veja figura: 
 
Para tornar o erro menor, pode-se dividir o intervalo em dois intervalos de 
amplitude igual à metade da amplitude do intervalo anterior. 
Para isso, tomemos 
2
)( 21
3
xxx += . 
A raiz estará no intervalo ⎥⎦
⎤
⎢⎣
⎡ +
2
)(, 211
xxx se 0)
2
)(()( 211 <
+
⋅
xxfxf , 
... caso contrário, ela estará no intervalo ⎥⎦
⎤
⎢⎣
⎡ +
2
21 ,
2
)( xxx 
Veja figura: 
 
A repetição do processo fará com que, a cada iteração o ponto médio do 
intervalo se aproxime cada vez mais da raiz. Assim, o processo deverá ser 
continuado até que se obtenha uma aproximação com erro inferior ao 
solicitado. 
Como o processo é iterativo (repetições de cálculos) podemos usar a planilha 
para facilitar os cálculos. 
Vejamos exemplos práticos: 
1) considere a função: f(x) = 5x2 + ln |2x – 3| - 3 
Vamos pesquisar os zeros, considerando um erro menor ou igual a 0,001. 
Inicialmente, empregando o editor gráfico da planilha vamos plotar o gráfico 
da função: 
 
Podemos empregar os métodos para isolamento das raízes, más observando o 
gráfico, podemos notar que existem duas raízes: uma no intervalo [-1, 0] e 
outra no intervalo [0, 1]. 
Utilizaremos o intervalo [0, 1] para empregar o método da bissecção para 
encontrar uma aproximação para a raiz pertencente a esse intervalo. 
Empregando a planilha, siga as instruções: 
 i) identificando as colunas: – usaremos as células indicadas: 
 
 ii) especificando os conteúdos das células: 
o x1 em C10 – digite o limite inferior do intervalo (no caso, 0); 
o (x1+x2)/2 em D10 – ponto médio do intervalo. Digite = (C10 + E10)/2 e, 
ENTER. 
(Lembre-se que para exibir as referências às células você pode clicar na célula.) 
o X2 em E10 – digite o limite superior do intervalo (no caso, 1) 
o f(x1) em F10 – digite, = 5*C10^2 + ln(ABS(2*C10 – 3)) – 3 e, ENTER. 
A função ABS calculará o valor absoluto de 3x – 2. 
o f((x1+x2)/2) e f(x2), respectivamente em G10 e H10: copie a fórmula da 
célula F10. 
o no cálculo da raiz em I10: digite: =SE(J10>=K10;"continua";D10). 
Esta coluna indicará até onde deve ser dado continuidade ao processo. 
O primeiro número após o texto "continua" será a raiz com erro menor 
 ou igual à precisão solicitada, que no caso é 0,001. 
o O erro será calculado em J10: digite: =ABS(ABS(C10)-ABS(D10)). 
 Nesta coluna você irá obter a amplitude do intervalo. 
Como estamos usando o ponto médio do intervalo o erro máximo 
 cometido será a metade da amplitude do intervalo [xi, xi+1]. 
o Em K10 digite o valor da precisão indicada no enunciado, no caso: 0,001. 
o Para a próxima iteração: em C11 digite: =SE(F10*G10<0;C10;D10). 
o Em D11 : copie a fórmula da célula D10. 
o E em E11 digite: =SE(F10*G10<0;D10;E10). 
As fórmulas das células C11 e E11, farão com que sejam 
escolhidos os limites inferior e superior do novo intervalo. 
o Nas células: F11, G11, H11 e I11 copie as fórmulas das células F10, G10, 
H10 e I10. 
o Reduzindo o intervalo, que é o erro, em J11 digite: = J10/2 
o E para anotar a precisão em K11 - digite: = K10. 
Copie as fórmulas das células C11 a K11 para as células inferiores... 
Selecione todas as células e arraste para as células inferiores. 
iii) concluindo, veja como ficam os valores calculados ao usar a planilha: 
 
Na célula I19 temos a raiz aproximada da equação com erro inferior a 0,001, 
em 10 iterações. 
Note que: “o número de algarismos após a vírgula deve se igual ao número de 
algarismos após a vírgula exibido na previsão do erro (0,001). 
Desta forma, a raiz da equação resolvida é 0,713 se usado o processo de 
truncamento ou 0,714 se usado o processo de arredondamento. 
O mesmo algoritmo pode ser usado para obter a aproximação da raiz no 
intervalo [-1, 0]. 
Neste caso basta substituir os valores 0 e 1 das células C10 e E10 por –1 e 0, 
respectivamente. 
E para usar novamente essa planilha para outra funções, basta copiar o 
conteúdo do intervalo de células C10 até K11 para outra região na planilha, 
digamos a partir da célula C30 e recomeçar o trabalho modificando a função 
digitada nas células F10, G10 e H10. Esse é nosso procedimento para o 
próximo exemplo... 
2) considere agora a função: f(x) = ex +x2 - 2 
... empregando o método gráfico conseguimos isolar dois intervalos dos zeros 
dessa função, veja a ilustração: 
 
 Portanto verificamos os zeros de f : x1 ∈ [ 2− ,0] e x2 ∈ [0, 2 ] 
Vamos calcular o valor aproximado para a raiz x2 que está no intervalo [0, 2 ], 
adotando uma precisão de 0,0001. 
Veja a solução: 
 
Obtemos a raiz x2 = 0,70702 com erro inferior à precisão desejada de 0,0001 
em 14 iterações. 
Cálculo Numérico aula 09
2.2 Refinamento 
Método de Newton-Raphson 
Seja f(x) uma função cujas raízes devem ser determinadas com uma precisão 
menor ou igual a certo valor ε dado. 
O método consiste em uma série de aproximações do zero de f(x) usando 
como raiz aproximada o zero da equação da reta tangente à curva f(x), ou 
seja, a interseção da tangente com o eixo horizontal. 
Para uma visualização, considere um ponto xn+1 que é obtido traçando-se a 
tangente ao gráfico da função f(x) no ponto (xn, f(xn)), a intersecção da reta 
tangente com o eixo horizontal fornece a nova aproximação xn+1. Vide figura: 
 
A equação da reta tangente à curva f(x) no ponto (x0, y0), onde y0 = f(x0), é: 
y – f(x0) = f’(x0).(x – x0). 
Se a intersecção da tangente intercepta o eixo horizontal no ponto de abscissa 
 x = x1, teremos y = f(x1) = 0. 
Substituindo os valores (x1, 0) na equação da tangente: 
0 – f(x0) = f’(x0).( x1 – x0) 
- f(x0) = f’(x0). x1 – f’(x0).x0 
 f’(x0).x1 = f’(x0). x0 - f(x0) 
Dividindo todos os termos por f’(x0) resulta: 
 x1 = x0 - f(x0)/f’(x0) 
Como cada raiz é função da raiz anterior podemos escrever a equação acima 
sob forma de uma função que pode ser indicada na forma: 
 g(x) = x – f(x)/f’(x) 
Algebricamente, o algoritmo (ou procedimento) consiste em: 
(1º passo) definir a função g(x) = x – f(x)/f’(x) 
(2º passo) escolhe-se um valor qualquer x0 para x 
(3º passo) calcula-se a raiz x1, fazendo x1 = g(x0)Se | x0 – x1| < ε, então x1 é uma raiz aproximada de f(x), o que finaliza o 
processo pois já foi encontrada a raiz com a aproximação desejada. 
Caso contrário, continua o processo fazendo x2 = g(x1) e assim se prossegue 
até xn = g(xn-1) quando | xn - xn-1| < ε. 
 
Exemplos 
Vejamos como construir esse algoritmo na planilha para determinar uma 
aproximação para cada zero de uma dada função. 
1) Tomemos a função f(x) = x2 – 2,15x – 9,37, da qual se pretende determinar os 
zeros com aproximação inferior a 0,001. 
A derivada de f(x) é: f’(x) = 2x – 2,15. 
1º passo: “determinar a função g(x) = x – f(x)/f’(x)” 
Temos então: g(x) = x – (x2 – 2,15x – 9,37)/(2x – 2,15). 
2º passo: “escolher um valor qualquer x0 para x” 
i) localizar os intervalos de raízes através do método gráfico: 
 
Observamos a existência de duas raízes: x1 próxima de –2 e x2 próxima de 4. 
Determinemos inicialmente a raiz x2. 
ii) vamos escolher um “valor x0” que esteja mais próximo de x2 que de x1. 
Nota: se o número estiver mais próximo de x1 que de x2, será obtida a raiz x2. 
Tomemos por exemplo x0 = 3. 
Usando a planilha... 
As células indicadas na figura abaixo servirão para referências. Você pode usar 
qualquer outro conjunto de células. 
Lembre-se que ao usar uma fórmula, não há necessidade de digitar a identificação da célula, 
basta clicar sobre a mesma que automaticamente a célula será exibida na fórmula. 
3º passo: “calcular raiz x1, fazendo x1 = g(x0), etc.” 
 i) Identificar os elementos envolvidos, vide figura: 
 
 
ii) preencher as células: 
o Célula K2 – digite o valor atribuído a x0., conforme indicado no 3º passo: 3 
o Célula L2 – digite = K2 - (M2)/(2*K2-2,15). Você estará calculando g(3). 
o Célula M2 – digite a fórmula =K2^2 - 2,15*K2-9,37. 
Você estará calculando f(3). 
o Célula N2 – digite a fórmula =SE(ABS(L2-K2)>O2;"continua";L2). Você 
estará indicando a raiz quando a mesma satisfizer a condição erro < ε, que 
no caso ε = 0,001. 
o Célula O2 – digite o valor do limite do erro, ou seja, o valor de ε que é 0,001. 
o E agora as iterações: 
o Célula K3 – digite a fórmula = L2. Você copiará o valor de g(xi – 1) 
considerado como a próxima raiz. 
o Célula O3 – digite a fórmula = O2. Você copiará o valor do erro para a 
próxima célula. 
A vantagem de se copiar o valor da célula O2 é que bastará substituir o valor 
do erro desejado na célula O2 que o mesmo será exibido nas demais células 
da coluna O. 
o Selecione as células L2, M2 e N2 e copie as fórmulas para as células L3, 
M3 e N3, respectivamente. 
o Selecione agora as células K3, L3, M3, N3 e O3 e copie as formulas para as 
células para as linhas 4 a 11. 
Concluindo: o primeiro valor exibido na coluna N, após o último “continua” é a 
raiz aproximada com erro inferior a ε. 
Veja como ficou a execução do algoritmo: 
 
IMPORTANTE: na raiz deve-se considerar a mesma quantidade de algarismos 
após a vírgula que os apresentados no limite ε do erro aceitável. Você pode 
usar o processo de arredondamento ou de truncamento. 
Portanto uma das raízes da função f(x) = x2 – 2,15x – 9,37 com erro inferior a 
0,001 é 4,319, resultado este obtido na célula N5, em 3 iterações. 
 
Vamos calcular agora a outra raiz x1 
Selecione as células de J1 a O11. Copie as células (use Ctrl + C) e, 
clicando na célula J15 cole o conteúdo copiado (use Ctrl + V). 
 
Substitua o conteúdo da célula K16 por um valor próximo da outra raiz x1. , no 
caso, o número 3 exibido na célula K2 por 0. 
Vejamos a execução do algoritmo: 
 
 
Veja que na célula N20, vide figura acima, é exibido o valor dessa outra raiz, ou 
seja, x1 = -2,169 também com erro inferior a 0,001, em 4 iterações. 
 
Podemos usar este mesmo algoritmo para calcular as raízes de qualquer 
equação. Basta substituir os conteúdos das células K2, L2, M2, N2 e O2. 
 
2) considere agora a função: f(x) = 5x2 + ln |2x – 3| - 3 
Pretende-se determinar os zeros com aproximação inferior a 0,001. 
A derivada de f(x) é: f’(x) = 10x + 2/(2x-3). 
1º passo: “determinar a função g(x) = x – f(x)/f’(x)” 
Temos então: g(x) = x – (5x2 + ln |2x – 3| - 3)/( 10x + 2/(2x-3)). 
2º passo: “escolher um valor qualquer x0 para x” 
i) vamos localizar os intervalos de raízes através do método analítico: 
 
Temos duas raízes: podemos escolher x1 próxima de - 0,5 e x2 próxima de 0,5. 
Determinemos inicialmente a raiz x1. 
ii) vamos escolher um “valor x0” mais próximo de x1, x0 = -0,5. 
Na planilha... 
3º passo: “calcular raiz x1, fazendo x1 = g(x0), etc.” 
 i) Identificando os elementos envolvidos ... 
 
ii) preenchemos as células ... 
Vejamos a execução do algoritmo: 
 
Determinamos a raiz x1 = - 0,563, da função f(x) = 5x2 + ln |2x – 3| - 3, com erro 
inferior a 0,001 em 2 iterações. 
Vamos agora calcular a outra raiz: x2 
Aplicando o algoritmo a partir do valor inicial x0 = 0,5 obtemos: 
 
Ou seja, a raiz x2 = 0,713, da função f(x) = 5x2 + ln |2x – 3| - 3, é obtida com erro 
inferior a 0,001 em 3 iterações. 
Cálculo Numérico aula 10
2.2 Refinamento 
Método da Secante 
Este processo para determinação de aproximações das raízes de uma função 
f(x) é semelhante ao método de Newton-Raphson. Nele, a equação da reta 
tangente é substituída pela equação da secante que corta a curva da função 
em dois pontos cujas abscissas definem um intervalo onde está contida a raiz. 
Tomemos, por exemplo, o gráfico: 
 
No gráfico, r é a raiz de f(x). Tomemos os pontos de abscissas x = x0 e x = x1 e 
tracemos a secante S1. 
A equação da secante que passa pelos pontos (x0, f(x0)) e (x1, f(x1)) é 
)xx(
xx
)x(f)x(f)x(fy 1
01
01
1 −⋅⎟⎟
⎠
⎞
⎜⎜
⎝
⎛
−
−
=− 
Podemos considerar como primeira aproximação para a raiz de f(x) o valor x2 
que corresponde à abscissa do ponto onde a secante corta o eixo horizontal. 
Para este ponto x = x2 e y = 0. 
Substituindo os valores na equação da secante, resulta: 
⎟⎟
⎠
⎞
⎜⎜
⎝
⎛
−
−
⋅−=⇔−⋅⎟⎟
⎠
⎞
⎜⎜
⎝
⎛
−
−
=−
)x(f)x(f
xx)x(fxx)xx(
xx
)x(f)x(f)x(f
01
01
11212
01
01
10 
Por x2 e x1 tracemos a secante S2. A interseção da secante com o eixo 
horizontal, cuja abscissa é x = x3, é a segunda aproximação para a raiz de f(x). 
Conforme deduzido, 
⎟⎟
⎠
⎞
⎜⎜
⎝
⎛
−
−
⋅−=
)x(f)x(f
xx)x(fxx
1
12
223 2
 
Continuando o processo, a aproximação de ordem n será: 
⎟⎟
⎠
⎞
⎜⎜
⎝
⎛
−
−
⋅−=
−
−
+ )x(f)x(f
xx)x(fxx
nn
nn
nnn
1
1
1 
O processo deve continuar até que | xn + 1 – xn | < ε. 
Vamos usar a planilha para implementar um algoritmo que permite determinar 
tais raízes. 
Como exemplo, vamos determinar os zeros da função f(x) = ln |x| – e-3x com 
erro inferior a 0,0001. 
Passo 1 – vamos plotar a função para poder tomar dois pontos para 
determinação da equação da secante: 
 
Um cuidado a ser tomado na escolha dos pontos para se obter a primeira 
secante. 
o Seja, por exemplo, uma função cujas raízes são r1 e r2, tais que r1 < r2. Na 
determinação da raiz r2, ao escolher as abscissas x0 e x1 para o traçado da 
secante, deve-se fazê-lo de modo que a secante intercepte o eixo horizontal 
em um ponto x2 tal que x2 > r1. 
o Para determinação de r1, a escolha de x0 e x1 deve ser tal que a secante 
corte o eixo horizontal em um ponto de abscissa x2 tal que x2 < r2. Este 
procedimento evita a divergência do processo. 
Passo 2 – Identificação das colunas. 
Identifique as colunas conforme indicado na figura abaixo. 
 
Passo 3 – Preenchimento das células. 
o Preencha as células A7 e B7 com quaisquer valores para x no intervalo de 
definição da função: digamos 2 e 4, respectivamente. 
o Na célula C7 – digite =B7-E7*(B7-A7)/(E7-D7): é o cálculo da aproximação 
xn+1 para a raiz. 
o Na célula D7 – digite =LN(ABS(A7)) - EXP(-3*A7): é o cálculo do valor de 
f(x), onde x é o conteúdo da célula A7. 
o Nas células E7 e F7: copie a fórmula da célula D7. 
o Na célula G7 – digite =SE(ABS(C7-B7)>=H7;"continua";C7): na coluna G, 
seleciona-se a aproximação para a raiz com a previsão de erro. 
o A raiz será o primeiro númeroapós a indicação “continua”. 
o Na célula H7 – digite o valor da estimativa para o erro. 
o Na célula A8 – digite =B7 para copiar o valor xn. 
o Na célula B8 – digite =C7 para copiar o valor de xn+1. 
o Selecione as células D7, E7, F7, G7 e copie as fórmulas para as células D8, 
E8, F8, G8. 
o Na célula H8 – digite =H7 para copiar o valor do erro. 
o Selecione as células A8 até H8: copie as fórmulas paras as células abaixo 
até a linha 24. 
Veja como ficou a tabela: 
 
A raiz da equação é então 1,0445 com erro inferior a 0,0001 em 12 iterações. 
Note que o número de dígitos após a vírgula deverá ser igual ao número de 
dígitos após a vírgula apresentados no erro. 
Outra observação é que a repetição das cópias da linha 8 no exemplo, poderia 
ir até a linha 19, pois uma vez que alcançamos a raiz dentro da precisão 
desejada, alcançamos o zero da função em f(xn) e conseqüentemente temos o 
indicativo de divisão por zero (#DIV/0!) 3 iterações (ou linhas na planilha) 
depois ... Em um aplicativo computacional, estabelecemos o encontro da raiz 
(coluna G) como critério de parada: uma vez alcançada encerra-se o 
processamento e se apresenta o resultado. 
Em complemento ao algoritmo acima, podemos acelerar a convergência se 
conhecemos um intervalo onde se localiza a raiz, por exemplo, usando o 
método gráfico na função obtemos: 
 
Temos um zero no intervalo: x ∈ [1.0, 1.2]. 
E ao indicar esse intervalo como [xn – 1 , xn] para os valores iniciais, obtemos: 
 
Uma resposta em apenas 3 iterações com a precisão desejada. 
2.3 Comparação entre métodos 
Uma comparação entre métodos deve levar em consideração vários critérios 
entre os quais: garantia de convergência, rapidez de convergência e esforço 
computacional. 
Observamos que o único dado que os exemplos vistos fornecem para se medir 
a rapidez de convergência é o número de iterações efetuadas e, como 
constatamos tudo dependerá dos valores com que se iniciam a execução do 
método. 
E para ilustrar a comparação vamos determinar a raiz de uma função aplicando 
os três métodos após determinar um intervalo que contenha uma raiz: 
Seja a função )xcos(e)x(f x −= −
2
: 
Aplicando o método analítico obtemos: 
 
O intervalo que contem a raiz será x ∈ [1, 2] vamos determinar seu valor com 
uma precisão de 0,0001 (ou 10-4) . 
Aplicando o método da bissecção obtemos: 
 
E agora aplicando o método de Newton: 
 
 
 
Finalmente com o método da secante: 
 
Como observamos, o método de Newton-Raphson é o mais rápido se 
consideramos o meio do intervalo inicial, x = 1.5, e os outros dois foram mais 
lentos embora determinassem a raiz dentro da precisão esperada. 
A desvantagem seria obter a derivada da função em estudo, e aí o método da 
secante apresenta uma facilidade em sua implantação, mesmo com algumas 
iterações a mais, se comparado com o método de Newton-Raphson. 
Concluindo, temos que observar que o sucesso na utilização de qualquer dos 
métodos estará associado ao isolamento adequado das raízes e também na 
escolha de intervalos mais precisos para ter valores iniciais mais próximos do 
valor do zero da função. 
Cálculo Numérico aula 11
3. Resolução de Sistemas de Equações Lineares 
Um sistema linear consiste em um conjunto de n equações lineares envolvendo 
m variáveis (xi). Uma equação linear é aquela que só apresenta termos que são 
proporcionais às variáveis (termos do tipo ai⋅xi), isto é, não apresenta nenhuma 
função aplicada a variável xi, como xn, ln(x), cos(x), como ilustrado abaixo 
envolvendo m variáveis (x1, x2, x3,...,xm): 
a1⋅x1 + a2⋅x2 + a3⋅x3 +... + am⋅xm = b 
Um sistema linear quadrado é aquele em que o número de variáveis é igual ao 
número de equações (m=n). Portanto, um sistema linear quadrado pode ser 
escrito na forma: 
a11⋅x1 + a12⋅x2 + a13⋅x3 +... + a1n⋅xn = b1 
a21⋅x1 + a22⋅x2 + a23⋅x3 +... + a2n⋅xn = b2 
a31⋅x1 + a32⋅x2 + a33⋅x3 +... + a3n⋅xn = b3 
. 
. 
. 
an1⋅x1 + an2⋅x2 + an3⋅x3 +... + ann⋅xn = bn 
Resolver um sistema linear significa encontrar os valores numéricos das 
variáveis x1 , x2 , x3 ,..., xn que satisfazem todas as equações do sistema. 
Duas perguntas fundamentais devem ser feitas em relação a um sistema linear: 
o Existe solução para o sistema linear? 
o Em caso afirmativo, será que ela é única? 
Cada sistema linear estudado deve ser analisado para se obter respostas para 
essas perguntas. Três casos são possíveis: 
o O sistema não possui nenhuma solução (sistema impossível); 
o O sistema possui uma solução (sistema possível e único); 
o O sistema possui infinitas soluções. 
É preciso manter em mente essas três possibilidades de comportamento de um 
sistema linear a fim de evitar surpresas e poder interpretar a solução de um 
problema. 
Sistemas de equações lineares aparecem com bastante freqüência na 
resolução de problemas práticos envolvendo as mais variadas situações. 
Estima-se que aproximadamente 75% dos problemas científicos envolvem a 
resolução de um sistema de equações linear. 
Os métodos usados na resolução de sistemas lineares podem ser de dois 
tipos: diretos ou iterativos. 
o Métodos diretos são aqueles que, a menos de erros de arredondamento, 
fornecem a solução exata do sistema linear, caso ela exista. 
o Métodos iterativos são equivalentes àqueles vistos no cálculo de zeros de 
funções reais: a partir de uma estimativa inicial, repetimos determinado 
cálculo diversas vezes, utilizando sempre a estimativa da etapa anterior 
como estimativa para a etapa seguinte. 
 
3.1 Métodos diretos 
No Ensino Médio e Fundamental, bem como na disciplina Álgebra Linear, 
foram discutidos métodos diretos para resolução de sistemas lineares. 
Entre estes métodos, encontram-se: 
1) Regra de Cramer onde xi = det(Mi)/det(M) onde M é a matriz formada pelos 
coeficientes das variáveis e Mi é a matriz obtida ao substituir a coluna 
correspondente aos coeficientes da variável xi pelos termos independentes. 
2) Inversão de matrizes, método este que consiste em transformar o sistema 
na equação matricial A.X = B, onde A é a matriz formada pelos coeficientes das 
variáveis, B é a matriz (vetor coluna) formada pelos termos independentes. Na 
solução faz-se X = A-1.B. 
3) Escalonamento de matrizes, que consiste em transformar a matriz dos 
coeficientes em uma matriz triangular (aij = 0 quando i > j). 
 
Resolução de sistemas lineares triangulares 
Seja um sistema linear de variáveis x1, x2, x3,...,xn sendo aij⋅ o coeficiente da 
variável xj na equação i. Um sistema, assim definido, é dito sistema linear 
triângulo se para todo aij com i < j, tem-se aij = 0. 
Veja um sistema triangular genérico: 
a11⋅x1 + a12⋅x2 + a13⋅x3 +... + a1n-1⋅xn-1 + a1n⋅xn = b1 
 a22⋅x2 + a23⋅x3 +... + a2n-1⋅xn-1 + a2n⋅xn = b2 
 a33⋅x3 +... + a3n-1⋅xn-1 + a3n⋅xn = b3 
. 
. 
. 
 an-1n-1⋅xn-1 + an-1n = bn-1 
 ann⋅xn = bn 
O sistema triangular é de fácil solução, pois basta calcular o valor da variável xn 
na última equação e, em seguida, substituir o valor encontrado na penúltima 
equação. Segue-se o processo usando os valores encontrados anteriormente 
para a equação anterior até chegar à primeira equação e aí obter o valor de ⋅x1. 
Isto é: 
Da última equação obtém-se: xn = bn/ann 
Da penúltima equação an-1,n-1xn-1 + an-1,nxn = bn e usando o valor de xn, 
teremos: xn – 1 = [bn-1 - an-1,nxn]/an-1,n-1. 
Sucessivamente se obtém xn–2 ,..., x2, x1, 
onde x1 = [b1 – (a12x2 +...+ a1,n-1xn-1 + a1nxn)]/a11. 
 
Pode-se resolver o sistema manualmente, porém, como a solução admite uma 
seqüência lógica, podemos usar uma planilha ou um aplicativo para resolvê-lo. 
Vamos usar uma planilha, observe a seqüência: 
1) Construa uma tabela com os coeficientes das variáveis e os termos 
independentes conforme indicado: 
 
2) Na célula J10 digite: =H10/G10 para calcular o valor da variável x1. Lembre-
se que para exibir o valor da célula basta clicar na mesma. 
3) Na célula J11 digite: =(H11-G11*J10)/F11 para calcular o valor de x2. 
4) Na célula J12 digite:

Outros materiais