Teoria

Introdução

Fala moçada, beleza? Vamos dar início ao estudo de uma disciplina muuuuito bacana que é o Cálculo Numérico, o nosso objetivo aqui é estudar o uso de alguns métodos numéricos para resolução dos mais diversos problemas!!! Então fique tranquilo que seus problemas acabaram!

Nós devemos ter em mente que o computador, a máquina, vai fazer tudo para a gente! Ou seja, os métodos que veremos muitas vezes vão parecer cansativos e demorados se nos imaginarmos resolvendo eles, mas normalmente são moleza para uma máquina.

E por mais que uma máquina faça todas as contas para nós, nós nunca conseguimos nos livrar de um detalhe bem incômodo: os erros. Vamos falar muito deles nesse curso pois seu entendimento é super necessário para conseguirmos aplicar os métodos numéricos adequadamente.

Algarismos significativos

Antes de começar a estudar como os números são apresentados para as máquinas, vamos relembrar um assuntinho que nos acompanha desde o início dessa jornada nas Engenharias e Ciências Exatas. Consegue dar um palpite? Se você chutou Algarismos significativos, você está certíssimo.

Veja bem, os algarismos significativos de um número são aqueles que podem ser usados com confiança e geralmente corresponde ao número de algarismos corretos mais um estimado, também chamado de duvidoso, e esse algarismo duvidoso carrega com ele uma incerteza e é nela que mora o erro.

Observe a marcação em nossa régua, quantos centímetros ela está medindo?

Bom, podemos afirmar com certeza que ela está medindo mais que 2,2 e menos que 2,3 cm. O número exato que procuramos existe e mora no intervalo entre esses números, mas não podemos identificá-lo com certeza absoluta, não é?

Podemos colocar esse número mais perto do 2,2   c m ou mais perto do 2,3   c m . Mas qual vai estar certo? Não podemos afirmar nada...

Então, temos uma incerteza aí! E isso está dependendo do observador ou do equipamento que você está usando para tirar essa medida.

No exemplo acima, cada estimativa tem 3 algarismos significativos, eles podem ser algarismos corretos ou duvidosos. Temos certeza, que o número que procuramos está entre 2,2   c m e 2,3   c m ou seja o número é 2,2 tem 2 algarismos corretos e estamos em dúvida quanto ao terceiro. Podemos considerar este último mais perto do 2,3   c m ou mais perto do 2,2   c m .

Nesse caso acima, estamos com 3 algarismos significativos e nossa incerteza é da ordem de 0,1   c m . Isso porque podemos considerar mais perto do 2,3   c m ou mais perto do 2,2   c m .

Vamos ver como funciona, quantos algarismos significativos tem o número 31.400? Ele pode ter 3, 4 ou 5 algarismos significativos, dependendo de os zeros serem conhecidos com confiança.

Perceba bem que todas essas representações podem ser apresentadas na forma de notação científica e um computador representa um número real no sistema próprio denominado aritmética de ponto flutuante resolvendo toda a incerteza!

Representação de Números

Tudo que usarmos vai depender de você, da sua necessidade. Vamos ver como isso interfere nos resultados?

Número máximo de dígitos ( k )

Imagine que você quer calcular a área de um disco de raio igual a 10 c m .

A = π r ²

A = π ( 10 ) ²

A = 100 π

A = 100 * 3,1415 . . .

Você pode dar várias respostas e ainda assim todas estão erradas! Algumas respostas possíveis seriam:

A = 314   c m 2

A = 314,16   c m 2

A = 314,159265   c m 2

A = 314,1592653589793238462643383279502884197169399375105820974 c m 2

Enfim, você pegou o espírito da coisa né? Como o π e um número com infinita casas decimais nunca chegaremos a resposta exata. O resultado que obtemos vai depender exclusivamente da aproximação de π que usarmos. E essa aproximação deve ser tão exata quanto precisarmos. E essa ideia será muito importante!

O número de casas decimais a ser usado vai depender da precisão desejada e de onde você vai aplicar esses dados!

Base escolhida

Como nós representamos números? É sobre isso que vamos falar nessa parte.

Cara, a base nada mais é do que a quantidade de algarismos que podemos usar para representar os números. Estamos acostumados com a base decimal que possui 10 algarismos (0, 1, 2... 9), essa é a base com a qual estamos acostumados a lidar no nosso dia a dia e aprendemos desde pequenos. Mas um computador, por outro lado, normalmente usa um sistema de representação binário (0 ou 1), o que significa que o computador irá escrever os números apenas com os algarismos 0 e 1, ele também usa o ponto para representar a nossa vírgula no sistema decimal.

E você pode usar qualquer base que queira para representar os números! A decimal é a mais empregada atualmente, mas existe a binária, a base hexadecimal (base 16), a octal (base 8), entre outras.

E os erros só aumentam quando manipulamos os números em diversas bases. Por exemplo, um número pode ter representação finita em uma base e não-finita em outra (não se preocupe, isso será visto mais pra frente)! Na nossa interação com o computador, nós passamos as informações para ele pelo sistema decimal. Esses dados são convertidos para o binário, no qual todos os cálculos são feitos e depois convertidos de volta para decimal para que possamos ler. Todas essas conversões geram ainda mais erros!

Conversão de Números nos Sistemas Decimal e Binário

Vamos começar engatinhando.

No sistema decimal, para representar um número podemos escrever ele na forma de somas potências de base dez. Parece complicado, mas olha só:

Vamos analisar o número 3682 que é do sistema decimal:

3682 = 3000 + 600 + 80 + 2

3682 = 3 × 1000 + 6 × 100 + 8 × 10 + 2 × 1

3682 = 3 × 10 ³ + 6 × 10 ² + 8 × 10 1 + 2 × 10 0

Prontinho, escrevemos um número como uma soma de potências de base dez.

Um número escrito na forma binária só usa algarismos do tipo 0 e 1. Mas, da mesma forma que era na base decimal, os algarismos vão indicar uma soma de potências de base dois Por exemplo, vamos agora analisar um número 1011 escrito na base 2:

1011 = 1 × 2 ³ + 0 × 2 ² + 1 × 2 ¹ + 1 × 2 0

Entendeu como funciona? Todos os números podem ser escritos como uma soma de potências de uma base. Generalizando, um número com os algarismos c i c i - 1 … c 2 c 1 c 0 na base β seria:

c i c i - 1 … c 2 c 1 c 0 β = c i β i + c i - 1 β i - 1 + … + c 2 β 2 + c 1 β 1 + c 0 β 0

Mas por que eu to falando isso? Porque assim é fácil passarmos números do sistema binário pro decimal! Por exemplo o 100101 2 em decimal fica:

100101 2 = 1 × 2 5 + 0 × 2 4 + 0 × 2 3 + 1 × 2 2 + 0 × 2 1 + 1 × 2 0

Fazendo essas continhas temos:

100101 2 = 1 × 2 5 + 0 × 2 4 + 0 × 2 3 + 1 × 2 2 + 0 × 2 1 + 1 × 2 0 = 32 + 4 + 1 = 37

Então o número 100101 2 da base 2 equivale ao 37 na base dez.

E pra voltar? Ir do decimal para o binário? Aí o que nós vamos fazer é dividir o número por 2 várias vezes até aparecer o 0 no quociente e ir anotando os restos! Assim oh:

37 2 = 18   e   r e s t o   1

18 2 = 9   e   r e s t o   0

9 2 = 4   e   r e s t o   1

4 2 = 2   e   r e s t o   0

2 2 = 1   e   r e s t o   0

1 2 = 0   e   r e s t o   1

Agora escrevemos os restos de trás pra frente:

37 10 = 100101 2

Percebeu que tá batendo certinho com o que tínhamos? Até aí tudo nas mil maravilhas né?

Mas, e para convertermos os números que vem depois da vírgula? Como faz??

Bom, vamos começar indo do binário para o decimal que é mais fácil, os números depois do ponto (que correspondem a vírgula no sistema decimal) serão elevados a potências de dez negativas. O expoente sempre irá diminuir:

101.1101 2 = 1 × 2 2 + 0 × 2 1 + 1 × 2 0 + 1 × 2 - 1 + 1 × 2 - 2 + 0 × 2 - 3 + 1 × 2 - 4 =

= 4 + 0 + 1 + 0.5 + 0.25 + 0 + 0.0625 = 5.8125 10

Ou seja, quando temos casas decimais ficamos com:

c i … c 0 . c - 1 … c - j β = c i β i + … + c 0 β 0 + c - 1 β - 1 + … + c - j β - j

Então o processo binário decimal não mudou muito né? É só continuarmos diminuindo as potências de 2 .

E para irmos do decimal para o binário? Vamos usar o 5.8125 10 . Primeiro fazemos a parte inteira:

5 2 = 2   e   r e s t o   1

2 2 = 1   e   r e s t o   0

1 2 = 0   e   r e s t o   1

5 10 = 101 2

Beleza, agora para a parte depois da vírgula nós vamos multiplicar por 2 ao invés de dividir! Depois de multiplicar verificamos se o número é maior que 1 . Se for, coloca-se 1 na parte fracionária e o “resto” passa adiante. Caso contrário, botamos um 0 . E vamos fazendo isso até chegarmos no 1 . Vai ficar mais claro com o exemplo:

0.8125 × 2 = 1.625 → D í g i t o   1

0.625 × 2 = 1.25 → D í g i t o   1

0.25 × 2 = 0.5 → D í g i t o   0

0.5 × 2 = 1 → D í g i t o   1

Pronto, ah e aqui a gente lê na ordem certa haha.

0.8125 10 = 0.1101 2

Somando:

5 10 + 0.8125 10 = 101.1101 2

Exatamente o que a gente esperava!

Agora lembra aquela história que eu falei de números que são finitos em uma base e não finitos em outra? Vamos passar o número 5.8 para binário. O 5 já sabemos que fica 101 , mas e o 0.8 ?

0.8 × 2 = 1.6 → D í g i t o   1

0.6 × 2 = 1.2 → D í g i t o   1

0.2 × 2 = 0.4 → D í g i t o   0

0.4 × 2 = 0.8 → D í g i t o   0

0.8 × 2 = 1.6 → D í g i t o   1

Opa, percebeu que entramos em um loop? Voltamos para o 0.8 ! Então nosso número em binário será uma dízima:

5.8 10 = 101.110011001100 … 2 = 101 . 1100 _ 2

E é daí que alguns problemas aparecem. . .

Para compreendermos como irá funcionar nesses casos, precisaremos entender um pouco melhor sobre a linguagem que os computadores usam. Isso veremos no próximo tópico, beleza?! Mas antes vamos praticar um pouco de conversão?!

Representação de Números

Conversão de Números nos Sistemas Decimal e Binário

Exercícios de Livros Relacionados