Escolar Documentos
Profissional Documentos
Cultura Documentos
Aula 01 - 25/nov/2020
Wilson H. Hirota
wilson.hirota@unifesp.br
Objetivos
• Gerais
◦ Introduzir os métodos clássicos utilizados na resolução numérica de problemas
matemáticos aplicados à Engenharia e Ciências
• Especı́ficos
◦ Capacitar os alunos a implementar computacionalmente os métodos numéricos
clássicos
◦ Capacitar o aluno a:
• Obter a solução de sistemas de equações algébricas lineares
• Obter as raı́zes de uma equação algébrica não linear
• Fazer o ajuste de curvas a dados experimentais
• Aplicar os métodos de interpolação e integração numérica e estimar os
erros associados.
• Metodologia
◦ Aulas teóricas expositivas e aulas práticas com resolução de exercı́cios em
computador (Scilab)
2 / 80
Bibliografia
• Burden, R. L.; Faires, J. D. Análise Numérica. São Paulo, SP: Cengage Learning,
2008.
• Burian, R.; Lima, A. C. Cálculo Numérico. Editora LTC, 2007
• Chapra, S. C.; Canale, R. P. Métodos Numéricos para Engenharia. 5o ed. São
Paulo: McGraw-Hill, 2008
• Franco, N. M. B. Cálculo Numérico. Editora Pearson Prentice Hall, 2007
• Ruggiero, M. A. G.; Lopes, V. L. R. Cálculo Numérico - Aspectos Teóricos e
Computacionais. 2o ed. Editora Makron Books do Brasil, 1996
• Sperandio, D.; Mendes, J. T.; Monken e Silva, L. H. Cálculo Numérico:
Caracterı́sticas Matemáticas e Computacionais dos Métodos Numéricos. Editora
Prentice-Hall, 2003
• Cunha, M. Cristina C. Métodos Numéricos. Editora Unicamp, 2009
• Arenales, S.; Darezzo, A. Cálculo Numérico: Aprendizagem com apoio de
software. Editora Thomson Learning, 2008
• Asano, C. H.; Colli, E. Cálculo Numérico: Fundamentos e Aplicações. São Paulo:
USP, 2009
(<https://www.ime.usp.br/˜asano/LivroNumerico/LivroNumerico.pdf>)
3 / 80
Computação Numérica
• Introdução/Motivações
4 / 80
Computação Numérica
• Introdução/Motivações
5 / 80
Computação Numérica
• Introdução/Motivações
◦ A utilização de simuladores matemáticos ou numéricos requer a execução de
uma sequência de etapas bem definidas
∂
(ρϕ) + ∇ · (ρvϕ) = σV˙ φ − ∇ · jφ
∂t
1 Seborg, D. E.; Edgar, T. F.; Mellichamp, D. A. Process Dynamics and Control. [S.l.]: John Wiley & Sons,
2010
6 / 80
Computação Numérica
• Introdução/Motivações
◦ Uma vez estabelecidas as equações que descrevem o processo, o passo seguinte
será resolvê-las
• Erro relativo
Eabs = |x ∗ − x̄ |
10 / 80
Computação Numérica
• 1. Erro absoluto e Erro relativo
Eabs = |x ∗ − x̄ |
◦ Um defeito da definição de erro absoluto é que esta definição não leva em conta
a ordem de grandeza dos valores envolvidos
12 / 80
Computação Numérica
• 1. Erro absoluto e Erro relativo
◦ Por exemplo:
◦ Observe que nos dois exemplos o erro absoluto é o mesmo, embora o erro
cometido pela aproximação seja muito mais significativo no exemplo (b), pois,
em (a), o erro relativo é da ordem de 0.03%, e em (b), é da ordem de 41.6%
13 / 80
Computação Numérica
• 1. Erro absoluto e Erro relativo
◦ Observe que nas duas definições anteriores, os erros são calculados em relação
ao valor verdadeiro
|x ∗ − x̄ | ≤
onde é um limitante conhecido como erro máximo absoluto
− ≤ x ∗ − x̄ ≤ =⇒ x̄ − ≤ x ∗ ≤ x̄ +
isto é, x̄ é o valor aproximado da grandeza x ∗ com erro absoluto não superior a
.
14 / 80
Computação Numérica
• 1. Erro absoluto e Erro relativo
◦ Então, o erro absoluto aproximado (a ) e o erro relativo aproximado (δr ) serão
calculados da seguinte forma:
• Erro absoluto: a = x̄ k +1 − x̄ k
k +1
− x̄ k
x̄
• Erro relativo: δr =
x̄ k +1
|a | ≤ ou |δr | ≤
ou seja, os erros absolutos e relativos são usados como critério de parada nesta
sequência de aproximações
15 / 80
Computação Numérica
• 1. Erro absoluto e Erro relativo
◦ Se a relação |a | ≤ (ou |δr | ≤ ) for válida, supõe-se que x̄ k +1 é a solução do
problema dentro de uma tolerância pré-estabelecida; caso contrário devemos
proceder ao cálculo de outro termo da sequência
◦ Exemplo 01: Para resolver a equação do tipo f (x ) = x 2 − a = 0, com a > 0,
podemos utilizar o seguinte processo iterativo:
r0 = x0
1 a
rk +1 = rk + , k = 0, 1, 2, . . .
2 rk
Suponha que a = 2 e x0 = 1 (chute inicial), então:
rk +1 −rk
k rk rk +1 |rk +1 − rk | r
k +1
0 1 1.5 0.5 0.333333
1 1.5 1.416667 0.08333 0.058824
2 1.416667 1.414216 0.002451 0.001733
.. .. .. .. ..
. . . . .
16 / 80
Computação Numérica
• 1. Erro absoluto e Erro relativo
◦ Exemplo 01:
• Assim, dado um valor inicial arbitrário x0 , podemos através da expressão
anterior, gerar uma sequência soluções aproximadas r1 , r2 , r3 , . . .
Algarismos significativos
◦ Por exemplo:
• O valor aproximado π̄ = 3.14 para π = 3.1415926535 . . . tem 3 algarismos
significativos
• Por exemplo, zeros não são sempre algarismos significativos porque eles
podem ser necessários apenas para localizar a vı́rgula decimal
2 Não existe uma definição única na literatura para o conceito de algarismos significativos corretos.
Embora não sejam equivalentes, todas elas transmitem a mesma idéia.
23 / 80
Computação Numérica
• 2. Algarismos significativos
24 / 80
Computação Numérica
• 2. Algarismos significativos
◦ Exemplo 02:
• Algoritmo:
• Começando com e x = 1, some um termo de cada vez para estimar o
valor de e 0.5
• Em seguida, calcule o erro relativo e o erro relativo aproximado (δr ).
Observe que o valor verdadeiro é e 0.5 = 1.648721 . . .
• Repita o processo até que o erro relativo aproximado atenda o critério
de erro que garanta três algarismos significativos corretos, ou seja:
◦ Exemplo 02:
26 / 80
Computação Numérica
• 2. Algarismos significativos
◦ Neste sentido, o conceito de algarismos significativos tem duas implicações
importantes:
27 / 80
Computação Numérica
• 2. Algarismos significativos
28 / 80
Computação Numérica
• 3. Sistema de numeração posicional
29 / 80
Computação Numérica
• 3. Sistema de numeração posicional
parte fracionária
z }| {
k −1
x = ± dk −1 × β + . . . + d1 × β + d0 × β + d−1 × β −1 + d−2 × β −2 + . . . + d−l × β −l
1 0
| {z }
parte inteira
30 / 80
Computação Numérica
• 3. Sistema de numeração posicional
◦ Exemplo 04: A seguir, veja os valores posicionais para o número real +24.13
31 / 80
Computação Numérica
• 3. Sistema de numeração posicional
◦ Um sistema de numeração é determinado fundamentalmente pela base, que
indica a quantidade de sı́mbolos e o valor de cada sı́mbolo
◦ De um modo geral, podemos dizer que as bases numéricas mais importantes
em computação são:
• Base decimal: neste sistema, a base é igual a 10, e utilizamos 10 sı́mbolos
para representar um número d = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
32 / 80
Computação Numérica
• 3. Sistema de numeração posicional
◦ Apesar do sistema decimal (base 10) ser mais familiar a um ser humano,
normalmente um computador opera no sistema binário, pois um computador é
composto de chaves eletrônicas que podem ficar em apenas dois estados, ligado
e desligado
1 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1
◦ Todo este processo de conversão é uma fonte de erros que afeta o resultado
final dos cálculos em razão da limitação da representação de um número em
um computador
34 / 80
Computação Numérica
• 4. Conversão de base
Binário para decimal:
Este tipo de conversão é fácil e rápido, pois multiplicamos cada dı́gito pelo
seu valor posicional no sistema binário e somanos os resultados parciais
para obter o número no sistema decimal.
parte fracionária
z }| {
k −1
x = dk −1 × 2 + . . . + d1 × 2 + d0 × 2 + d−1 × 2−1 + . . . + d−l × 2−l
1 0
| {z }
parte inteira
35 / 80
Computação Numérica
• 4. Conversão de base
◦ Exemplo 05:
i. 1101 da base 2, para a base 10
1101 = 1 × 23 + 1 × 22 + 0 × 21 + 1 × 20 = 8 + 4 + 0 + 1 = 13
Portanto: (1101)2 = (13)10
ii. 110.11 da base 2, para a base 10
110.11 = 1×22 +1×21 +0×20 +1×2−1 +1×2−2 = 4+2+0+0.5+0.25 = 6.75
Portanto: (110.11)2 = (6.75)10
0.110 = 1 × 2−1 + 1 × 2−2 + 0 × 2−3 = 0.5 + 0.25 + 0 = 0.75
Portanto: (0.110)2 = (0.75)10
23 2
1 11 2
1 Portanto:
5 2
1 2 2
(23)10 = (10111)2
0 1 2
1 0
38 / 80
Computação Numérica
• 4. Conversão de base
39 / 80
Computação Numérica
• 4. Conversão de base
◦ Exemplo 07: Mudar a representação dos números:
i. 9.625 da base 10, para a base 2
Primeiramente, decompomos 9.625 como a soma de um número inteiro e
um número fracionário, ou seja:
9.625 = 9 + 0.625
40 / 80
Computação Numérica
• 4. Conversão de base
◦ Exemplo 07: Mudar a representação dos números:
ii. 0.125 da base 10, para a base 2
0.125 × 2 = 0.25
0.25 × 2 = 0.5
0.5 × 2 = 1.0
Portanto: (0.125)10 = (0.001)2
iii. 3.8 da base 10, para a base 2
Conversão da parte inteira: (3)10 = (11)2
Conversão da parte fracionária:
0.8 × 2 = 1.6
0.6 × 2 = 1.2
0.2 × 2 = 0.4
0.4 × 2 = 0.8
0.8 × 2 = . . .
Logo, (3.8)10 = (11.11001100 . . . )2 tem representação finita no sistema decimal,
mas representação infinita na base binária. Esse exemplo ilustra um caso de
erro de arredondamento
41 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ Conforme visto na seção anterior, um número é modificado para o sistema
binário antes de ser armazenado na memória do computador
◦ Contudo, ainda há questões que precisam ser abordadas:
◦ Um número inteiro sem sinal nunca pode ser negativo, e pode assumir
somente o valor 0 ou valores positivos, ou seja, [0, +∞]
Imax = 2n − 1
onde n é o número de bits alocado para representar um inteiro sem sinal
44 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.1. Representação de números inteiros
Em sala de aula...
50 em base binária → 1 1 0 0 1 0
Acrescente 2 bits à es- → 0 0 1 1 0 0 1 0
querda
◦ Portanto: (50)10 = (00110010)2
45 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.1. Representação de números inteiros
Na prova...
46 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.1. Representação de números inteiros
Relembrando....
Imax = 2n − 1
onde n é o número de bits alocado para representar um inteiro sem sinal
47 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.1. Representação de números inteiros
• A abaixo mostra o que ocorre se tentarmos armazenar um número
inteiro sem sinal que seja maior do que 15 em uma localização de
memória que pode manter somente 4 bits.
00
0 1
15
11
10
9 un
01
001
ma .
1100 11
12 13
so
1
3
0100 01
5
1
01
10
9 8
11
011
1 1000 1001
(0100)2 = (4)10
48 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.2. Representação sinal-magnitude
• Naturalmente é necessário representar também o sinal dos números inteiros
No método dos valores com sinal, o bit mais significativo (i.e. o primeiro bit)
define o sinal do número. Se for 0, o número é positivo. Se 1, o número
é negativo. Os bits restantes são usados para armazenar o número.
49 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.2. Representação sinal-magnitude
• Isso significa que em um computador de 32 bits, podemos utilizar somente
31 para representar o valor absoluto de um número (número sem sinal).
• Neste método, o intervalo disponı́vel para números inteiros sem sinal (de 0
até 2n − 1) é dividido em dois subintervalos iguais.
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
0 1 2 3 4 5 6 7 −0 −1 −2 −3 −4 −5 −6 −7
50 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.2. Representação sinal-magnitude
• Implicações:
00
+0 1
-7
11
10
001
6
2
-
1 0100
3
ai
5
010
r
7 un.
101
-0 -1
11
011
1 1000 1001 operação, a menos que o programa tenha
sido projetado para detectar essa ocorrên-
cia.
52 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
• O primeiro ponto a ser discutido, é o motivo da criação da notação em
ponto flutuante para representar números reais
• Normalmente, um computador aloca uma quantidade fixa de bits
para representar a parte inteira e a parte fracionária
• Por exemplo:
• No sistema decimal, para um total de 16 dı́gitos, considere o uso de
uma representação em ponto fixo, com 14 posições para armazenar a
parte inteira e 2 posições para armazenar a parte fracionária. A
precisão de um número real é perdida se tentarmos representar um
número decimal como 1,00234; o sistema armazena o número como
1,00.
• No sistema decimal, considere o uso de uma representação em ponto
fixo, com 10 posições para armazenar a parte inteira e 6 posições para
armazenar a parte fracionária, formando um total de 16 dı́gitos. A
precisão de um número real nesse sistema é perdida se tentarmos
representar um número decimal como 236154302345,00. O sistema
armazena o número como 6154302345,00; a parte inteira é muito
menor do que deveria ser.
53 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
55 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
x = sinal(m)β × β e
onde m é a mantissa, β ≥ 2 é a base e e é o expoente.
58 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
• Na representação em ponto flutuante, um número x , seja real ou binário, é
representado da seguinte forma normalizada:
x = sinal(m)β × β e
onde m é a mantissa, β ≥ 2 é a base e e é o expoente.
• Neste sistema de ponto flutuante, as seguintes condições devem ser
verificadas:
1. m = 0.d1 d2 . . . dn onde n ∈ N.
2. 1 ≤ d1 ≤ β − 1 e 0 ≤ di ≤ β − 1 para i = 2, . . . , n.
3. emin ≤ e ≤ emax onde emin , emax ∈ Z são números cujos valores
dependem da máquina utilizada. O sistema de Excesso (ou
bias) é o método utilizado para armazenar o expoente.
Sistema de Excesso
J • Neste sistema, os números inteiros positivos e negativos são armazenados
como números inteiros sem sinal.
• Para representar um número inteiro negativo ou positivo, um número in-
teiro positivo (chamado de bias) é adicionado a cada número para deslocá-
los uniformemente para o lado positivo
• O valor desse bias é 2m−1 −1, onde m é o tamanho de memória destinada
para armazenar o expoente.
60 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
• Por exemplo: para um sistema de 4 bits podemos expressar 16 números
inteiros, utilizando uma posição para o 0 e dividindo os outros 15
(24 − 1 = 15) para expressar os números inteiros de -7 a 8, conforme figura
abaixo.
-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1. m = 0.d1 d2 . . . dn onde n ∈ N
2. 1 ≤ d1 ≤ β − 1 e 0 ≤ di ≤ β − 1 para i = 2, . . . , n.
...
65 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
• As especificações para precisão simples e dupla são apresentadas na Tabela
abaixo
Parâmetro Precisão Simples Precisão dupla
número total de bits 32 64
sinal - número de bits 1 1
expoente - número de bits 8 11
mantissa - número de bits 23 52
bias - número inteiro 127 1023
67 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
• As especificações para precisão simples e dupla são apresentadas na Tabela
abaixo
Parâmetro Precisão Simples Precisão dupla
número total de bits 32 64
sinal - número de bits 1 1
expoente - número de bits 8 11
mantissa - número de bits 23 52
bias - número inteiro 127 1023
68 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
69 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
Parâmetro Precisão Simples Precisão dupla
número total de bits 32 64
sinal - número de bits 1 1
expoente - número de bits 8 11
mantissa - número de bits 23 52
bias - número inteiro 127 1023
70 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
Parâmetro Precisão Simples Precisão dupla
número total de bits 32 64
sinal - número de bits 1 1
expoente - número de bits 8 11
mantissa - número de bits 23 52
bias - número inteiro 127 1023
71 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
Parâmetro Precisão Simples Precisão dupla
número total de bits 32 64
sinal - número de bits 1 1
expoente - número de bits 8 11
mantissa - número de bits 23 52
bias - número inteiro 127 1023
72 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
Parâmetro Precisão Simples Precisão dupla
número total de bits 32 64
sinal - número de bits 1 1
expoente - número de bits 8 11
mantissa - número de bits 23 52
bias - número inteiro 127 1023
73 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
74 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
Parâmetro Precisão Simples Precisão dupla
número total de bits 32 64
sinal - número de bits 1 1
expoente - número de bits 8 11
mantissa - número de bits 23 52
bias - número inteiro 127 1023
77 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
• Exemplo 10: Considere o sistema F (10, 3, −2, 2), represente os números
x1 = 0.35, x2 = −5.175; x3 = 0.0123, x4 = 5391.3 e x5 = 0.0003 em ponto
flutuante na forma normalizada
• Solução:
78 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
79 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
overflow underflow overflow