UFRN/CT/DCA Nota de Aula 1 – Introdução aos Métodos

Propaganda
UFRN/CT/DCA
Nota de Aula 1 – Introdução aos Métodos
Computacionais e Estudo dos Erros
Prof. Anderson Cavalcanti
1. Métodos Computacionais
1.1. Contextualização
Muitos problemas de engenharia consistem em obter uma solução para um
determinado modelo matemático que representa um certo problema real conforme mostra
a Figura 1.
Método
Analítico
Problema
Real
Solução
Analítica
Modelo
Matemático
Método
Numérico
Algoritmo
Implementação
Computacional
Solução
Numérica
Figura 1 – Solução de um problema de Engenharia
Um método numérico apresenta uma solução que consiste de uma sucessão de
números que converge para o valor da solução real. Cada termo dessa sucessão deve
ser visto como uma aproximação que é possível calcular com um número finito de
operações elementares. É objetivo da análise numérica encontrar sucessões que
aproximem os valores exatos com um número mínimo de operações elementares.
Como um método numérico propõe uma solução com um número determinado de
operações, sua implementação computacional, usualmente, é simples. Dessa forma, a
capacidade de repetição e cálculo elementar dos computadores digitais é aproveitada
para se obter soluções confiáveis.
A escolha de um método numérico deve ser adotada, basicamente, quando: i) não
existe solução analítica do modelo matemático; ii) a solução analítica é muito complexa.
Dentre os problemas matemáticos que podem ser resolvidos por métodos numéricos
podemos citar: i) a solução de sistemas de equações; ii) a interpolação de funções; iii) a
resolução de derivadas e integrais; iv) a resolução de equações diferenciais; v) entre
outros.
1.2. Exemplo de um problema
A estatística estuda o comportamento de muitos fenômenos não-determinísticos a
partir de funções de densidade de probabilidade. Uma das funções mais conhecidas é a
distribuição gaussiana ou distribuição normal. Esta função é dada por:
f ( x) =
1
2πσ
⋅ e −( x −η )
2
/ 2σ 2
em que x é a variável aleatória que se deseja avaliar, η é a média desta variável e σ é o
seu desvio padrão. A probabilidade de a variável aleatória estar em uma faixa de valores
é dada por:
x2
P( x1 < x ≤ x 2 ) =
∫ f ( x)dx
x1
No entanto, a integral acima não possui solução analítica, ou seja, utiliza-se de
métodos numéricos para calculá-la.
2. Representação de Números no Computador
Os serem humanos representam quantidades através de números. O sistema de
numeração empregado é o decimal (base 10), ou seja, se constrói todos os números a
partir de 10 algarismos (0,1,...,9). O computador, por ser um dispositivo eletrônico digital,
entende apenas dois estados possíveis os quais são classificados como 0 e 1. Este
sistema de representação é conhecido como sistema binário (base 2).
Nesta nota de aula, para evitar dúvidas quanto a qual sistema se está utilizando,
será empregada a seguinte notação:
Notação: ( X ) y indica que o número X está sendo representado na base y .
2.1. Números Binários
Um número decimal pode ser representado de forma binária da seguinte forma:
(110100,111)2
= 1 × 2 5 + 1 × 2 4 + 0 × 2 3 + 1 × 2 2 + 0 × 21 + 0 × 2 0 + 1 × 2 −1 + 1 × 2 −2 + 1 × 2 −3 = (52,875)10
No exemplo acima, cada dígito binário é multiplicado por uma potência de dois. O
expoente da referida potência é a posição do dígito no número. Cada dígito binário é
chamado de bit. A Figura 2 ilustra melhor a afirmação.
Figura 2 – Posição dos dígitos na conversão de binário para decimal
Dado um número decimal, sua conversão para decimal é dada em duas etapas:
o Separa-se o número em sua parte inteira e sua parte fracionária. No caso do
número (52,875)10 teríamos (52 )10 e (0,875)10 ;
o Converte-se a parte inteira através do método das divisões sucessivas por
dois;
o Converte-se a parte fracionário através do método das multiplicações
sucessivas por dois;
o Concatena-se os resultados obtidos nas etapas anteriores.
O método das divisões sucessivas por dois é dado da seguinte forma:
Figura 3 – Método das divisões sucessivas por 2
Neste método, divide-se o número sucessivamente por dois até que se atinja o
valor 0. Feito isso, toma-se o resto das divisões como mostrado na Figura 3. Dessa forma,
conclui-se que (52 )10 = (110100 )2 .
O método das multiplicações sucessivas por dois é dado da seguinte forma:
Figura 4 – Método das multiplicações sucessivas por 2
Neste método, multiplica-se o número fracionário sucessivamente por dois. Deste
resultado, a parte inteira será o primeiro dígito do número na base 2 e a parte fracionária
é novamente multiplicada por 2. O processo é repetido até que a parte fracionária do
último produto seja igual a zero. Assim, conclui-se que (0,875)10 = (0,111)2 .
Conclui-se também, a partir da concatenação dos dois resultados obtidos, que
(52,875)10 = (110100,111)2 .
Quando a parte fracionária no método das multiplicações sucessivas por dois
nunca atinge zero, significa que o número não tem representação na base 2 com um
número finito de dígitos. Exemplo: (0,6 )10 = (?)2
Dessa forma, temos que (0,6 )10 = (0,10011001...)2 .
2.2. Representação de um número em uma base qualquer
De uma forma geral, um número x pode ser representado numa base β da
seguinte forma:
x = ± M ⋅ β EXP
d
d 
em que M =  11 + L + tt  é a mantissa do número; 0 ≤ d i < β ; i = 1, K , t ; EXP
β 
β
representa o expoente de β e assume valores entre I e S que são os limites inferiores e
superiores, respectivamente I ≤ EXP ≤ S ; t representa a quantidade de dígitos
significativos do sistema de representação.
Exemplo: representar o número (5,237 )10 através da notação apresentada.
2
3
7 
 5
