Sei sulla pagina 1di 20

Introduo

Introduo ao Clculo Numrico e Computacional


Introduo
O Clculo Numrico consiste na obteno de solues aproximadas de problemas de lgebra Linear e No-Linear, Estatstica e Anlise de Dados, Clculo Diferencial e Integral e outros mtodos matemticos, utilizando mtodos numricos. Com a popularizao de computadores de baixo custo e de alta capacidade de processamento, praticamente todas as atividades de Engenharia tem feito uso cada vez mais intensivo dos mtodos e tcnicas computacionais na resoluo de problemas reais, para os quais as solues manuais so impraticveis e/ou imprecisas. Desta forma, o uso do computador como ferramenta de trabalho de clculo numrico requer o entendimento dos seus princpios de operao e de como eles interferem nos resultados obtidos. Geralmente, aceito como verdade que computadores no erram e que so os usurios que cometem enganos que levam ao mal funcionamento do computador. Na realidade, o computador, como dispositivo de clculo numrico, comete erros devido s suas caractersticas intrnsecas e o papel do usurio quantificar esses erros e encontrar formas de, se no eliminlos, pelo menos minimiz-los.

Hardware e Software
Hardware o termo em ingls empregado para designar todo e qualquer componente, parte e sistema, capaz de realizar um processamento computacional, isto , um processamento de modificao e controle de dados numricos. Exemplos de hardware so o computador, suas partes, componentes e perifricos (monitor de vdeo, disco magntico, impressora, etc). Um computador constitudo pelas seguintes unidades: unidade central de processamento (CPU - Central Processing Unit): responsvel pela execuo de instrues e pelo controle da operao de todas as unidades do computador. unidade de armazenamento de instrues e dados, que pode ser dividida em unidade primria, para armazenamento em tempo de execuo (memria RAM - Random Access Memory) de curta durao e unidade de armazenamento secundria, de longa durao, uma memria permanente constituda pela memria ROM (Read-Only Memory), pelos discos magnticos (floppy disk e disco rgido) e pelos discos pticos (CD-ROM, CD-RW) e magneto-pticos. unidades de entrada e sada (I/O - Input/Output), cuja funo primria a entrada e sada de dados do computador. Exemplos de dispositivos de entrada de dados so o teclado, o mouse, microfone e joystick, enquanto que dispositivos de sada tpicos so o monitor de vdeo, caixa de som e impressora. Exemplos de perifricos que funcionam como dispositivos de entrada e sada de dados so a tela de vdeo sensvel ao toque (touch screen) e o modem, usado para comunicao de dados entre computadores atravs de uma linha telefnica. Atualmente, a capacidade dos computadores superam e muito as suas especificaes e propsitos de uso original. Os computadores so capazes no apenas de armazenar, tratar e gerir

Clculo Numrico e Computacional

C.Y. Shigue

Introduo

informaes em quantidade e velocidade, so capazes tambm de proverem comunicao entre computadores e outros dispositivos eletrnicos digitais, tais como telefones, fax e televisores; so capazes de aceitar, manipular e apresentar informaes na forma de voz, som, imagem, vdeo e texto; permitem o controle de outros dispositivos eletrnicos digitais, tais como semforos, sistema de trfego areo (radares, torre de controle, mesa de operao), sistema de comunicaes (telefonia digital), sistemas bancrios (caixa eletrnico, terminal de consulta, mesa de operao) e inmeras outras aplicaes essenciais para a vida cotidiana. A penetrao da computao na vida diria se d de tal forma, que aparelhos eletrodomsticos comuns, como torradeiras, mquina de fazer caf so dotadas de um computador embutido num componente integrado miniaturizado e a tendncia que o computador de mesa que conhecemos hoje se torne um eletrodomstico que vai comandar os outros aparelhos eletrodomsticos. Os programas de computador so um conjunto de instrues que comandam o hardware. O software, por sua vez, designa um programa ou um conjunto de programas, capazes de atuar, modificar e controlar o processamento de dados lgicos e numricos pelo computador. Existem trs tipos de software: sistemas operacionais e firmware: os sistemas operacionais so programas de computador que contm todas as instrues para o controle e a operao do computador. Exemplos de sistemas operacionais so o MS-DOS, Windows-9x (95, 98, ME e XP/Home), Windows NT, 200 e XP/Professional e o UNIX e suas variantes (Linux, FreeBSD, Solaris, Mac-OSX, etc) que "rodam" em diversas plataformas de hardware. A maioria dos sistemas operacionais prov uma interface de usurio grfica (GUI - Graphical User Interface), de modo a facilitar a operao do computador sem a necessidade de memorizao de comandos. O firmware um conjunto de instrues que informa ao sistema operacional quais so os componentes de hardware que esto instalados no computador. Normalmente, o firmware um conjunto de instrues que vem gravado numa memria ROM do tipo CMOS (Complementary Metal Oxide Semiconductors) instalada na placa-me. Em microcomputadores do tipo PC o firmware tambm chamado de BIOS (Basic Input-Output System) a que muitos tcnicos se referem como CMOS (por causa do tipo de memria). linguagens de programao: so as ferramentas para a construo de softwares, tanto para sistema operacional como para aplicaes. Todos os programas que rodam num computador so feitos partir de uma linguagem de programao. Existem diversas linguagens de programao, incluindo os seus dialetos que, geralmente, so constitudos por extenses da linguagem feitos por um fabricante de software em particular. Exemplos de linguagens de programao so: FORTRAN (linguagem de uso cientfico), COBOL (linguagem de uso comercial), BASIC, Pascal, C, C++ e Java. Existem linguagens de programao implementadas dentro de um software de aplicao e que so denominados scripts, como o VisualBasic for Applications (VBA), que a linguagem script encontrada nos programas de processamento de texto Word, planilha Excel e banco de dados Access, todos integrantes do pacote de software Office da Microsoft. Outros programas que, originalmente foram criados como programas de aplicao com recursos de programao script, como os softwares de gerenciamento de banco de dados, evoluram para linguagens de programao de banco de dados, como o caso da linguagem SQL, desenvolvida pela IBM e pelo programa Oracle da empresa homnima.

