Baixe o app para aproveitar ainda mais
Prévia do material em texto
M A RIN A V A RG A S MARINA VARGAS M A TEM Á TICA PA RA CO M PUTA Çà O M A T E M Á T I C A COMPUTAÇÃO PARA Código Logístico I000122 ISBN 978-65-5821-071-9 9 7 8 6 5 5 8 2 1 0 7 1 9 M A RIN A V A RG A S MARINA VARGAS M A TEM Á TICA PA RA CO M PUTA Çà O M A T E M Á T I C A COMPUTAÇÃO PARA Código Logístico I000122 ISBN 978-65-5821-071-9 9 7 8 6 5 5 8 2 1 0 7 1 9 Matemática para Computação Marina Vargas IESDE BRASIL 2021 © 2021 – IESDE BRASIL S/A. É proibida a reprodução, mesmo parcial, por qualquer processo, sem autorização por escrito da autora e do detentor dos direitos autorais. Projeto de capa: IESDE BRASIL S/A. Imagem da capa: whiteMocca/majcot/Lantica/Shutterstock Todos os direitos reservados. IESDE BRASIL S/A. Al. Dr. Carlos de Carvalho, 1.482. CEP: 80730-200 Batel – Curitiba – PR 0800 708 88 88 – www.iesde.com.br CIP-BRASIL. CATALOGAÇÃO NA PUBLICAÇÃO SINDICATO NACIONAL DOS EDITORES DE LIVROS, RJ V427m Vargas, Marina Matemática para computação / Marina Vargas. - 1. ed. - Curitiba [PR] : Iesde, 2021. 160 p. : il. Inclui bibliografia ISBN 978-65-5821-071-9 1. Computação - Matemática. 2. Programação (Computadores). 3. Algoritmos. 4. Matrizes (Matemática). I. Título. 21-72772 21-72772 CDD: 518.1 CDU: 519.165:004.021 Marina Vargas Pós-doutora em Mecânica Computacional pela Universidade Federal do Paraná (UFPR). Doutora e mestre em Métodos Numéricos em Engenharia pela UFPR. Especialista em Educação Matemática e licenciada em Matemática pela Universidade Paranaense (Unipar). Professora no ensino superior nas modalidades presencial e a distância, ministra as disciplinas Cálculo de Funções de uma e mais Variáveis, Álgebra Linear, Geometria Analítica, Métodos Numéricos, Teoria dos Números, Pesquisa Operacional, Matemática Aplicada, Estatística Aplicada e Métodos Quantitativos. Atua também como professora conteudista em diversas instituições e empresas. Atualmente, desenvolve pesquisas nas áreas de programação matemática, mecânica computacional, educação matemática e educação em engenharias. SUMÁRIO Agora é possível acessar os vídeos do livro por meio de QR codes (códigos de barras) presentes no início de cada seção de capítulo. Acesse os vídeos automaticamente, direcionando a câmera fotográ�ca de seu smartphone ou tablet para o QR code. Em alguns dispositivos é necessário ter instalado um leitor de QR code, que pode ser adquirido gratuitamente em lojas de aplicativos. Vídeos em QR code! SUMÁRIO Agora é possível acessar os vídeos do livro por meio de QR codes (códigos de barras) presentes no início de cada seção de capítulo. Acesse os vídeos automaticamente, direcionando a câmera fotográ�ca de seu smartphone ou tablet para o QR code. Em alguns dispositivos é necessário ter instalado um leitor de QR code, que pode ser adquirido gratuitamente em lojas de aplicativos. Vídeos em QR code! 1 Por que estudar matemática? 9 1.1 O que é matemática computacional 9 1.2 Idealização de um algoritmo numérico 15 1.3 Relações de recorrência 19 1.4 Conceito de função no aspecto computacional 22 1.5 Diferenças entre problemas qualitativos e quantitativos 24 2 Noções sobre sistemas de numeração 29 2.1 Sistemas de numeração 29 2.2 Representação numérica 35 2.3 Representação em ponto flutuante 43 2.4 Erros numéricos 46 3 Matrizes 54 3.1 Vetores de uma matriz 55 3.2 Análise do algoritmo padrão para multiplicação de matrizes 58 3.3 Bases 61 3.4 Fatoração matricial – Método de Gauss 64 3.5 Decomposição LU e LDU 69 3.6 Inversa de uma matriz 75 4 Sistemas de equações lineares 81 4.1 Sistemas equivalentes e operações 82 4.2 Sistemas triangulares e escalonados 86 4.3 Eliminação gaussiana 94 4.4 Condicionamento de sistemas lineares 101 4.5 Métodos iterativos 108 5 Grafos e árvores 123 5.1 O que é um grafo: terminologia e tipos 124 5.2 Representação computacional de um grafo 132 5.3 Conceito de árvore 138 5.4 Raízes e árvores binárias 142 5.5 Introdução a procedimentos de busca 145 Resolução das atividades 150 Nesta obra, buscamos trazer os conceitos básicos da matemática para o trabalho, não só com algoritmos a serem implementados nas mais diversas linguagens de programação, mas, principalmente, a lógica por trás dos cálculos computacionais. Quando mencionamos cálculos computacionais, além de pensarmos a forma como a máquina opera e, portanto, trabalha com sistemas de numeração, erros numéricos e vetores, é necessário falarmos de conceitos, como sistemas em rede e grafos, pois estes estão diretamente relacionados às teorias mais atuais da computação, como inteligência artificial, redes neurais etc. Desse modo, destinamos o primeiro capítulo a apresentar um pouco da história do desenvolvimento da computação, que está diretamente ligada ao desenvolvimento da matemática. Apresentamos alguns dos nomes importantes dessa história e mostramos suas contribuições para a matemática computacional. Além disso, contextualizamos conceitos como algoritmo e relações de recorrência e tratamos da diferença entre problemas qualitativos e quantitativos. No segundo capítulo, discorremos sobre os sistemas de numeração aditivos e posicionais, destacando o sistema de numeração posicional decimal, relacionando-o com o sistema por trás das máquinas eletrônicas: o sistema posicional binário. Também trabalhamos o conceito de erro entre o resultado esperado e o resultado encontrado. Para esse fim, construímos um fluxograma que mostra, com base em um modelo real, as ramificações possíveis até que seja obtida a solução numérica/computacional desejada. A proposta do Capítulo 3 é a explanação sobre os conceitos de vetores e matrizes e as operações que os representam. Essa escolha se dá pela facilidade em operar computacionalmente por meio dessas estruturas matemáticas. Assim, seu entendimento é essencial para a matemática computacional. Além disso, trabalhamos com a decomposição de matrizes, preparando caminho para o tema do próximo capítulo. APRESENTAÇÃOVídeo 8 Matemática para Computação Nesse contexto, entramos no quarto capítulo, que trata dos sistemas de equações e visa trazer técnicas numéricas e algoritmos que permitam a implementação computacional desses sistemas. Podemos exemplificar essa necessidade por meio de uma extensa lista de aplicações, entre elas: redes de computadores, resolução de modelos que representam fenômenos físicos e gerenciamento de sistemas. No entanto, além desse contexto, elas podem ser diretamente aplicadas ao próximo capítulo, que aborda os grafos. O Capítulo 5 apresenta a concepção de grafo. Por intermédio de um grafo, podemos representar problemas aplicados e identificar situações em que a busca por um caminho mínimo não só agiliza processos, mas também minimiza custos. Para essa construção, retomamos o uso de matrizes e vetores, sendo essa uma importante forma de implementação desse conceito. É fácil notarmos que os três últimos capítulos têm uma conexão importante dentro da matemática computacional e se comunicam com a computação de maneira quase que natural. Esse é um dos fatores para que esses conceitos estejam em todos os melhores cursos de computação e tecnologia da informação com todas as suas ramificações. Este é o foco desta obra. Nossa proposta é trazer o raciocínio lógico matemático por trás da necessidade de implementação computacional de problemas aplicados na área da tecnologia da informação e computação. Esperamos que este livro auxilie no aprendizado para a formação de um melhor profissional na área escolhida. Bons estudos! Por que estudar matemática? 9 1 Por que estudar matemática? A matemática está por trás da lógica de programação de uma maneira que você talvez nunca tenha parado para pensar. A ciência da programa- ção começou por intermédio de matemáticos curiosos e muito à frente de seus tempos, que tentavam otimizarprocessos e avançar com a possibi- lidade dos cálculos serem realizados por máquinas. A ideia era que essas máquinas recebessem mais do que números, ou seja, que pudessem re- ceber instruções. E eles conseguiram! Neste capítulo, destinado ao estudo da ligação da matemática com a computação, vamos conhecer um pouco da história desses matemáticos e compreender por que é tão importante conhecer matemática para dis- cutirmos sobre computação. Com o estudo deste capítulo, você será capaz de: • compreender a matemática por trás de conceitos computacionais; • reconhecer a diferença entre matemática teórica e matemá- tica computacional; • identificar o uso de cálculos numéricos por trás de algoritmos; • relacionar o conceito de função em diferentes realidades computacionais; • compreender as dimensões quantitativas de um problema. Objetivos de aprendizagem 1.1 O que é matemática computacional Vídeo Quando pensamos em matemática computacional, precisamos en- tender, em primeiro lugar, como um “computador” faz cálculos. Aqui, estamos chamando de “computador” todos os objetos que são capazes de realizar cálculos discretos, como: calculadoras, computadores, celu- 10 Matemática para Computação lares, dentre outros. Assim, todos os objetos que utilizam o princípio de abertura e fechamento de chaves e que permitem ou não a passagem de energia serão analisados perante a mesma lógica de construção para obtenção da chamada matemática computacional. Quando escrevemos os cálculos, percebemos que eles serão reali- zados usando um princípio mecânico básico de abertura e fechamento de chaves, e que estamos envolvendo nesse processo uma lógica bi- nária. Essa lógica precisa ser processada e interpretada. É nesse ponto que entram os diferentes hardwares de processamento e, em conjun- to, os softwares que interpretam esses dados processados. É justamente por esse desenvolvimento que começamos a identifi- car a existência de erros numéricos, os quais podem surgir no processo de cálculo. Além disso, é por meio da lógica binária que identificamos o teor discreto da matemática computacional. Agora vamos conhecer alguns dos nomes que permitiram que a ma- temática computacional acontecesse. 1.1.1 Ada Lovelace Augusta Ada Byron King, Condessa de Lovelace, nasceu em 10 de dezembro de 1815 na cidade de Londres e faleceu em 27 de novembro de 1852, aos 36 anos, no bairro Marylebone, na mesma cidade em que nasceu, na Inglaterra. Ada Lovela- ce é conhecida como a primeira programadora da história. Ela viveu em uma época em que as mulheres não eram bem-vistas em universidades. Por esse motivo, e com estímulo de sua mãe (Anne Isabella “Anabella” Byron, Baro- nesa de Wentworth), Ada estudou em casa com tutores como Augustus De Morgan e Mary Sommerville, que se tornou não apenas sua tutora, mas sua amiga (BIM, 2018). Foi Sommerville quem apresentou Ada ao cientista Charles Babba- ge (1791-1871), matemático, conhecido por ter criado a primeira má- quina capaz de resolver e imprimir cálculos matemáticos. A invenção, chamada de máquina analítica (Figura 1), é considera- da precursora dos computadores modernos (BROMLEY, 1982). Ada Lovelace Ke lso n/W ikim edia Comm ons Por que estudar matemática? 11 Charles Babbage Connormah/Wikimedia Commons Figura 1 Réplica da máquina analítica Br un o Ba rra l/W ik im ed ia C om m on s Mas foi Lovelace quem criou o primeiro algoritmo resolvido pela máquina analítica, publicado como nota de rodapé de um artigo de Babbage. Nesse material, Ada descreveu a possibilidade de a máqui- na realizar cálculos complexos envolvendo letras, números e sím- bolos, além de instruções que permitiam repetição (looping). Além disso, constava nessas notas um algoritmo que permitia o cálculo para os números de Bernoulli. Foi por causa desse artigo que Babbage percebeu a geniali- dade da moça e aceitou trabalhar em conjunto com ela, o que se transformou em uma grande amizade. Na matéria “Ada Lovelace desafiou o machismo e se tornou a primeira programadora da história”, que retrata a história de Ada Lovelace sob o olhar da escritora Angela Saini, Simões (2021) relata que a “matemática estava muito à frente de seu tempo quan- do teve a genial ideia do que um algoritmo seria capaz de fazer”. Ada e Babbage trabalharam juntos ao longo de muitos anos. Nesse período, ela desenvolveu diversos algoritmos que permitiriam que a má- quina analítica computasse valores de funções matemáticas. Esses algo- ritmos foram posteriormente analisados por um outro matemático – que será apresentado mais à frente. Para conhecer um pouco mais da história e feitos de Babbage e Lovelace, sugerimos dois vídeos. O primeiro conta a vida de Lovelace. Já o segundo, traz a parceria entre Lovelace e Babbage na idealização e construção da máquina analítica. • Biografias 23 – Ada Lovelace, a primeira programadora. Disponível em: https://www. youtube.com/ watch?v=gcNKhlKW7uQ&ab_ channel=OMundoDaCi%C3 %AAncia. Acesso em: 31 maio 2021. • O primeiro Computador do Mundo – Charles Babbage & Ada Lovelace – Documentário. Disponível em: https:// www.youtube.com/ watch?v=35MwtZ5MKjM. Acesso em: 31 maio 2021. Vídeo https://www.youtube.com/watch?v=gcNKhlKW7uQ&ab_channel=OMundoDaCi%C3%AAncia https://www.youtube.com/watch?v=gcNKhlKW7uQ&ab_channel=OMundoDaCi%C3%AAncia https://www.youtube.com/watch?v=gcNKhlKW7uQ&ab_channel=OMundoDaCi%C3%AAncia https://www.youtube.com/watch?v=gcNKhlKW7uQ&ab_channel=OMundoDaCi%C3%AAncia https://www.youtube.com/watch?v=gcNKhlKW7uQ&ab_channel=OMundoDaCi%C3%AAncia https://www.youtube.com/watch?v=35MwtZ5MKjM https://www.youtube.com/watch?v=35MwtZ5MKjM https://www.youtube.com/watch?v=35MwtZ5MKjM 12 Matemática para Computação Mas o que é um algoritmo? Fazendo uma analogia simples, um algoritmo é como uma receita de bolo que mostra detalhadamente os métodos necessários para re- solver uma atividade. Na matemática, um algoritmo é fundamental para que consigamos resolver uma expressão. A seguir, veremos que na computação tam- bém é essencial. Exemρlo 1 Pense em um cálculo qualquer. Pode ser um cálculo simples, como (2 + 2) + 2 Um algoritmo para esse cálculo pode ser montado como a seguir: Início: Resolva primeiro os parênteses. Laço: Dentro dos parênteses procure operações de multiplicação e divisão. Se não houver, resolva as operações de adição e subtração. Com o resultado da soma, elimine os parênteses e some esse nú- mero com o restante das parcelas. Fim. O Exemplo 1 traz um algoritmo muito simples, escrito de maneira direta e, no momento, sem pensarmos como essa lista de regras seria realmente programada para que a máquina pudesse resolver. Porém, com esse exemplo, conseguimos visualizar a necessidade de regras claras sobre a maneira de resolução, pois sem elas o computador não irá operar corretamente. Essa forma de escrita que adotamos para re- presentar um algoritmo é conhecida como pseudocódigo ou portugol. Fica claro que sem os algoritmos e esse avanço trazido por Ada Lovelace é quase impossível pensarmos na ciência da computação e na matemática avançada da maneira que a vemos hoje. Por que estudar matemática? 13 1.1.2 Alan Turing Alan Mathison Turing nasceu em 23 de junho de 1912, na cidade de Paddington, na Inglaterra, e faleceu em 7 de junho de 1954, aos 41 anos, em Wilmslow, Inglaterra. Alan Turing é conhecido como o pai da ciência da computação e da inteligência artificial. Estudou na Universidade de Cambridge, onde obteve seu bacharelado em matemática e concluiu seu mestrado. Prosseguiu seus estudos, obtendo seu doutorado em matemática pela universidade de Princeton. Dentre os vários projetos que fizeram desse matemático o “cien- tista do século 20”, em pesquisa 1 realizada pela BBC no ano de 2019, ficando à frente de Albert Einstein e Marie Curie, está a chamada má- quina de Turing, também conhecido como máquina universal. A máquina de Turing é um modelo abstrato que permite mani- pular símbolosem uma fita de acordo com regras preestabelecidas, restringindo-se apenas aos aspectos lógicos do seu funcionamento, como a memória, os estados e as transições. Por meio dessa máqui- na, podemos modelar qualquer computador digital. Turing foi um dos responsáveis para que os Aliados – incluindo a Inglaterra – ganhassem uma importante vantagem em relação à Alemanha na Segunda Guerra Mundial. Sua máquina física Bombe, construída com os conceitos da máquina universal e tendo como referência os trabalhos de Lovelace e Babbage, dentre outros, per- mitiu que os Aliados quebrassem o código alemão Enigma em Blet- chley Park. Dessa forma, eles passaram a ter conhecimento das estratégias que seriam usadas e puderam se antecipar aos ataques, levando à vitória. Muitos outros nomes estão envolvidos na construção histórica da computação e na forma como trabalhamos com a matemática hoje. Dentre eles, citamos John Von Neumann (1903-1957) e Norbert Wiener (1894-1964). Contudo, percebemos que Ada Lovelace e Alan Turing, dois ma- temáticos, viram a matemática muito além do que cálculos reali- zados à mão, com abordagem abstrata e sem aplicação no mundo Alan Turing Bruno Barral/Wikimedia Commons Acesse na íntegra a pes- quisa Scientists of the 20th Century. Disponível em: https://www.bbc.co.uk/ programmes/p06y1tmk. Acesso em: 30 ago. 2021 1 Para saber um pouco mais sobre a vida e con- tribuição de Turing, suge- rimos a matéria 17 fatos e curiosidades sobre a vida do Alan Turing, publicada pela revista Galileu. Disponível em: https://revistagalileu. globo.com/Cultura/noticia/2018/06/ 17-fatos-e-curiosidades-sobre-vi- da-do-alan-turing.html. Acesso em: 31 maio 2021. Leitura O filme O jogo da imitação, de 2014 – indicado ao Oscar em duas categorias –, retrata vida e morte de Alan Turing, o processo de criação da máquina física Bombe e a guerra. Direção: Morten Tyldum. Reino Unido: Warner Bros, 2014. Filme https://revistagalileu.globo.com/Cultura/noticia/2018/06/17-fatos-e-curiosidades-sobre-vida-do-alan-turing.html https://revistagalileu.globo.com/Cultura/noticia/2018/06/17-fatos-e-curiosidades-sobre-vida-do-alan-turing.html https://revistagalileu.globo.com/Cultura/noticia/2018/06/17-fatos-e-curiosidades-sobre-vida-do-alan-turing.html https://revistagalileu.globo.com/Cultura/noticia/2018/06/17-fatos-e-curiosidades-sobre-vida-do-alan-turing.html 14 Matemática para Computação físico. Por meio de seus raciocínios analíticos, viram a possibilidade de resolver problemas de maneira mais rápida e otimizada e con- seguiram colocar em prática o que hoje chamamos de matemática computacional. 1.1.3 Por que estudar matemática computacional? A matemática computacional permite que trabalhemos com pro- blemas extremante complexos que não poderiam ser resolvidos por uma única pessoa e, muitas vezes, nem mesmo por uma grande equipe. Esse conceito pode parecer absurdo, mas é a realidade de nossos dias. Os computadores mudaram a vida em sociedade e por meio deles conseguimos trabalhar com operações complexas, com modelos cada vez mais elaborados que representam o mundo real, e analisar uma infinidade de dados que não conseguiríamos avaliar em gera- ções passadas. Além disso, entenda, sem uma quantidade de dados razoavel- mente grande – em torno de milhões – não teríamos os serviços cada vez mais personalizados, os sistemas otimizados e a precisão em diversos processos, que são exigências do mundo atual. Dessa forma, podemos entender a matemática computacional como uma nova ciência que une os conceitos da computação e da matemática e nos permite resolver problemas, por exemplo, repre- sentar o genoma humano, calcular a eficiência e ajuste de foguetes, dentre outros, que não seriam possíveis sem os computadores. Contudo, para que possamos levar para o computador a mate- mática por traz desses avanços, inicialmente precisamos compreen- der alguns conceitos, como: o que são dados quantitativos, como montar uma relação de recorrência ou, ainda, como escrever um algoritmo que resolva problemas envolvendo vetores, matrizes, sis- temas de equações, funções, dentre muitos outros. É desses questionamentos que nasce a ciência matemática com- putacional. Desse modo, precisamos entender a matemática e como Por que estudar matemática? 15 a máquina processa essa matemática? Com certeza! Além disso, pre- cisamos representar os problemas cotidianos em modelos matemá- ticos para que tenhamos essa associação. Desse modo, vamos trazer um pouco mais da matemática que precisamos compreender para que seja possível criar as oportunida- des de aplicação usando os computadores. Ev er et t C ol le ct io n/ Sh ut te rs to ck Figura 2 Mecanismo de Gottfried Leibniz 1.2 Idealização de um algoritmo numérico Vídeo Em 1671, o filósofo e mate- mático Gottfried Wilhelm Leibniz, um dos criadores – juntamente com Isaac Newton – do cálculo diferencial e integral, construiu um mecanismo (Figura 2) que permitia realizar multiplica- ções e divisões mediante adi- ções e subtrações sucessivas. Na época, a metodologia usada por Leibniz ocasionava muitos erros, sendo descartado seu uso. Entretanto, manteve-se a ideia principal, que permitia, por meio de operações simples, escrever outras operações. A primeira calculadora capaz de efetuar as quatro operações aritméticas básicas foi construí- da pelo francês Charles Xavier Thomas em 1820. Considerada a primei- ra calculadora possível de ser comercializada, a máquina de Thomas executava as multiplicações por meio de somas, como idealizado por Leibniz, e as divisões podiam ser executadas com auxílio do usuário. Contudo, nenhuma dessas máquinas era programável, ou seja, era possível entrar com valores numéricos, mas não era possível passar instruções. 16 Matemática para Computação Vimos que um algoritmo é constituído exatamente de ins- truções a serem realizadas e esse feito começa a ser possível apenas com a criação da máquina de Lovelace e Babbage e, posteriormente, com a máquina de Turing. Um algoritmo é uma etapa essencial para que uma construção matemática possa ser executada por um computador. Ao construirmos um algoritmo, não preci- samos pensar qual será a linguagem de programação utili- zada, mas sim como queremos que o cálculo seja realizado. Exemρlo 2 Acompanhe o algoritmo a seguir e observe o resultado obtido. Variáveis inteiras: a, soma Seja a=0 e Soma=0 Se Soma<6, faça: a=a+1 Soma=Soma+a Imprima Soma Vamos interpretar esse algoritmo: Variáveis inteiras: a, soma #Declaração de variáveis. Nesse pon- to apresentamos a que conjunto elas pertencem. Seja a=0 e Soma=0 #Valores iniciais das variáveis. Se Soma<6, faça: #Note que, nesse ponto temos um laço ou looping que será executado enquanto a condição “Soma<6” for válida. a=a+2 #Cada vez que entramos no laço, precisamos pegar o último valor de a e acrescentar 1, gerando um novo valor de a. Soma=Soma+a #Cada vez que entramos no laço, precisamos pegar o último valor de Soma e acrescentar a, gerando um novo valor para Soma. Imprima Soma #Quando não for mais possível realizar o laço, ou seja, quando “Soma ≥ 6”, imprime-se o último valor encontrado para a variável Soma. Charles Xavier Thomas Ba sti en M/ Wi kim edi a Co mmo ns Por que estudar matemática? 17 Quadro 1 Resumo do algoritmo a Soma Início 0 0 Laço a=0+1=1 Soma=0+1=1 Laço a=1+1=2 Soma=1+2=3 Laço a=2+1=3 Soma=3+3=6 Imprime Soma=6 Fonte: Elaborado pela autora. De acordo com Campos Filho (2007, p. 1), o cálculo numérico é uma metodologia para resolver problemas matemáticos por intermédio de um computador, sendo ampla- mente utilizado por engenheiros e cientistas. Uma solução via Cálculo numérico é sempre numérica, enquanto os métodos analíticos usualmente fornecem um resultado em termos de funções matemáticas. Para a construção de um algoritmo numérico, são necessárias as quatro operações aritméticas fundamentais e as operações lógicas que são: comparação, conjunção,disjunção e negação. A vantagem é que essas operações são exatamente as operações realizadas pelo processador de um computador. O processo se dá inicialmente pelo fechamento e abertura de cha- ves que permitem a passagem ou não de energia. Esse mecanismo é compilado em zeros e uns. Isto é, quando a energia passa, o compila- dor entende esse resultado como 1 (sim). Quando a energia não passa, esse resultado é igual a 0 (não). O processador permite que os cálculos binários sejam realizados e, a partir desse ponto, entra em jogo o sistema operacional que transfor- ma tudo o que você faz nessa linguagem binária, a qual é passada para o software, podendo, por sua vez, fazer o que você quer. Para auxiliar no entendimento desse processo binário, sugerimos o artigo Aritmética de números binários e suas relações com circuitos lógicos, dos auto- res Rafael Pinheiro Leite e Prof. Dr. Matheus da Silva Menezes. Acesso em: 31 maio 2021. https://repositorio.ufersa.edu.br/bitstream/prefix/5854/1/RafaelPL_ART..pdf Artigo 18 Matemática para Computação Para elaborar um algoritmo numérico, precisamos de algumas eta- pas anteriores. Exemplo: Queremos encontrar a divisão exata de a 2 �, com a > 0 usando apenas as quatro operações fundamentais. Definição do problema É a primeira etapa. Como o próprio nome sugere, é preciso compreender o que se deseja estruturar e as possibilidades de resposta. Modelagem A segunda etapa é por meio de uma formulação matemática. Transformamos o problema real em um problema matemático. Exemplo: Usando o exemplo anterior, escrevemos a {2x�|�x *� � � } Assim, modelamos a definição do problema colocando as características matemáticas necessárias para resolvê-lo. Nesse caso, identificamos que a precisa ser um número par para que tenhamos divisão exata. Solução numérica Nesta terceira etapa escolhemos o método numérico apropriado para resolver o modelo matemático. É nesse ponto que precisamos avaliar os métodos existentes e escolher aquele que resulte em menor erro numérico. A escrita do algoritmo entra nessa etapa e é idealizada aplicando as possibilidades do método escolhido. Kh vo st /S hu tte rs to ck ol eg ga nk o/ Sh ut te rs to ck TK 1 98 0/ Sh ut te rs to ck da vo od a/ Sh ut te rs to ck As duas últimas etapas não serão abordadas neste capítulo, visto que não é escopo desta obra trabalhar com as linguagens de progra- mação, entretanto, para que possamos registrar os passos seguintes à escrita do algoritmo, temos: Por que estudar matemática? 19 Codificação do algoritmo Processamento do programa A transformação do algoritmo para a linguagem de programação escolhida. Implementação do algoritmo na linguagem de programação escolhida. Nesse caso, o programa será escrito em um arquivo para ser executado. ST RI PB AL L/ Sh ut te rs to ck ST RI PB AL L/ Sh ut te rs to ck Kh vo st /S hu tte rs to ck Observe que a idealização de um algoritmo numérico passa pela etapa de modelagem do problema, que só é possível com o conheci- mento matemático sobre esse conteúdo. Já na etapa de solução numé- rica, além do entendimento dos métodos numéricos disponíveis para a resolução do modelo, é preciso analisar os possíveis erros obtidos com essa escolha. Essa etapa é otimizada quando entendemos os tipos de erros que podem ser gerados pelo computador. Muitos algoritmos usam as chamadas relações de recorrência para realizar seus cálculos e convergir para a resposta desejada. Vamos en- tender esse conceito na sequência. 1.3 Relações de recorrência Vídeo A base da maior parte dos algoritmos matemáticos vem do conceito de relação de recorrência. Uma relação de recorrência é uma técnica matemática que nos auxilia na definição de sequências, conjuntos, ope- rações ou algoritmos. Para que tenhamos uma fórmula de recorrência, 20 Matemática para Computação precisamos analisar as características do problema e escrever uma re- gra que o represente. Com o intermédio dessa regra, podemos calcular qualquer termo em função dos antecessores. Nesta seção, vamos trazer como objeto para entendermos as relações de recorrência a famosa fórmula de re- corrência de Fibonacci. Leonardo de Pisa, mais conhecido como Fibonacci, que significa fi- lho do Bonacci, descreveu sua sequência pela primeira vez em seu livro Liber Abaci, em 1202, a fim de modelar um problema relacionado com o crescimento de uma população de coelhos. Fibonacci desejava descrever a quantidade de casais em uma po- pulação de coelhos após n meses (Figura 3), partindo dos seguintes pressupostos (ZAHN, 2011): 1. nasce apenas um casal no primeiro mês; 2. casais amadurecem sexualmente após o segundo mês de vida; 3. assumimos que não há problemas genéticos no cruzamento consanguíneo; 4. todos os meses, cada casal dá à luz um novo casal; 5. os coelhos nunca morrem. Figura 3 Sequência de casais em uma população de coelhos M ag ic le af /S hu tte rs to ck Por que estudar matemática? 21 O que ele encontrou foi a fórmula de recorrência – uma função aritmética – da definição a seguir: Definição 1 Seja uma sequência de Fibonacci, formada por n termos e denotada por fn. Para calcularmos o n-ésimo termo dessa sequência fazemos: f n � � � � � � � � � � � � 0 0 1 1 11 2 , � � ,� � , � �� se n se n f f se nn n Com essa função podemos montar a sequência de Fibonacci e des- cobrir quantos coelhos foram gerados em cada mês. Vamos exemplifi- car essa definição. Exemρlo 3 Utilizando a fórmula de recorrência f f f n �n n � � � � � � � � � � � � 0 0 1 1 11 2 ,� � ,� �� � � ,�� � � se n se n se n Temos que: • f5 = f5–1 + f5–2 = f4 + f3 = 5; • f10 = f10–1 + f10–2 = f9 + f8 = 55. Os primeiros números da sequência de Fibonacci são: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89. Percebemos com esse exemplo a usabilidade das relações de re- corrência em processos matemáticos, principalmente nos processos que precisam ser transformados em algoritmos, para que possam ser programados. Para saber mais sobre as relações de recorrência e a sequência de Fibonacci, sugerimos dois vídeos do canal Programa de Inicia- ção Científica da OBMEP: • Aula 01 - Sequências definidas por recorrências – Disponível em: https://www.youtube.com/ watch?v=S9zDoNAr3d4. Acesso em: 31 maio 2021. • Indução Matemática - Aula 6 - Sequência de Fibonacci. Disponível em: https://www.youtube.com/ watch?v=QVlTuInyZKk. Acesso em: 31 maio 2021. Vídeo https://www.youtube.com/channel/UC5azyx8w7Y5qzASuxDSseOw https://www.youtube.com/channel/UC5azyx8w7Y5qzASuxDSseOw https://www.youtube.com/watch?v=S9zDoNAr3d4 https://www.youtube.com/watch?v=S9zDoNAr3d4 https://www.youtube.com/watch?v=QVlTuInyZKk https://www.youtube.com/watch?v=QVlTuInyZKk 22 Matemática para Computação 1.4 Conceito de função no aspecto computacionalVídeo Na matemática, uma função é uma “regra” que associa a cada ele- mento x ∈ X um único elemento y = f(x) ∈ Y (GUIDORIZZI, 2018). Temos que X e Y são conjuntos que podem conter elementos previamente de- finidos, por exemplo, números naturais, reais etc., ou outros tipos de elementos, como chapéus, aves, laços etc. Assim, desde que consigamos relacionar, por meio de uma regra, um elemento do conjunto X com um único elemento do conjunto Y, podemos dizer que estamos trabalhando com uma função. Na matemática, dizemos que essa regra é uma lei matemática. A notação usada para essa definição é dada por: f: X → Y Definição 2 No aspecto computacional, uma função pode ser escrita por meio da soma de um número finito de parcelas. Observe no exemplo a seguir como podemos representar uma fun- ção por meio de somas de infinitas parcelas. Esse é um processo mate- mático conhecido como séries de funções. Computacionalmente não é possível manusear somas infinitas, mas ao sintetizarmos a série, temos a representação da função com um erro aceitável. Exemρlo 4 Uma série geométrica da forma 1 + x2+ x4 + x6 + ... Representa uma função escrita como f x x � � � � 1 1 2 Até mesmo as funções trigonométricas podem ser escritas por meio de uma soma infinita de parcelas, como vemos no exemplo 5. Por que estudar matemática? 23 Exemρlo 5 senx x x x x ��� � � � �� � � �� � � � �� � � �� � � � �� � � �� �� 3 5 7 3 5 7! ! ! cos ! ! ! x x x x� � � � �� � � �� � � � �� � � �� � � � �� � � �� ��1 2 4 6 2 4 6 Essa forma de representarmos as funções é também chamada de série e comumente estudada em disciplinas de Cálculo Avançado. Essa é uma maneira de pensarmos em funções quando tratamos dos aspectos computacionais. Uma segunda abordagem do aspecto computacional das funções é a possibilidade de considerá-las como ferramentas de cálculo dentro de algoritmos. Por exemplo, na linguagem de programação PythonTM (Figura 4), uma função é uma sequência de comandos que executa al- guma tarefa. Essa sequência é geralmente nomeada, para que a função possa ser “chamada” sempre que necessária. Figura 4 Função cone em PythonTM #A is height B is radius def cone (a, b): formula = (3.14 * .33 *a)*(b * b) return formula Aa æ /W ik im ed ia C om m on s Consideremos o cálculo do volume de uma esfera, em que seu raio é conhecido. O exemplo a seguir mostra a estrutura lógica que permite realizar o cálculo desse volume, considerando r como uma variável que pode assumir qualquer valor real. Exemρlo 6 Crie uma função para o cálculo do volume de uma esfera de raio r. Solução r é real def esfera(r) Para conhecer um pouco mais das possibilidades de aplicação de séries numéricas usadas para representar funções, su- gerimos o vídeo Séries de Potências no Computador. Disponível em: http://eaulas.usp.br/ portal/video.action?idItem=7701. Acesso em: 31 maio. 2021. Vídeo Quer saber mais sobre funções em PythonTM? Sugerimos o material Funções. Disponível em: https://panda.ime. usp.br/pensepy/static/pensepy/ 05-Funcoes/funcoes.html. Acesso em: 31 maio. 2021. Saiba mais http://eaulas.usp.br/portal/video.action?idItem=7701 http://eaulas.usp.br/portal/video.action?idItem=7701 https://panda.ime.usp.br/pensepy/static/pensepy/05-Funcoes/funcoes.html https://panda.ime.usp.br/pensepy/static/pensepy/05-Funcoes/funcoes.html https://panda.ime.usp.br/pensepy/static/pensepy/05-Funcoes/funcoes.html 24 Matemática para Computação formula = 4/3 *(3,14)*r^3 return formula Agora podemos usar essa função. Assim, se escrevermos esfera(2), teremos como retorno o valor formula = 33 37 75 Entretanto, nos dois sentidos, podemos perceber o princípio fun- damental de uma função matemática, que é o de ser uma regra que vincula dois conjuntos de dados diferentes. 1.5 Diferenças entre problemas qualitativos e quantitativosVídeo Um problema é dito qualitativo quando os dados usados para re- solver o modelo são dados qualitativos, ou seja, são baseados em cará- ter subjetivo, em que são usadas narrativas escritas ou faladas. Uma pesquisa qualitativa pode reunir informações como o nome das pessoas que foram avaliadas em um determinado estudo, o estilo de vida desse grupo de pessoas, as preferências alimentares, hobbies, dentre outras informações que, em geral, são fornecidas por meio de narrativas, questionários abertos, entrevistas, observações etc., e que não são codificadas usando um sistema numérico. Uma pesquisa qualitativa pode ser dividida em pesquisa nominal ou ordinal. Como a própria nomenclatura sugere, uma pesquisa nominal é aquela em que temos como resposta à pesquisa “nomes”, sendo que não é possível ordenar tais respostas. Por exemplo, uma pesquisa que possui o campo “sexo”, terá como resposta “masculino” ou “feminino”. Esse tipo de resposta pode ser quantificado, contudo não conseguimos colocar ordem de importância para tal. Ainda no campo da pesquisa qualitativa, podemos ter dados ordi- nais. Nesse caso, é possível categorizar as variáveis em relação a de- terminado grau para cada categoria. Por exemplo, uma pesquisa que procura analisar o grau de instrução de seus participantes, pode conter a variável “nível de escolaridade”, como ensino fundamental e ensino médio. É possível construir uma classe para cada grau de escolaridade, e até quantificar os participantes em cada uma dessas, mas a variável continua tendo um teor puramente qualitativo. Por que estudar matemática? 25 O interesse quando modelamos um problema com o auxílio de pes- quisas quantitativas é identificar e compreender os fenômenos através de dados numéricos. Por exemplo, se desejamos saber a quantidade de pessoas que to- maram determinado remédio ou votaram em determinado candidato, precisaremos realizar pesquisas quantitativas. Podemos pensar na escolha de um método ou outro da seguinte forma: • Método qualitativo: geralmente é utilizado para categorizar uma determinada situação, classificar problemas e gerar hipóteses etc. • Método quantitativo: é utilizado, como o próprio nome remete, a quantificar objetos. Os métodos quantitativos são muito usa- dos na estatística. Em geral, adotam-se questionários que permi- tem a contagem das variáveis pesquisadas. O que caracteriza um método como quantitativo ou qualitativo são as variáveis que ele apresenta. Assim, chamamos de variáveis quanti- tativas as que possuem características que podem ser quantificadas, isto é, medidas em determinada escala quantitativa. Por esse motivo, são representadas numericamente e podem ser divididas em duas ca- tegorias: discretas ou contínuas. As variáveis discretas são representadas por valores (números) in- teiros. Alguns exemplos são: quantidade de filhos, de pessoas em de- terminado local e de produtos na geladeira. As variáveis contínuas recebem valores em uma escala contínua, em que podem estar presentes valores representados por frações e decimais (finitos ou infinitos). É comum a necessidade de instrumen- tos de medição para avaliar uma variável quantitativa contínua, como balanças, réguas, relógios e outros instrumentos de medição. Alguns exemplos desse tipo de variável são: idade, peso, altura etc. As variáveis qualitativas, ao contrário, não são representadas por valores que podem ser quantificados. Elas representam categorias, ou seja, algum tipo de classificação para pessoas, objetos ou situações, e podem estar subdivididas em duas categorias: nominais ou ordinais. As variáveis nominais não exigem ordenação, por exemplo: sexo, cor dos olhos, religião, profissão etc. Já as variáveis ordinais exigem ordenação dos dados coletados. São exemplos: classe social (A, B, C) e escolaridade (1º ano, 2º ano, 3º ano). Tanto um problema qualitativo como um problema quantitativo pode ser investigado para que seja “resolvido” com o auxílio de um al- goritmo executado computacionalmente. Mas é na pesquisa quantita- tiva que esses resultados têm ganhado destaque. A ciência de dados (Figura 5), considerada uma ciência estatística, teve seu início com a ideia de podermos resolver problemas matemáti- cos de maneira computacional. Figura 5 Áreas da ciência de dados CIÊNCIA DE DADOS Megadados Classificação de dados Análise de dados Estatística Solucionador Tomada de decisão Conhecimento aberto bu ffa lo bo y/ Sh ut te rs to ck . Ela pode ser definida como um conjunto de ferramentas e métodos que nos permitem analisar, visualizar e tomar decisões com base em dados (RAMOS, 2021). É aqui que a matemática e a computação, novamente, se encon- tram. A quantidade de dados gerados por ferramentas como Google, Netflix, Twitter, Uber, entre outras que usamos no nosso dia a dia, é imensa. Para coletar, organizar e aplicar em modelos que deem um retorno para essas empresas em forma de resultado financeiro, é ne- cessário que diversas áreas da matemática sejam envolvidas, dentre elas encontra-se a estatística, talvez a mais utilizada nesse sentido. Diana_Karch/Shutterstock Rede neural 2626 Matemática para ComputaçãoMatemática para Computação https://oestatistico.com.br/decisoes-big-data-feeling-better-data/https://oestatistico.com.br/decisoes-big-data-feeling-better-data/ Por que estudar matemática? 27 De acordo com Ramos (2021), “o chamado ‘cientista de dados’ é o profissional responsável por aplicar técnicas, modelos, tecnologias e processos para extrair informação relevante dos dados. Tudo isso com muita estatística e programação aplicada”. Dessa forma, pensar em algoritmos que possibilitam o uso des- ses dados é fundamental para o crescimento das empresas. Esses algoritmos poderão, por exemplo, estar vinculados ao marketing digi- tal, fazendo com que dados quantitativos e qualitativos gerem lucro. Nesse ponto, entram os chamados algoritmos de inteligência artifi- cial. Um dos quesitos necessários para esse tipo de algoritmo é que ele processe um grande volume de dados quantitativos ou qualitativos. A diferença desse tipo de algoritmo para os demais é a possibi- lidade de se aplicar um “fator de decisão”, ou seja, a existência de variáveis randômicas ou condicionadas, dentro de um domínio deter- minado, que permitirão que os resultados não sejam únicos, e sim ter uma gama de possibilidades definidas para o contexto aplicado. Nesse ponto, podemos ter algoritmos construídos com o uso de diferentes funções. É possível trabalhar em diferentes camadas e com funções matemáticas específicas para cada camada de dados. Perceba que, mesmo nesse quesito, o domínio sobre o algoritmo está na mão do programador. É ele quem determina o que serão es- ses “fatores de decisão” e como será seu comportamento matemático para que o cálculo se torne randomizado. A compreensão da mate- mática levará à obtenção dos resultados desejados. CONSIDERAÇÕES FINAIS Neste capítulo, trouxemos uma pequena parte do gigantesco mundo da matemática aplicada à computação, à qual nos referimos como mate- mática computacional. As possibilidades são enormes, a depender da área almejada. É possí- vel trabalhar desde processos de otimização de redes até a bela área da programação gráfica, passando pelo rico campo da inteligência artificial e da ciência de dados. Independentemente da área escolhida, a necessi- dade da compreensão da matemática que envolve todos esses cálculos é imprescindível para sua correta implementação. Desse modo, esperamos que você se sinta motivado a seguir nesse caminho que relaciona essas duas ciências: matemática e computação. 28 Matemática para Computação ATIVIDADES Sabendo que um algoritmo é compreendido como um processo que mostra detalhadamente os métodos necessários para a resolução de uma atividade, e que podemos pensar nessa estrutura em formato de pseudocódigo como estrutura inicial, descreva um pseudocódigo para o cálculo da expressão numérica 1 + 3(5 + 1). Atividade 1 Descreva o modelo matemático que pode ser utilizado para representar a definição do problema a , para a > 0, usando apenas as quatro operações aritméticas. Atividade 2 Uma pesquisa foi realizada coletando dados referentes à altura de alu- nos de uma sala de aula. Esse tipo de dado é qualitativo ou quantitativo? Justifique. Atividade 3 REFERÊNCIAS BIM, S. A. A vida de Ada Lovelace. Porto Alegre: Sociedade Brasileira de Computação, 2018. BROMLEY, A G. Charles Babbage’s Analytical Engine, 1838. Annals of the History of Computing, v. 4, n. 3, 1982. Disponível em: http://athena.union.edu/~hemmendd/Courses/ cs80/an-engine.pdf. Acesso em: 31 maio 2021. CAMPOS FILHO, F. F. Algoritmos numéricos: uma abordagem moderna de Cálculo Numérico. São Paulo: LTC, 2007. GUIDORIZZI, H. L. Um curso de cálculo. 6. ed. v. 1. Rio de Janeiro: LTC, 2018. KHOURY, J. Application to a probleme of Fibonacci. Disponível em: http://aix1.uottawa. ca/~jkhoury/fibonacci.htm. Acesso em: 31 maio 2021. RAMOS, R. Ciência de dados: uma breve história. O Estatístico. Disponível em: https:// oestatistico.com.br/ciencia-de-dados-uma-breve-historia/. Acesso em: 31 maio 2021. SIMÕES, I. Ada Lovelace desafiou o machismo e se tornou a primeira programadora da história. Darkside. Disponível em: https://darkside.blog.br/ada-lovelace-desafiou-o- machismo-e-se-tornou-a-primeira-programadora-da-historia/. Acesso em: 31 maio 2021. ZAHN, M. Sequência de Fibonacci e o Número de Ouro. Rio de Janeiro: Ciência Moderna, 2011. http://aix1.uottawa.ca/~jkhoury/fibonacci.htm http://aix1.uottawa.ca/~jkhoury/fibonacci.htm Noções sobre sistemas de numeração 29 2 Noções sobre sistemas de numeração Você já parou para pensar que o sistema de numeração que usamos na atualidade passou por diversas transformações ao longo da história para chegar ao que ele é hoje? Além disso, por muito tempo ele não foi único. Diferentes civilizações construíram seus próprios sistemas de numeração com os conhecimen- tos que tinham na época. E você sabia que esse sistema numérico que usamos, o indo-arábico, fortemente desenvolvido, embasado e com toda a estrutura matemática moderna construída sobre ele, é deixado de “lado” quando pensamos em cálculos realizados por um computador? Além do sistema de numeração adotado, quando o computador é usa- do ainda precisamos admitir propagações de erro. Sim, o computador comete muitos erros numéricos. Com o estudo deste capítulo, você será capaz de: • compreender os diferentes sistemas de numeração; • identificar erros numéricos e como interpretá-los; • caracterizar as diferentes representações numéricas computacionais; • compreender o conceito de erro numérico. Objetivos de aprendizagem 2.1 Sistemas de numeração Vídeo Um dos sistemas de numeração mais antigos foi encontrado, por meio de pesquisas arqueológicas, na Tchecoslováquia, Europa, em 1937, com data entre aproximadamente 35000 a.C. e 20000 a.C. Basicamente, 30 Matemática para Computação os pesquisadores encontraram um osso (tíbia) de lobo jovem com mar- cações unitárias feitas por meio de traços (cortes transversais), na forma: I II III IIII Ao todo eram 57 traços, sendo os primeiros 25 agrupados de 5 em 5 (ALMEIDA, 2011). Essa descoberta nos mostra a necessidade da contagem e possibili- ta discutir sobre os sistemas de numeração. O tipo de contagem observada nesse estudo é dita aditiva, em que, para se ter o próximo número, basta acrescentar uma marcação (|). Além disso, o sistema de numeração foi composto de apenas um sím- bolo, sendo chamado de sistema de numeração de base 1. A obra Através do espelho e o que Alice encontrou por lá, escrita em 1871 pelo matemático Lewis Carroll (1832-1898) e traduzida para mui- tos idiomas – inclusive o português –, traz um diálogo entre a rainha Branca e Alice, que demonstra a dificuldade que teríamos se o sistema de numeração de base 1 fosse adotado atualmente. Alice fala para a rainha que aulas servem para nos ensinar a fazer contas, e a rainha lhe pergunta: “e sabe Adição? Quanto é um mais um mais um mais um mais um mais um mais um mais um mais um mais um?”. Alice lhe res- ponde: “não sei. Perdi a conta” (CARROLL, 2013, p. 186). Na história da matemática identificamos diversas civilizações que adotaram sistemas ditos aditivos. Mas como exatamente (algebricamente) podemos definir um sistema aditivo? Vamos assumir que b é um número natural, tal que determinado sistema aditivo está escrito na base b. Assim, temos duas condições que precisam ser respeitadas: 1 O sistema deverá ter b símbolos para sua representação numérica, ou seja, teremos a1, a2, ..., ab símbolos para representar os números de um até b. Esses números deverão ser representados em ordem crescente. Caso tenha se interessado pelas obras de Carroll e queira saber um pouco mais sobre esse assunto, sugerimos o texto Lewis Carroll e a matemática do País das Maravilhas, publicado pela Sociedade Brasileira de Matemática. Disponível em: https://www. sbm.org.br/noticias/lewis-carroll- e-a-matematica-do-pais-das- maravilhas. Acesso em: 2 jun. 2021. Leitura https://www.sbm.org.br/noticias/lewis-carroll-e-a-matematica-do-pais-das-maravilhas https://www.sbm.org.br/noticias/lewis-carroll-e-a-matematica-do-pais-das-maravilhashttps://www.sbm.org.br/noticias/lewis-carroll-e-a-matematica-do-pais-das-maravilhas https://www.sbm.org.br/noticias/lewis-carroll-e-a-matematica-do-pais-das-maravilhas Noções sobre sistemas de numeração 31 2 Deve-se obedecer a regra do sucessor, que implica assumir que se um número termina em ai, com i ≠ b, então a representação de seu sucessor será obtida por meio da substituição de ai por ai+1. Caso a representação de um número termine em ab, seu sucessor será obtido acrescentando a1 à representação dada. Entre alguns dos sistemas aditivos mais importantes na história, en- contram-se o sistema hieroglífico (Figura 1), desenvolvido pelos egíp- cios por volta de 3400 a.C., e o sistema de numeração da antiga Grécia, desenvolvido por volta do século IV a.C. Figura 1 Sistema numeral egípcio Numerais egípcios Sistema numérico hieroglífico egípcio Sistema egípcio de numeração hierática Si dh e/ Sh ut te rs to ck No entanto, foi com o sistema chamado posicional que a matemáti- ca começou a se desenvolver com maior rapidez. 32 Matemática para Computação Não se tem consenso de qual foi a civilização que idealizou primeiro o chamado sistema de numeração posicional, em que se encontram o nosso sistema posicional de base decimal e o sistema binário computacional, mas o que se sabe é que, para esse tipo de construção, foi necessário o desenvolvimento lógico da ideia de agrupamentos entre os números. Nesse contexto histórico, identificou-se que os hindus praticaram o sistema posicional decimal e tiveram a preocupação de construir uma representação visual dele, que pudesse ser transferida de maneira escrita. Entretanto, foram os árabes que divulgaram esse sistema de numeração pelo ocidente, e por esse motivo o chamamos de sistema indo-arábico. Figura 2 Evolução do sistema posicional decimal Hindu – 300 a.C. Hindu – 500 d.C. Árabe – 900 d.C. Árabe – (Espanha) 1000 d.C. Italiano – 1400 d.C. Hoje Fonte: Elaborada pela autora. Um sistema de numeração posicional é aquele em que a posição na qual o algarismo se encontra modifica o seu valor, ou seja, no caso do sistema posicional de base decimal (o sistema que usamos), se o algarismo 1 estiver na posição (casa) da unidade, ele vale 1 unidade. Se o mesmo algarismo estiver na posição da dezena (casa da dezena), ele vale 10 unidades. Se estiver na posição da centena, vale 100 unidades, e assim sucessivamente. Usando o sistema numérico posicional decimal, a Tabela 1 apre- senta alguns exemplos com diferentes posicionamentos para o al- garismo 1. Noções sobre sistemas de numeração 33 Tabela 1 Posição do algarismo 1 em relação ao valor numérico obtido Classes Milhões Milhares Unidades simples Ordens c d u c d u c d u 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 Fonte: Elaborada pela autora. Um sistema de numeração posicional pode ser definido de maneira geral (algébrica), assim como fizemos para os sistemas posicionais. Nesse contexto, usaremos b ∈ ℕ como uma base qualquer. Assim, para construir um sistema posicional de base b, precisamos garantir duas con- dições. Por isso, considere b ≠ 1. Inicialmente, precisamos determinar b símbolos, sendo um desses destinado a representar a casa vazia (zero) e os demais destinados a representar os números de 1 a (b – 1). 1 Se o número a ser representado tem como unidade um dos algarismos que representam 0, 1, ..., (b – 2), ele terá um sucessor substituindo-se esse algarismo por seu sucessor, apresentado na ordem crescente, que será (b – 1). 2 Se o número a ser representado tem como unidade o algarismo que representa (b – 1), ele já é o último algarismo dessa base. Nesse caso a representação do sucessor será obtida substituindo-se esse algarismo por zero e, em seguida, aplicando-se recorrentemente os itens 1 e 2 dessa regra à casa seguinte. 3 Se a casa seguinte for vazia, considera-se como se ela tivesse o valor zero. Atualmente, o sistema de numeração posicional de base dez (siste- ma indo-arábico), em que a posição do algarismo indica a potência de 10 que o dígito representa, é usado em todo o mundo, sendo utilizado de maneira tão intuitiva, como uma criança pequena que usa os dedos para contar, que é difícil imaginar qualquer tipo de construção numéri- ca sem essa formatação. 34 Matemática para Computação Observe o exemplo de como decompomos um número no sistema posicional decimal por meio da representação geral enunciada. Exemρlo 1 x = (1957)10 = 1 · 10 3 + 9 · 10 2 + 5 · 101 + 7 · 100 Note que, com esse formato, fica evidente o uso da chamada base decimal. Essa formatação será adotada para a escrita das próximas ba- ses que estudaremos nesta obra. Queremos conceituar e identificar as características não só para o sistema posicional decimal, mas para outros sistemas posicionais que são usados na matemática e na computação, permitindo, assim, uma visão do cálculo numérico envolvido nesse processo. Definição 1 Dados um número natural com b > 1 e o conjunto de símbolos {±, 0, 1, 2, ..., b – 1}, a sequência de símbolos (dndn–1 ... d1d0, d-1d-2 ...)b representa o número positivo dn · b n + dn–1 · b n–1 + ... + d0 · b 0 + d–1 · b –1 + d–2 · b –2 + … Para representar números negativos, usamos o símbolo – à esquer- da do numeral, conforme exemplificamos a seguir. Exemρlo 2 x = (1.957,897)10 x = 1 · 103 + 9 · 102 + 5 · 101 + 7 · 100 + 8 · 10–1 + 9 · 10–2 + 7 · 10–3 x = 1.000 + 900 + 50 + 7 + 0,8 + 0,09 + 0,007 Portanto, percebemos que, além da escolha do sistema de numera- ção (aditivo ou posicional), há muitas representações distintas em rela- ção à quantidade de algarismos envolvida em cada um desses modelos (bases adotadas). Noções sobre sistemas de numeração 35 Na próxima seção, focamos nos sistemas posicionais mais utilizados pela matemática moderna e pela matemática computacional. 2.2 Representação numérica Vídeo Entender a representação numérica do sistema escolhido não só possibilita sua compreensão, mas viabiliza realizar operações com o tipo de numeração escolhido, além de permitir verificar possíveis erros cometidos nos cálculos. Como nosso foco é trabalhar com a matemática para a computa- ção, dedicaremos esta seção à representação numérica implícita nas máquinas digitais eletrônicas, ou seja, nos computadores. Assim, o primeiro sistema que vamos discutir é o chamado sistema de numeração posicional de base dois ou base binária. 2.2.1 Sistema binário Quando pensamos em um sistema de numeração que permita realizar operações no computador (chamamos de computador as má- quinas digitais eletrônicas), a base utilizada é a base dois. Seu uso está diretamente vinculado ao desenvolvimento das máquinas digitais. Durante muitos séculos se creditou a Gottfried Wilhelm Leibniz (1646-1716) a idealização da base binária. Para saber mais sobre Leibniz e a relação desse matemático com a base da computação, sugerimos a leitura de Leibniz e nosso mundo digital, de Gilberto Garbi, publicado pela Revista do Professor de Matemática (RPM). Acesso em: 2 jun. 2021. https://www.rpm.org.br/cdrpm/84/1.html Artigo Contudo, pesquisas recentes demonstram que em uma pequena ilha da Polinésia, séculos an- tes da idealização de Leibniz, o povoado de Mangareva já utilizava a base binária para rea- lizar cálculos que permitiam a comercialização de seus produtos. Gottfried Wilhelm Leibniz Nicku/Shutterstock 36 Matemática para Computação Ao analisar a pesquisa dos cientistas noruegueses Andrea Bender e Sieghard Beller, do departamento de ciência psicossocial da Universidade de Bergen, na Noruega, Javier Sampedro (2013) descreve que os pesquisadores mostram agora como os habitantes da Mangareva não só inven- taram o sistema para contar peixes, frutas, cocos, polvos e outros bens de diferente valor em suas transações comerciais, como tam- bém que isso conduziu a uma aritmética binária que teria mere- cido a aprovação do Leibniz por sua simplicidade e naturalidade. Dos fatos históricos, sabemos que a base binária foi deixa-da de lado até mesmo por Leibniz, e apenas séculos após sua morte, em 1841, foi redescoberta pelo matemático George Boole (1815-1864), o qual desenvolveu a chamada álgebra booleana, que permitiu o desenvolvimento do computador digital eletrônico, imprescindível para o desenvolvimento em praticamente todas as áreas do conhecimento na atualidade. O computador lida com grandezas representadas como se- quências de bits (base 2). Quando precisamos transcrever um método matemático para um mé- todo numérico, ou seja, para a matemática computacional, precisamos, em primeiro lugar, compreender como um computador manipula as in- formações – no nosso caso, as informações são numéricas e simbólicas. Toda informação manipulada por um computador é representada como uma sequência de bits (binary digits). Ao agrupar 8 bits, temos 1 byte; quando agrupados (Figura 3), os bytes darão origem aos kilobytes, megabytes, gigabytes, terabytes etc. – termos comumente usados na computação e no nosso dia a dia. Figura 3 Sequência de bits Ra hi m ov E m in /S hu tte rs to ck Medidas de informação eletrônica Célula de memória de 8 bits 0 1 0 1 1 0 1 0 1 byte = 8 bit 1 KB = 8.192 bit 1 KB = 1.024 byte 1 MB = 1.024 KB 1 GB = 1.024 MB 1 TB = 1.024 GB KB – kilobyte MB – megabyte GB – gigabyte TB – terabyte Sugerimos a leitura na íntegra do texto Um sistema binário inventado na Polinésia séculos antes de Leibniz, do autor Javier Sampedro. Disponível em: https://brasil. elpais.com/brasil/2013/12/16/ sociedad/1387215405_275511. html. Acesso em: 2 jun. 2021. Leitura George Boole Wd wd /W ikim edi a C omm ons https://brasil.elpais.com/brasil/2013/12/16/sociedad/1387215405_275511.html https://brasil.elpais.com/brasil/2013/12/16/sociedad/1387215405_275511.html https://brasil.elpais.com/brasil/2013/12/16/sociedad/1387215405_275511.html https://brasil.elpais.com/brasil/2013/12/16/sociedad/1387215405_275511.html Noções sobre sistemas de numeração 37 Um bit aceita duas respostas possíveis: • 0 – não, falso, desligado; • 1 – sim, verdadeiro, ligado. Na área eletrônica, interpreta-se isso como passagem de ener- gia (sim) ou sem passagem de energia (não). Essa leitura do código binário é feita milhares de vezes por segundo. Esse tipo de representação, também chamado de representação binária, matematicamente pode ser traduzido como um sistema de numeração na base dois. Exemρlo 3 Assim, para a codificação de um número natural entre 0 e 255, por exemplo, seriam suficientes 8 bits, pois 28 = 256. Desse modo, para representá-los, restaria apenas atribuir valores 0 ou 1. O número natural 255 será representado em uma sequência de bits (sequência binária) por 11111111. Mais adiante explicaremos os processos de conversão. Como demonstramos, o sistema de numeração na base dois, também chamado de binário na área da computação, tem seus al- garismos reconhecidos e representados por meio dos bits (binary digits). Já identificamos que um bit pode assumir dois valores dis- tintos: 0 ou 1. Embasados nos conhecimentos adquiridos até o momento so- bre base binária, começamos a trabalhar com as mudanças de base. Com essa finalidade, o exemplo a seguir apresenta uma mudan- ça da base binária para a base decimal, tendo como ideia principal o tipo de conversão adotada pelo computador. fli gh t o f i m ag in at io n/ Sh ut te rs to ck Representação do código binário pelos botões com símbolos I (ligado) e O (desligado). Figura 4 0 ou 1 Para conhecer mais sobre a relação entre bits e bytes e a sucessão de agrupamentos, sugerimos a leitura de Qual a diferen- ça entre Kilobyte, Megabyte, Gigabyte e Terabyte?, pu- blicado no site da Copel Telecom. Disponível em: https://www. copeltelecom.com/site/blog/ kilobyte-megabyte-gigabyte- terabyte/. Acesso em: 2 jun. 2021. Leitura https://www.copeltelecom.com/site/blog/kilobyte-megabyte-gigabyte-terabyte/ https://www.copeltelecom.com/site/blog/kilobyte-megabyte-gigabyte-terabyte/ https://www.copeltelecom.com/site/blog/kilobyte-megabyte-gigabyte-terabyte/ https://www.copeltelecom.com/site/blog/kilobyte-megabyte-gigabyte-terabyte/ 38 Matemática para Computação Exemρlo 4 Seja x = 1001,101, então 1 · 23 + 0 · 22 + 0 · 21 + 1 · 20 + 1 · 2–1 + 0 · 2–2 + 1 · 2–3 = 8 + 0 + 0 + 1 + 0,5 + 0 + 0,125 = 9,625 Portanto, (1001,101)2 = (9,625)10. Note que no exemplo utilizado respeitamos a posição de cada um dos elementos e fizemos a conversão, em primeiro plano, assumindo o valor de cada posição e, na sequência, somando esses resultados. Esse é o processo que será adotado para as bases que veremos na sequência. 2.2.2 Sistema quaternário No sistema quaternário a base b é igual a 4 e, portanto, temos o conjunto de algarismos {0, 1, 2, 3}. Exemρlo 5 Seja x = (301,2)4, então 3 · 42 + 0 · 41 + 1 · 40 + 2 · 4–1 = 48 + 0 + 1 + 0,5 = 49,5 Portanto, (301,2)4 = (49,5)10. Mais adiante veremos como converter uma base decimal para uma base qualquer. Na sequência, apresentamos a base hexadecimal, ou seja, uma base formada por 16 algarismos. 2.2.3 Sistema hexadecimal O estudo do sistema hexadecimal auxilia no processo de represen- tação de sequências maiores de bits, por exemplo, com 16 ou 32 bits. Se b > 10, usamos as letras A, B, C, ... para denotar A = 10, B = 11, C = 12, ... Para ficar claro esse sistema, vamos exemplificar. Noções sobre sistemas de numeração 39 Exemρlo 6 Se temos b = 16, ou seja, o conjunto de algarismos {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F}, e queremos converter o número x = (E2AC)16 para a base decimal, fazemos: (E2AC)16 = 14 · 16 3 + 2 ·162 + 10 ·161 + 12 · 160 (E2AC)16 = 57.344 + 512 + 160 + 12 = 58.028 A base hexadecimal também é amplamente usada na computação. Você já ouviu falar do tripleto hexadecimal, também chamado de web color (Figura 5)? O tripleto hexadecimal recebe esse nome porque é uma combina- ção de 3 bytes, pois cada cor formada possui três duplas escritas em formato hexadecimal. Cada dupla representa uma cor, sendo elas: ver- melho, verde e azul (RGB). A variação da combinação hexadecimal no tripleto dará origem às demais cores. Figura 5 Web color R. A . N on en m ac he r/ W ik im ed ia C om m on s 40 Matemática para Computação Exemρlo 7 A cor azul-marinho é escrita como 12 0A 8F no sistema tripleto hexadecimal. Portanto, cada dupla terá 16 possibilidades para a primeira posição e mais 16 para a segunda, formando um byte de 256 possibilidades. Como temos três duplas, as possibilidades de combinação serão 256 · 256 · 256 = 16.777.216. Essa estrutura de cores é usada para documentos HTML, CSS, entre outros. É possível observar os códigos hexadecimais de uma quantidade considerável de cores e a conversão para outros sistemas de cores que podem ser adotados computacionalmente. A seguir, veremos o processo da transformação inversa, ou seja, co- nhecendo um número na base 10, converteremos ele para a base b desejada. 2.2.4 Processo inverso Nesta seção trabalharemos com a conversão de números na base decimal (x)10, os quais serão convertidos para uma base b qualquer. Ou seja, queremos trabalhar com a seguinte representação algébrica: (x)10 = (dndn–1 ... d0, d–1 ...)b (x)10 = dn · b n + dn–1 · b n–1 + … + d0 · b 0 + d–1 · b –1 + … Inicialmente, para conseguirmos realizar a conversão, separamos a parte inteira de (x)10 da sua parte fracionária (também chamada de mantissa), obtendo (x)10 = x i + xf. Assim, temos xi = dn · b n + dn–1 · b n–1 + … + d0 · b 0 x d b d b f � � ��� �1 1 2 2 Uma tabela bem extensa de combinações de cores pode ser encontrada no site Nas artes gráficas. Disponível em: http:// nasartesgraficas.blogspot. com/2014/08/lista-de-cores.html. Acesso em: 2 jun. 2021. Site http://nasartesgraficas.blogspot.com/2014/08/lista-de-cores.html http://nasartesgraficas.blogspot.com/2014/08/lista-de-cores.html http://nasartesgraficas.blogspot.com/2014/08/lista-de-cores.html Noções sobre sistemas de numeração 41 Portanto,precisamos determinar os valores para o conjunto {dn, dn–1, ...}, que é composto tanto de elementos da parte inteira como de elementos da parte fracionária. • Parte inteira (xi = dn · b n + dn–1· b n–1 + … + d0 · b 0) ÷ (b) = x b d b d b d d b i n n n n� � � � ��� �� � �1 1 2 1 0 Observe que d0 é o resto da divisão de x i por b, pois d1 + d2 ∙ b1 + ... + dn–1 · b n–2 + dn ∙ bn–1 é inteiro e d b 0 é uma fração com d0 < b. Da mesma forma, o resto da divisão de d1 + d2 ∙ b1 + ... + dn–1 · bn–2 + dn ∙ bn–1 por b é d1. Ou seja, repetindo esse processo encontramos os algarismos d0, d1, d2, ..., dn. Para a análise da parte inteira, temos uma ferramenta extremamen- te simples que pode ser usada: a divisão. Por meio de sucessivas divisões, podemos rapidamente converter um número da base decimal para a base binária. Exemρlo 8 Para a conversão de (3)10 para a base binária, fazemos: 3 ÷ 2 = 1 → Resto 1 1 ÷ 2 = 0 → Resto 1 O resultado será obtido, justamente, por meio dos restos. Portanto, (3)10 = (11)2. Também podemos converter um número na base 10 para a base binária por meio das divisões sucessivas, como é feito no exemplo a seguir. 42 Matemática para Computação Exemρlo 9 A conversão do número (142)10 para a base binária poderia ser re- solvida assim: (142)10 = (10001110)2 142 2 71 2 35 2 17 2 8 2 4 2 2 2 1 2 0 0 0 0 0 1 1 1 1 Por fim, um exemplo da conversão de bases de um número decimal. Exemρlo 10 Vamos converter o número 3,625 para a base binária (b = 2). Pri- meiramente, decompomos 3,625 na soma de suas partes inteira e fracionária. x = 3 + 0,625 Logo, xi = 3 e xf = 0,625. Nesse exemplo, resolveremos a parte inteira dessa conversão. Assim, precisamos fazer sucessivas divisões por b = 2. Então: xi = 3 = 1 · 2 + 1 = 1 · 21 + 1 · 20 Portanto, xi = 1 · 21 + 1 · 20 = (11)2. Para a parte fracionária do número, temos o seguinte: • Parte fracionária x d b d b b b x d d b f f� � �� � � � � � � � � � � � � � ��� � � �11 22 1 2 Noções sobre sistemas de numeração 43 Nesse produto, note que a parte inteira é d–1 e a parte fracionária é d b �� ��2 ; ao multiplicarmos novamente por b, temos d–2. Para encon- trar os algarismos restantes, repetimos esse processo. Exemρlo 11 Continuando o Exemplo 10, agora precisamos fazer sucessivas multiplicações por b = 2, para obtermos a parte fracionária do nú- mero 3,625. xf = 0,625 2 · xf = 1,25 · 2–1 = 1 · 2–1 + 0,25 · 2–1 = 1 · 2–1 + (0,5 · 2–1) · 2–1 = 1 · 2–1 + 0,5 · 2–2 = 1 · 2–1 + (1 · 2–1) · 2–2 = 1 · 2–1 + 1 · 2–3 Portanto, xf = 1 · 2–1 + 0 · 2–2 + 1 · 2–3 = (101)2. Logo, (3,625)10 = (11,101)2. Outras ferramentas computacionais podem ser usadas – entre elas, encontram-se algumas linguagens de programação, como Sclilab e PythonTM. Aqui, relembramos que o processo aplicado pelo computador é o de converter de binário para decimal, mas as conversões são impor- tantes para garantir a veracidade dos nossos cálculos e a viabilidade de possíveis aplicações. 2.3 Representação em ponto flutuante Vídeo Um número, na matemática, pode ser infinito, e isso é impossível de ser representado no computador, visto que este trabalha com um número de bits limitado e predefinido (WEBER, 2004). Pensando na estrutura numérica computacional, dizemos que há três formas possíveis de representação de um número no computador: I. Inteiro natural. II. Inteiro relativo. III. Generalização dos dois casos anteriores, ou seja, um número real. 44 Matemática para Computação É possível representar números inteiros, ou seja, considerar a parte negativa do conjunto, atribuindo um bit mais à esquerda, cha- mado de sinal ou bit forte. Por meio desse primeiro bit saberemos se o número é positivo ou negativo. Já no caso dos números reais, ou seja, considerando também núme- ros decimais, a Institute of Electrical and Electronic Engineers (IEEE) defi- ne uma fórmula para ser aplicada (padrão IEEE754). Essa representação (Quadro 1) é chamada de representação em ponto flutuante. Seja um com- putador de 32 bits, essa estrutura fica escrita da seguinte forma: (–1)S ∙ bE ∙ F Quadro 1 Organização do ponto flutuante S bit1� E F Fonte: Elaborado pela autora. Em que: • b é a base; • S = 0 (número positivo) ou S = 1 (número negativo); • E deve ser calculado por m ≤ E ≤ M, com m sendo o valor míni- mo que a máquina pode representar e M sendo o valor máximo (|m| ≈ M); • F, chamado de mantissa, conterá os bits situados após a vírgula. Acompanhe o exemplo a seguir para compreender melhor. Exemρlo 12 Considere uma máquina com registro de 32 bits e base b = 2. Pelo padrão IEEE754 (Quadro 2), 1 bit será usado para o sinal (S), 8 bits serão usados para o expoente (c7, ..., c0) e 23 bits serão usados para a man- tissa (d1, ..., d23). Quadro 2 Padrão IEEE754 S c7 c6 ... c0 d1 d2 ... d22 d23 Fonte: Elaborado pela autora. Se você se interessou por esse tema, sugerimos a leitura do material Padrão IEEE 754 para aritmética binária de ponto flutuante. Disponível em: https://www.lia.ufc. br/~valdisio/download/ieee.pdf. Acesso em: 2 jun. 2021. Leitura https://www.lia.ufc.br/~valdisio/download/ieee.pdf https://www.lia.ufc.br/~valdisio/download/ieee.pdf Noções sobre sistemas de numeração 45 Assumindo que E = c – BIAS, em que BIAS é o valor do deslocamento do expoente (polarização), temos: x = (–1)S ∙ 2c–BIAS F com c = (c7c6 ... c0)2 e F = (1,d1d2 ... d22d23) De acordo com Gilat e Subramaniam (2008, p. 23, grifos do original), “computadores armazenam números e realizam cálculos em precisão simples ou em precisão dupla. Na precisão simples, os números são armazenados em uma cadeia de 32 bits (4 bytes), e, na precisão dupla, em uma cadeia de 64 bits (8 bytes)”. Exemρlo 13 Queremos representar em notação ponto flutuante os números • x = (1)10 • y = (–11)10 • z = (231)10 assumindo precisão simples (32 bits) e base hexadecimal. No primeiro caso, x = (1)10, teremos a primeira casa composta do sinal, logo S = 0, pois 1 é positivo. Assim: 0 0 1 0 0 0 0 0 0 Agora, no segundo caso, y = (–11)10, como o valor é negativo, a pri- meira casa será representada por S = 1. Assim: 1 b 0 0 0 0 0 0 0 No último caso, ou seja, z = (231)10, teremos S = 0 e a representação: 0 e 7 0 0 0 0 0 0 Note que na representação em ponto flutuante dos três números não usamos as casas referentes a: d1 d2 ... d22 d23 Isso porque em nenhum deles há parte fracionária. 46 Matemática para Computação Note que aumentar o número de bits na mantissa melhora a preci- são. Já aumentar a quantidade de bits no expoente permite que tenha- mos um intervalo de números representáveis muito maior. Com isso, é possível perceber padrões muito bem definidos para a construção do cálculo numérico e da matemática computacional. 2.4 Erros numéricos Vídeo Quando falamos de erros, estamos tratando da diferença entre o valor real e o valor obtido. É comum que sejam necessárias diversas simplificações do pro- blema real para que se tenha um modelo matemático com solução possível. Observe a Figura 6 a seguir, que apresenta a comparação entre um modelo físico (geoide) e um modelo matemático (elipsoide) da super- fície da Terra. Figura 6 Comparação entre modelos Modelo físico – geoide jd rv _a rt/ Sh ut er st oc k Modelo matemático – elipsoide Al ex an de rZ am /S hu te rs to ck Assim sendo, o processo de propagação de erros começa quan- do transformamos um problema real em um modelo físico e este em um modelo matemático. Tal modelo matemático poderá ser resolvido de modo que tenhamos uma solução analítica ou uma solução numérica. Noções sobre sistemas de numeração 47 Ku bk o/ Sh ut te rs to ck Problema real Modelo físico Modelo matemático Solução analítica Solução numérica Implementação computacional Resultado numérico Note que ao desenvolvermos o modelo matemático, precisamos escolher entre a obtenção de uma solução analítica e uma solução numérica. Neste ponto, temos um grandequestionamento. Por que usar um método numérico? A resposta é mais simples do que imaginamos. Os modelos que possuem solução analítica precisam ser extremamente simplificados. Já os modelos que podem ser resolvidos numericamente podem con- 48 Matemática para Computação ter mais variáveis e equações e, assim, um requinte maior nas equa- ções que os contemplam. Como o modelo usado para a obtenção numérica é mais “refinado”, o erro inerente ao método e à máquina pode ser muito menor se compa- rado ao erro obtido com a solução analítica, que foi encontrada por meio de um modelo muito mais “grosseiro”. Com isso, concluímos que nem sempre usamos o mesmo modelo matemático para as duas abordagens. Em geral, modelos matemáticos computacionais podem abranger um número maior de situações quan- do comparados ao problema real. Por meio do arredondamento e do truncamento, que especificare- mos na sequência, conseguimos perceber a propagação de erros a que a resolução de um problema pode estar exposta. Como vimos, os números não são representados computacionalmen- te de maneira exata. Essa “perda” dependerá da capacidade da máquina. A precisão, denotada por p, de um computador é o número de dígi- tos significativos usados para representar um número. Os dígitos signi- ficativos são todos os dígitos certos adicionados ao primeiro algarismo duvidoso. Dessa forma, os números infinitos (ou mesmo muito grandes) aca- bam sendo arredondados ou truncados, ocasionando erros. Esses mesmos números, quando em operações, ocasionarão a chamada pro- pagação de erros. Além desses erros, ainda temos a chamada incerteza dos dados e os erros de modelagem matemática. Nesse caso, em vez de pensar na transformação de um número para sua forma finita, levamos em con- sideração a construção do modelo matemático e, com isso, a acurácia dos instrumentos de medição que estão envolvidos na construção desse modelo, além das ferramentas matemáticas disponíveis para solucionar o problema. Vamos entender qual tipo de ajuste é necessário quando arredon- damos ou truncamos um número e o que isso acarreta para o cálculo. 2.4.1 Erro de arredondamento O arredondamento de um número é feito analisando o primeiro al- garismo após o dígito duvidoso. acurácia: “[Física] Proxi- midade entre o resultado de um instrumento de medida e o verdadeiro valor do que foi medido” (DICIO, 2021). Glossário Noções sobre sistemas de numeração 49 Caso o dígito duvidoso seja maior do que 5, aumenta-se de uma unidade o algarismo duvidoso e desprezam-se os demais. Caso o dígito duvidoso seja menor do que 5, mantém-se o valor do algarismo duvidoso e desprezam-se os demais. Caso o dígito duvidoso seja igual a 5, há dois caminhos: • Se o algarismo duvidoso imediatamente anterior à parte despre- zada for um número ímpar, deve-se aumentá-lo em uma unidade. • Se o algarismo duvidoso imediatamente anterior à parte despre- zada for um número par, deve-se deixá-lo como está (inalterado). di fu gi c re at ive /S hu tte rs to ck Para compreender essas especificações sobre arredondamento, acompanhe o exemplo a seguir. Exemρlo 14 1 3 0 333 0 33� � �� � �, � , π = 3,1415926 ... ≈ 3,141693 1,55500... ≈ 1,56 0,805... ≈ 0,80 Adotamos o arredondamento numérico porque computacional- mente não é possível representar números infinitos, ou seja, esse tipo de ajuste é feito por causa das limitações existentes na representação numérica em máquinas digitais. Mas existem outros tipos de erros que podem se propagar quando transformamos um problema. 2.4.2 Erro de truncamento O chamado truncamento será o corte aplicado aos dígitos não sig- nificativos de um número infinito (ou muito grande), de acordo com a precisão possível da máquina. 50 Matemática para Computação O truncamento também ocorre quando se aplica um método numé- rico na solução de um problema e esse método leva a uma sucessão de termos infinitos. Computacionalmente, essa abordagem não é possível; nesses casos, trunca-se a série de termos em determinado ponto no qual o erro seja aceitável. Em geral, é necessário definir em cada problema o que é conside- rado um erro aceitável. Assim, o resultado encontrado, após o trunca- mento, será analisado perante a obtenção desse erro. Resumidamente, um erro de truncamento ocorre quando transfor- mamos uma representação de um processo infinito em uma represen- tação finita. É comum, por exemplo, truncarmos séries de funções, como no exemplo a seguir. Exemρlo 15 Seja a função sen x escrita por meio de uma série de potências na forma: sen x x x x x� � � � �� 3 5 7 3 5 7! ! ! Sabemos que o valor de sen �π 6 é igual a 1 2 . Contudo, se calcular- mos esse valor por meio de uma série de potências trigonométrica truncadas, teremos: sen � � � � � 6 6 6 3 2 1 6 5 4 3 2 1 6 7 6 5 3 5 7 � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �44 3 2 1� � � Nesse caso, sen � 6 0 49999999187� � � � � � � , . Note que para esse cálculo, além do erro de truncamento, ainda te- mos um erro de arredondamento. Portanto, começamos a perceber a propagação de erros intrínseca em diversos métodos computacionais. 2.4.3 Erro absoluto e erro relativo Com os ajustes numéricos necessários para a representação com- putacional (arredondamento, truncamento etc.), além dos ajustes nos Noções sobre sistemas de numeração 51 modelos e nas demais aproximações aplicadas, surge a questão refe- rente à quantificação dos erros envolvidos nesses processos. Para verificar se o resultado atingido foi bom, é necessário compará- -lo ao resultado exato. Nesse ponto, surgem algumas métricas que nos permitem quanti- ficar os erros. As medidas de erro mais utilizadas são o erro absoluto e o erro relativo. Definição 2 – erro absoluto Sejam x um número real e�x sua aproximação. O erro absoluto da aproximação �x é definido, de acordo com Justo et al. (2021), como: E x xA � � Apresentamos a seguir um exemplo que nos auxilia na compreen- são do cálculo para esse tipo de erro. Exemρlo 16 A área da circunferência é dada por A = πr². Se r = 3, então a área exata será dada por A = 9π. Mas o que ocorre se π for arredondado? Sejam π1 = 3,14 e π2 = 3,141593. Então, A1 = 9 · 3,14 = 28,26 e A2 = 9 · 3,141593 = 28,274337. Erro absoluto: E x xA � � → EA = |28,274337 – 28,26| = 0,014337. Em muitos casos, desejamos calcular uma taxa entre o erro e a solu- ção real. Nessa situação, precisamos do chamado erro relativo, definido a seguir. Definição 3 – erro relativo Sejam x um número real e�x sua aproximação. O erro relativo da aproximação �x é definido, de acordo com Justo et al. (2021), como: E x x x �xR � � �, 0 O erro relativo é adimensional e, muitas vezes, é expresso em porcentagens. 52 Matemática para Computação Exemρlo 17 Utilizando os mesmos dados do Exemplo 14, vamos calcular o erro relativo. Sejam π1 = 3,14 e π2 = 3,141593. Então, A1 = 9 · 3,14 = 28,26 e A2 = 9 · 3,141593 = 28,274337. Erro relativo: E x� �x xR � � . E � � � � %R � � � � � 28 274337 28 26 28 274337 0 0005070675927 100 0 050 , , , , , 77% Uma forma de minimizar o alastramento de erros em um modelo numérico é reduzir o número de operações. Exemρlo 18 Considere o polinômio dado por: pn(x) = anx n + an–1x n–1 + … + a1x 1 + a0 = ((…(anx + an–1)x + an–2)x + …a1)x + a0 Note que a primeira representação do polinômio contém mais ope- rações do que a segunda representação. Sendo assim, o erro geral no segundo caso será menor, pois serão necessários menos ajustes numéricos e, com isso, um menor alastra- mento de erros. Esse tipo de manipulação precisa ser trabalhado com suas especifi- cidades, dentro de cada método numérico e cada situação que permita a implementação computacional. CONSIDERAÇÕES FINAIS Neste capítulo percorremos trechos da história da matemática que permitiram o desenvolvimento da história da computação. Identificamos alguns matemáticos que estiveram diretamente relacionados com a construção
Compartilhar