5,237 = 0,5237 × 101 =  1 + 2 + 3 + 4  × 101
10 10 
10 10
Para armazenar o número acima, precisamos de, no mínimo, t = 4 e I = S = 1 .
Em um computador digital, β = 2 . Nessas máquinas, apenas uma pequena parte
dos número pode ser representada sem erros. Considerando um computador digital com
as seguintes características: t = 10 , I = −15 e S = 15 , analise os seguintes exemplos:
Exemplo de representação sem erros: representar o número
computador citado.
(52,875)10
no
(52,875)10 = (110100,111)2 = 0,110100111 × 2 6 =  11 +
2
1
0
1
0
0
1
1
1
+ 3 + 4 + 5 + 6 + 7 + 8 + 9  × 26
2
2
2
2
2
2
2
2
2 
Dessa forma, o número seria armazenado da seguinte forma no referido
computador digital:
0
1
1
0
1
0
0
1
1
1
0
0
0
1
1
0
Sinal da mantissa: 0 positivo, 1negativo.
Mantissa (10 bits)
Sinal do expoente: 0 positivo, 1negativo.
Expoente (4 bits)
A referida máquina possui, no total, 16 bits para armazenamento de um número.
Exemplo de representação com erros: representar o número
computador citado.
(0,1)10
no
(0,1)10 = (0,00011001100K)2 = 0,11001100110011K × 2 −3 =
1
0
0
1
1
0
0
1

=  1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + L × 2 −3
2
2
2
2
2
2
2
2