Clculo Numrico e Computacional

C.Y. Shigue

Introduo

software aplicativo: programas de computador desenvolvidos para o usurio final, podem ser classificados como software de aplicao. Os softwares de aplicao geralmente so programas desenvolvidos para uma aplicao especfica como, por exemplo, um software de controle de contas a pagar e receber ou um software de planilha eletrnica ou de processamento de texto. Na medida em que o hardware foi evoluindo (processadores mais velozes, memrias e discos com maior capacidade de armazenamento, etc), os programas aplicativos foram evoluindo englobando diversas tarefas e agregando outros programas num "pacote", como o MS Office. Na Fig. 1.1 esquematizado, em nvel hierrquico, a relao entre hardware, software e o usurio (ser humano). Quanto mais inferior o nvel, mais ele se aproxima do nvel puramente fsico em que enxergamos um computador como sendo um conjunto de componentes eletrnicos, placas de circuito e gabinetes, sem uma funo lgica (e inteligente) a faz-lo funcionar. medida que subimos nos diversos nveis, aproxima-nos do nvel puramente lgico, representado pela inteligncia criadora do computador, o ser humano. Neste nvel, estamos numa camada mais abstrata em que os conceitos so baseados na lgica e no raciocnio para criarmos os programas que iro interagir com o nvel fsico. Um programa de computador , na essncia, um conjunto de instrues transcritas para a linguagem do computador da inteligncia (abstrata) do seu criador. Usualmente, ele confundido pelo disquete no qual armazenado, mas na realidade trata-se de uma entidade lgica relacionada com a capacidade intelectual do seu autor em descrever de forma algoritmica a sequncia para a consecuo de uma atividade executada pelo computador.
SER HUMANO
APLICATIVO APLICATIVO INTERFACE GRFICA (GUI) NVEL DE ABSTRAO LINGUAGEM DE PROGRAMAO (COMPILADOR) SISTEMA OPERACIONAL FIRMWARE (BIOS) HARDWARE NVEL FSICO

COMPUTADOR

Fig. 1.1 - Modelo hierrquico para um computador.

Arquitetura de Microcomputador
Um computador essencialmente uma mquina de processamento de dados. Ele recebe dados ou requisio de informaes, processa-os e fornece as informaes ou dados requisitados de modo ordenado, digerido e reduzido, em forma de tabelas, grficos, imagens, texto, som, etc. Um microcomputador um tipo de computador no qual a unidade central de processamento (CPU) constituda por um circuito integrado de uso genrico de ultra alta escala de integrao (ULSI - Ultra Large Scale of Integration) denominado microprocessador. Devido sua disponibilidade, o microcomputador vem encontrando inmeras aplicaes em diferentes
Clculo Numrico e Computacional C.Y. Shigue

Introduo

reas, como na comunicao de dados, em redes de computadores, como sistema de aquisio de dados e de controle de instrumentao nas reas cientfica, mdica e industrial, como videogame e centro de entretenimento. Internamente, um microcomputador organiza-se da forma esquematizada na Fig. 1.2.
CPU
UNIDADE LGICA E ARITMTICA (ALU) UNIDADE DE CONTROLE

MEMRIA
APENAS DE LEITURA (ROM)

barramento interno MEMRIA INTERNA CACHE

ACESSO DIRETO (RAM)

PERIFRICOS
DISCOS MAGNTICOS MONITOR DE VDEO TECLADO, MOUSE

ENTRADA

SADA

DADOS

Fig. 1.2 - Arquitetura de um microcomputador. Um microprocessador um circuito integrado de elevadssimo grau de integrao, contendo milhes de transistores, constitudo basicamente por trs unidades: i. Unidade de Controle: obtm as informaes que esto armazenadas na memria principal, interpreta-as e d sequncia s operaes para as outras unidades para executar as instrues; ii. Unidade Lgica e Aritmtica: unidade que realiza as operaes lgicas e aritmticas. As operaes lgicas principais so a multiplicao lgica (AND lgico), adio lgica (OR lgico), negao lgica, inverso ou complementao lgica (NOT lgico), alm de outras operaes como NAND, NOR, XOR, etc. As operaes aritmticas so a adio, subtrao, multiplicao, diviso e deslocamento. iii. Memria interna cache: realiza operao de armazenamento da parcela de dados da memria principal mais requisitadas, com a finalidade de aumentar a velocidade de acesso aos dados entre a CPU e a memria principal. Outras unidades podem ser agregadas na pastilha do circuito integrado para aumentar a velocidade de processamento e melhorar o desempenho do processador. A Fig. 1.3 mostra a arquitetura do microprocessador Pentium da Intel, com tamanho tpico de circuito de 0,6 m e contendo mais de trs milhes de transistores. Observar que o processador de operaes flutuante (Pipelined floating point) e o processador de operaes inteiras (Superscalar integer execution units) so unidades adicionais, que tem como justificativa a capacidade de processamento superescalar e vetorial, caractersticas essas de supercomputadores, bem como suporte a unidade de processamento de operaes com nmeros complexos (Complex instruction support) que melhoram o desempenho do computador na execuo de diversas tarefas simultaneamente (processamento paralelo multitarefa) e no

Clculo Numrico e Computacional

C.Y. Shigue

Introduo

processamento numrico intensivo (como na gerao de grficos 3-D, execuo de sons no formato MP3 e exibio de vdeo digital).

Fig. 1.3 - Esquema do circuito do microprocessador Pentium. A memria usada para armazenar instrues e dados operados pela CPU. Existem dois tipos de memria: memria ROM e memria RAM. A memria ROM ou memria apenas de leitura (Read-Only Memory) armazena principalmente as informaes que necessitam ficar armazenadas permanentemente, como aquelas relativas ao hardware (tipo e quantidade de discos magnticos, tipo de controladora de vdeo, endereamento e quantidade de memria). A memria RAM ou memria de acesso direto (Random-Access Memory) um tipo de memria voltil, isto , as informaes armazenadas nela so temporrias e se perdem quando o computador desligado. A memria RAM utilizada principalmente para armazenar dados e instrues relativos aos programas a serem executados e que ficam disponveis apenas durante o tempo de execuo.