Representado na máquina citada teríamos:
0
1
1
0
0
1
1
0
0
1
1
1
0
0
1
1
O número exato (0,1)10 é representado como (0.09997558593750)10 . Observa-se,
dessa forma, que há um erro associado à representação do número.
Um parâmetro comumente utilizado para se avaliar a precisão de uma máquina é
dado por:
PRECISAO ≤
1
βt
Para o computador digital de 16 bits citado ( β = 2, t = 10 ), temos a seguinte
1
1
precisão t = 10 ≈ 10 −3 . Neste caso, a precisão da máquina é de aproximadamente 3
β
2
dígitos significativos corretos.
3. Teoria dos Erros
3.1. Definições
o Erro absoluto: Suponto que ~
p é uma aproximação de p , o erro absoluto
dessa aproximação é dado por E a = p − ~
p;
o Erro relativo: O erro relativo a aproximação de p por ~
p é dado por
~
p− p
.
Er =
p
3.2. Erro de arredondamento
Considerando a representação do número (50 )10 :
(50)10 = (110010)2 = 0,110010 × 2 6 =  11 +
2
0
1
1
0
0
1
0
0
0
0
0
1
0
0
1
0
+ 3 + 4 + 5 + 6  × 26
2
2
2
2
2
2 
0
0
1
1
0
O número imediatamente após o 50 que pode ser representado sem erros nesta
máquina é:
50 +
1
× 2 6 = 50,0625
10
2
Dessa forma, caso seja necessário armazenar o número p = 50,06 , o mesmo
representado na máquina através do seu número significativo mais próximo ~
p = 50,0625 .
~
Assim, o erro de arredondamento associado seria E a = p − p = 50,06 − 50,0625 = −0,0025 e
E
E r = a = −4,994 × 10 −5 .
p
O erro de arredondamento ainda pode ser encontrado quando do descarte das
casas decimais de modo a obter a quantidade de dígitos desejada em uma aproximação.
Exemplo: Deseja-se uma representação de p = 3,14159265358979323846 K com 6
dígitos. Nesse caso, escreve-se o número na forma decimal normalizada:
0,314159265358979323846K × 101
Dessa forma, basta arredondar o sexto dígito para o inteiro mais próximo:
~
p = 3,14150
3.3. Erro de truncamento
O erro de truncamento ocorre quando se substitui uma expressão matemática
complexa por expressões mais simples. Um exemplo clássico consiste em substituir uma
função complexa a ser integrada por uma série finita (Série de Taylor, por exemplo). Uma
2
x4 x6 x8
função como f ( x ) = e x pode ser escrita como f ( x ) ≈ 1 + x 2 +
. Dessa forma,
+
+
2! 3! 4!
qualquer operação que substitua a função por sua aproximação, irá produzir erro de
truncamento.
3.4. Propagação de Erros
Os erros podem ser propagados em máquinas que efetuam diversas operações.
Nestes casos, aconselha-se verificar a quantidade de dígitos significativos e a ordem de
prioridade para a realização dos cálculos.
Exemplo: Supondo uma máquina com 4 dígitos significativos e os seguintes
números: x1 = 0 ,3491 × 10 4 e x 2 = 0 ,2345 × 10 0 . Deseja-se efetuar duas operações descritas:
(x2 + x1 ) − x1 = (0,2345 × 10 0 + 0,3491× 10 4 ) − 0,3491× 10 4 = 0,3491× 10 4 − 0,3491× 10 4 = 0
x 2 + ( x1 − x1 ) = 0 ,2345 × 10 0 + (0,3491 × 10 4 − 0 ,3491 × 10 4 ) = 0,2345 × 10 0 + 0 = 0 ,2345 × 10 0
Percebe-se que, devido à prioridade de execução das operações e por causa da
quantidade de dígitos significativos, os resultados, que deveriam ser os mesmos para
ambas as operações, são diferentes.
4. Referências
Barroso, L.C.; Barroso, M. M. A.; Filho, F.F.C.; Carvalho, M.L.B.; Maia, M.L. Cálculo
Numérico com Aplicações. Ed. Harbra, 2ª ed., 1987.
Pires, P.S.M. Notas de Aula de Médotos Computacionais em Engenharia. UFRN.
Disponível em www.dca.ufrn.br/~pmotta, 2000.
Download