O Computador Digital
Desde os primrdios da Computao, nos anos 40, at os dias de hoje, os computadores vm sofrendo um contnuo processo de desenvolvimento. Entretanto, o princpio fundamental de operao do computador no mudou, desde o ENIAC em 1945 e o EDVAC em 1952, que foi o primeiro computador integralmente eletrnico. Os computadores atuais so digitais (isto , processam as informaes utilizando nmeros binrios) que processam os dados e as instrues na CPU, com armazenamento na memria. Este modelo computacional deve-se ao matemtico John Von Neumann, que estabeleceu os princpios dos computadores atuais e que por isso tambm so chamados de computadores Von Neumann. Pelo fato de operarem no formato numrico binrio, significa que os nmeros de base decimal a que estamos familiarizados devem ser convertidos no seu correspondente binrio. Da mesma forma, o alfabeto e os smbolos grficos (!?,.%$#<> etc) tambm devem ser convertidos em seu equivalente codificado em binrio.

Clculo Numrico e Computacional

C.Y. Shigue

Introduo

Fig. 1.4 - John Von Neumann e o computador EDVAC, o primeiro computador digital do mundo. A quantificao da informao armazenada e processada por um computador feita atravs do byte (simbolizado pela letra B maiscula), que igual a 8 bits (simbolizado pela letra b minscula). Em termos aproximados, um byte equivalente um caracter, e a informao quantificada em termos de mltiplos de bytes, que so potncias de 2, como veremos adiante, e esto apresentados como ordens de grandeza do byte, como descrito a seguir: 1 kB = 210 bytes = 1.024 bytes = 8.192 bits = 8 kb 1 MB = 220 bytes = 1.048.576 bytes = 1.024 kB 1 GB = 230 bytes = 1.073.741.824 bytes = 1.048.576 kB = 1.024 MB Assim, um computador que contenha uma unidade de disco magntico de 650 MB de capacidade, capaz de armazenar 650 x 1.048.576 = 681.574.400 bytes de informao, ou o equivalente a aproximadamente 681 milhes de caracteres, ou o equivalente a 180 mil pginas ou a cerca de 400 volumes de livros ou o equivalente a 40 volumes da Enciclopdia Britannica contendo somente texto. Para efeito de comparao, 650 MB tambm a capacidade de armazenamento de um CD-ROM. O equivalente em CD a um arquivo de som digital cerca de 75 minutos de gravao e equivalente 100 imagens fotogrficas coloridas de mdia definio (600 dpi - dpi = pontos por polegada).

Linguagens de Computador
No incio da Computao, a programao era realizada atravs da abertura e fechamento de vlvulas eletrnicas por meio de chaves que controlavam a passagem de corrente pelas vlvulas. Era uma tarefa essencialmente de manipulao fsica do hardware (Fig. 1.5).

Fig. 1.5 - "Programando" o ENIAC.

Clculo Numrico e Computacional

C.Y. Shigue

Introduo

partir dos anos 50, com o desenvolvimento das linguagens de programao, que iniciouse primeiramente com as linguagens de mquina (baseadas em codificao por nmeros binrios, 0 e 1), at as linguagens mais naturais como o FORTRAN e o COBOL, a programao de computadores vm se afastando do nvel fsico e se torna cada vez mais uma atividade "abstrata" em que um algoritmo escrito em linguagem mais prxima humana (da o nome, linguagem "natural") tornando a programao codificao de uma seqncia de instrues baseada numa linguagem de descrio de comandos. As primeiras linguagens foram projetadas para realizao de tarefas especficas e foram evoluindo para linguagens de uso geral e hoje, se observa novamente uma tendncia de dispor-se de linguagens de uso especfico. seguir, listamos as principais linguagens de programao. FORTRAN Uma das mais antigas linguagens de programao, o FORTRAN que um siglnimo de FORmula TRANslator, foi projetado para ser uma linguagem para manipulao de operaes matemticas, originalmente em computadores mainframe. Na poca em que foi criado, a programao era feita em cartes perfurados, um para cada instruo do programa, caracterstica essa que influenciou numa srie de comandos que permanecem como herana at hoje. Embora seja uma das linguagens mais antigas, o FORTRAN evoluiu juntamente com a informtica e hoje, a verso padronizada mais recente, o FORTRAN-90 possui uma srie de recursos disponveis nas linguagens mais modernas e mantm uma grande comunidade de programadores em todo o mundo ainda desenvolvendo programas cientficos e de engenharia altamente complexos e sofisticados. Por essas caractersticas, ainda o FORTRAN a lingua franca de inmeros cientistas e engenheiros. COBOL O COmmon Business Oriented Language ou COBOL a linguagem desenvolvida na mesma poca do FORTRAN para criar programas de aplicao comercial, que envolvem a criao e manipulao de informaes comerciais disponveis em banco de dados, usando uma linguagem de comandos em ingls. Devido ao fato de ser uma linguagem com capacidade de manipulao de registros de dados comerciais, a sua capacidade de manipulao matemtica limitada s operaes aritmticas bsicas. Pascal A linguagem Pascal deve esse nome ao filsofo, matemtico e fsico francs Blaise Pascal, a quem Niklaus Wirth, professor do Instituto Tcnico Federal (ETH) da Sua, criador dessa linguagem homenageou. O Pascal foi projetado como uma linguagem de ensino de programao, da a sua ampla aceitao em crculos acadmicos de todo o mundo como a primeira linguagem a ser ensinada em cursos de programao para estudantes de cincias exatas. A sua construo fora aos alunos aprenderem e programar de forma estruturada e modular. Outra vantagem que o Pacal foi desenvolvido para ser independente da plataforma de hardware e do sistema operacional.Assim, um programa escrito num computador poderia ser compilado sem modificao em outro tipo de computador, com diferente processador e sistema operacional.

Clculo Numrico e Computacional

C.Y. Shigue

Introduo

BASIC A linguagem BASIC, que o acrnimo de Beginner's All-purpose Symbolic Instruction Code, tal como a linguagem Pascal, tambm foi criada para o ensino de programao de computadores em nvel introdutrio no Darthmouth College, EUA. No incio, o BASIC foi a primeira linguagem interpretada disponvel para uso geral e uma das primeiras a serem disponveis pela ento recm-criada empresa produtora de software Microsoft nos primeiros microcomputadores fabricados na dcada de 1970. A rpida popularizao dos microcomputadores nos anos seguintes tambm popularizaram a linguagem BASIC entre os jovens aficionados por jogos eletrnicos em computador, resultando numa gerao de programadores que aprendeu o BASIC como primeira linguagem de programao. Atualmente, a linguagem Microsoft Visual BASIC uma das linguagens mais utilizadas na programao em ambiente Windows. Linguagem Assembly A linguagem Assembly uma linguagem de representao simblica da linguagem de mquina de um processador em particular, sendo por isso, considerada uma linguagem de baixo nvel, isto , de nvel hierrquico prximo ao fsico. Assim, cada processador tem sua linguagem assembly prpria, apesar de que uma famlia de processadores, tais como a famlia Intel 80x86, pode compartilhar parte ou o todo de seu cdigo assembly. Em portugus, as linguagens assembly so tambm denominadas linguagens montadoras (assembler em ingls). C Nos idos anos 60 e incio dos 70 era comum os programadores criarem suas prprias linguagens de programao partir de cdigos assembler, por no haver a cultura de comercializao do software como um produto independente do hardware como hoje. Uma dessas linguagens experimentais foi denominada linguagem "A", que aps alguns aperfeioamentos deu origem linguagem "B". Esta linguagem, por sua vez, naturalmente evoluiu para o que hoje conhecemos como linguagem "C". O fato da linguagem ter evoludo e encontrado grande aceitao entre os programadores deriva do fato dela ser uma linguagem ao mesmo tempo simples e poderosa, capaz de programar o hardware em nvel de linguagem de mquina ao mesmo tempo que possibilita uma construo sinttica prxima linguagem natural. Ela foi criada por Kerninghan e Ritchie, pesquisadores do Laboratrio Bell dos Estados Unidos, como linguagem de desenvolvimento do sistema operacional Unix. Como este sistema foi adaptado para uma ampla variedade de plataformas de hardware quer foram adotados pela maioria dos fabricantes de computadores utilizados em aplicaes crticas (bancos de dados, processadores de comunicao, gerenciadores de redes) a linguagem C ganhou grande popularidade entre os programadores de sistema e de aplicaes sofisticadas. C++ No final dos anos 80 com o aumento da capacidade do hardware, os desenvolvedores de software no conseguiam acompanhar o ciclo de desenvolvimento com a mesma rapidez da evoluo do hardware, ocasionando o que se chamou de crise do software. Para fazer frente ao aumento da complexidade na criao dos softwares, os cientistas da computao elaboraram os conceitos de objetos e de programao orientada a objects , que determinaram

Clculo Numrico e Computacional

C.Y. Shigue

Introduo

um novo paradigma de programao que as linguagens de programao da poca, como a linguagem C padro (o chamado ANSI-C), no tinham suporte estrutura lgica desse novo paradigma. Devido ao fato da linguagem C ser (e ainda ) a linguagem de desenvolvimento mais utilizada pelos programadores profissionais, um tipo de extenso da linguagem proposto por Bjarne Stroustrup do mesmo Laboratrio Bell onde foi criado a linguagem C foi desenvolvido. Esta linguagem denominada C++ retro-compatvel com programas escritos em linguagem C, ao mesmo tempo que adota uma estrutura para o desenvolvimento de programas de acordo com o paradigma de orientao a objetos. Linguagens Scripting As linguagens scripting existem desde os anos 60. Entretanto, o poder e sofisticao dessas linguagens aumentou dramaticamente nos ltimos anos. Combinando com o avano na tecnologia de hardware, o uso de linguagens scripting ampliou o horizonte de aplicaes para um sem nmero de tarefas. As linguagens scripting foram criadas para funcionar como "cola" na integrao de componentes de software e aplicaes criados em linguagens de programao convencionais, como as descritas anteriormente. Elas avanaram no vcuo da crise de software dos anos 80 e funcionaram e tm funcionado como uma mola propulsora na criao de aplicativos grficos e distribudos, que hoje mantm em funcionamento parcela significativa dos sites comerciais da internet. seguir, relacionamos algumas linguagens scripting mais utilizadas. Shell Unix (sh, csh, ksh, etc) O sistema operacional tm uma linguagem de comandos que possui a sintaxe da linguagem C e que possibilita a digitao de comandos interativamente. A estas linguagens scripting de linha de comando denomina-se shell. O primeiro shell do sistema operacional Unix foi criado no incio dos anos 70 e uma srie de outros shells (csh, ksh, bash, etc) foram criados para automatizar tarefas rotineiras de operao e administrao do Unix. Um dos aspectos que tornam o Unix poderoso e singular a sua capacidade de criar novas aplicaes partir da composio de diferentes aplicaes j existentes e que, talvez seja uma das razes da popularidade do Unix como plataforma de desenvolvimento de software entre os desenvolvedores profissionais. Perl Criado por Larry Wall no final dos anos 80 com a finalidade de colocar em um nico lugar as funes de muitas aplicaes de processamento de texto Unix, tais como sh, sed e awk, o Perl (acrnimo de Practical Extraction and Report Language) rapidamente se tornou uma das ferramentas mais utilizadas pelos administradores de sistemas de informao. Com a chegada do WWW (internet com interface grfica), o Perl adquiriu fama como linguagem para construo de scripts para pginas Web dinmicas, isto , que se atualizam com o acesso dos usurios. Tcl Criada por John Ousterhout no fim dos anos 80 como uma linguagem de comandos embutvel para uso como ferramenta interativa. Completa-o a ferramenta de construo de interface
Clculo Numrico e Computacional C.Y. Shigue

Introduo

10

grfica Tk. O Tcl e o Tk so disponveis para todas as principais plataformas de hardware e software, sendo uma ferramenta essencial na criao de aplicativos multiplataforma. Hoje, a linguagem Tcl usada para uma ampla variedade de uso, desde gerao automtica de contedo para internet, at gerenciamento de sistemas, passando por automao de projeto eletrnico. Visual Basic A linguagem da Microsoft pode ser considerada ao mesmo tempo como linguagem de programao de sistema e como linguagem scripting. Conforme mencionado anteriormente, ela se popularizou como ferramenta para criao rpida de aplicativos (em ingls, RAD Rapid Application Development), baseado na interface grfica do Windows. A combinao do Visual Basic e da linguagem de componentes scripting VBX (atualmente denominado ActiveX) a fora motriz por detrs de inmeros sites de comrcio eletrnico da internet baseados na tecnologia de software ASP (acrnimo de Active Server Pages) que executa todas as tarefas de gerao de pginas HTML dinmicas e de administrao de banco de dados. Esse sucesso em grande parte devido facilidade de integrao propiciada pelo Visual Basic. Python O Python uma linguagem orientada a objetos dinmica, criada por Guido van Rossum no incio dos anos 90 como uma proposta de facilitar o aprendizado de uma linguagem de programao e ao mesmo tempo prover uma ponte entre entre o shell e a linguagem C. uma linguagem elegante, com uma sintaxe fcil de aprender, portvel como o Tcl, com o qual compartilha a ferramenta GUI Tk e com uma extensa biblioteca de suporte matemtico, grfico e multimdia. fcil de estender para diversas aplicaes e ser embutido em C/C++, o que tem contribudo para a sua popularizao. Originalmente projetada como uma linguagem scripting avanada, tm encontrado novos usos como ferramenta RAD para a Web, bem como para aplicaes distribudas. JavaScript Criada no meio da dcada de 90 pela Netscape para executar scripts embutidos em pginas HTML, como por exemplo, validao de preenchimento de formulrios. O JavaScript se tornou um padro de facto para scripts executados no lado do cliente. Embora no tenha relao com a linguagem Java, compartilha com a sintaxe dos principais funes e tipos de dados. Java O Java, originalmente desenvolvido por Bill Joy da SUN como uma linguagem de programao de dispositivos eletrnicos programveis, encontrou o seu nicho de aplicao na Web como linguagem de gerao de pseudo-cdigos compilados orientados a byte e no a bits e independente de plataforma. Para ser executado, o Java pode rodar tanto do lado do cliente, quando o cdigo denominado applet, quanto do lado do servidor, quando denominado servlet o programa compilado Java. Para ser executado no lado do cliente

Clculo Numrico e Computacional

C.Y. Shigue

Introduo

11

necessrio que o navegador (browser) Web tenha instalado a mquina virtual Java (JVM Java Virtual Machine) que o interpretador de cdigo orientado a byte do Java. PHP A linguagem PHP (um acrnimo recursivo para PHP: Hypertext Preprocessor) uma linguagem scripting de uso geral, muito utilizada para o desenvolvimento de aplicaes Web embtivel dentro de documentos HTML. Ela foi criada por Jamus Ledorf em 1995, inicialmente como simples script Perl para gerar estatsticas de acesso para seu currculo online. Ele nomeou esta srie de scripts como Personal Home Page Tools (da veio o nome PHP originalmente). Como mais funcionalidades foram requeridas, Rasmus escreveu uma implementao C muito maior, que era capaz de comunicar-se com base de dados, e possibilitava usurios desenvolver simples aplicativos dinmicos para Web. O que distingui o PHP de outras linguagens script, como Javascript que embora o comando esteja escrito na pgina HTML, o cdigo executado no servidor. Se o script estiver no servidor, o cliente recebe os resultados da execuo desse script, sem determinar como o cdigo fonte. Por causa dessa caracterstica e tambm pela integrao com programas open source como o MySQL (gerenciador de banco de dados) e Apache (servidor WWW), o PHP muito utilizado na administrao de sites com contedo dinmico.

Nveis de Linguagens de Programao


Existe apenas uma linguagem de programao que qualquer computador pode entender e executar: o seu cdigo de mquina nativo. Este o mais baixo nvel em que se pode escrever um programa de computador. Todas as outras linguagens de programao so chamadas de linguagens de alto nvel ou de baixo nvel em funo do seu grau de semelhana com a linguagem de mquina em termos de recurso e de sintaxe. Assim, uma linguagem de baixo nvel corresponde linguagem de mquina, de modo que uma instruo nessa linguagem corresponde a uma instruo em cdigo de mquina. J uma instruo em linguagem de alto nvel corresponde a uma srie de instrues em linguagem de mquina. Em termos gerais, o nmero de instrues em linguagem de mquina equivalente a uma instruo em linguagem de alto nvel denominada pontos de funo. As linguagens de baixo nvel tem a vantagem de poderem ser escritas com instrues que acessam diretamente s particularidades da arquitetura da unidade central de processamento (CPU) tornando, assim, o programa extremamente eficiente, otimizando o uso tanto da memria RAM como do processador em s. Entretanto, escrever um programa em linguagem de baixo nvel demanda um tempo significativamente maior e requer um conhecimento mais aprofundado das caractersticas internas do processador, alm do cdigo estar mais sujeito a falhas plea maior complexidade de programao. Portanto, programao em linguagem de baixo nvel utilizada em programas pequenos ou em segmentos de cdigo em linguagem de alto nvel para otimizar o desempenho de partes crticas do programa. As linguagens de alto nvel permitem o desenvolvimento rpido de programas. Em comparao com os programas escritos em linguagem de baixo nvel, o desempenho pode no ser to bom, mas a economia de tempo na programao supera a menor eficincia na execuo pelo fato do custo operacional mais elevado residir no desenvolvimento de software e no na upgrade do hardware. Como regra bsica, o custo para escrever um programa aproximadamente
Clculo Numrico e Computacional C.Y. Shigue

Introduo

12

constante para cada linha do cdigo, independentemente da linguagem, de forma que escrever uma linha de instruo em programa escrito em linguagem de alto nvel, que equivale a dez linhas de cdigo escrito em linguagem de baixo nvel, representa um custo de 1/10 do custo do programa escrito em linguagem de baixo nvel.

Representao de Nmeros
Os nmeros empregados no clculo computacional podem ser de dois tipos: nmeros inteiros e nmeros em ponto flutuante (que representam os nmeros reais da Matemtica). Os computadores atuais representam os nmeros internamente no formato binrio, como seqncia de 0s e 1s. Apesar dessa representao ser conveniente para as mquinas, anti-natural para os seres humanos, cujo sistema de numerao natural o decimal. A seguir, apresentamos a representao de nmeros decimais e binrios e os mtodos de converso de um sistema a outro.

Sistema de Numerao Decimal


O sistema de numerao decimal o sistema natural, adotado em todas operaes matemticas cotidianas. Este sistema de base 10, no qual todos os mltiplos e submltiplos so expressos como potncias de 10. Por exemplo, os seguintes nmeros decimais podem ser escritos como uma combinao linear de potncias de 10: 1537 = 1x103 + 5x102 + 3x101 + 7x100 36,189 = 3x101 + 6x100 + 1x10-1 + 8x10-2 + 9x10-3 6,032x1023 = 6x1023 + 0x1022 + 3x1021 + 2x1020 (1.1) (1.2) (1.3)

Observar que a posio relativa de cada algarismo indica a potncia pela qual ele est multiplicando. Assim, de acordo com esta conveno, o algarismo 3 do exemplo (1.1), que est na 2a posio contar da direita para a esquerda, est multiplicando 101. O algarismo 7 (unidade) do mesmo exemplo chamado de algarismo menos significativo e o algarismo 1 (milhar) o algarismo mais significativo. O algarismo 3 o 2o algarismo significativo e o 5 o 3o algarismo significativo. De acordo com os exemplos acima, qualquer nmero decimal pode ser escrito na forma geral como: N = anbn + an-1bn-1 + an-2bn-2 + ... + a0b0 + a-1b-1 + ... + a-mb-m (1.4)

onde N um dado nmero na base b e an, an-1, etc representam os coeficientes que multiplicam as correspondentes potncias de b. Assim, N = anan-1...a0,a-1 a-2...a-m na representao usual (implcita). Detalhe importante a observar o de os coeficientes que multiplicam potncias de b cujos expoentes sejam < 0 esto separados por uma vrgula daqueles coeficientes cujos expoentes de b sejam 0.

Clculo Numrico e Computacional

C.Y. Shigue

Introduo

13

Sistema de Numerao Binrio


Atualmente, em que pese a nossa familiaridade com o sistema de numerao decimal, este tipo de representao numrica inadequado para a representao da informao em computadores digitais. Os computadores digitais operam basicamente com dois tipos de sinais de tenso: alto e baixo. Matematicamente, pode-se expressar estes valores por 0 (baixo) e 1 (alto). partir de um esquema de representao binria por valores de 0 e 1 podemos expressar qualquer quantidade numrica. Vejamos os seguintes exemplos de nmeros decimais representados como potncias de 2: 2,510 = 1x21 + 0x20 + 1x2-1 98,7510 = 1x26 + 1x25 + 0x24 + 0x23 + 0x22 + 1x21 + 0x20 + 1x2-1 + 1x2-2 (1.5) (1.6)

Observar que o ndice 10 em 2,5 e 98,75 indica que esses nmeros so decimais. Utilizando a frmula de representao expressa pela equao (1), podemos reescrever os dois exemplos numricos acima como: 2,510 10,12 98,7510 1100010,112 Como no caso dos nmeros decimais, a posio relativa de cada algarismo binrio indica a potncia pela qual ele est multiplicando. Igualmente os coeficientes que multiplicam potncias de 2 cujos expoentes sejam < 0 esto separados por uma vrgula daqueles coeficientes cujos expoentes de 2 sejam 0.

Converso de Nmeros Decimal-Binrio


Para convertermos um nmero decimal para um nmero binrio devemos aplicar um mtodo para a parte inteira e outro para a parte fracionria. Para a parte inteira, aplicamos o mtodo das divises sucessivas, que consiste em se dividir o nmero decimal por 2, em seguida divide-se o quociente obtido por 2 e assim sucessivamente, at que o ltimo quociente encontrado seja 1. O nmero binrio inteiro ser, ento, formado pela concatenao do ltimo quociente com os restos das divises no sentido contrrio ao que foram obtidos. Por exemplo, vamos converter o nmero decimal 23:
23 1 2 11 1 2 5 1 2 2 0 2 1 23 = 10 10111 2

Clculo Numrico e Computacional

C.Y. Shigue

Introduo

14

Outro exemplo,
15 1 2 7 1 2 3 1 2 1 1 2 0 15 = 10 01111 = 1111 2 2

Notar que neste exemplo necessitamos apenas de quatro dgitos binrios para descrever 1510, pois o zero `a esquerda de 11112 no siginificativo. Para converter um nmero fracionrio de base decimal para base binria aplicamos o mtodo das multiplicaes sucessivas. Ele consiste nas seguintes etapas: multiplicamos o nmero fracionrio por 2; deste resultado, a parte inteira ser o primeiro dgito do nmero fracionrio binrio e parte fracionria ser novamente multiplicada por 2. O processo repete-se at que a parte fracionria do ltimo produto seja zero. Como exemplo, tomemos o nmero decimal 0,1875:
0,1875 x 2 0,3750 0,3750 x 2 0,750 0,75 x 2 1,50 0,50 x 2 1,00 0,1875 = 0,0011 10 2

Outro exemplo,
0,1 x 2 0,2 0,2 x 2 0,4 0,4 x 2 0,8 0,1 10 0,8 x 2 1,6 0,6 x 2 1,2 2 0,2 x 2 0,4 ... e os produtos continuam.

= 0,0001100110011...

Como mostrado neste exemplo, nem sempre um nmero decimal exato possui uma representao binria exata. Este fato a principal causa de erros de arredondamento no clculo numrico em computadores digitais. A converso de bases para um nmero decimal que contm parcela inteira e parcela fracionria constituda por duas partes distintas sobre as quais so aplicadas as respectivas regras de converso: 23,187510 = 10111,00112

Representao Binria em Ponto Flutuante


Em computao digital, um dgito binrio denominado bit (do ingls, binary digit). Um grupo de oito bits corresponde a 1 byte. Nos computadores digitais, a representao dos nmeros binrios feita com um nmero finito de bits. A esse tamanho de bits dado o nome de palavra de computador. O tamanho da palavra de computador depende de caractersticas internas arquitetura do mesmo. Em geral, os microcomputadores padro PC tem o tamanho de palavra de

Clculo Numrico e Computacional

C.Y. Shigue

Introduo

15

16 e 32 bits. Computadores com arquitetura mais avanada possuem tamanho de palavra de 64 bits ou mais. O tamanho de palavra de computador tem a seguinte implicao: quanto maior o tamanho da palavra, mais veloz e mais preciso ser o computador. Para entender como o tamanho de palavra afeta a preciso e, consequentemente, os erros de arredondamento do clculo computacional, veremos a representao de nmeros reais binrios em notao de ponto flutuante. Um nmero binrio em ponto flutuante (nmero real) representado da seguinte forma:
sinal da caracterstica sinal da mantissa

caracterstica

mantissa

Pela norma IEEE-754 do Instituto dos Engenheiros Eltricos e Eletrnicos (IEEE), o dgito mais esquerda (tambm chamado de dgito mais significativo - em ingls, MSB) o sinal da caracterstica: 0 (positivo) e 1 (negativo). Os dgitos seguintes representam o valor binrio da caracterstica seguido pela mantissa. O nmero de bits da caracterstica obtido pela diferena entre o tamanho da palavra de computador e o nmero de bits da mantissa que se seguem caracterstica, sendo que o primeiro bit da mantissa representa o seu sinal. A conveno para o sinal da mantissa o mesmo da caracterstica, isto , 0 positivo e 1, negativo. Os nmeros em ponto flutuante no formato IEEE tem a seguinte representao: Tamanho (bytes) 4 8 No de bits de sinal 1 1 No de bits do expoente 8 11 No de bits da mantissa 23 52 Bias 127 1023

Preciso simples Dupla preciso

Bit de sinal O bit de sinal apresenta zero como nmero positivo e um como nmero negativo.

Expoente (caracterstica) O campo do expoente precisa representar tanto nmeros positivos como nmeros negativos. Para fazer isto, um valor bias adicionado ao expoente para obter o expoente armazenado no computador. Para a norma IEEE o valor de 127 para varivel em preciso simples. Assim, um expoente significa que 127 armazenado no campo do expoente. Um valor armazenado de 200 indica um expoente real de (200 127) ou 73. Expoentes armazenados de 127 e +128 so usados para fins especiais. Mantissa A mantissa representa os bits de preciso de um nmero. Qualquer nmero pode ser expresso em notao cientfica. Por exemplo, o nmero cinco pode ser representado em qualquer uma das seguintes formas:

Clculo Numrico e Computacional

C.Y. Shigue

Introduo

16

5.00 x 100 0.05 x 102 5000 x 10-3 Por convenincia, os nmeros em ponto flutuante so armazenados na forma normalizada. Em notao cientfica, a forma normalizada de representar o nmero cinco como 5.0 x 100, enquanto que na notao de ponto flutuante, a parte inteira no representada, de modo que o nmero cinco representado na forma normalizada como 0.5 x 101.

Tipos de Dados Numricos no Computador


Os tipos de dados numricos no computador representados na linguagem C so equivalentes aos tipos numricos de outras linguagens, como o FORTRAN, o BASIC e o Pascal. Tipo INTEIRO Representa os nmeros inteiros, empregando 1, 2 ou 4 bytes, de acordo com o tamanho do nmero que desejamos expressar. Tipo
short int long

Denominao
inteiro curto inteiro inteiro longo

bytes
1 2 4

Faixa
-128 a 127 -32.768 a 32.767 -2.147.483.648 a 2.147.483.647

Algarismos significativos
3 5 10

Tipo REAL Os nmeros fracionrios ou decimais so representados como nmeros reais, cuja notao empregada a de nmero com ponto decimal fixo ou ponto flutuante. A vantagem deste ltimo permitir expressar nmeros muito pequenos ou nmeros muito grandes de forma automtica. Existem dois tipos de nmeros reais de acordo com a sua preciso: 1) Preciso simples, com 4 bytes e 2) Dupla preciso, com oito bytes. A tabela seguinte apresenta os tipos representativo dos nmeros reais. Tipo
float double

Denominao
Preciso simples Dupla preciso

bytes
4 8

Faixas de valores
-3,4028235.1038 a -1,1754944.10-38 1,1754944.10-38 a 3,4028235.1038 -1,797693134862316.10308 a -2,225073858507201.10-308 2,225073858507201.10-308 a 1,797693134862316.10308

Algarismos significativos
7 15

Clculo Numrico e Computacional

C.Y. Shigue

Introduo

17

Aritmtica Computacional e Erros Computacionais


Quando realizamos clculo manualmente, os erros de arredondamento da calculadora so desprezveis, porque a quantidade de clculo que podemos operar pequeno. No computador, geralmente, a quantidade de operaes aritmticas que se pode realizar muito maior do que aquelas realizadas manualmente, de forma que o erro de arredondamento do dispositivo de clculo se torna importante. Outro problema que no clculo manual temos controle da propagao do erro porque, visualmente, estamos conferindo o resultado de cada operao aritmtica ao digit-lo na calculadora. No computador no temos como checar cada operao, tendo em vista a velocidade com elas so realizadas e tambm pela quantidade, que impossibilita a conferncia dos resultados das operaes aritmticas. Desta forma, a verificao dos resultados e o controle sobre a propagao de erros em programas de computador essencial para se atingir resultados consistentes e confiveis. As seguintes consideraes tem que ser levadas em conta ao se realizar clculos numricos no computador: A aritmtica computacional no a mesma coisa que a aritmtica base de lpis e papel. No clculo manual sempre possvel monitorar os resultados intermedirios e ajustar a preciso dos clculos. Na aritmtica computacional, cada nmero tem uma quantidade de algarismos fixas que muitas vezes podem ser inadequadas para o clculo repetitivo; O clculo manual usualmente realizado para um pequeno nmero de operaes aritmticas, enquanto que o clculo computacional pode envolver bilhes de operaes aritmticas. Assim, pequenos erros que poderiam passar despercebidos no clculo manual, podem arruinar completamente o resultado do clculo computacional, por causa da acumulao e propagao de erro. Impreciso intrnseca da representao binria em ponto flutuante Todo o nmero inteiro decimal pode ser representado exatamente por um nmero inteiro binrio; porm, isto no verdadeiro para nmeros fracionrios. Na realidade, todo o nmero decimal irracional tambm ser irracional no sistema binrio. No sistema binrio, apenas nmeros racionais que podem ser representados na forma p/q, no qual q uma potncia inteira de 2, podem ser expressos exatamente com um nmero de bits finito. Mesmo fraes decimais comuns, tal como o nmero decimal 0,0001 no podem ser representados exatamente em binrio (0,0001 uma frao binria repetitiva com perodo de 104 bits!). Um programa simples de soma de nmeros decimais fracionrios, como o seguinte:
void main() { int i; float soma = 0.; for(i=1;i<=10000;i++) soma = soma + .0001; printf("Soma = %10.7f", soma); }

apresentar o nmero 1.0000535 como sada ao invs do nmero exato 1. O pequeno erro de representao do nmero decimal 0,0001 em binrio se propagar pela soma, comprometendo o resultado da soma final.

Clculo Numrico e Computacional

C.Y. Shigue

Introduo

18

Definio de erro absoluto e erro relativo Erro absoluto erro absoluto = |valor verdadeiro - valor aproximado| ex = x = |xexato - xaprox| Podemos representar, matematicamente, xaprox = x e xverdadeiro = x, de modo que x = |x - x | Erro relativo O erro relativo o erro absoluto dividido pelo valor verdadeiro: erro relativo = x | x x| = x x

e que, frequentemente, expresso tambm como erro percentual, multiplicando-se o erro relativo por 100: erro percentual = erro relativo x 100

Tipos de Erros
Erro de arredondamento Os erros de arredondamento so causados pela limitao dos dispositivos empregados no clculo numrico como, por exemplo, uma rgua de clculo que possui uma limitao geomtrica, uma calculadora eletrnica com nmero de dgitos limitado no display ou mesmo um computador com o erro de representao de um nmero decimal no seu equivalente binrio. Por exemplo, consideremos o nmero decimal exato 0,110, cujo equivalente binrio representado pela dzima . 1111112 ... Para um computador com tamanho de palavra de 16 bits, o nmero decimal 0,110 armazenado como: 0,110 . 11111112 = 0,09999084410 de modo que o erro de arredondamento dado por: erro absoluto = |0,1 - 0,099990844| = 0,000009155 9.10-6 Erro por estouro de memria (Overflow) e Underflow

Clculo Numrico e Computacional

C.Y. Shigue

Introduo

19

A varivel numrica real em preciso simples (default) pode conter no mximo o nmero 1038 e no mnimo 10-38, como visto anteriormente. O erro de overflow ocorre quando o resultado de uma operao aritmtica excede o valor de 3,4028235.1038. Analogamente, o erro de underflow ocorre para uma varivel real em preciso inferior a 1,1754944.10-38. A multiplicao e a diviso podem acarretar erro de overflow como de underflow. O caso mais extremo de overflow na diviso acontece quando ocorre uma diviso por zero, mas, geralmente, tal tentativa provoca uma interrupo na execuo do programa com a emisso de um aviso pelo programa de overflow. Erro de Truncamento O erro de truncamento um erro devido ao mtodo de aproximao empregado para o clculo de uma funo exata. Por exemplo, considere a expanso da funo exponencial em sries de potncia da forma:

Por se tratar de uma srie infinita, devemos escolher um nmero de termos limitado da srie para que possamos computar o valor numrico da funo ex. Escolhemos aproximar a srie infinita por uma srie contendo trs termos, isto , pela aproximao: ex 1 + x + x2 2!

No importa a quantidade de algarismos significativos que utilizemos no clculo de ex pela srie truncada, o resultado ser sempre aproximado e, portanto, sempre ter um erro, que denominado erro de truncamento. Exemplo Calcule o valor numrico de e1 = e (nmero de Euler) empregando a srie truncada de 2a ordem: e1 1 + 1 + 12 = 1 + 1 + 0,5 = 2,5 2!

Sabendo-se que o valor exato do nmero de Euler com quatro algarismo significativos igual a 2,718, podemos avaliar o erro de truncamento como: erro absoluto = |2,718 - 2,500| = 0,218 ou, em termos do erro percentual, como: erro = (0,218/2,718) x 100 = 8,0%

Clculo Numrico e Computacional

C.Y. Shigue

ex = 1 + x +

x2 x3 + + 2! 3!

Introduo

20

Referncias Bibliogrficas Online


Bjarne Stroustrup FAQ (Frequently asked questions) http://www.research.att.com/~bs/bs_faq.html Tcl website http://dev.scriptics.com/doc/scripting.html Histria do Perl http://www.perl.org/press/history.html Python language http://www.python.org A histria do PHP e projetos relacionados http://www.php.net/manual/pt_BR/history.php Java http://java.sun.com/ Notao de nmeros em ponto flutuante IEEE Standard 754 http://research.microsoft.com/~hollasch/cgindex/coding/ieeefloat.html Desastres causados por erro de clculo numrico http://www.ima.umn.edu/~arnold/disasters/

Clculo Numrico e Computacional

C.Y. Shigue

Potrebbero piacerti anche