USP - Cálculo Numérico

106
Introdução 1 Cálculo Numérico e Computacional C.Y. Shigue Introdução ao Cálculo Numérico e Computacional Introdução O Cálculo Numérico consiste na obtenção de soluções aproximadas de problemas de Álgebra Linear e Não-Linear, Estatística e Análise de Dados, Cálculo Diferencial e Integral e outros métodos matemáticos, utilizando métodos numéricos. Com a popularização 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 métodos e técnicas computacionais na resolução de problemas reais, para os quais as soluções manuais são impraticáveis e/ou imprecisas. Desta forma, o uso do computador como ferramenta de trabalho de cálculo numérico requer o entendimento dos seus princípios de operação e de como eles interferem nos resultados obtidos. Geralmente, é aceito como verdade que computadores não erram e que são os usuários é que cometem enganos que levam ao mal funcionamento do computador. Na realidade, o computador, como dispositivo de cálculo numérico, “comete” erros devido às suas características intrínsecas e o papel do usuário é quantificar esses erros e encontrar formas de, se não eliminá- los, pelo menos minimizá-los. Hardware e Software Hardware é o termo em inglês empregado para designar todo e qualquer componente, parte e sistema, capaz de realizar um processamento computacional, isto é, um processamento de modificação e controle de dados numéricos. Exemplos de hardware são o computador, suas partes, componentes e periféricos (monitor de vídeo, disco magnético, impressora, etc). Um computador é constituído pelas seguintes unidades: unidade central de processamento (CPU - Central Processing Unit): responsável pela execução de instruções e pelo controle da operação de todas as unidades do computador. unidade de armazenamento de instruções e dados, que pode ser dividida em unidade primária, para armazenamento em tempo de execução (memória RAM - Random Access Memory) de curta duração e unidade de armazenamento secundária, de longa duração, é uma memória permanente constituída pela memória ROM (Read-Only Memory), pelos discos magnéticos (floppy disk e disco rígido) e pelos discos ópticos (CD-ROM, CD-RW) e magneto-ópticos. unidades de entrada e saída (I/O - Input/Output), cuja função primária é a entrada e saída de dados do computador. Exemplos de dispositivos de entrada de dados são o teclado, o mouse, microfone e joystick, enquanto que dispositivos de saída típicos são o monitor de vídeo, caixa de som e impressora. Exemplos de periféricos que funcionam como dispositivos de entrada e saída de dados são a tela de vídeo sensível ao toque (touch screen) e o modem, usado para comunicação de dados entre computadores através de uma linha telefônica. Atualmente, a capacidade dos computadores superam e muito as suas especificações e propósitos de uso original. Os computadores são capazes não apenas de armazenar, tratar e gerir

Transcript of USP - Cálculo Numérico

Page 1: USP - Cálculo Numérico

Introdução 1

Cálculo Numérico e Computacional C.Y. Shigue

Introdução ao Cálculo Numérico e Computacional

Introdução

O Cálculo Numérico consiste na obtenção de soluções aproximadas de problemas deÁlgebra Linear e Não-Linear, Estatística e Análise de Dados, Cálculo Diferencial e Integral eoutros métodos matemáticos, utili zando métodos numéricos. Com a popularização decomputadores de baixo custo e de alta capacidade de processamento, praticamente todas asatividades de Engenharia tem feito uso cada vez mais intensivo dos métodos e técnicascomputacionais na resolução de problemas reais, para os quais as soluções manuais sãoimpraticáveis e/ou imprecisas.

Desta forma, o uso do computador como ferramenta de trabalho de cálculo numéricorequer o entendimento dos seus princípios de operação e de como eles interferem nos resultadosobtidos. Geralmente, é aceito como verdade que computadores não erram e que são os usuários éque cometem enganos que levam ao mal funcionamento do computador. Na realidade, ocomputador, como dispositivo de cálculo numérico, “comete” erros devido às suas característicasintrínsecas e o papel do usuário é quantificar esses erros e encontrar formas de, se não eliminá-los, pelo menos minimizá-los.

Hardware e Software

Hardware é o termo em inglês empregado para designar todo e qualquer componente,parte e sistema, capaz de realizar um processamento computacional, isto é, um processamento demodificação e controle de dados numéricos. Exemplos de hardware são o computador, suaspartes, componentes e periféricos (monitor de vídeo, disco magnético, impressora, etc). Umcomputador é constituído pelas seguintes unidades:• unidade central de processamento (CPU - Central Processing Unit): responsável pela

execução de instruções e pelo controle da operação de todas as unidades do computador.• unidade de armazenamento de instruções e dados, que pode ser dividida em unidade

primária, para armazenamento em tempo de execução (memória RAM - Random AccessMemory) de curta duração e unidade de armazenamento secundária, de longa duração, é umamemória permanente constituída pela memória ROM (Read-Only Memory), pelos discosmagnéticos (floppy disk e disco rígido) e pelos discos ópticos (CD-ROM, CD-RW) emagneto-ópticos.

• unidades de entrada e saída (I /O - Input/Output), cuja função primária é a entrada e saídade dados do computador. Exemplos de dispositivos de entrada de dados são o teclado, omouse, microfone e joystick, enquanto que dispositivos de saída típicos são o monitor devídeo, caixa de som e impressora. Exemplos de periféricos que funcionam como dispositivosde entrada e saída de dados são a tela de vídeo sensível ao toque (touch screen) e o modem,usado para comunicação de dados entre computadores através de uma linha telefônica.

Atualmente, a capacidade dos computadores superam e muito as suas especificações epropósitos de uso original. Os computadores são capazes não apenas de armazenar, tratar e gerir

Page 2: USP - Cálculo Numérico

Introdução 2

Cálculo Numérico e Computacional C.Y. Shigue

informações em quantidade e velocidade, são capazes também de proverem comunicação entrecomputadores e outros dispositivos eletrônicos digitais, tais como telefones, fax e televisores; sãocapazes de aceitar, manipular e apresentar informações na forma de voz, som, imagem, vídeo etexto; permitem o controle de outros dispositivos eletrônicos digitais, tais como semáforos,sistema de tráfego aéreo (radares, torre de controle, mesa de operação), sistema de comunicações(telefonia digital), sistemas bancários (caixa eletrônico, terminal de consulta, mesa de operação) einúmeras outras aplicações essenciais para a vida cotidiana. A penetração da computação na vidadiária se dá de tal forma, que aparelhos eletrodomésticos comuns, como torradeiras, máquina defazer café são dotadas de um computador embutido num componente integrado miniaturizado e atendência é que o computador de mesa que conhecemos hoje se torne um eletrodoméstico que vaicomandar os outros aparelhos eletrodomésticos.

Os programas de computador são um conjunto de instruções 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 lógicos e numéricos pelo computador. Existemtrês tipos de software:

• sistemas operacionais e firmware: os sistemas operacionais são programas de computadorque contém todas as instruções para o controle e a operação do computador. Exemplos desistemas operacionais são 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 usuário gráfica (GUI - Graphical User Interface), de modo a facili tar aoperação do computador sem a necessidade de memorização de comandos. O firmware é umconjunto de instruções que informa ao sistema operacional quais são os componentes dehardware que estão instalados no computador. Normalmente, o firmware é um conjunto deinstruções que vem gravado numa memória ROM do tipo CMOS (Complementary MetalOxide Semiconductors) instalada na placa-mãe. Em microcomputadores do tipo PC o firmwaretambém é chamado de BIOS (Basic Input-Output System) a que muitos técnicos se referemcomo CMOS (por causa do tipo de memória).

• linguagens de programação: são as ferramentas para a construção de softwares, tanto parasistema operacional como para aplicações. Todos os programas que rodam num computadorsão feitos à partir de uma linguagem de programação. Existem diversas linguagens deprogramação, incluindo os seus dialetos que, geralmente, são constituídos por extensões dalinguagem feitos por um fabricante de software em particular. Exemplos de linguagens deprogramação são: FORTRAN (linguagem de uso científico), COBOL (linguagem de usocomercial), BASIC, Pascal, C, C++ e Java. Existem linguagens de programaçãoimplementadas dentro de um software de aplicação e que são denominados scripts, como oVisualBasic for Applications (VBA), que é a linguagem script encontrada nos programas deprocessamento de texto Word, planilha Excel e banco de dados Access, todos integrantes dopacote de software Office da Microsoft. Outros programas que, originalmente foram criadoscomo programas de aplicação com recursos de programação script, como os softwares degerenciamento de banco de dados, evoluíram para linguagens de programação de banco dedados, como é o caso da linguagem SQL, desenvolvida pela IBM e pelo programa Oracle daempresa homônima.

Page 3: USP - Cálculo Numérico

Introdução 3

Cálculo Numérico e Computacional C.Y. Shigue

• software aplicativo: programas de computador desenvolvidos para o usuário final, podem serclassificados como software de aplicação. Os softwares de aplicação geralmente são programasdesenvolvidos para uma aplicação específica como, por exemplo, um software de controle decontas a pagar e receber ou um software de planilha eletrônica ou de processamento de texto.Na medida em que o hardware foi evoluindo (processadores mais velozes, memórias e discoscom maior capacidade de armazenamento, etc), os programas aplicativos foram evoluindoenglobando diversas tarefas e agregando outros programas num "pacote", como o MS Office.

Na Fig. 1.1 é esquematizado, em nível hierárquico, a relação entre hardware, software e ousuário (ser humano). Quanto mais inferior o nível, mais ele se aproxima do nível puramentefísico em que enxergamos um computador como sendo um conjunto de componentes eletrônicos,placas de circuito e gabinetes, sem uma função lógica (e inteligente) a fazê-lo funcionar. À medidaque subimos nos diversos níveis, aproxima-nos do nível puramente lógico, representado pelainteligência criadora do computador, o ser humano. Neste nível, estamos numa camada maisabstrata em que os conceitos são baseados na lógica e no raciocínio para criarmos os programasque irão interagir com o nível físico. Um programa de computador é, na essência, um conjunto deinstruções transcritas para a linguagem do computador da inteligência (abstrata) do seu criador.Usualmente, ele é confundido pelo disquete no qual é armazenado, mas na realidade trata-se deuma entidade lógica relacionada com a capacidade intelectual do seu autor em descrever de formaalgoritmica a sequência para a consecução de uma atividade executada pelo computador.

HARDWARE

FIRMWARE (BIOS)

SISTEMA OPERACIONAL

LINGUAGEM DE PROGRAMAÇÃO (COMPILADOR)

APLICATIVO

APLICATIVO

INTERFACE GRÁFICA (GUI)

COMPUTADOR

SER HUMANO

NÍVEL DEABSTRAÇÃO

NÍVELFÍSICO

Fig. 1.1 - Modelo hierárquico para um computador.

Arquitetura de Microcomputador

Um computador é essencialmente uma máquina de processamento de dados. Ele recebedados ou requisição de informações, processa-os e fornece as informações ou dados requisitadosde modo ordenado, digerido e reduzido, em forma de tabelas, gráficos, imagens, texto, som, etc.

Um microcomputador é um tipo de computador no qual a unidade central deprocessamento (CPU) é constituída por um circuito integrado de uso genérico de ultra alta escalade integração (ULSI - Ultra Large Scale of Integration) denominado microprocessador. Devido àsua disponibili dade, o microcomputador vem encontrando inúmeras aplicações em diferentes

Page 4: USP - Cálculo Numérico

Introdução 4

Cálculo Numérico e Computacional C.Y. Shigue

áreas, como na comunicação de dados, em redes de computadores, como sistema de aquisição dedados e de controle de instrumentação nas áreas científica, médica e industrial, como videogame ecentro de entretenimento. Internamente, um microcomputador organiza-se da formaesquematizada na Fig. 1.2.

UNIDADELÓGICA E

ARITMÉTICA(ALU)

UNIDADE DE

CONTROLE

MEMÓRIAINTERNA

CACHE

barramento interno

CPU MEMÓRIA

APENAS DE LEITURA(ROM)

ACESSO DIRETO(RAM)

PERIFÉRICOSDISCOS MAGNÉTICOS

MONITOR DE VÍDEOTECLADO, MOUSE

ENTRADA SAÍDA

DADOSFig. 1.2 - Arquitetura de um microcomputador.

Um microprocessador é um circuito integrado de elevadíssimo grau de integração,contendo milhões de transistores, é constituído basicamente por três unidades:i. Unidade de Controle: obtém as informações que estão armazenadas na memória principal,

interpreta-as e dá sequência às operações para as outras unidades para executar as instruções;ii. Unidade Lógica e Aritmética: unidade que realiza as operações lógicas e aritméticas. As

operações lógicas principais são a multiplicação lógica (AND lógico), adição lógica (ORlógico), negação lógica, inversão ou complementação lógica (NOT lógico), além de outrasoperações como NAND, NOR, XOR, etc. As operações aritméticas são a adição, subtração,multiplicação, divisão e deslocamento.

iii . Memória interna cache: realiza operação de armazenamento da parcela de dados da memóriaprincipal mais requisitadas, com a finalidade de aumentar a velocidade de acesso aos dadosentre a CPU e a memória principal.

Outras unidades podem ser agregadas na pastilha do circuito integrado para aumentar avelocidade de processamento e melhorar o desempenho do processador.

A Fig. 1.3 mostra a arquitetura do microprocessador Pentium da Intel, com tamanhotípico de circuito de 0,6 µm e contendo mais de três milhões de transistores. Observar que oprocessador de operações flutuante (Pipelined floating point) e o processador de operaçõesinteiras (Superscalar integer execution units) são unidades adicionais, que tem como justificativaa capacidade de processamento superescalar e vetorial, características essas desupercomputadores, bem como suporte a unidade de processamento de operações com númeroscomplexos (Complex instruction support) que melhoram o desempenho do computador naexecução de diversas tarefas simultaneamente (processamento paralelo multitarefa) e no

Page 5: USP - Cálculo Numérico

Introdução 5

Cálculo Numérico e Computacional C.Y. Shigue

processamento numérico intensivo (como na geração de gráficos 3-D, execução de sons noformato MP3 e exibição de vídeo digital).

Fig. 1.3 - Esquema do circuito do microprocessador Pentium.

A memória é usada para armazenar instruções e dados operados pela CPU. Existem doistipos de memória: memória ROM e memória RAM. A memória ROM ou memória apenas deleitura (Read-Only Memory) armazena principalmente as informações que necessitam ficararmazenadas permanentemente, como aquelas relativas ao hardware (tipo e quantidade de discosmagnéticos, tipo de controladora de vídeo, endereçamento e quantidade de memória). A memóriaRAM ou memória de acesso direto (Random-Access Memory) é um tipo de memória volátil, istoé, as informações armazenadas nela são temporárias e se perdem quando o computador édesligado. A memória RAM é utili zada principalmente para armazenar dados e instruçõesrelativos aos programas a serem executados e que ficam disponíveis apenas durante o tempo deexecução.

O Computador Digital

Desde os primórdios da Computação, nos anos 40, até os dias de hoje, os computadoresvêm sofrendo um contínuo processo de desenvolvimento. Entretanto, o princípio fundamental deoperação do computador não mudou, desde o ENIAC em 1945 e o EDVAC em 1952, que foi oprimeiro computador integralmente eletrônico. Os computadores atuais são digitais (isto é,processam as informações utili zando números binários) que processam os dados e as instruçõesna CPU, com armazenamento na memória. Este modelo computacional deve-se ao matemáticoJohn Von Neumann, que estabeleceu os princípios dos computadores atuais e que por issotambém são chamados de “computadores Von Neumann”. Pelo fato de operarem no formatonumérico binário, significa que os números de base decimal a que estamos familiarizados devemser convertidos no seu correspondente binário. Da mesma forma, o alfabeto e os símbolosgráficos (!?,.%$#<> etc) também devem ser convertidos em seu equivalente codificado embinário.

Page 6: USP - Cálculo Numérico

Introdução 6

Cálculo Numérico e Computacional C.Y. Shigue

Fig. 1.4 - John Von Neumann eo computador EDVAC, oprimeiro computador digital domundo.

A quantificação da informação armazenada e processada por um computador é feitaatravés do byte (simbolizado pela letra B maiúscula), que é igual a 8 bits (simbolizado pela letra bminúscula). Em termos aproximados, um byte é equivalente à um caracter, e a informação équantificada em termos de múltiplos de bytes, que são potências de 2, como veremos adiante, eestão apresentados como ordens de grandeza do byte, como descrito a seguir:

1 kB = 210 bytes = 1.024 bytes = 8.192 bits = 8 kb1 MB = 220 bytes = 1.048.576 bytes = 1.024 kB1 GB = 230 bytes = 1.073.741.824 bytes = 1.048.576 kB = 1.024 MB

Assim, um computador que contenha uma unidade de disco magnético de 650 MB decapacidade, é capaz de armazenar 650 x 1.048.576 = 681.574.400 bytes de informação, ou oequivalente a aproximadamente 681 milhões de caracteres, ou o equivalente a 180 mil páginas oua cerca de 400 volumes de livros ou o equivalente a 40 volumes da Enciclopédia Britannicacontendo somente texto. Para efeito de comparação, 650 MB também é a capacidade dearmazenamento de um CD-ROM. O equivalente em CD a um arquivo de som digital é cerca de75 minutos de gravação e equivalente à 100 imagens fotográficas coloridas de média definição(600 dpi - dpi = pontos por polegada).

Linguagens de Computador

No início da Computação, a programação era realizada através da abertura e fechamentode válvulas eletrônicas por meio de chaves que controlavam a passagem de corrente pelasválvulas. Era uma tarefa essencialmente de manipulação física do hardware (Fig. 1.5).

Fig. 1.5 - "Programando" o ENIAC.

Page 7: USP - Cálculo Numérico

Introdução 7

Cálculo Numérico e Computacional C.Y. Shigue

À partir dos anos 50, com o desenvolvimento das linguagens de programação, que iniciou-se primeiramente com as linguagens de máquina (baseadas em codificação por números binários,0 e 1), até as linguagens mais naturais como o FORTRAN e o COBOL, a programação decomputadores vêm se afastando do nível físico e se torna cada vez mais uma atividade "abstrata"em que um algoritmo escrito em linguagem mais próxima à humana (daí o nome, linguagem"natural") tornando a programação à codificação de uma seqüência de instruções baseada numalinguagem de descrição de comandos. As primeiras linguagens foram projetadas para realizaçãode tarefas específicas e foram evoluindo para linguagens de uso geral e hoje, se observanovamente uma tendência de dispor-se de linguagens de uso específico.

À seguir, listamos as principais linguagens de programação.

FORTRAN

Uma das mais antigas linguagens de programação, o FORTRAN que é um siglônimo deFORmula TRANslator, foi projetado para ser uma linguagem para manipulação de operaçõesmatemáticas, originalmente em computadores mainframe. Na época em que foi criado, aprogramação era feita em cartões perfurados, um para cada instrução do programa,característica essa que influenciou numa série de comandos que permanecem como herançaaté hoje. Embora seja uma das linguagens mais antigas, o FORTRAN evoluiu juntamente coma informática e hoje, a versão padronizada mais recente, o FORTRAN-90 possui uma série derecursos disponíveis nas linguagens mais modernas e mantém uma grande comunidade deprogramadores em todo o mundo ainda desenvolvendo programas científicos e de engenhariaaltamente complexos e sofisticados. Por essas características, ainda o FORTRAN é a linguafranca de inúmeros cientistas e engenheiros.

COBOL

O COmmon Business Oriented Language ou COBOL é a linguagem desenvolvida na mesmaépoca do FORTRAN para criar programas de aplicação comercial, que envolvem a criação emanipulação de informações comerciais disponíveis em banco de dados, usando umalinguagem de comandos em inglês. Devido ao fato de ser uma linguagem com capacidade demanipulação de registros de dados comerciais, a sua capacidade de manipulação matemática élimitada às operações aritméticas básicas.

Pascal

A linguagem Pascal deve esse nome ao filósofo, matemático e físico francês Blaise Pascal, aquem Niklaus Wirth, professor do Instituto Técnico Federal (ETH) da Suíça, criador dessalinguagem homenageou. O Pascal foi projetado como uma linguagem de ensino deprogramação, daí a sua ampla aceitação em círculos acadêmicos de todo o mundo como aprimeira linguagem a ser ensinada em cursos de programação para estudantes de ciênciasexatas. A sua construção força aos alunos à aprenderem e programar de forma estruturada emodular. Outra vantagem é que o Pacal foi desenvolvido para ser independente da plataformade hardware e do sistema operacional.Assim, um programa escrito num computador poderiaser compilado sem modificação em outro tipo de computador, com diferente processador esistema operacional.

Page 8: USP - Cálculo Numérico

Introdução 8

Cálculo Numérico e Computacional C.Y. Shigue

BASIC

A linguagem BASIC, que é o acrônimo de Beginner's All -purpose Symbolic InstructionCode, tal como a linguagem Pascal, também foi criada para o ensino de programação decomputadores em nível introdutório no Darthmouth College, EUA. No início, o BASIC foi aprimeira linguagem interpretada disponível para uso geral e uma das primeiras a seremdisponíveis pela então recém-criada empresa produtora de software Microsoft nos primeirosmicrocomputadores fabricados na década de 1970. A rápida popularização dosmicrocomputadores nos anos seguintes também popularizaram a linguagem BASIC entre osjovens aficionados por jogos eletrônicos em computador, resultando numa geração deprogramadores que aprendeu o BASIC como primeira linguagem de programação.Atualmente, a linguagem Microsoft Visual BASIC é uma das linguagens mais utili zadas naprogramação em ambiente Windows.

Linguagem Assembly

A linguagem Assembly é uma linguagem de representação simbólica da linguagem de máquinade um processador em particular, sendo por isso, considerada uma linguagem de baixo nível,isto é, de nível hierárquico próximo ao físico. Assim, cada processador tem sua linguagemassembly própria, apesar de que uma família de processadores, tais como a família Intel80x86, pode compartilhar parte ou o todo de seu código assembly. Em português, aslinguagens assembly são também denominadas linguagens montadoras (assembler em inglês).

C

Nos idos anos 60 e início dos 70 era comum os programadores criarem suas própriaslinguagens de programação à partir de códigos assembler, por não haver a cultura decomercialização do software como um produto independente do hardware como hoje. Umadessas linguagens experimentais foi denominada linguagem "A", que após algunsaperfeiçoamentos deu origem à linguagem "B". Esta linguagem, por sua vez, naturalmenteevoluiu para o que hoje conhecemos como linguagem "C". O fato da linguagem ter evoluído eencontrado grande aceitação entre os programadores deriva do fato dela ser uma linguagemao mesmo tempo simples e poderosa, capaz de programar o hardware em nível de linguagemde máquina ao mesmo tempo que possibili ta uma construção sintática próxima à linguagemnatural. Ela foi criada por Kerninghan e Ritchie, pesquisadores do Laboratório Bell dosEstados Unidos, como linguagem de desenvolvimento do sistema operacional Unix. Comoeste sistema foi adaptado para uma ampla variedade de plataformas de hardware quer foramadotados pela maioria dos fabricantes de computadores utili zados em aplicações críticas(bancos de dados, processadores de comunicação, gerenciadores de redes) a linguagem Cganhou grande popularidade entre os programadores de sistema e de aplicações sofisticadas.

C++

No final dos anos 80 com o aumento da capacidade do hardware, os desenvolvedores desoftware não conseguiam acompanhar o ciclo de desenvolvimento com a mesma rapidez daevolução do hardware, ocasionando o que se chamou de crise do software. Para fazer frenteao aumento da complexidade na criação dos softwares, os cientistas da computaçãoelaboraram os conceitos de objetos e de programação orientada a objects , que determinaram

Page 9: USP - Cálculo Numérico

Introdução 9

Cálculo Numérico e Computacional C.Y. Shigue

um novo paradigma de programação que as linguagens de programação da época, como alinguagem C padrão (o chamado ANSI-C), não tinham suporte à estrutura lógica desse novoparadigma. Devido ao fato da linguagem C ser (e ainda é) a linguagem de desenvolvimentomais utili zada pelos programadores profissionais, um tipo de extensão da linguagem propostopor Bjarne Stroustrup do mesmo Laboratório Bell onde foi criado a linguagem C foidesenvolvido. Esta linguagem denominada C++ é retro-compatível com programas escritosem linguagem C, ao mesmo tempo que adota uma estrutura para o desenvolvimento deprogramas de acordo com o paradigma de orientação a objetos.

Linguagens Scripting

As linguagens scripting existem desde os anos 60. Entretanto, o poder e sofisticação dessaslinguagens aumentou dramaticamente nos últimos anos. Combinando com o avanço natecnologia de hardware, o uso de linguagens scripting ampliou o horizonte de aplicações paraum sem número de tarefas. As linguagens scripting foram criadas para funcionar como "cola"na integração de componentes de software e aplicações criados em linguagens deprogramação convencionais, como as descritas anteriormente. Elas avançaram no vácuo dacrise de software dos anos 80 e funcionaram e têm funcionado como uma mola propulsora nacriação de aplicativos gráficos e distribuídos, que hoje mantém em funcionamento parcelasignificativa dos sites comerciais da internet. À seguir, relacionamos algumas linguagensscripting mais utili zadas.

Shell Unix (sh, csh, ksh, etc)

O sistema operacional têm uma linguagem de comandos que possui a sintaxe da linguagem Ce que possibili ta a digitação de comandos interativamente. A estas linguagens scripting delinha de comando denomina-se shell . O primeiro shell do sistema operacional Unix foi criadono início dos anos 70 e uma série de outros shells (csh, ksh, bash, etc) foram criados paraautomatizar tarefas rotineiras de operação e administração do Unix. Um dos aspectos quetornam o Unix poderoso e singular é a sua capacidade de criar novas aplicações à partir dacomposição de diferentes aplicações já existentes e que, talvez seja uma das razões dapopularidade do Unix como plataforma de desenvolvimento de software entre osdesenvolvedores profissionais.

Perl

Criado por Larry Wall no final dos anos 80 com a finalidade de colocar em um único lugar asfunções de muitas aplicações de processamento de texto Unix, tais como sh, sed e awk, o Perl(acrônimo de Practical Extraction and Report Language) rapidamente se tornou uma dasferramentas mais utili zadas pelos administradores de sistemas de informação. Com a chegadado WWW (internet com interface gráfica), o Perl adquiriu fama como linguagem paraconstrução de scripts para páginas Web dinâmicas, isto é, que se atualizam com o acesso dosusuários.

Tcl

Criada por John Ousterhout no fim dos anos 80 como uma linguagem de comandos embutívelpara uso como ferramenta interativa. Completa-o a ferramenta de construção de interface

Page 10: USP - Cálculo Numérico

Introdução 10

Cálculo Numérico e Computacional C.Y. Shigue

gráfica Tk. O Tcl e o Tk são disponíveis para todas as principais plataformas de hardware esoftware, sendo uma ferramenta essencial na criação de aplicativos multiplataforma. Hoje, alinguagem Tcl é usada para uma ampla variedade de uso, desde geração automática deconteúdo para internet, até gerenciamento de sistemas, passando por automação de projetoeletrônico.

Visual Basic

A linguagem da Microsoft pode ser considerada ao mesmo tempo como linguagem deprogramação de sistema e como linguagem scripting. Conforme mencionado anteriormente,ela se popularizou como ferramenta para criação rápida de aplicativos (em inglês, RAD RapidApplication Development), baseado na interface gráfica do Windows. A combinação doVisual Basic e da linguagem de componentes scripting VBX (atualmente denominadoActiveX) é a força motriz por detrás de inúmeros sites de comércio eletrônico da internetbaseados na tecnologia de software ASP (acrônimo de Active Server Pages) que executatodas as tarefas de geração de páginas HTML dinâmicas e de administração de banco dedados. Esse sucesso em grande parte é devido à facili dade de integração propiciada peloVisual Basic.

Python

O Python é uma linguagem orientada a objetos dinâmica, criada por Guido van Rossum noinício dos anos 90 como uma proposta de facili tar o aprendizado de uma linguagem deprogramação e ao mesmo tempo prover uma ponte entre entre o shell e a linguagem C. É umalinguagem elegante, com uma sintaxe fácil de aprender, portável como o Tcl, com o qualcompartilha a ferramenta GUI Tk e com uma extensa biblioteca de suporte matemático,gráfico e multimídia. É fácil de estender para diversas aplicações e ser embutido em C/C++, oque tem contribuído para a sua popularização. Originalmente projetada como uma linguagemscripting avançada, têm encontrado novos usos como ferramenta RAD para a Web, bemcomo para aplicações distribuídas.

JavaScript

Criada no meio da década de 90 pela Netscape para executar scripts embutidos em páginasHTML, como por exemplo, validação de preenchimento de formulários. O JavaScript setornou um padrão de facto para scripts executados no lado do cliente. Embora não tenharelação com a linguagem Java, compartilha com a sintaxe dos principais funções e tipos dedados.

Java

O Java, originalmente desenvolvido por Bill Joy da SUN como uma linguagem deprogramação de dispositivos eletrônicos programáveis, encontrou o seu nicho de aplicação naWeb como linguagem de geração de pseudo-códigos compilados orientados a byte e não abits e independente de plataforma. Para ser executado, o Java pode rodar tanto do lado docliente, quando o código é denominado applet, quanto do lado do servidor, quando édenominado servlet o programa compilado Java. Para ser executado no lado do cliente é

Page 11: USP - Cálculo Numérico

Introdução 11

Cálculo Numérico e Computacional C.Y. Shigue

necessário que o navegador (browser) Web tenha instalado a máquina virtual Java (JVM -Java Virtual Machine) que é o interpretador de código orientado a byte do Java.

PHP

A linguagem PHP (um acrônimo recursivo para PHP: Hypertext Preprocessor) é umalinguagem scripting de uso geral, muito utili zada para o desenvolvimento de aplicações Webembútivel dentro de documentos HTML. Ela foi criada por Jamus Ledorf em 1995,inicialmente como simples script Perl para gerar estatísticas de acesso para seu currículoonline. Ele nomeou esta série de scripts como Personal Home Page Tools (daí veio o nomePHP originalmente). Como mais funcionalidades foram requeridas, Rasmus escreveu umaimplementação C muito maior, que era capaz de comunicar-se com base de dados, epossibili tava à usuários desenvolver simples aplicativos dinâmicos para Web. O que distingui oPHP de outras linguagens script, como Javascript é que embora o comando esteja escrito napágina HTML, o código é executado no servidor. Se o script estiver no servidor, o clienterecebe os resultados da execução desse script, sem determinar como é o código fonte. Porcausa dessa característica e também pela integração com programas open source como oMySQL (gerenciador de banco de dados) e Apache (servidor WWW), o PHP é muitoutili zado na administração de sites com conteúdo dinâmico.

Níveis de L inguagens de Programação

Existe apenas uma linguagem de programação que qualquer computador pode entender eexecutar: o seu código de máquina nativo. Este é o mais baixo nível em que se pode escrever umprograma de computador. Todas as outras linguagens de programação são chamadas delinguagens de alto nível ou de baixo nível em função do seu grau de semelhança com a linguagemde máquina em termos de recurso e de sintaxe.

Assim, uma linguagem de baixo nível corresponde à linguagem de máquina, de modo queuma instrução nessa linguagem corresponde a uma instrução em código de máquina. Já umainstrução em linguagem de alto nível corresponde a uma série de instruções em linguagem demáquina. Em termos gerais, o número de instruções em linguagem de máquina equivalente a umainstrução em linguagem de alto nível é denominada pontos de função.

As linguagens de baixo nível tem a vantagem de poderem ser escritas com instruções queacessam diretamente às particularidades da arquitetura da unidade central de processamento(CPU) tornando, assim, o programa extremamente eficiente, otimizando o uso tanto da memóriaRAM como do processador em sí. Entretanto, escrever um programa em linguagem de baixonível demanda um tempo significativamente maior e requer um conhecimento mais aprofundadodas características internas do processador, além do código estar mais sujeito a falhas plea maiorcomplexidade de programação. Portanto, programação em linguagem de baixo nível é utili zadaem programas pequenos ou em segmentos de código em linguagem de alto nível para otimizar odesempenho de partes críticas do programa.

As linguagens de alto nível permitem o desenvolvimento rápido de programas. Emcomparação com os programas escritos em linguagem de baixo nível, o desempenho pode não sertão bom, mas a economia de tempo na programação supera a menor eficiência na execução pelofato do custo operacional mais elevado residir no desenvolvimento de software e não na upgradedo hardware. Como regra básica, o custo para escrever um programa é aproximadamente

Page 12: USP - Cálculo Numérico

Introdução 12

Cálculo Numérico e Computacional C.Y. Shigue

constante para cada linha do código, independentemente da linguagem, de forma que escreveruma linha de instrução em programa escrito em linguagem de alto nível, que equivale a dez linhasde código escrito em linguagem de baixo nível, representa um custo de 1/10 do custo doprograma escrito em linguagem de baixo nível.

Representação de Números

Os números empregados no cálculo computacional podem ser de dois tipos: númerosinteiros e números em “ponto flutuante” (que representam os números reais da Matemática). Oscomputadores atuais representam os números internamente no formato binário, como seqüênciade 0s e 1s. Apesar dessa representação ser conveniente para as máquinas, é anti-natural para osseres humanos, cujo sistema de numeração natural é o decimal. A seguir, apresentamos arepresentação de números decimais e binários e os métodos de conversão de um sistema a outro.

Sistema de Numeração Decimal

O sistema de numeração decimal é o sistema natural, adotado em todas operaçõesmatemáticas cotidianas. Este sistema é de base 10, no qual todos os múltiplos e submúltiplos sãoexpressos como potências de 10. Por exemplo, os seguintes números decimais podem ser escritoscomo uma combinação linear de potências de 10:

1537 = 1x103 + 5x102 + 3x101 + 7x100 (1.1)

36,189 = 3x101 + 6x100 + 1x10-1 + 8x10-2 + 9x10-3 (1.2)

6,032x1023 = 6x1023 + 0x1022 + 3x1021 + 2x1020 (1.3)

Observar que a posição relativa de cada algarismo indica a potência pela qual ele estámultiplicando. Assim, de acordo com esta convenção, o algarismo 3 do exemplo (1.1), que estána 2a posição à 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) oalgarismo mais significativo. O algarismo 3 é o 2o algarismo significativo e o 5 o 3o algarismosignificativo.

De acordo com os exemplos acima, qualquer número decimal pode ser escrito na formageral como:

N = anbn + an-1bn-1 + an-2bn-2 + ... + a0b0 + a-1b-1 + ... + a-mb-m (1.4)

onde N é um dado número na base b e an, an-1, etc representam os coeficientes que multiplicamas correspondentes potências de b. Assim, N = anan-1...a0,a-1 a-2...a-m na representação usual(implícita). Detalhe importante a observar é o de os coeficientes que multiplicam potências de bcujos expoentes sejam < 0 estão separados por uma vírgula daqueles coeficientes cujos expoentesde b sejam ≥ 0.

Page 13: USP - Cálculo Numérico

Introdução 13

Cálculo Numérico e Computacional C.Y. Shigue

Sistema de Numeração Binár io

Atualmente, em que pese a nossa familiaridade com o sistema de numeração decimal, estetipo de representação numérica é inadequado para a representação da informação emcomputadores digitais. Os computadores digitais operam basicamente com dois tipos de sinais detensão: alto e baixo. Matematicamente, pode-se expressar estes valores por 0 (baixo) e 1 (alto). Àpartir de um esquema de representação binária por valores de 0 e 1 podemos expressar qualquerquantidade numérica. Vejamos os seguintes exemplos de números decimais representados comopotências de 2:

2,510 = 1x21 + 0x20 + 1x2-1 (1.5)

98,7510 = 1x26 + 1x25 + 0x24 + 0x23 + 0x22 + 1x21 + 0x20 + 1x2-1 + 1x2-2 (1.6)

Observar que o índice 10 em 2,5 e 98,75 indica que esses números são decimais.Utili zando a fórmula de representação expressa pela equação (1), podemos reescrever os

dois exemplos numéricos acima como:

2,510 ≡ 10,12

98,7510 ≡ 1100010,112

Como no caso dos números decimais, a posição relativa de cada algarismo binário indica apotência pela qual ele está multiplicando. Igualmente os coeficientes que multiplicam potências de2 cujos expoentes sejam < 0 estão separados por uma vírgula daqueles coeficientes cujosexpoentes de 2 sejam ≥ 0.

Conversão de Números Decimal-Binár io

Para convertermos um número decimal para um número binário devemos aplicar ummétodo para a parte inteira e outro para a parte fracionária. Para a parte inteira, aplicamos ométodo das divisões sucessivas, que consiste em se dividir o número decimal por 2, em seguidadivide-se o quociente obtido por 2 e assim sucessivamente, até que o último quociente encontradoseja 1. O número binário inteiro será, então, formado pela concatenação do último quociente comos restos das divisões no sentido contrário ao que foram obtidos.

Por exemplo, vamos converter o número decimal 23:

23 2

1 11 2

1 5 2

1 2 2

0 1

23 = 1011110 2

Page 14: USP - Cálculo Numérico

Introdução 14

Cálculo Numérico e Computacional C.Y. Shigue

Outro exemplo,

15 2

1 7 2

1 3 2

1 1 2

1 0

15 = 01111 = 111110 2 2

Notar que neste exemplo necessitamos apenas de quatro dígitos binários para descrever1510, pois o zero a esquerda de 11112 não é siginificativo.

Para converter um número fracionário de base decimal para base binária aplicamos ométodo das multiplicações sucessivas. Ele consiste nas seguintes etapas: multiplicamos o númerofracionário por 2; deste resultado, a parte inteira será o primeiro dígito do número fracionáriobinário e parte fracionária será novamente multiplicada por 2. O processo repete-se até que aparte fracionária do último produto seja zero.

Como exemplo, tomemos o número decimal 0,1875:

0,1875x 2

0,3750

0,3750x 2 x 2 x 2

0,750

0,75

1,50

0,50

1,00

0,1875 = 0,001110 2

Outro exemplo,

0,1x 2

0,2

0,2x 2 x 2 x 2

0,4

0,4

0,8

0,8

1,6

0,1 = 0,0001100110011...10 2

0,6x 2 x 2

1,2

0,2

0,4 ... e os produtoscontinuam.

Como mostrado neste exemplo, nem sempre um número decimal exato possui umarepresentação binária exata. Este fato é a principal causa de erros de arredondamento no cálculonumérico em computadores digitais.

A conversão de bases para um número decimal que contém parcela inteira e parcelafracionária é constituída por duas partes distintas sobre as quais são aplicadas as respectivasregras de conversão:

23,187510 = 10111,00112

Representação Binár ia em Ponto Flutuante

Em computação digital, um dígito binário é denominado bit (do inglês, binary digit). Umgrupo de oito bits corresponde a 1 byte. Nos computadores digitais, a representação dos númerosbinários é feita com um número finito de bits. A esse tamanho de bits é dado o nome de palavrade computador . O tamanho da palavra de computador depende de características internas àarquitetura do mesmo. Em geral, os microcomputadores padrão PC tem o tamanho de palavra de

Page 15: USP - Cálculo Numérico

Introdução 15

Cálculo Numérico e Computacional C.Y. Shigue

16 e 32 bits. Computadores com arquitetura mais avançada possuem tamanho de palavra de 64bits ou mais.

O tamanho de palavra de computador tem a seguinte implicação: quanto maior o tamanhoda palavra, mais veloz e mais preciso será o computador. Para entender como o tamanho depalavra afeta a precisão e, consequentemente, os erros de arredondamento do cálculocomputacional, veremos a representação de números reais binários em notação de pontoflutuante.

Um número binário em ponto flutuante (número real) é representado da seguinte forma:

característica mantissa

sinal da característica

sinal da mantissa

Pela norma IEEE-754 do Instituto dos Engenheiros Elétricos e Eletrônicos (IEEE), odígito mais à esquerda (também chamado de dígito mais significativo - em inglês, MSB) é o sinalda característica: 0 (positivo) e 1 (negativo). Os dígitos seguintes representam o valor binário dacaracterística seguido pela mantissa. O número de bits da característica é obtido pela diferençaentre o tamanho da palavra de computador e o número de bits da mantissa que se seguem àcaracterística, sendo que o primeiro bit da mantissa representa o seu sinal. A convenção para osinal da mantissa é o mesmo da característica, isto é, 0 é positivo e 1, negativo.

Os números em ponto flutuante no formato IEEE tem a seguinte representação:

Tamanho(bytes)

No de bitsde sinal

No de bits doexpoente

No de bits damantissa

“Bias”

Precisão simples 4 1 8 23 127Dupla precisão 8 1 11 52 1023

• Bit de sinalO bit de sinal apresenta zero como número positivo e um como número negativo.

• Expoente (característica)O campo do expoente precisa representar tanto números positivos como números

negativos. Para fazer isto, um valor “bias” é adicionado ao expoente para obter o expoentearmazenado no computador. Para a norma IEEE o valor é de 127 para variável em precisãosimples. Assim, um expoente significa que 127 é armazenado no campo do expoente. Um valorarmazenado de 200 indica um expoente real de (200 – 127) ou 73. Expoentes armazenados de –127 e +128 são usados para fins especiais.

• MantissaA mantissa representa os bits de precisão de um número. Qualquer número pode ser

expresso em notação científica. Por exemplo, o número cinco pode ser representado em qualqueruma das seguintes formas:

Page 16: USP - Cálculo Numérico

Introdução 16

Cálculo Numérico e Computacional C.Y. Shigue

5.00 x 100

0.05 x 102

5000 x 10-3

Por conveniência, os números em ponto flutuante são armazenados na forma normalizada.Em notação científica, a forma normalizada de representar o número cinco é como 5.0 x 100,enquanto que na notação de ponto flutuante, a parte inteira não é representada, de modo que onúmero cinco é representado na forma normalizada como 0.5 x 101.

Tipos de Dados Numéricos no Computador

Os tipos de dados numéricos no computador representados na linguagem C sãoequivalentes aos tipos numéricos de outras linguagens, como o FORTRAN, o BASIC e o Pascal.

Tipo INTEIRO

Representa os números inteiros, empregando 1, 2 ou 4 bytes, de acordo com o tamanhodo número que desejamos expressar.

Tipo Denominação bytes Faixa Algarismossignificativos

short inteiro curto 1 -128 a 127 3int inteiro 2 -32.768 a 32.767 5long inteiro longo 4 -2.147.483.648 a 2.147.483.647 10

Tipo REAL

Os números fracionários ou decimais são representados como números reais, cuja notaçãoempregada é a de número com ponto decimal fixo ou ponto flutuante. A vantagem deste último épermitir expressar números muito pequenos ou números muito grandes de forma automática.Existem dois tipos de números reais de acordo com a sua precisão: 1) Precisão simples, com 4bytes e 2) Dupla precisão, com oito bytes. A tabela seguinte apresenta os tipos representativo dosnúmeros reais.

Tipo Denominação bytes Faixas de valores Algarismossignificativos

float Precisão simples 4 -3,4028235.1038 a -1,1754944.10-38

1,1754944.10-38 a 3,4028235.10387

double Dupla precisão 8 -1,797693134862316.10308 a-2,225073858507201.10-308

2,225073858507201.10-308 a1,797693134862316.10308

15

Page 17: USP - Cálculo Numérico

Introdução 17

Cálculo Numérico e Computacional C.Y. Shigue

Ar itmética Computacional e Err os Computacionais

Quando realizamos cálculo manualmente, os erros de arredondamento da calculadora sãodesprezíveis, porque a quantidade de cálculo que podemos operar é pequeno. No computador,geralmente, a quantidade de operações aritméticas que se pode realizar é muito maior do queaquelas realizadas manualmente, de forma que o erro de arredondamento do dispositivo decálculo se torna importante. Outro problema é que no cálculo manual temos controle dapropagação do erro porque, visualmente, estamos conferindo o resultado de cada operaçãoaritmética ao digitá-lo na calculadora. No computador não temos como checar cada operação,tendo em vista a velocidade com elas são realizadas e também pela quantidade, que impossibili ta aconferência dos resultados das operações aritméticas. Desta forma, a verificação dos resultados eo controle sobre a propagação de erros em programas de computador é essencial para se atingirresultados consistentes e confiáveis.

As seguintes considerações tem que ser levadas em conta ao se realizar cálculos numéricosno computador:• A aritmética computacional não é a mesma coisa que a aritmética à base de lápis e papel. No

cálculo manual é sempre possível monitorar os resultados intermediários e ajustar a precisãodos cálculos. Na aritmética computacional, cada número tem uma quantidade de algarismosfixas que muitas vezes podem ser inadequadas para o cálculo repetitivo;

• O cálculo manual usualmente é realizado para um pequeno número de operações aritméticas,enquanto que o cálculo computacional pode envolver bilhões de operações aritméticas. Assim,pequenos erros que poderiam passar despercebidos no cálculo manual, podem arruinarcompletamente o resultado do cálculo computacional, por causa da acumulação e propagaçãode erro.

Imprecisão intrínseca da representação binária em ponto flutuante

Todo o número inteiro decimal pode ser representado exatamente por um número inteirobinário; porém, isto não é verdadeiro para números fracionários. Na realidade, todo o númerodecimal irracional também será irracional no sistema binário. No sistema binário, apenas númerosracionais que podem ser representados na forma p/q, no qual q é uma potência inteira de 2,podem ser expressos exatamente com um número de bits finito. Mesmo frações decimais comuns,tal como o número decimal 0,0001 não podem ser representados exatamente em binário (0,0001 éuma fração binária repetitiva com período de 104 bits!).

Um programa simples de soma de números decimais fracionários, 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 número 1.0000535 como saída ao invés do número exato 1. O pequeno erro derepresentação do número decimal 0,0001 em binário se propagará pela soma, comprometendo oresultado da soma final.

Page 18: USP - Cálculo Numérico

Introdução 18

Cálculo Numérico e Computacional C.Y. Shigue

Definição de err o absoluto e err o relativo

• Err o 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 |

• Err o relativo

O erro relativo é o erro absoluto dividido pelo valor verdadeiro:

erro relativo = ∆x

x

x x

x= −| |

e que, frequentemente, é expresso também como erro percentual, multiplicando-se o erro relativopor 100:

erro percentual = erro relativo x 100

Tipos de Err os

• Err o de arr edondamento

Os erros de arredondamento são causados pela limitação dos dispositivos empregados nocálculo numérico como, por exemplo, uma régua de cálculo que possui uma limitação geométrica,uma calculadora eletrônica com número de dígitos limitado no “display” ou mesmo umcomputador com o erro de representação de um número decimal no seu equivalente binário.

Por exemplo, consideremos o número decimal exato 0,110, cujo equivalente binário érepresentado pela dízima Ø. ØØØ11ØØ11ØØ112 ... Para um computador com tamanho depalavra de 16 bits, o número decimal 0,110 é armazenado como:

0,110 ≈ Ø. ØØØ11ØØ11ØØ11ØØ12 = 0,09999084410

de modo que o erro de arredondamento é dado por:

erro absoluto = |0,1 - 0,099990844| = 0,000009155 ≈ 9.10-6

• Err o por estouro de memória (“ Overflow” ) e “ Underflow”

Page 19: USP - Cálculo Numérico

Introdução 19

Cálculo Numérico e Computacional C.Y. Shigue

A variável numérica real em precisão simples (default) pode conter no máximo o número1038 e no mínimo 10-38, como visto anteriormente. O erro de “overflow” ocorre quando oresultado de uma operação aritmética excede o valor de 3,4028235.1038. Analogamente, o erro de“underflow” ocorre para uma variável real em precisão inferior a 1,1754944.10-38.

A multiplicação e a divisão podem acarretar erro de “overflow” como de “underflow”. Ocaso mais extremo de “overflow” na divisão acontece quando ocorre uma divisão por zero, mas,geralmente, tal tentativa provoca uma interrupção na execução do programa com a emissão deum aviso pelo programa de “overflow”.

• Err o de Truncamento

O erro de truncamento é um erro devido ao método de aproximação empregado para ocálculo de uma função exata. Por exemplo, considere a expansão da função exponencial em sériesde potência da forma:

e xx xx = + + + +12 3

2 3

! !�

Por se tratar de uma série infinita, devemos escolher um número de termos limitado dasérie para que possamos computar o valor numérico da função ex. Escolhemos aproximar a sérieinfinita por uma série contendo três termos, isto é, pela aproximação:

e xxx ≈ + +12

2

!

Não importa a quantidade de algarismos significativos que utili zemos no cálculo de ex pelasérie “truncada”, o resultado será sempre aproximado e, portanto, sempre terá um erro, que édenominado err o de truncamento.

ExemploCalcule o valor numérico de e1 = e (número de Euler) empregando a série truncada de 2a ordem:

e12

1 11

21 1 05 2 5≈ + + = + + =

!, ,

Sabendo-se que o valor exato do número de Euler com quatro algarismo significativos é igual a2,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%

Page 20: USP - Cálculo Numérico

Introdução 20

Cálculo Numérico e Computacional C.Y. Shigue

Referências Bibliográficas Online

Bjarne Stroustrup FAQ (Frequently asked questions)http://www.research.att.com/~bs/bs_faq.html

Tcl websitehttp://dev.scriptics.com/doc/scripting.html

História do Perlhttp://www.perl.org/press/history.html

Python languagehttp://www.python.org

A história do PHP e projetos relacionadoshttp://www.php.net/manual/pt_BR/history.php

Javahttp://java.sun.com/

Notação de números em ponto flutuante IEEE Standard 754http://research.microsoft.com/~hollasch/cgindex/coding/ieeefloat.html

Desastres causados por erro de cálculo numéricohttp://www.ima.umn.edu/~arnold/disasters/

Page 21: USP - Cálculo Numérico

Cálculo de Funções por Séries de Potências 2-1

Cálculo Numérico e Computacional C.Y. Shigue

Cálculo de Funções por Séries de Potências

O objetivo do cálculo de funções por séries de potências é o de se obter expressõessimples para a avaliação de funções com grau de complexidade maior. Além disso, veremosque o desenvolvimento de funções por séries de Taylor forma o núcleo básico de um curso deCálculo Numérico, de modo que o entendimento desse assunto é indispensável para oentendimento dos diversos métodos numéricos a serem abordados nos próximos capítulos.

Definição

Uma Série de Potências em x - x0 é uma série da forma

a a x x a x x a x x a x xnn

n0 1 0 2 0

23 0

30

0

+ − + − + − + = −=

∑( ) ( ) ( ) ( )�

O problema do cálculo de uma função por meio de séries de potência consiste em se encontraros coeficientes an de uma série infinita, tal que:

f x a x xnn

n

( ) ( )= −=

∑ 00

Séries de Taylor

Definição: Uma função y = f(x) é analítica num ponto x0, se f(x) for a soma de uma série depotências para todo x tal que |x - x0| < r, r > 0:

f x a x xnn

n

( ) ( )= −=

∑ 00

(2.1)

Toda a função analítica em x0, também o é na vizinhança de x0. Lembrando: uma função f(x) éanalítica num ponto x0 se ela satisfizer as seguintes condições: (1) a função existe em x0 e valef(x0); (2) a função é contínua em x0 e (3) a função é diferenciável em x0 e suas derivadas f’ (x),f” (x), ..., f(n)(x) existem nesse ponto.

Cálculo dos coeficientes an:Se f(x) é analítica em x0, então a função vale f(x0) nesse ponto e também as suas derivadasexistem e valem f '(x0), f "(x0), ... , f

(n)(x0). Deste modo, podemos calcular o valor da função ede suas derivadas fazendo:

f x a x xnn

n

( ) ( )= −=

∑ 00

′ = − −

=

∑f x na x xnn

n

( ) ( )01

1

Page 22: USP - Cálculo Numérico

Cálculo de Funções por Séries de Potências 2-2

Cálculo Numérico e Computacional C.Y. Shigue

′′ = − − −

=

∑f x n n a x xnn

n

( ) ( ) ( )1 02

2

′′′ = − − − −

=

∑f x n n n a x xnn

n

( ) ( )( _ ( )1 2 03

3�

f x n n n m a x xnn

n m

n m

( ) ( ) ( ) ( ) ( )= − − + − −

=

∑ 1 1 0�

Substituindo x = x0, obtemos: f(x0) = a0, f '(x0) = a1, f "(x0) = 2!a2, ′′′f (x0) = 3!a3, ... ,f

(m)(x0) = m!am, de onde vem que:

a f x a f x af x

af x

af x

mm

m

0 0 1 0 20

30 0

2 3= = ′ =

′′=

′′′=( ), ( ),

( )

!,

( )

!, ,

( )

!

( )

que, substituindo na equação (2.1), resulta em:

f x f x f x x xf x

x xf x

x x

f x

nx x

nn

n

( ) ( ) ( )( )( )

!( )

( )

!( )

( )

!( )

( )

= + ′ − +′′

− +′′′

− +

= −=

∑0 0 0

00

2 00

3

00

0

2 3�

(2.2)

A expressão (2.2) fornece o método para o cálculo dos coeficientes de uma série de potênciasdenominada séries de Taylor.

Exemplo 1: Expansão da função f(x) = ex em séries de Taylor em torno de x0 = 0.Cálculo da função e suas derivadas em x0 = 0:

f(x) = ex, f(0) = e0 = 1

f '(x) = ex f '(0) = 1

f "(x) = ex f "(0) = 1� �

f (n)(x) = ex, f

(n)(0) = 1

Substituindo na equação geral da série de Taylor, resulta:

e xx x x

nx

n

n

= + + + + ==

∑12 3

2 3

0! ! !

Page 23: USP - Cálculo Numérico

Cálculo de Funções por Séries de Potências 2-3

Cálculo Numérico e Computacional C.Y. Shigue

-5 -4 -3 -2 -1 0 1 2 3 4 5-20

0

20

40

60

80Função exponencial

ex

2 termos 3 termos 4 termos 5 termos

y =

f(x

)

x

Fig. 2.1 - Gráfico comparativo entre a função ex exata e a série de Taylor aproximada comdiferentes números de termos da série.

Exemplo 2: Expansão em séries de Taylor para a função sen x em torno de x0 = 0.Cálculo da função e suas derivadas em x0 = 0:

f(x) = sen x f(0) = sen 0 = 0

f '(x) = cos x f '(0) = cos 0 =1

f "(x) = − sen x f"(0) = 0

f '''(x) = − cos x f '''(0) = − 1

f(4) (x) = sen x f(4) (0) = 0� �

As derivadas da função sen x são cíclicas, de modo que f(4) (x) = f(x), f(5) (x) = f’ (x), e assimpor diante. Substituindo na expressão geral para a série de Taylor, resulta:

sen! ! !

( )( )!

x xx x x x

nn

n

n

= − + − + = −+

+

=

∑3 5 7 2 1

03 5 7

12 1

Page 24: USP - Cálculo Numérico

Cálculo de Funções por Séries de Potências 2-4

Cálculo Numérico e Computacional C.Y. Shigue

-10 -8 -6 -4 -2 0 2 4 6 8 10-2.0

-1.5

-1.0

-0.5

0.0

0.5

1.0

1.5

2.0Função seno

sen x 2 termos 3 termos 4 termos 5 termos

y =

f(x)

x

Fig. 2.2 - Gráfico comparativo entre a função sen x exata e a série de Taylor aproximada comdiferentes números de termos da série.

Exemplo 3: Expansão da função cos x em séries de Taylor em torno de x0 = 0.Cálculo da função e suas derivadas em x0 = 0:

f(x) = cos x f(0) = cos 0 = 1

f '(x) = − sen x f '(0) = − sen 0 = 0

f "(x) = − cos x f"(0) = − 1

f '''(x) = sen x f '''(0) = 0

f(4) (x) = cos x f(4) (0) = 1� �

Observar que, como no caso da função sen x, as derivadas da função cos x são repetitivas apartir da 4a derivada. Substituindo na expressão geral para a série de Taylor, resulta:

cos! ! !

( )( )!

xx x x x

nn

n

n

= − + − + = −=

∞∑1

2 4 61

2

2 4 6 2

0

Page 25: USP - Cálculo Numérico

Cálculo de Funções por Séries de Potências 2-5

Cálculo Numérico e Computacional C.Y. Shigue

-10 -8 -6 -4 -2 0 2 4 6 8 10-2

-1

0

1

2Função cosseno

cos x 2 termos 3 termos 4 termos 5 termos

y =

f(x)

x

Fig. 2.3 - Gráfico comparativo entre a função cos x exata e a série de Taylor aproximada comdiferentes números de termos da série.

Exemplo 4: Seja f(x) = ln x.Expandir em séries de Taylor em torno de x0 = 0.Cálculo de f(0) e suas derivadas:

f(x) = ln x, ′ = ′′ = − ′′′ =f xx

f xx

f xx

( ) , ( ) , ( ) , ,1 1 2

2 3 �

f xn

xn n

n( ) ( ) ( )

( )!= −

−−111 (n = 1, 2, 3, ...),

de modo que f(1) = 0, f '(1) = 1, f "(0) = -1, f '''(1) = 2, ..., f (n)(1) = (-1)n-1(n-1)!.

Substituindo em (2.2), vem que:

ln ( )( ) ( ) ( )

( )( )

x xx x x x

nn

n

n

= − −−

+−

−−

+ = −−−

=

∑11

2

1

3

1

41

12 3 41

1�

Page 26: USP - Cálculo Numérico

Cálculo de Funções por Séries de Potências 2-6

Cálculo Numérico e Computacional C.Y. Shigue

0.0 0.5 1.0 1.5 2.0-2.0

-1.5

-1.0

-0.5

0.0

0.5

1.0Função logaritmo

ln x 2 termos 3 termos 4 termos 5 termos

y =

f(x)

x

Fig. 2.4 - Gráfico comparativo entre a função ln x exata e a série de Taylor aproximada comdiferentes números de termos da série.

Teorema da convergência para séries de potências: Seja a x xnn

n

( )−=

∑ 00

uma série de

potências dada. Uma das seguintes condições é válida:(i) a série converge somente quando x = x0;(ii) a série é absolutamente convergente para todos os valores de x;(iii ) existe um número R > 0, tal que a série seja absolutamente convergente para todos os

valores de x, para os quais |x-x0| < R, e seja divergente para todos os valores de x, para osquais |x-x0| > R. A grandeza R é denominada raio de convergência da série de potênciasdada.

Exemplo 5: Determinar o raio de convergência da série de Taylor para a função ex.Para determinarmos o raio de convergência da função ex, vamos aplicar o teste da razão:

lim lim( )!

!

limn

n

n n

n

n n

a

a

x

n

x

n

x

n→∞

+

→∞

+

→∞=

+=

+=1

1

11

0, para qualquer valor de x

Como o critério da razão estabelece que a série é convergente quando o limite acima é menordo que 1, conclui-se que o raio de convergência da série de Taylor da função exponencial sãotodos os valores de x, tal que x ∈ℜ, ou seja, |x| < ∞.

Page 27: USP - Cálculo Numérico

Cálculo de Funções por Séries de Potências 2-7

Cálculo Numérico e Computacional C.Y. Shigue

Exemplo 6: Determinar o raio de convergência da série de Taylor para a função ln x,expandida em torno de x0 = 1.A série de Taylor da função ln x é expressa como:

ln ( )( ) ( ) ( )

( )( )

x xx x x x

nn

n

n

= − −−

+−

−−

+ = −−−

=

∑11

2

1

3

1

41

12 3 41

1

Aplicando o teste da razão ao termo geral da série:

lim lim

( )

( )lim ( ) lim

n

n

n n

n

n n n

a

a

x

nx

n

xn

nx

n

nx

→∞+

→∞

+

→∞ →∞=

−+

−= −

+= −

+= −1

11

11

11

11

1

Como o critério da razão estabelece que a série é convergente quando o limite é menor doque 1, resulta:

x x x− < ⇔ − < − < ⇒ < <1 1 1 1 1 0 2

Como o critério da razão não diz nada sobre a convergência ou divergência em x = 2 (para oqual o limite é igual a 1), vamos analisá-lo em separado. Fazendo x = 2 na série de Taylor,tem-se que:

� �n

n

n

n

2 11

2

1

3

1

4

1 1

1

= − + − + =− −

=

∑ ( )

Mas, esta série infinita é a série harmônica alternada, que é convergente. Assim, o raio deconvergência para ln x é 0 < x ≤ 2.

Observação: A convergência de uma série de potências nos assegura que podemos utili zá-lapara o cálculo dos valores corretos de uma função.

Exemplo 7: O cálculo de ln 1,5 e de ln 2, usando a série de Taylor fornece os valores:

n ln (1,5) n ln (2,0)

2 0,37500 10 0,645644 0,40104 50 0,683255 0,40729 100 0,68817

10 0,40543 500 0,6921511 0,40548 1.000 0,6926512 0,40546 10.000 0,6931013 0,40547 50.000 0,6931415 0,40547 100.000 0,6931420 0,40547 200.000 0,69315

Exato: 0,40547 Exato: 0,69315

Page 28: USP - Cálculo Numérico

Cálculo de Funções por Séries de Potências 2-8

Cálculo Numérico e Computacional C.Y. Shigue

Como a série é convergente para x = 1,5 observa-se que a função fornece o resultadocorreto com cinco casas decimais empregando 13 termos da série. Os outros valores, para n <13, embora não sejam exatos, mostram tendência de convergência para o valor exato. No casode ln 2, como x = 2 é o valor de x no limite superior de convergência da série de Taylor dafunção ln x, observamos dos dados da tabela que a convergência é lenta. Para obter o resultadocom precisão de cinco casas decimais, necessitamos da ordem de 200.000 termos da série!Geralmente, quanto maior o valor do argumento de uma função, i.e., quanto maior o valor dex para o cálculo de f(x), necessitamos de um número cada vez maior de termos da série paraque possamos obter o resultado com uma certa precisão.

Vamos ver agora quando utili zamos um valor de x fora do intervalo de convergência deuma dada série. Na tabela seguinte estão mostrados os valores calculados de ln 3 usandodiferentes números de termos da série de potências:

n ln (3,0)5 5,066677 12,6857

10 -6,4825415 1424,4220 -34359,725 882703∞ ∞

Exato: 1,09861

Neste caso, como a série infinita para ln 3 é divergente, o cálculo pela série de Taylorfornece valores errados e, em nenhum momento, vai convergir para o valor correto 1,09861com qualquer número de termos da série.

Exemplo 8: Para calcular ln 3 ou qualquer outro valor de x que esteja fora do intervalo deconvergência, utili zamos a propriedade das funções logarítmicas: ln (a.b) = ln a + ln b. Parax = 3, fazemos ln 3 = ln (2x1,5) = ln 2 + ln 1,5 = 0,69315 + 0,40547 = 1,09862. A diferença de0,00001 vem do erro de arredondamento de ln 2 e de ln 1,5.

Exemplo 9: Poderíamos ter adotado o mesmo procedimento do Exemplo 8 para o cálculo deln 2, pois assim, com o argumento x menor, o número de termos da série de potência seria bemmenor do que os 200.000 termos necessários para precisão de cinco casas decimais. Assim,

poderíamos fazer: ln 2 = ln ( )22

= 2 ln 2 . Para o cálculo de ln 2 com precisão de cinco

casas decimais, seriam necessários apenas 10 termos: ln 2 = 0,34657. ∴ ln 2 = 2(0,34657) =0,69315.

Séries de Potências com Resto

Seja a série de potências:

f x f x f x x xf x

x xf x

nx x

nn

n

( ) ( ) ( )( )( )

!( )

( )

!( )

( )

= + ′ − +′′

− + = −=

∑0 0 00

02 0

00

2 �

Page 29: USP - Cálculo Numérico

Cálculo de Funções por Séries de Potências 2-9

Cálculo Numérico e Computacional C.Y. Shigue

se desejamos calcular a série com um número finito de termos, podemos reescrever (2.2) naforma:

f x f x f x x xf x

x xf x

nx x R x

nn

n( ) ( ) ( )( )( )

!( )

( )

!( ) ( )

( )

= + ′ − +′′

− + + − +0 0 00

02 0

02� (2.3)

onde Rn(x) representa o resto da série de potências truncada no n-ésimo termo. O resto Rn(x)pode ser definido de acordo com a fórmula de Leibniz como:

{ }R x max fx x

nx xn

nn

( ) ( )( )

!,( )≤

−≤ ≤ξ ξ0

0 (2.4)

Rn(x) representa o erro de truncamento (absoluto) da série de Taylor. Observar que aexpressão para a fórmula de Leibniz depende do máximo valor da derivada n-ésima da funçãof(x) e do termo geral da série de potência.

Exemplo 10: Determinar quantos termos são necessários para se calcular e1 através de sériesde Taylor, com erro menor do que 10-6.

O erro absoluto para a série de Taylor da função ex pode ser calculada através dafórmula de Leibniz:

{ } { }R x Mx

nmax f max en

nn( )

!, ( ) ,( )≤ = = ≤ ≤ onde M ξ ξξ 0 1

O valor máximo de eξ ocorre quando ξ = 1, ou seja, { }max f en( ) ( )ξ = . Entretanto, o valor do

número de Euler, e1, é o que desejamos calcular, de modo que estimamos o valor de

{ }max f n( ) ( )ξ como sendo igual a 3 (> e). Assim, podemos calcular n da fórmula de Leibniz

como: R xn n

nn

n

( )! !

! .= ≤ = < ⇒ >−1 31 3

10 3106 6 . Esta desigualdade não tem solução

analítica, de modo que vamos calcular o valor de n substituindo-se numericamente valores de naté encontrar um que satisfaça a condição de Leibniz. Se fizermos n = 9, teremos que9! = 362.880 < 3.106. Se n = 10, vem que 10! = 9!x10 = 3.628.800 > 3.106. Portanto, para secalcular e1 com erro inferior a 10-6 são necessários n = 10 termos na série de potências.

Exemplo 11: Determinar o número de termos necessários para se avaliar o sen 5 por séries depotências com precisão de cinco casas decimais.Solução: Precisão de cinco casas decimais é equivalente a calcular sen 5 com erro absoluto de1 em 10-5, ou seja, Rn(x) ≤ 10-5:

R x Mx

nM

nn

n n

( )( )! ( )!

= ≤+

=+

≤+ +

−52 1

5

2 110

2 1 2 15,

Page 30: USP - Cálculo Numérico

Cálculo de Funções por Séries de Potências 2-10

Cálculo Numérico e Computacional C.Y. Shigue

onde { }M max f n= =( ) ( )ξ 1, pois embora não saibamos qual será a n-ésima derivada de sen x,

sabemos que no máximo ela será igual a 1. Assim,

15

2 110

2 1

510

2 15

2 15

n

nn

n+−

++≤ ⇒

+≥

( )!

( )!

Novamente, calcularemos o valor de n por substituição numérica. A solução vem para(2n + 1) = 21, ou n = 10. Observar que a variável contadora n se inicia em 0. Assim, serãonecessários, no máximo, 11 (= n + 1) termos da série de Taylor para o cálculo de sen 5 comprecisão de cinco casas decimais.

Exemplo 12: Vamos verificar se o valor de n calculado no Exemplo 2 fornece o resultado comcinco casas decimais de precisão. Utili zando o programa de cálculo FORTRAN seno.for ou aversão em linguagem C, seno.c1, obtemos para n = 11, sen 5 = -0,9589238336 e erro absoluto= 9,3.10-6. Observar que o resultado obtido por séries de potências está correto até a quintacasa decimal em comparação ao resultado exato (-0,9589242762) com dez casas decimais.

Derivação de Séries de Potências

Seja y = f(x) uma função expandida em uma série de potências. O operador linearderivada (ou diferenciação) pode ser aplicado com facili dade a uma série de potências devido àassociatividade da operação de derivação, i.e., a derivada de um somatório é igual aosomatório das derivadas:

( )dy

dx

d

dxa x

d

dxa x na xn

n

n nn

nn

n

n

=

= =

=

=

∞−

=

∑ ∑ ∑0 0

1

1

Observe que o primeiro índice do último somatório vale n = 1 devido à derivação da potênciaxn que reduziu em um termo a série.

Exemplo 13: Seja f(x) = sen x, calcular a derivada da série de Taylor desta função.

( )sen! ! !

( ))!

x xx x x x

nn

n

n

= − + − + = −+

+

=

∑3 5 7 2 1

03 5 7

12 1

Derivando-se os dois lados da equação,

1 Disponíveis em http://www.demar .faenquil .br /programas

Page 31: USP - Cálculo Numérico

Cálculo de Funções por Séries de Potências 2-11

Cálculo Numérico e Computacional C.Y. Shigue

( )d

dxx

d

dxx

x x x d

dx

x

n

x x x x x x

nn

n

(sen )! ! !

( ))!

! ! ! ! ! !

= − + − +

= −

+

= − + − + = − + − +

+

=

∑3 5 7 2 1

0

2 4 6 2 4 6

3 5 71

2 1

13

3

5

5

7

71

2 4 6

� �

Mas, sabemos que

( )cos! ! !

( ))!

xx x x x

nn

n

n

= − + − + = −=

∑12 4 6

12

2 4 6 2

0

de modo que d

dxx x(sen ) cos= , verificado pela identidade entre as séries de potências acima.

Exemplo 14: Seja f(x) = ln x, calcular a derivada da série de Taylor desta função expandidaem torno de x0 = 1.

ln ( )( ) ( ) ( )

( )( )

x xx x x x

nn

n

n

= − −−

+−

−−

+ = −−−

=

∑11

2

1

3

1

41

12 3 41

1

Derivando esta série, resulta:

d

dxx

x

d

dxx

x x x

x x x x xn n

n

n n

n

(ln ) ( )( ) ( ) ( )

( ) ( ) ( ) ( ) ( ) ( ) ( )

≡ = − −−

+−

−−

+

= − − + − − − + = − − = − −− −

=

=

∑ ∑

11

1

2

1

3

1

4

1 1 1 1 1 1 1 1

2 3 4

2 3 1 1

1 0

Observe a troca do índice do somatório de n = n - 1 para n = n na última expressão acima, demodo que o primeiro índice desse somatório começa em n = 0.

Integração de Séries de Potências

A integração de uma função em série de potências pode ser feita termo a termo:

f x dx a x dx a x dxa x

n

a x

nnn

nn

n

n

nn

n

nn

n

( )∫ ∑∫ ∫∑ ∑ ∑=

= =

+=

=

=

∞ +

=

=

0 0

1

0 11

Observe que, de forma análoga à diferenciação, o primeiro índice do último somatório valen = 1 devido à adição de mais um termo à série de potência xn.

Page 32: USP - Cálculo Numérico

Cálculo de Funções por Séries de Potências 2-12

Cálculo Numérico e Computacional C.Y. Shigue

Exemplo 15: Calcular cos .x dx∫ por Séries de Potências.

A série de potências de cos x é expressa como:

cos! ! !

( )( )!

xx x x x

nn

n

n

= − + − + = −=

∑12 4 6

12

2 4 6 2

0

Integrando, obtém-se:

cos .! ! ! ! ! !

( )( )!

x dxx x x

dx xx x x x

nn

n

n∫ ∫ ∑= − + − +

= − + − + = −

+

+

=

12 4 6 3 5 7

12 1

2 4 6 3 5 7 2 1

0

que é exatamente a série de potências da função sen x.

Exemplo 16: A integral senx

xdx⋅∫ é bastante utili zada no Eletromagnetismo. Entretanto, o

integrando sen x/x não possui primitiva, de modo que a sua solução é obtida através daexpansão em séries de potências. Vamos mostrar neste exemplo como é relativamente simplesobter a expressão em séries de potências dessa integral.Consideremos, inicialmente, a série de Taylor da função sen x:

sen! ! !

( )( )!

x xx x x x

nn

n

n

= − + − + = −+

+

=

∑3 5 7 2 1

03 5 7

12 1

Dividimos termo a termo ambos os lados da equação por x:

sen

! ! !( )

( )!

x

x

x x x x

nn

n

n

= − + − + = −+

=

∑13 5 7

12 1

2 4 6 2

0

Agora, integramos a equação e obtemos:

sen

! ! ! ! !5 !

( )

( )!( )

x

xdx

x x xdx x

x x x x

n n

n n

n

⋅ = − + − +

= − + − + =

−+ +∫ ∫ ∑

+

=

13 5 7 3 3 5 7 7

1

2 1 2 1

2 4 6 3 5 7 2 1

0

� �

Exemplo 17: Calcular senx

xdx⋅∫

0

1

com cinco casas decimais de precisão.

Page 33: USP - Cálculo Numérico

Cálculo de Funções por Séries de Potências 2-13

Cálculo Numérico e Computacional C.Y. Shigue

sen

! !5 ! ! !5 !

x

xdx x

x x x⋅ = − + − + = − + − +∫

0

1 3 5 7

3 3 5 7 71

1

3 3

1

5

1

7 70

1� �

≅ − + − =1 0 055556 0 001667 0 000028 0 946083, , , ,

Algumas Séries de MacLaur in (x0 = 0)

Fórmula geral da série de MacLaurin, que é um caso particular da série de Taylor quandox0 = 0:

f x f f xf

xf

xf

nx

nn

n

( ) ( ) ( )( )

!

( )

!

( )

!

( )

= + ′ +′′

+′′′

+ ==

∑0 00

2

0

3

02 3

0

1. Série geométrica

( )1 1 11 2 3 4 5± = + + + <−x x x x x x x� � � �

2. Função seno

sen x = xx x x x

nxn

n

n

− + − + = −+

< ∞+

=

∑3 5 7 2 1

03 5 7

12 1! ! !

( )( )!

3. Função cosseno

cos x = 12 4 6

12

2 4 6 2

0

− + − + = − < ∞=

∑x x x x

nxn

n

n! ! !

( )( )!

4. Função tangente

tg x = ( )

x x x x xB x

nx

n nn

n

n

+ + + + + =−

<−

=

∑1

3

2

15

17

315

62

2835

2 2 1

2 23 5 7 9

2 2 2 1

0

�( )!

π

onde: B BB

n k knn

k

n

0 10

1

1 1 2 0 2= = −−

= ≥=

∑, /( )! !

e para Bn : no de Bernoulli

5. Função exponencial

ex = 12 3 4

2 3 4

0

+ + + + + = < ∞=

∑xx x x x

nx

n

n! ! ! !

6. Função cosseno hiperbólico

cosh x = 12 4 6 2

2 4 6 2

0

+ + + + = < ∞=

∑x x x x

nx

n

n! ! ! ( )!

Page 34: USP - Cálculo Numérico

Cálculo de Funções por Séries de Potências 2-14

Cálculo Numérico e Computacional C.Y. Shigue

7. Função seno hiperbólico

senh x = xx x x x

nx

n

n

+ + + + =+

< ∞+

=

∑3 5 7 2 1

03 5 7 2 1! ! ! ( )!

8. Série binomial

( )a x an

a xn

a xn

a x xn n n n n+ = +

+

+

+ < ∞− − −

1 2 31 2 2 3 3 �

9. Função logaritmo

1

2

1

1 3 5 7 2 11

3 5 7 2 1

0

ln+−

= + + + + =

+<

+

=

∑x

xx

x x x x

nx

n

n

10. Função arco seno

arc sen x = xx x x

x+ ⋅ +⋅⋅

⋅ +⋅ ⋅⋅ ⋅

⋅ + <1

2 3

1 3

2 4 5

1 3 5

2 4 6 71

3 5 7�

11. Função arco cosseno

arc cos x = π2

- arcsen x = π2

1

2 3

1 3

2 4 5

1 3 5

2 4 6 71

3 5 7

− + ⋅ +⋅⋅

⋅ +⋅ ⋅⋅ ⋅

⋅ +

<x

x x xx�

12. Função arco tangente

arc tg x = xx x x x

nxn

n

n

− + − + = −+

<+

=

∑3 5 7 2 1

03 5 7

12 1

1� ( )

13. Função composta esen x

esen x = 12 8 15

2 4 5

+ + − − + < ∞xx x x

x�

14. Função composta ex.cos x

ex.cos x = ( )

13 6

2 43 4 2

0

+ − − + = < ∞=

∑xx x n

nx x

nn

n

/ cos /

!

π

15. Função err o

∞<⋅+π

=

+

⋅+

⋅+

⋅−

π=

π= ∑∫

=

+− x

n1n2

x2

37

x

25

x

13

xx

2due

2xerf

0n

1n2753x

0

u2

!)(!!!)( �

Page 35: USP - Cálculo Numérico

Cálculo de Funções por Séries de Potências 2-15

Cálculo Numérico e Computacional C.Y. Shigue

16. Função sen x / x

Si xu

udu

x x x x x

n nx

x n

n

( )sen

! ! ! ! ( ) ( )!= =

⋅+

⋅+

⋅+

⋅+ =

+ ⋅ +< ∞∫ ∑

+

=

1 1 3 3 5 5 7 7 2 1 2 1

3 5

0

7 2 1

0

Séries de Taylor

Fórmula geral:

( ) ( ) �+−′′′

+−′′

+−′+= 30

020

0000 xx

3

xfxx

2

xfxxxfxfxf

!)(

!)(

))(()()(

( )∑∞

=

−=0n

n0

0n

xxn

xf

!)()(

1. Função logaritmo

ln x = ( )( ) ( ) ( )

( )( )

xx x x x

nxn

n

n

− −−

+−

−−

+ = −−

< ≤−

=

∑11

2

1

3

1

41

10 2

2 3 41

1

2. Função logaritmo

ln x = 0x1x

1x

1n2

12

1x

1x

5

1

1x

1x

3

1

1x

1x2

1n2

0n

53

>

+−

+=

+

+−+

+−+

+−

+∞

=∑�

3. Função hiperbólica

11 1 1 1 1 1 0 22 3

0x

x x x x xn n

n

= − − + − − − + = − − < <=

∑( ) ( ) ( ) ( ) ( )�

Exercícios propostos

1. Expandir as seguintes funções em séries de potência:(a) ex.cos x (b) tg x (c) arc tg x (d) (a + x)3 (e) (1 + x)-2

2. Qual o significado de expansão em séries de potências em torno de um valor x0? A escolhade um valor x0 arbitrário influencia na precisão de cálculo de uma função por séries depotências? Justifique e dê exemplos numéricos para a sua argumentação.

3. Considere a série geométrica xx

n

n=

∑ =−

0

1

1:

(a) Determinar o número de termos necessários para calcular a soma com um erro inferior a10-2, quando x = 0,5; x = 0,9 e x = 0,99.

Page 36: USP - Cálculo Numérico

Cálculo de Funções por Séries de Potências 2-16

Cálculo Numérico e Computacional C.Y. Shigue

(b) Verificar que, para x > 1 ou x < -1, a série diverge. Comprove, calculando a soma para x= 2 empregando 10, 20 e 30 termos e observando que os resultados são diferentes.

(c) Mostrar que, à medida que x se aproxima de 1, o número de termos necessários paracalcular a soma com um erro inferior a um ε fixo tende ao infinito.

4. Mostrar, usando séries de potências, que:

(a) ( )!

− ==

∑ 11 1

0

n

nn e

(b) 1

22

0n

n=

∑ = (c) ( )

ln−

=−

=

∑ 12

1

1

n

nn

(d) 1

2

1

1 3 5 7 2 1

3 5 7 2 1

0

ln+−

= + + + + =

+

+

=

∑x

xx

x x x x

n

n

n

(e) ax a x a x a x a

nx

n

n

= + + + + ==

∑11 2 3

2 3

0

ln

!

( ln )

!

( ln ) ( ln )�

(f) d

dxnx

x�

=1

(g) sen( ) cos( )ax dx ax C= − +∫ , onde C é uma constante

(h) e xxln = (h) cos2x + sen2x = 1 (i) sen 2x = 2 sen x.cos x

(j) sen( ) sen cossen

!

cos

!

sen

!sen( / )x a a x a

x a x a x ax a nn

n

+ = + − − + + = +=

∑2 3 4

02 3 4

2� π

5. Calcule e1 utili zando a série de potências com cinco termos. Calcule o erro a partir do valorexato obtido diretamente da calculadora. Agora, faça e1 = (e0,2)5, calcule o valor de e1

primeiramente calculando o valor de e0,2 por série de potências com cinco termos eposteriormente, elevando o resultado à quinta potência para obter o valor de e1. Determineo erro e compare com o resultado anterior. Repita o mesmo procedimento para calculare1 = (e0,25)4. Qual a razão para as diferenças observadas nos três cálculos? Justifique.Obs.: Utili ze o número de algarismos significativos necessários para mostrar a diferença

entre os três resultados.

6. Desenvolver a função f(x) = e x− 2 2/ em uma série de Taylor, a partir da série de ex e

calcular e dxx−∫ 2 2

0

1

/ com precisão de cinco casas decimais.

7. Faça o gráfico da função f xx

x( )

ln=

− 1 e calcule

ln

,

x

xdx

−∫ 10 1

1

, utili zando séries de potências

com precisão de cinco casas decimais.

Page 37: USP - Cálculo Numérico

Cálculo de Raízes de Funções 3-1

Cálculo Numérico e Computacional C.Y. Shigue

Cálculo de Raízes de Funções

Introdução

O cálculo de raízes de funções encontra uso na obtenção da solução de uma ampla gamade problemas de engenharia. Usualmente, a forma analítica de problemas matemáticos y = f(x)requer o conhecimento dos valores da variável independente x para os quais f(x) = 0.

Por exemplo, considere a função f(x) = ax2 + bx + c, que é um polinômio de 2o grau comcoeficientes a, b, e c e que possui duas raízes. Essas raízes podem ser determinadas pelaconhecida fórmula de Baskhara:

a

acbbx

2

42

1−+−=

e

a

acbbx

2

42

2−−−=

Para uma equação particular f(x) = x2 - 5x + 6, temos que a = 1, b = -5 e c = 6, resultandona solução:

22

15

)1).(2(

)6).(1).(4()5()5(

32

15

)1).(2(

)6).(1).(4()5()5(

2

2

2

1

=−=−−−−−

=

=+=−−+−−

=

x

x

Substituindo-se o valor das raízes na expressão de f(x) = x2 - 5x + 6, veremos que tantox1, quanto x2 fazem com que esta função se anule, ou seja, que f(x1) = 0 e f(x2) = 0.

As equações polinomiais também conduzem a soluções cujo domínio seja o dos númeroscomplexos. Por exemplo, a equação de 2o grau f(x) = x2 - 2x + 2 apresenta as seguintes raízes:

i22

124

2

44

)1).(2(

)2).(1).(4()2()2(x

i22

124

2

44

)1).(2(

)2).(1).(4()2()2(x

2

2

2

1

−=−−=−−=−−−−−

=

+=−+=−+=−−+−−

=

sendo que 1i −= .Na prática, nem sempre um problema pode ser equacionado na forma de uma função que

possui uma solução analítica como a função de 2o grau. As funções transcendentes, porexemplo, não possuem fórmula analítica para o cálculo das raízes. Nesses casos, pode-secalcular as raízes através de dois métodos:

Page 38: USP - Cálculo Numérico

Cálculo de Raízes de Funções 3-2

Cálculo Numérico e Computacional C.Y. Shigue

• Método gráfico• Métodos numéricos

Nesta nota de aula, trataremos apenas dos métodos para o cálculo de raízes reais, emboraos métodos numéricos possam calcular raízes complexas também.

Método Gráfico

As funções transcendentes podem ter raízes reais e complexas. Entretanto, diferentementedas funções polinomiais, não se pode determinar nem se a função possui raiz real e nem a suaquantidade. O método gráfico é o procedimento inicial adotado para estimar as raízes e como adeterminação da raiz com precisão não pode ser feita com este método, deve-se utili zar ummétodo numérico para "refinar" a solução, isto é, melhorar a precisão do valor calculado daraiz.

Vamos mostrar a avaliação da raiz de uma função pelo método gráfico através do exemplode uma função transcendente do tipo: f(x) = ex - 3x, cujo gráfico está mostrado na Fig. 3.1.

-1 0 1 2 3-1

0

1

2

3

4

5

xR2

xR1

f(x)

= e

x - 3

x

x

Fig. 3.1 - Gráfico da função f(x) = ex - 3x.

No gráfico observa-se duas raízes indicadas como xR1 e xR2 e localizadas, respectivamente,nos intervalos [0,5;1] e [1,5;2]. Uma estimativa grosseira das raízes seria xR1 ≅ 0,6 e xR2 ≅ 1,5.O valor com maior precisão será calculado pelos métodos numéricos.

Page 39: USP - Cálculo Numérico

Cálculo de Raízes de Funções 3-3

Cálculo Numérico e Computacional C.Y. Shigue

Método da Bisseção

O método da bisseção é um método conceitualmente simples e baseia-se na idéia de"cercar" a raiz xR por dois valores: um à esquerda da raiz (xE) e outro à direita (xD), formandoum intervalo que vai ser continuamente reduzido até que a largura final do intervalo seja tãopequena quanto o erro absoluto da raiz. A redução contínua da largura do intervalo é feitadividindo-se o intervalo em dois e definindo um valor médio xM.pela fórmula:

2

)( DEM

xxx

+= (3.1)

O valor médio xM estabelece dois sub-intervalos: um, entre xE e xM, outro entre xM e xD. Araiz xR estará em um dos dois sub-intervalos. Para determinar em qual dos dois sub-intervalosestá localizada a raiz, calculamos f(xE), f(xD) e f(xM) e realizamos a seguinte comparação:

Se sinal[f(xM)] = sinal[f(xE)], entãoxR está no intervalo [xE; xM]

senãoxR está no intervalo [xM; xD]

Este procedimento está ilustrado para os dois casos nos gráficos da Fig. 3.2 e 3.3. Na Fig.3.2 estão mostrados os valores [xE, f(xE)] e [xD, f(xD)], respectivamente à esquerda e à direitada raiz xR. Utili zando a equação (3.1) obtém-se o valor xM, que para este caso está localizado àesquerda da raiz. A verificação algébrica deste fato é feita comparando-se o sinal de f(xM), queé positivo assim como é positivo o sinal de f(xE).

O gráfico da Fig. 3.3 ilustra o caso em que o valor calculado de xM está localizado à direitada raiz xR, porque, algebricamente, o sinal de f(xM) é igual ao sinal de f(xD).

f(xM)

f(xD)

f(xE)

x0

y = f(x)

xM

xDx

Rx

E

Fig. 3.2 - Método da bisseção para o caso do valor xM estar localizado à esquerda da raiz xR

Page 40: USP - Cálculo Numérico

Cálculo de Raízes de Funções 3-4

Cálculo Numérico e Computacional C.Y. Shigue

f(xM)

f(xD)

f(xE)

x0

y = f(x)

xM

xD

xRx

E

Fig. 3.3 - Método da bisseção para o caso do valor xM estar localizado à direita da raiz xR

Uma vez determinado em qual dos dois sub-intervalos está localizada a raiz, atribui-se ovalor de xM ao valor de xE ou xD, conforme o resultado do teste algébrico descritoanteriormente e re-escrito na forma:

Se sinal[f(xM)] = sinal[f(xE)], entãoxE ← xM

senãoxD ← xM

Em linguagem C, o código para este teste é descrito por:

if ( signbit(f( xm) == signbit(f( xe))) {xe = xm;

}else {

xd = xm}

Uma vez estabelecido o novo intervalo [xE; xD], repete-se o cálculo do valor de xM eaplica-se novamente o teste para verificação do sub-intervalo em que está localizado a raiz.Atribui-se o valor de xM a xE ou xD , conforme o resultado do teste e redefine-se o novointervalo, conforme ilustra a Fig. 3.4. Os cálculos e testes se repetem até uma determinadavariável alcançar um critério de convergência.

A este procedimento de cálculo automático denomina-se ITERAÇÃO (não confundircom interação, que tem outro significado) ou cálculo iterativo, que se baseia na repetição decálculos à partir de valores iniciais arbitrariamente estabelecidos. Do dicionário Michaelis:i.te.ra.ção sf (lat iteratione) Ato de iterar ou repetir.in.te.ra.ção sf ( inter+ação) 1 > Ação recíproca de dois ou mais corpos uns nos outros. 2 Atualizaçãoda influência recíproca de organismos inter-relacionados. 3 Ação recíproca entre o usuário e umequipamento (computador, televisor etc.).

Page 41: USP - Cálculo Numérico

Cálculo de Raízes de Funções 3-5

Cálculo Numérico e Computacional C.Y. Shigue

xE

(3) xD

(2)x

0

y = f(x)

xD

(1)xRx

E

(1)

Fig. 3.4 - Determinação de intervalos sucessivos em torno da raiz xR pelo método dabisseção. Os expoentes numéricos indicam a seqüência de iteração.

O cálculo iterativo continua até que o seguinte critério de convergência seja satisfeito:

ε<− DE xx (3.2)

no qual ε é o erro absoluto especificado. Quando o critério for satisfeito, a raiz xR será dadapor:

ε±= MR xx (3.3)

Observar que o erro ε estabelece o número de casas decimais de precisão. Assim, sequisermos calcular a raiz de uma função com precisão de sete casas decimais, estabelece-seque ε = 10-7.

ExemploVamos ilustrar a aplicação do método da bisseção no cálculo da raiz da função f(x) = ex - 3xlocalizada no intervalo [0; 1], com erro de 10-5.

SoluçãoA função f(x) = ex - 3x, como visto anteriormente, possui duas raízes, sendo que será

calculada a raiz localizada no intervalo [0; 1]. Assim, esses valores serão os valores iniciais dexE e xD. Como o erro é 10-5, vamos apresentar os resultados do cálculo com cinco casasdecimais na tabela 3.1. A 1a coluna contém o contador do número de iterações, denotado pelaletra i. O conteúdo das outras colunas estão identificadas pelo nome das variáveis na 1a linha.

Page 42: USP - Cálculo Numérico

Cálculo de Raízes de Funções 3-6

Cálculo Numérico e Computacional C.Y. Shigue

Tabela 3.1 - Resultado do cálculo da raiz da função f(x) = ex - 3x no intervalo [0;1] pelométodo da bisseção

i xE xD xM f( xE) f( xD) f( xM) erro

0 0,00000 1,00000 0,50000 1,00000 -0,28172 0,14872 1,000001 0,50000 1,00000 0,75000 0,14872 -0,28172 -0,13300 0,500002 0,50000 0,75000 0,62500 0,14872 -0,13300 -0,00675 0,250003 0,50000 0,62500 0,56250 0,14872 -0,00675 0,06755 0,125004 0,56250 0,62500 0,59375 0,06755 -0,00675 0,02952 0,062505 0,59375 0,62500 0,60938 0,02952 -0,00675 0,01116 0,031256 0,60938 0,62500 0,61719 0,01116 -0,00675 0,00214 0,015637 0,61719 0,62500 0,62109 0,00214 -0,00675 -0,00232 0,007818 0,61719 0,62109 0,61914 0,00214 -0,00232 -0,00009 0,003919 0,61719 0,61914 0,61816 0,00214 -0,00009 0,00103 0,00195

10 0,61816 0,61914 0,61865 0,00103 -0,00009 0,00047 0,0009811 0,61865 0,61914 0,61890 0,00047 -0,00009 0,00019 0,0004912 0,61890 0,61914 0,61902 0,00019 -0,00009 0,00005 0,0002413 0,61902 0,61914 0,61908 0,00005 -0,00009 -0,00002 0,0001214 0,61902 0,61908 0,61905 0,00005 -0,00002 0,00001 0,0000615 0,61905 0,61908 0,61906 0,00001 -0,00002 0,00000 0,0000316 0,61905 0,61906 0,61906 0,00001 0,00000 0,00001 0,0000217 0,61906 0,61906 0,61906 0,00001 0,00000 0,00000 0,0000118 0,61906 0,61906 0,61906 0,00000 0,00000 0,00000 0,00000

A raiz calculada após 18 iterações com ε < 10-5 é igual a 0,61906. Este resultado é exatocom cinco casas decimais. Observar que quando o critério de convergência é atingido, osvalores de xE, xD e xM são iguais com cinco casas decimais.

Método I terativo de Newton-Raphson

O método de Newton-Raphson é um método numérico iterativo para o cálculo de raiz deuma função f(x). A fórmula para o cálculo iterativo pode ser obtida através da aproximação deuma função f(x1) em torno de um ponto x0 por uma série de Taylor de 1o grau:

))(()()( 01001 xxxfxfxf −′+≈ (3.4)

Se considerarmos que o valor de x = x1, está próximo à raiz, então podemos considerarque f(x1) ≅ 0, de modo que podemos escrever a equação na forma:

)(

)(

0

001 xf

xfxx

′−≈ (3.5)

À partir de x1 podemos calcular um novo valor x2 mais próximo ainda da raiz através damesma aproximação anterior:

))(()()( 12112 xxxfxfxf −′+≈ (3.6)

Page 43: USP - Cálculo Numérico

Cálculo de Raízes de Funções 3-7

Cálculo Numérico e Computacional C.Y. Shigue

Neste caso, vamos considerar que f(x2) ≅ 0 e que f(x1) é pequeno porém diferente de zero.Assim, podemos re-escrever a equação como:

)(

)(

1

112 xf

xfxx

′−≈ (3.7)

Se prosseguirmos, podemos escrever uma equação geral para o cálculo de x na iteraçãoi+1 à partir do valor de x, f(x) e f’ (x) em x = x0:

)(

)(1

i

iii xf

xfxx

′−=+ (3.8)

Este cálculo, denominado de cálculo iterativo, é realizado até que o critério deconvergência seja satisfeito:

ε≤−+ ii xx 1 (3.9)

ExemploVamos calcular novamente a raiz da função f(x) = ex - 3x localizada próxima ao valor

x = 0 pelo método iterativo de Newton-Raphson. A Tabela 3.2 apresenta os valorescalculados.

Tabela 3.2 - Resultado do cálculo da raiz localizada próxima a x = 0 da função f(x) = ex - 3xpelo método iterativo de Newton-Raphson

i x i f( x i ) f'( x i ) x i+1 erro

0 0,00000 1,00000 -2,00000 0,50000 0,500001 0,50000 0,14872 -1,35128 0,61006 0,110062 0,61006 0,01036 -1,15946 0,61900 0,008943 0,61900 0,00007 -1,14294 0,61906 0,000064 0,61906 0,00000 -1,14282 0,61906 0,00000

A raiz calculada após 4 iterações é igual a 0,61906 com erro menor do que 10-5.Comparando-se este resultado com o obtido pelo método da bisseção, observa-se que a

convergência do método da bisseção foi muito mais lenta do que a do método de Newton-Raphson. Isto deve-se ao fato que o método da bisseção apresenta erro proporcional aointervalo |xE – xD|, isto é, de primeira ordem na variável x, ao passo que o método de Newton-Raphson apresenta erro de segunda ordem sobre a variável x.

Dificuldades no Cálculo de Raízes pelo Método de Newton-Raphson

O método de Newton-Raphson apresenta dificuldades no cálculo de raízes de funçõespolinomiais que apresentam pontos de mínimos e/ou máximos na vizinhança da raiz, comomostrado na Fig. 3.5.

Page 44: USP - Cálculo Numérico

Cálculo de Raízes de Funções 3-8

Cálculo Numérico e Computacional C.Y. Shigue

-2,0 -1,5 -1,0 -0,5 0,0 0,5 1,0 1,5 2,0-10

-5

0

5

10f(x) = 3x

3 - x

2 - 4x + 5

y

x

Fig. 3.5 - Gráfico da função f(x) = 3x3 – x2 – 4x + 5 exibindo pontos de máximo e mínimolocais na proximidade da raiz.

No exemplo, a função f(x) = 3x3 – x2 – 4x + 5 é uma função polinomial de 3o grau quepossui apenas uma raiz real ( x = -1) e duas raízes complexas. O gráfico cartesiano x-y mostrasomente a raiz real e mostra também que a função possui um ponto de máximo local emx ≅ -0,57 e um ponto de mínimo local em x ≅ 0,79. Para exemplificar o problema daconvergência do método de Newton-Raphson, vamos calcular a raiz real empregando ométodo de Newton-Raphson com x0 = 5.

Tabela 3.3 - Resultado do cálculo da raiz da função polinomial cúbica pelo método deNewton-Raphson.

i x i f( x i ) f'( x i ) x i+1 erro0 5,00000 335,00000 211,00000 3,41232 1,587681 3,41232 98,90543 93,97085 2,35981 1,052512 2,35981 29,41532 41,39873 1,64927 0,710543 1,64927 9,14139 17,18238 1,11725 0,532024 1,11725 3,46658 4,99978 0,42391 0,693355 0,42391 3,35320 -3,23055 1,46187 1,037976 1,46187 6,38783 12,30993 0,94296 0,518927 0,94296 2,85435 2,11659 -0,40560 1,348568 -0,40560 6,25771 -1,70821 3,25771 3,663319 3,25771 85,07572 84,99877 2,25681 1,00091

10 2,25681 25,36255 37,32498 1,57730 0,6795111 1,57730 7,97532 15,23630 1,05386 0,5234412 1,05386 3,18525 3,88786 0,23458 0,81928

Page 45: USP - Cálculo Numérico

Cálculo de Raízes de Funções 3-9

Cálculo Numérico e Computacional C.Y. Shigue

13 0,23458 4,04539 -3,97392 1,25256 1,0179914 1,25256 4,31632 7,61508 0,68575 0,5668115 0,68575 2,75417 -1,13922 3,10335 2,4176016 3,10335 72,61888 76,47034 2,15372 0,9496317 2,15372 21,71661 33,43898 1,50428 0,6494418 1,50428 6,93188 13,35705 0,98531 0,5189719 0,98531 2,95764 2,76687 -0,08364 1,0689520 -0,08364 5,32582 -3,76975 1,32913 1,4127821 1,32913 4,96100 9,24111 0,79229 0,5368422 0,79229 2,69513 0,06498 -40,68675 41,4790423 -40,68675 -203547,62007 14976,07806 -27,09523 13,5915224 -27,09523 -60296,80000 6657,55526 -18,03833 9,0569025 -18,03833 -17856,25044 2960,51034 -12,00686 6,0314826 -12,00686 -5284,02970 1317,49538 -7,99619 4,0106627 -7,99619 -1560,76358 587,44457 -5,33933 2,6568728 -5,33933 -458,79785 263,25419 -3,59653 1,7427929 -3,59653 -133,11269 119,60839 -2,48363 1,1129030 -2,48363 -37,19392 56,48287 -1,82513 0,6585031 -1,82513 -9,26958 29,63008 -1,51228 0,3128432 -1,51228 -1,61366 19,60760 -1,42999 0,0823033 -1,42999 -0,09728 17,26372 -1,42435 0,0056434 -1,42435 -0,00044 17,10769 -1,42433 0,0000335 -1,42433 0,00000 17,10698 -1,42433 0,00000

Por causa da presença de pontos de mínimo e máximo na vizinhança da raiz observa-seque o método de Newton-Raphson apresenta uma convergência lenta, principalmente quandoo valor calculado de xi+1 cai na região compreendida pelos pontos de mínimo e máximo(iteração 22) para a qual f’ (x) ≈ 0.

Método da Secante

Apesar da convergência do método de Newton-Raphson ser rápida, ele apresenta umadificuldade prática na implementação de um algoritmo para o cálculo de raízes de uma funçãogenérica pelo fato de requerer o cálculo algébrico da derivada da função f(x). Este problemapode ser contornado através da aproximação da derivada exata (que requer um procedimentoalgébrico) pela diferença finita da função f(x), que é um procedimento numérico. Este métodorecebe o nome de método da secante, mas também é conhecido, com algumas variações, como nome de método da falsa posição ou método regula falsi.

O procedimento para dedução do método da secante pode ser explicado através dográfico da Fig. 3.6. Nele vamos definir dois valores de x localizados à esquerda (xE) e à direita(xD) da raiz xR, tal como no método da bisseção. No entanto, diferentemente deste, o valor queirá dividir o intervalo |xE – xD| em dois é estabelecido através de um cálculo que utili za a umareta secante (ou corda) que une os valores de f(xE) e f(xD).

Page 46: USP - Cálculo Numérico

Cálculo de Raízes de Funções 3-10

Cálculo Numérico e Computacional C.Y. Shigue

x x xE N D

xE

f( )

f( )xD

x

yy = f(x)

xR

Reta secante

Fig. 3.6 – Gráfico esquemático para dedução do método da secante.

Por identidade entre os dois triângulos da figura, podemos escrever:

ED

EN

D

E

xx

xx

)x(f

)x(f

−−=−

(3.10)

Rearranjando a expressão e isolando o termo para xN, obtém-se a equação:

)x(f)x(f

)x(fx)x(fxx

ED

EDDEN −

⋅−⋅= (3.11)

Escrevendo-a na forma mais conveniente como:

)x(f)x(f

)x(f)xx(xx

)i(E

)i(D

)i(E

)i(E

)i(D)i(

E)i(

N −

⋅−−= (3.12)

obtém-se uma expressão equivalente à expressão (3.8) do método de Newton-Raphson, naqual a derivada da função f(x) do denominador é substituída pela diferença finita

[ f(xD)-f(xE)] /(xD-xE)

na fórmula do método da secante. O critério de convergência é semelhante ao do método deNewton-Raphson (equação 3.9), porém aplicado sobre os valores de xN.

Page 47: USP - Cálculo Numérico

Cálculo de Raízes de Funções 3-11

Cálculo Numérico e Computacional C.Y. Shigue

ExemploO cálculo da raiz da função f(x) = ex – 3x é apresentado na tabela seguinte empregando ométodo da secante.

Tabela 3.4 - Resultado do cálculo da raiz da função f(x) = ex – 3x pelo método da secante.

i xE xD f( xE) f( xD) xN erro

0 0,00000 1,00000 1,00000 -0,28172 0,78020 1 0,00000 0,78020 1,00000 -0,15869 0,67335 0,106862 0,00000 0,67335 1,00000 -0,05925 0,63568 0,037673 0,00000 0,63568 1,00000 -0,01874 0,62399 0,011694 0,00000 0,62399 1,00000 -0,00561 0,62051 0,003485 0,00000 0,62051 1,00000 -0,00165 0,61949 0,001026 0,00000 0,61949 1,00000 -0,00048 0,61919 0,000307 0,00000 0,61919 1,00000 -0,00014 0,61910 0,000098 0,00000 0,61910 1,00000 -0,00004 0,61907 0,000039 0,00000 0,61907 1,00000 -0,00001 0,61906 0,00001

10 0,00000 0,61906 1,00000 0,00000 0,61906 0,00000

Observa-se que após 10 iterações o método convergiu para a raiz 0,61906 com ε < 10-5. Aconvergência deste método é semelhante à do método de Newton-Raphson, porém, com asimplicidade conceitual do método da bisseção.

Exercícios propostos

1. Para cada uma das equações abaixo, encontre pelo menos uma das raízes para que f(x) = 0,empregando o método da bisseção e o método de Newton-Raphson:(a) ex/2 - x2 = y (b) x2 - 5x + 6 = 0 (c) ln x - x + 2(d) x2 - senh x (e) x4 – 14x2 + 24x - 10

2. Um outro método para encontrar as raízes de f(x) = 0 é o chamado método iterativo linear,no qual a raiz é calculada re-escrevendo a função f(x) = g(x) - x, de maneira que o problemaagora é encontrar o valor de x tal que g(x) = x por iteração. Encontre a função g(x) eresolva o problema do cálculo da raiz de x localizada no intervalo [0; 0,5] da funçãof(x) = ex – 3x empregando o método iterativo linear.

3. Escreva uma equação de iteração pelo método de Newton-Raphson para o cálculo da raizquadrada e raiz cúbica de um número real x. Faça x = 2 e aplique a equação de iteraçãoobtida para calcular a sua raiz quadrada e a sua raiz cúbica.

4. Duas escadas, uma de 20 m e outra de 30 m, apoiam-se em edifícios frontais a uma avenida,

conforme ilustrado na Fig. P1. Se o ponto no qual as escadas se cruzam está a 8 m de alturado solo, determinar a largura da avenida.Gruenberger e Jeffrey, em Problems for Computer Solution (New York: Wiley, 1964),mostram que este problema pode ser formulado para pedir a solução da seguinte equação:

y y y y4 3 216 500 8000 32000 0− + − + =.

Page 48: USP - Cálculo Numérico

Cálculo de Raízes de Funções 3-12

Cálculo Numérico e Computacional C.Y. Shigue

para o qual x y= −400 2 .

30

20

8

y

x

Fig. P1

5. Analisando-se o comportamento de compressores de ar a pistão, frequentemente énecessário obter-se gráficos de pressão versus rotação angular da árvore de manivelas docompressor durante o tempo de compressão. Esses dados podem ser aproximadosanaliticamente primeiro definindo-se um modelo para o compressor e, em seguida,aplicando-se fundamentos de mecanismos e termodinâmica ao modelo. Os componentesbásicos do compressor a pistão são mostrados na Fig. P2, juntamente com os parâmetrosgeométricos usados na determinação do volume limitado entre o pistão e o cili ndro. Pelaaplicação dos fundamentos de mecanismos, este volume pode ser expresso como:

V VD

rr

c= + − + − −

πθ θ

2 2

41 1 1( cos ) sen

�� (P5.1)

no qual: Vc - volume morto no ponto morto altor - raio da árvore de manivelasD - diâmetro do cili ndro� - comprimento da biela

θ - ângulo de rotação da árvore de manivelas a partir do ponto morto alto

Consideremos que o tempo de compressão ao se mover o pistão a partir do ponto mortobaixo (θ = 180o) até o ponto morto alto (θ = 360o). Um modelo freqüentemente usado paraeste processo supõe que as válvulas de admissão e escape conservam-se fechadas e que nãohá transferência de calor de ou para o ar durante o tempo de compressão. A aplicação datermodinâmica a este modelo fornece as seguintes relações entre pressão, volume etemperatura:

Page 49: USP - Cálculo Numérico

Cálculo de Raízes de Funções 3-13

Cálculo Numérico e Computacional C.Y. Shigue

A nT

TB T T C T T D n

V

Vii i

i

� �

+ − + − +

=( ) ( )

1

202 2 (P5.2)

p pV

V

T

Tii i=

(P5.3)

nas quais: p - pressãoV - volumeT - temperatura absolutaA = 0,15787B = 0,51001.10-4

C = 0,74171.10-8

D = 0,6855e o índice i denota a condição inicial no início do tempo de compressão, que se supõeconhecido. As equações (P5.1), (P5.2) e (P5.3) podem ser usadas para determinarp versus θ. O procedimento para obter esses valores é selecionar um valor de θ entre 180o e360o em (P5.1). O valor resultante para V pode ser usado em (P5.2), que pode ser resolvidopelo método de Newton-Raphson para se obter T. Os valores de T e V são, então, usadosem (P5.3) para determinar o valor de p correspondente. Calcular uma tabela de θ versus p,V e T, para θ entre 180o e 360o com incremento de 10o. Com estes resultados, traçar ográfico de p em função de θ. Considere para o problema que, para pi = 14,7 psi, Ti = 530oR,θ = 240o, Vc = 6,3 ft3, r = 2,0 in, D = 3,5 in e

� = 7,0 in, os resultados aproximados

poderiam ser p = 18,7 psi, V = 37,3 ft3 e T = 568oR.

r

θ

Válvulas de admissãoe escape

Cilindro

Pistão

Biela

Virabrequim

Ponto morto alto(extremidade do pistão

quando = 0 )

Ponto morto baixo(extremidade do pistão

quando = 180 )

θ

θ o

od

Fig. P2

Page 50: USP - Cálculo Numérico

Cálculo de Raízes de Funções 3-14

Cálculo Numérico e Computacional C.Y. Shigue

6. Deseja-se determinar o efeito da pressão sobre a temperatura do ponto de condensação doproduto da combustão completa de hidrocarbonetos parafínicos com ar teórico. Atemperatura de condensação, também chamada de ponto de orvalho, é definida como atemperatura na qual o vapor d’água começa a condensar-se à medida que o produto dacombustão seja resfriado à pressão constante. Quando é alcançado o ponto de orvalho, apressão parcial do vapor d’água no produto da combustão vai igualar a pressão do vapor deágua pura na temperatura de condensação e esta relação pode ser usada para determinar oponto de orvalho. Um hidrocarboneto parafínico tem fórmula química CnH2n+2 e a equação para combustãocompleta com ar teórico pode ser expressa como:

C H n O n N nCO n H O n Nn n2 2 2 2 2 2 22 1 2 179

211 2 1

79

21+ + + + + → + + + +( ) ( ) ( ) ( ) (P6.1)

da qual a fração molar do vapor d’água nos produtos é calculada por:

xn

n n n

n

nH O2

1

1 2 1 79 21

1

9 52 4=

++ + + +

=++( ) ( ) ( / ) , ,76

(P6.2)

A pressão parcial do vapor d’água no produto da combustão é igual ao produto da fraçãomolar do vapor d’água pela pressão do produto da combustão. Assim,

p x pn p

nH O H O2 2

1

9 52 4= ⋅ =

++

( )

, ,76(P6.3)

A relação entre a pressão do vapor de água pura e a temperatura é dada por:

� npx

T

a bx cx

dxv = −+ +

+

8 2

1

3

,07284 ,3026 (P6.4)

no qual: pv - pressão de vapor (psi)

T - temperatura absoluta (oR) x = 1165,09 - T a = 3,2437814 b = 3,2601444.10-3

c = 2,0065808.10-9

d = 1,2154701.10-3

Como a pressão parcial e a pressão do vapor d’água devem ser iguais no ponto decondensação, (P6.2), (P6.3) e (P6.4) podem ser combinados para se obter:

� nn p

m

x

T

a bx cx

dx

( )

, ,76,07284 ,3026

++

= −+ +

+

1

9 52 48 2

1

3

(P6.5)

Page 51: USP - Cálculo Numérico

Cálculo de Raízes de Funções 3-15

Cálculo Numérico e Computacional C.Y. Shigue

que pode ser solucionado em T para valores dados de p e n. Como (P6.5) é uma equaçãonão-linear, um método numérico como o Newton-Raphson deve ser usado. Com esteobjetivo, é conveniente reescrever (P6.5) como:

f Tx

T

a bx cx

dxn

n p

m( ) ,

( )

, ,,=

+ ++

++

− =2 30261

1

9 52 4 768 07284 0

3 �

(P6.6)

Para usar o método de Newton-Raphson é necessário diferenciar-se (P6.6) com relação a T,para se obter:

df

dT

a bx cx

dx

xd

T dx T

x b cx

T dx=

+ ++

⋅+

−++

2 3026

1 1

116509 3

1

3

2

2

,( )

, ( )

( )(P6.7)

Para o etano (n = 2) sob 1 atm (p = 14,7 psi), o resultado é T = 582,97oR = 323,87 K.Verificar este resultado e calcular o ponto de orvalho para o produto da combustão dometano (n = 1), do propano (n = 3), do butano (n = 4) e do pentano (n = 5).

7. O pH de soluções diluídas de ácidos fracos pode ser calculado pela fórmula:

[ ] [ ] ( )[ ]H K H K C K H K Ka a a w w a+ + ++ − + − =3 2 0 (P7.1)

na qual:pH = - log [H+]Ka - constante de dissociação do ácidoCa - concentração molar do ácidoKw - produto iônico da água

Calcular o pH de uma solução de ácido bórico a 24oC sabendo-se que:

Ka = 6,5.10-10 (moles/l)2,Ca = 1,0.10-5 moles/l

Kw = 1,0.10-14 (moles/l)2

Page 52: USP - Cálculo Numérico

Sistemas de Equações Lineares 4 - 1

Cálculo Numérico e Computacional C.Y. Shigue

Sistemas de Equações L ineares

Definição

Um sistema de equações lineares pode ser definido como um conjunto de n equaçõescom n variáveis independentes entre si, na forma genérica, como:

a11

x1 + a

12x

2 + a

13x

3 + ... + a

1nx

n = b

1

a21

x1 + a

22x

2 + a

23x

3 + ... + a

2nx

n = b

2

a31

x1 + a

32x

2 + a

33x

3 + ... + a3n

xn = b

3 (1)� � � � � �

an1

x1 + a

n2x

2 + a

n3x

3 + ... + a

nnx

n = b

n

na qual aij (i, j = 1, 2, 3, ..., n) são os coeficientes do sistema de equações, xi (i = 1, 2, 3, ..., n)são as n incógnitas e bi (i = 1, 2, 3, ..., n) os termos independentes.

Formulação Matr icial

As equações representadas em (1) podem ser descritas na forma matricial como:

[A][x] = [b] (2)

para o qual:

=

nn3n2n1n

n3333231

n2232221

n1131211

aaaa

aaaa

aaaa

aaaa

]A[

��������

,

=

n

3

2

1

x

x

x

x

]x[ � ,

=

n

3

2

1

b

b

b

b

]b[ � (3)

Nesta representação, a solução direta pode ser obtida fazendo-se:

[x] = [A] -1[b] (4)

para a qual emprega-se os métodos de inversão de matrizes utili zados em cursos de ÁlgebraLinear. O cálculo da matriz inversa pode ser feito através da propriedade da matriz identidade:

[I ] = [A] -1[A] (5)

Se os coeficientes da matriz inversa [A] -1 são as incógnitas do problema, então ocálculo desses coeficientes resume-se a encontrar a solução do seguinte sistema de equações:

Page 53: USP - Cálculo Numérico

Sistemas de Equações Lineares 4 - 2

Cálculo Numérico e Computacional C.Y. Shigue

]I[

100

010

001

aaa

aaa

aaa

xxx

xxx

xxx

]A[]A[

nn2n1n

n22221

n11211

nn2n1n

n22221

n11211

1 =

=

=−

����

����

����

(6)

Assim, o problema do cálculo de sistemas de equações lineares através do produto damatriz inversa resulta num problema de cálculo de sistemas de equações lineares. À seguir,apresentaremos um método direto para a solução de sistemas de equações lineares denominadométodo de eliminação gaussiana e outro método, iterativo, chamado método de Gauss-Seidel.Além desses métodos, inúmeros outros apropriados para cada tipo de sistema de equaçõeslineares existem, mas que não trataremos neste texto.

Método da Eliminação Gaussiana

Considere o sistema de equações representado matricialmente por [A][x] = [b]. OMétodo da Eliminação de Gauss consiste basicamente em transformar a matriz de A numsistema triangular equivalente, através da aplicação repetida de dois tipos de operações:1. Permutação entre duas linhas;2. Subtração de uma linha por outra multiplicada por uma constante.

Essas operações produzem sistemas equivalentes aos originais; enquanto a operação 2não altera o determinante da matriz de coeficientes, a operação 1 apenas inverte o seu sinal.

A análise de propagação de erros de arredondamento indica a conveniência de todos osmultiplicadores serem menores do que 1 em valor absoluto. A esse procedimento dá-se o nomede pivoteamento.

Descrição do algoritmo com pivoteamento

Vamos considerar um sistema constituído de quatro equações e quatro incógnitas:

a11

x1 + a

12x

2 + a

13x

3 + a

14x

4 = b

1

a21

x1 + a

22x

2 + a

23x

3 + a

24x

4 = b

2

a31

x1 + a32

x2 + a

33x

3 + a

34x

4 = b

3

a41

x1 + a

42x

2 + a

43x

3 + a

44x

4 = b

4

Seja [A] a matriz de coeficientes, [A]+ a matriz aumentada pelos termos independentese o sistema na forma matricial descrito por [A][x] = [b], no qual:

Page 54: USP - Cálculo Numérico

Sistemas de Equações Lineares 4 - 3

Cálculo Numérico e Computacional C.Y. Shigue

[A] =

a a a a

a a a a

a a a a

a a a a

11 12 13 14

21 22 23 24

31 32 33 34

41 42 43 44

, [x] =

x

x

x

x

1

2

3

4

, [b] =

b

b

b

b

1

2

3

4

[A]+ =

a a a a b

a a a a b

a a a a b

a a a a b

11 12 13 14

21 22 23 24 2

31 32 33 34 3

41 42 43 44 4

1

(7)

Os seguintes passos descrevem o procedimento para a triangularização da matriz [A]:1o Passo:Calcular p1 = máx{|a11|, |a21|, |a31|, |a41|}. Certamente p1 ≠ 0, pois caso contrário |A| = 0 e o

sistema não teria solução única. Caso p1 ≠ |a11|, permutar a 1a linha pela linha que contém p1.

2o Passo:Definir um multiplicador para cada linha:

ma

am

a

am

a

a221

113

31

114

41

11= = =, , (8)

3o Passo:Subtrair o produto do multiplicador pela 1a linha da 2a, da 3a e da 4a linha:• 2a Linha

′ = − = − =a a m a aa

aa21 21 2 11 21

21

1111 0 (9)

′ = −a a m a22 22 2 12 (10)

′ = −a a m a23 23 2 13 (11)

′ = −a a m a24 24 2 14 (12)

′ = −b b m b2 2 2 1 (13)

• 3a Linha:

′ = − = − =a a m a aa

aa31 31 3 11 31

31

1111 0 (14)

′ = −a a m a32 32 3 12 (15)

′ = −a a m a33 33 3 13 (16)

′ = −a a m a34 34 3 14 (17)

Page 55: USP - Cálculo Numérico

Sistemas de Equações Lineares 4 - 4

Cálculo Numérico e Computacional C.Y. Shigue

′ = −b b m b3 3 3 1 (18)

• 4a Linha:

′ = − = − =a a m a aa

aa41 41 4 11 41

41

1111 0 (19)

′ = −a a m a42 42 4 12 (20)

′ = −a a m a43 43 4 13 (21)

′ = −a a m a44 44 4 14 (22)

′ = −b b m b4 4 4 1 (23)

Após estes passos, a matriz aumentada fica da seguinte foma:

[A]+ =

a a a a b

a a a b

a a a b

a a a b

11 12 13 14

22 23 24 2

32 33 34 3

42 43 44 4

1

0

0

0

′ ′ ′ ′′ ′ ′ ′′ ′ ′ ′

Repetindo os passos de 1 a 3 para a coluna 2:

1o Passo:Calcular p2 = máx{ }′ ′ ′a a a22 32 42, , . Novamente p2 ≠ 0, senão |A| = 0. Caso p2 ≠ |a21|, permutar

a 2a linha pela linha que contém p2.

2o Passo:Definir um multiplicador para cada linha:

′ = ′′

′ = ′′

ma

am

a

a332

224

42

22, (24)

3o Passo:Subtrair o produto do multiplicador pela 2a linha da 3a e da 4a linha:• 3a Linha:

′′ = ′ − ′ ′ = ′ − ′′

′ =a a m a aa

aa32 32 3 22 32

32

2222 0 (25)

′′ = ′ − ′ ′a a m a33 33 3 23 (26)

′′ = ′ − ′ ′a a m a34 34 3 24 (27)

′′ = ′ − ′ ′b b m b3 3 3 2 (28)

Page 56: USP - Cálculo Numérico

Sistemas de Equações Lineares 4 - 5

Cálculo Numérico e Computacional C.Y. Shigue

• 4a Linha:

′′ = ′ − ′ ′ = ′ − ′′

′ =a a m a aa

aa42 42 4 22 42

42

2222 0 (29)

′′ = ′ − ′ ′a a m a43 43 4 23 (30)

′′ = ′ − ′ ′a a m a44 44 4 24 (31)

′′ = ′ − ′ ′b b m b4 4 4 2 (32)

A matriz aumentada agora tem a forma:

[A]+ =

a a a a b

a a a b

a a b

a a b

11 12 13 14

22 23 24 2

33 34 3

43 44 4

1

0

0 0

0 0

′ ′ ′ ′′′ ′′ ′′′′ ′′ ′′

(33)

Repetindo os passos 1 a 3 para as duas últimas linhas:

1o Passo:Calcular p3 = máx{ }′′ ′′a a33 43, . Novamente p3 ≠ 0, senão |A| = 0. Caso p3 ≠ |a31|, permutar a 3a

linha pela 4a linha.

2o Passo:Definir um multiplicador para a 4a linha:

′′ = ′′′′

ma

a443

33(34)

3o Passo:Subtrair o produto do multiplicador pela 3a linha da 4a linha:• 4a Linha:

′′′ = ′′ − ′′ ′′ = ′′ − ′′′′

′′ =a a m a aa

aa43 43 4 33 43

43

3333 0 (35)

′′′ = ′′ − ′′ ′′a a m a44 44 4 34 (36)

′′′ = ′′ − ′′ ′′b b m b4 4 4 3 (37)

A matriz aumentada toma a forma final:

[A]+ =

a a a a b

a a a b

a a b

a b

11 12 13 14

22 23 24 2

33 34 3

44 4

1

0

0 0

0 0 0

′ ′ ′ ′′′ ′′ ′′

′′′ ′′′

(38)

Page 57: USP - Cálculo Numérico

Sistemas de Equações Lineares 4 - 6

Cálculo Numérico e Computacional C.Y. Shigue

Re-escrevendo a matriz [A]+ triangularizada sem as linhas nos expoentes doscoeficientes aij e bj de modo a tornar mais clara as equações:

[A]+ =

a a a a b

a a a b

a a b

a b

11 12 13 14

22 23 24 2

33 34 3

44 4

1

0

0 0

0 0 0

(39)

observando que os coeficientes aij e bj da matriz triangularizada acima não são os mesmos

coeficientes da matriz [A]+ original.Resolvemos o sistema por recorrência através da fórmula:

x

b a x

aii

i ij

j i

j

ii=

== +∑

1

4

4 321, , , , (40)

O determinante da matriz de coeficientes [A] é calculado a partir do produto doscoeficientes aii da diagonal principal:

|A| = a a a a aiii

==

∏ 11 22 33 441

4

(41)

Exemplo:Seja o sistema de três equações e três incógnitas:

2x 1 + 3x 2 – x 3 = 0

-x 1 + x 2 + 4x 3 = 3

x1 – 8x 2 - x 3 = 1

cuja matriz aumentada [A]+ é descrita como:

[A]+ =

−−−

1181

3411

0132

Utili zando o programa de cálculo de eliminação gaussiana em precisão simples (comarredondamento de sete casas decimais), cuja listagem aparece adiante neste texto, obtém-se amatriz triangularizada:

Page 58: USP - Cálculo Numérico

Sistemas de Equações Lineares 4 - 7

Cálculo Numérico e Computacional C.Y. Shigue

[ ]

−−−−

=36842113000000100

50590

132

,,

,,A

cujo determinante vale |A| = -64,0000009. A solução do sistema calculada pelo mesmoprograma resulta:

[ ]

−=

9687500

1562500

7187500

,

,

,

x

Observar que a solução do problema é exata, exceto pelo valor do determinante damatriz [A], cuja solução é exatamente 64. O algarismo 9 na sétima casa decimal é resultado doerro de arredondamento pelo cálculo das variáveis reais com precisão simples. Neste problemasimples o erro de arredondamento não afetou o vetor solução [x] do sistema, porém emproblemas que envolvam um número maior de equações ou em problemas cujos coeficientesda matriz [A] já possuam erro de arredondamento na sua formulação, acarretam em severoerro de arredondamento, inviabili zando a utili zação do método de cálculo direto de eliminaçãogaussiana. Nestes tipos de problema, um método iterativo, como o método de Gauss-Seidelapresentado a seguir, é mais aconselhável.

Listagens dos programas de eliminação gaussiana com pivoteamento

FORTRAN

PROGRAM ELIMINA PARAMETER (NMAX = 50) REAL A(NMAX,NMAX+1), X(NMAX+1) WRITE(*,10) 10 FORMAT(1X,'NUMERO DE EQUACOES : ') READ(*,*) NN DO 500 I = 1, NN DO 510 J = 1, NN+1 WRITE(*,50) I, J READ(*,*) A(I,J) 510 CONTINUE 500 CONTINUE LAST = NN - 1 DO 520 I = 1, LAST BIG = 0.0 DO 530 K = I, NN TERM = ABS(A(K,I)) IF ((TERM - BIG) .GT. 0.0) THEN BIG = TERM L = K END IF 530 CONTINUE IF (BIG. EQ. 0.0) THEN WRITE(*,*) 'MATRIZ SINGULAR' STOP END IF IF (I .NE. L) THEN DO 540 J = 1, NN+1

Page 59: USP - Cálculo Numérico

Sistemas de Equações Lineares 4 - 8

Cálculo Numérico e Computacional C.Y. Shigue

TEMP = A(I,J) A(I,J) = A(L,J) A(L,J) = TEMP 540 CONTINUE END IF PIVOT = A(I,I) NEXTR = I + 1 DO 550 J = NEXTR, NN CONST = A(J,I) / PIVOT DO 560 K = I, NN+1 A(J,K) = A(J,K) - CONST*A(I,K) 560 CONTINUE 550 CONTINUE 520 CONTINUE DO 570 I = 1, NN IREV = NN + 1 - I Y = A(IREV,NN+1) IF (IREV .NE. NN) THEN DO 580 J = 2, I K = NN + 2 - J Y = Y - A(IREV,K)*X(K) 580 CONTINUE END IF X(IREV) = Y / A(IREV,IREV) 570 CONTINUE WRITE(*,60) WRITE(*,65) DO 590 I = 1, NN DO 600 J = 1, NN+1 WRITE(*,70) I, J, A(I,J) 600 CONTINUE 590 CONTINUE DET = 1.0 DO 610 I = 1, NN DET = DET * A(I,I) 610 CONTINUE WRITE(*,80) DET DO 620 I = 1, NN WRITE(*,100) I, X(I) 620 CONTINUE 50 FORMAT(1X, 'A(',I2,',',I2,'): ') 60 FORMAT(/10X,'SOLUCAO'/) 65 FORMAT(/5X,'COEFICIENTES DA MATRIZ TRIANGULARIZADA'/) 70 FORMAT(5X, 'A(',I2,',',I2,') = ',F12.7) 80 FORMAT(1X/, 5X, 'DETERMINANTE DO SISTEMA = ', F12.7/) 100 FORMAT(5X, 'X(',I2,') = ', F12.7) END

Linguagem C

/* Programa elimina.c */

#include < stdio.h>#include < stdlib.h>#include < math.h>

#define NMAX 50

int i, j, k, l;int neq, nmais, last, rev;float a[NMAX][NMAX+1], x[NMAX+1];float coef, big, term, temp, pivot, nextr, cnt, y;

void main(){

printf(" Numero de equacoes: ");scanf("%d", & neq);for( i = 1; i <= neq; i++) {

Page 60: USP - Cálculo Numérico

Sistemas de Equações Lineares 4 - 9

Cálculo Numérico e Computacional C.Y. Shigue

nmais = neq +1;for (j = 1; j <= nmais; j++) {

printf("A( %d , %d ) = ", i, j);scanf("%f", & coef);a[ i][j] = coef;

}}last = neq - 1;for ( i = 1; i <= last; i++) {

big = 0. f;for (k = i; k <= neq; k++) {

term = fabs(a[k][ i]);if ((term - big) > 0.f) {

big = term;l = k;

}}if (big == 0.f) {

printf(" Matriz singular\n");exit(0);

}if ( i != l) {

for (j = 1; j <= nmais; j++) {temp = a[ i][j];a[ i][j] = a[l][j];a[l][j] = temp;

}}pivot = a[ i][ i];nextr = i + 1;for (j = nextr; j <= neq; j++) {

cnt = a[j][ i] / pivot;for (k = i; k <= nmais; k++) {

a[j][k] = a[j][k] - cnt*a[ i][k];}

}}

for ( i = 1; i <= neq; i++) {rev = neq + 1 - i;y = a[rev][ nmais];if (rev != neq) {

for (j = 2; j <= i; j++) {k = neq + 2 - j;y -= a[rev][k]*x[k];

}}x[rev] = y / a[rev][rev];

}printf("\ nMatriz triangularizada\n");for ( i = 1; i <= neq; i++) {

for (j = 1; j <= nmais; j++) {printf("A( %d , %d ) = % f\n", i, j, a[ i][j]);

}}printf("\ nSolucao\n");for ( i = 1; i <= neq; i++) {

printf("X( %d ) = % f\n", i, x[ i]);}

}

Método I terativo de Gauss-Seidel

Em sistemas com muitas equações simultâneas e, particularmente, em sistemas mal-condicionados, a propagação do erro de arredondamento pode destruir a exatidão da solução.

Page 61: USP - Cálculo Numérico

Sistemas de Equações Lineares 4 -10

Cálculo Numérico e Computacional C.Y. Shigue

Nestes casos podemos utili zar um método iterativo que, em geral, não seja muito sensível àpropagação de erros de arredondamento, desde que a solução seja convergente. Entre osmétodos iterativos de resolução de sistemas de equações, vamos abordar o método iterativo deGauss-Seidel, que é um dos métodos iterativos mais comuns e simples para ser programado emcomputador. Como em todos os métodos iterativos, o erro de arredondamento é pequeno, maso método converge para a solução somente sob certas condições e normalmente conduz a umnúmero significativamente maior de operações aritméticas em comparação aos métodos deresolução direta.

Seja o sistema de equações:

a11

x1 + a

12x

2 + a

13x

3 + ... + a

1nx

n = b

1

a21

x1 + a

22x

2 + a

23x

3 + ... + a

2nx

n = b

2

a31

x1 + a

32x

2 + a

33x

3 + ... + a3n

xn = b

3

� � � � �a

n1x

1 + a

n2x

2 + a

n3x

3 + ... + a

nnx

n = b

n

onde os termos da diagonal a11

, a22

, ..., ann

são todos supostos não nulos; se necessário, as

equações devem ser reordenadas para que todos estes termos sejam não nulos.Encontramos o valor de x

1 a partir da primeira equação, x

2 a partir da segunda e assim

sucessivamente, para obtermos:

x1 = (b

1 - a

12x

2 - a

13x

3 - ... - a

1nx

n)/a

11 (42)x

2 = (b

2 - a

21x

1 - a

23x

3 - ... - a

2nx

n)/a

22 (43)x

3 = (b

3 - a

31x

1 - a

32x

2 - ... - a

3nx

n)/a

33 (44)

� �x

n = (b

n - a

n1x

1 - a

n2x

2 - ... - a

n,n-1x

n-1)/a

nn (45)

A iteração é iniciada tomando-se um conjunto inicial de estimativas para todos os xi(k)

,

onde k é o número da iteração. Tomamos o valor inicial de x2, x

3, ..., x

n para calcular o valor

de x1 na primeira equação acima. Com o valor de x

1 calculado mais os valores iniciais de x

3, x

4,

..., xn calcula-se o novo valor de x

2 na segunda equação e assim sucessivamente até a n-ésima

equação, quando então obtemos o valor de xn (e, anteriormente, os valores de x

1, x

2, ..., x

n-1)

para a primeira iteração. Voltamos, então, para a primeira equação e calculamos novamente x1

e sucessivamente todos os xi na segunda iteração. Este procedimento prossegue até que haja

convergência, isto é, até que todos os valores de xi simultaneamente parem de variar. Deste

modo, este método exigirá provavelmente muitas iterações antes de obtermos uma exatidãorazoável. Além disto, na maioria das vezes pode não ocorrer convergência e os resultados seafastarem de um valor constante e finito.

O problema da convergência deste método não é simples e é o principal empecilho aoseu uso. Podemos empregar alguns critérios para se verificar quando é necessário parar aiteração:

Page 62: USP - Cálculo Numérico

Sistemas de Equações Lineares 4 -11

Cálculo Numérico e Computacional C.Y. Shigue

1. O número de iterações excedeu um valor máximo m pré-determinado;2. As diferenças entre dois valores sucessivos de todos os xi são menores do que um valor

pré-determinado ε:

x1

(k) - x

1

(k-1) < ε , x

2

(k) - x

2

(k-1) < ε , ... x

n

(k) - x

n

(k-1) < ε (46)

Exemplo:Seja o sistema de duas equações:

2x + 3y = 4 (e1)

-x + y = 1 (e2)

Podemos escrever as seguintes equações para o cálculo iterativo de x e y:

x = (4 - 3y)/2 (e3)

y = (1 + x) (e4)

tomando-se os valores iniciais x = 0 e y = 0, calculamos os seguintes valores:

x(1) = [4 - 3y (0) ]/2 = [4 - (3)(0)]/2 = 2

y(1) = [1 + x (1) ] = (1 + 2) = 3

εx(1) = x(1) - x (0) = 2 - 0 = 2

εy(1) = y(1) - y (0) = 3 - 0 = 3

x(2) = [4 - 3y (1) ]/2 = [4 - (3)(3)]/2 = -2,5

y(2) = [1 + x (2) ] = (1 - 2,5) = -1,5

εx(2) = x(2) - x (1) = -2,5 - 2 = 4,5

εy(2) = y(2) - y (1) = -1,5 - 3 = 4,5

x(3) = [4 - 3y (2) ]/2 = [4 - (3)(-1,5)]/2 = 4,25

y(3) = [1 + x (3) ] = (1 + 4,25) = 5,25

εx(3) = x(3) - x (2) = 4,25 - (-2,5) = 6,75

εy(3) = y(3) - y (2) = 5,25 - (-1,5) = 6,75

Montamos a tabela contendo alguns dos valores calculados:

Page 63: USP - Cálculo Numérico

Sistemas de Equações Lineares 4 -12

Cálculo Numérico e Computacional C.Y. Shigue

Iteração x εx y εy012345

02

-2,54,25

-5,8759,3125

24,5

6,7510,125

15,1875

03

-1,55,25

-4,87510,3125

34,5

6,7510,125

15,1875

Observamos, dos dados da tabela, que o método iterativo de Gauss-Seidel aplicado aosistema de duas equações diverge, pois os valores de erro εx e εy aumentam a cada iteração.

Vamos agora inverter as duas equações para obter as equações do cálculo iterativo,isto é, a equação para o cálculo de x será a (2), enquanto a equação para y será a (1):

x = (y - 1) (e5)

y = (4 - 2x)/3 (e6)

Montamos a tabela contendo alguns dos valores calculados:

Iteração x y εx εy

01234567

0-1

1-0,33333

0,55556-0,03704

0,358030,09465

02

0,666671,555560,962961,358031,094651,27023

12

1,333330,888890,592600,395070,26338

21,333330,888890,592600,395070,263380,17558

A convergência é obtida após 41 iterações: x = 0,2 e y = 1,2 com erro de 10-5.

O problema da convergência para este exemplo pode ser ilustrado na Fig. 1, onde sãomostrados os gráficos para as equações (e1) e (e2). As linhas tracejadas e pontilhadas indicam,respectivamente, as iterações divergentes, dada pelas equações (e3) e (e4), e as iteraçõesconvergentes dada pelas equações (e5) e (e6).

Page 64: USP - Cálculo Numérico

Sistemas de Equações Lineares 4 -13

Cálculo Numérico e Computacional C.Y. Shigue

-3 -2 -1 0 1 2 3-2

-1

0

1

2

3

4

(2)

(1)y

x

Fig.1 Representação gráfica do Método de Gauss-Seidel.

Como visto no exemplo, a convergência das iterações depende da ordem como asequações estão escritas. Genericamente, para um sistema com n = 2, podemos escrever:

a11

x1 + a

12x

2 = b

1(47)

a21

x1 + a

22x

2 = b

2(48)

de onde vem que,

x1

(k) = [b

1 - a

12x

2

(k-1)]/a

11(49)

x2

(k) = [b

2 - a

21x

1

(k)]/a

22(50)

Se definirmos:

∆x1

(k) = x

1 - x

1

(k) (51)

∆x2

(k) = x

2 - x

2

(k) (52)

Então, a partir de (49) e (51) vem que:

∆x1

(k) = - a

12/a

11.∆x

2

(k-1) (53)

e, de (50) e (52):

Page 65: USP - Cálculo Numérico

Sistemas de Equações Lineares 4 -14

Cálculo Numérico e Computacional C.Y. Shigue

∆x2

(k) = - a

21/a

22.∆x

1

(k) (54)

Combinando estas duas equações, resulta:

∆x1

(k) = a

12a

21/(a

11a

22).∆x

1

(k-1) (55)

Igualmente, pode-se escrever que

∆x1

(k) = [a

12a

21/(a

11a

22)]

2 ∆x

1

(k-2) (56)

Prosseguindo desta maneira, resulta:

∆x1

(k) = [a

12a

21/(a

11a

22)]

k ∆x

1

(0) (57)

Analogamente, para a outra variável,

∆x2

(k) = [a

12a

21/(a

11a

22)]

k ∆x

2

(0) (58)

Assim, sea

12a

21/a

11a

22 < 1 (59)

o método iterativo de Gauss-Seidel converge para uma solução de (47) e (48).Pode-se satisfazer (59), se

a11

> a12

(60)

ea

22 ≥ a

21 (61)

ou sea

11 ≥ a

12 (62)

ea

22 > a

21 (63)

Isto significa que os termos da diagonal a11

e a22

devem ser dominantes, isto é, eles devem ser

pelo menos tão grandes quanto os termos fora da diagonal e realmente maiores em pelo menosum caso.

Para um sistema de n equações podemos mencionar um teorema simples que fornececondições suficientes, mas não necessárias, para que haja convergência:

Teorema da convergência do método iterativo de Gauss-Seidel: A iteração do método deGauss-Seidel convergirá se, no determinante característico, cada termo da diagonal

Page 66: USP - Cálculo Numérico

Sistemas de Equações Lineares 4 -15

Cálculo Numérico e Computacional C.Y. Shigue

principal for maior (em valor absoluto) do que a soma dos valores absolutos de todos osoutros termos na mesma linha ou coluna. Isto é, teremos garantido a convergência se,

a a i nii ij

jj i

n

> ==≠

∑1

1 2, , ... , (64)

e

a a i nii ji

jj i

n

> ==≠

∑1

1 2, , ... , (65)

O teorema não é muito útil a não ser que, de alguma maneira, possamos reordenar asequações a fim de satisfazerem o teorema tão bem quanto possível e, geralmente, isto não étarefa simples. Pode ser necessário rearranjar de várias formas um sistema de equações atéencontrarmos, através do cálculo iterativo, um arranjo que se aproxime das condições doteorema.

Exemplo:Seja o seguinte sistema de equações:

-x 1 + 3x 2 + 5x 3 + 2x 4 = 10

x1 + 9x 2 + 8x 3 + 4x 4 = 15

x2 + x 4 = 2

2x 1 + x 2 + x 3 - x 4 = -3

Se re-ordenarmos as equações de modo a satisfazer da melhor forma o teorema daconvergência, obteremos o seguinte sistema de equações:

2x 1 + x 2 + x 3 - x 4 = -3

x1 + 9x 2 + 8x 3 + 4x 4 = 15

-x 1 + 3x 2 + 5x 3 + 2x 4 = 10

x2 + x 4 = 2

de onde vem as equações para o cálculo iterativo de xi (i = 1, 2, 3 e 4):

x1 = (-3 - x 2 - x 3 + x 4)/2

x2 = (15 - x 1 - 8x 3 - 4x 4)/9

x3 = (10 + x 1 - 3x 2 - 2x 4)/5

x4 = ( 2 - x 2) .

cuja solução, obtida após 78 iterações com cálculo em precisão simples é:

Page 67: USP - Cálculo Numérico

Sistemas de Equações Lineares 4 -16

Cálculo Numérico e Computacional C.Y. Shigue

x1 = -1; x2 = 0; x3 = 1 e x4 = 2

Observamos para este exemplo que o método iterativo de Gauss-Seidel apresenta umaprecisão superior ao método de eliminação gaussiana. Entretanto, o número de iterações érelativamente alto (78 neste caso) e este número cresce substancialmente com o aumento donúmero de equações. Esta limitação atualmente não restringe a aplicação do método iterativode Gauss-Seidel, devido à elevada capacidade de processamento dos microcomputadoresatuais. Usualmente, o método de eliminação gaussiana é usado numa etapa preliminar paraobter os valores iniciais do método de Gauss-Seidel que, então, faz o refinamento da solução.

Listagens dos programas do método iterativo de Gauss-Seidel

Os seguintes programas em FORTRAN e C realizam 80 iterações, definida pelavariável MAX, bastando alterá-la para aumentar (ou diminuir) o número de iterações.

FORTRAN

C PROGRAMA PARA O CALCULO ITERATIVO DE UM SISTEMA DE EQUACOESC METODO DE GAUSS-SEIDEL PROGRAM GSEIDEL MAX = 80 X1 = 0.0 X2 = 0.0 X3 = 0.0 X4 = 0.0 DO 10 I = 1, MAX X1 = (-3.0 - X2 - X3 + X4)/2.0 X2 = (15.0 - X1 - 8.0*X3 - 4.0*X4)/9.0 X3 = (10.0 + X1 - 3.0*X2 - 2.0*X4)/5.0 X4 = (2.0 - X2) 10 CONTINUE WRITE(*,100) X1,X2,X3,X4 100 FORMAT(4F10.6) END

Linguagem C

/* Programa gseidel.c*/#include < stdio.h>#define MAX 80

void main(){ int i; float x1, x2, x3, x4; x1 = 0.0; x2 = 0.0; x3 = 0.0; x4 = 0.0; for (i = 1; i <= MAX; i++) {

x1 = (-3.0 - x2 - x3 + x4) / 2.0;x2 = (15.0 - x1 - x3 * 8.0 - x4 * 4.0) / 9.0;x3 = (x1 + 10.0 - x2 * 3.0 - x4 * 2.0) / 5.0;x4 = 2.0 - x2;

printf("x1 = %10.6f x2 = %10.6f x3 = %10.6f X4 = %10.6f\n",x1,x2,x3,x4); }}

Page 68: USP - Cálculo Numérico

Ajuste de curvas 5 - 1

Cálculo Numérico e Computacional C.Y. Shigue

Ajuste de Curvas Pelo Método dos Mínimos Quadrados

Introdução

Seja um conjunto de dados contendo n pares de valores (x, y) obtidos numérica ouexperimentalmente. De modo a calcular qualquer valor de y distinto dos valores tabelados,ajustamos uma função y = f(x) através do chamado Método dos Mínimos Quadrados.

Considere uma equação relacionando a variável y com a variável independente x, como)x(fy = , onde y indica que este é o valor aproximado de y. Queremos encontrar a função

)x(fy = , cujo desvio em relação aos valores y seja expresso como iii yy −=δ .

Por uma questão de conveniência trabalharemos com o desvio quadrático ( )2ii2i yy −=δ .

A função )x(fy = que melhor ajusta os pontos (x, y) dados é aquela que minimiza o somatóriodos desvios quadráticos S:

S = ( )∑∑==

−=δn

1i

2ii

n

1i

2i yy (1)

A condição de minimização da função S é satisfeita fazendo-se dS = 0, ou seja,necessitamos calcular a derivada da função S em relação aos parâmetros de ajuste da funçãoy = f(x) para que possamos encontrar o sistema de equações denominado equações normais queconduz ao melhor ajuste dos pontos (x,y) pela função y = f(x) escolhida. Para cada tipo de funçãode ajuste existe um sistema de equações normais que minimiza a soma dos desvios quadráticos S.Em seguida, faremos a dedução das equações normais para alguns tipos de funções maiscomumente empregados no ajuste de curvas pelo método dos mínimos quadrados.

Ajuste L inear

Se a função de ajuste for a função linear na forma:

xaay 10 += (2)

onde a0 e a1 são os coeficientes a serem determinados pelo Método dos Mínimos Quadrados. A

condição de minimização do somatório dos desvios quadráticos é dada pelas equações:

0a

S

0=

∂∂

(3)

e

0a

S

1=

∂∂

(4)

Page 69: USP - Cálculo Numérico

Ajuste de curvas 5 - 2

Cálculo Numérico e Computacional C.Y. Shigue

Substituindo-se (1) na equação (3), resulta:

( )

∂∂=

δ

∂∂=

∂∂ ∑∑

==

n

1i

2ii

0

n

1i

2i

00yy

aaa

S

Substituindo (2) na equação acima, resulta:

( ) ( )( ) 01xaay2xaayaa

Sn

1ii10i

n

1i

2i10i

00=−−−=

−−

∂∂=

∂∂ ∑∑

==

de onde vem que:

∑∑==

=

+

n

1ii1

n

1ii0 yaxan (5)

Analogamente, substituindo-se (1) e (2) em (4), resulta:

∑∑∑===

=

+

n

1i

ii1

n

1i

2i0

n

1i

i yxaxax (6)

As equações (5) e (6) constituem-se no sistema de equações normais, contendo duasincógnitas (a0 e a1) e duas equações. Podemos re-arranjá-las de modo a obter as seguintes

expressões para o seu cálculo:

2n

1i

n

1i

2

n

1i

n

1i

n

1i

n

1i

2

0

xxn

xyxyx

a

=

∑∑

∑∑∑∑

==

==== (7)

2n

1i

n

1i

2

n

1i

n

1i

n

1i1

xxn

yxxyn

a

=

∑∑

∑∑∑

==

=== (8)

Page 70: USP - Cálculo Numérico

Ajuste de curvas 5 - 3

Cálculo Numérico e Computacional C.Y. Shigue

Exemplo:Ajustar uma função linear pelo método dos mínimos quadrados aos seguintes valores numéricos:

x 0 1,2 2,5 3,7

y 0,134 0,275 0,339 0,401

Resolução:Para resolvermos o problema, vamos calcular os coeficientes das equações normais (5) e (6),através do cálculo na tabela seguinte dos valores de Σx, Σx2, Σy e Σxy:

x y x2 xy0 0,134 0 0

1,2 0,275 1,44 0,332,5 0,339 6,25 0,84753,7 0,401 13,69 1,4837

SOMA = 7,4 1,149 21,38 2,6612

Resumindo:

n = 4 ∑=

=4

1ii 4,7x ∑

=

=4

1ii 149,1y ∑

=

=4

1i

2i 38,21x ∑

=

=4

1iii 6612,2yx

Substituindo nas equações (7) e (8):

1584,076,30

8727,4

)4,7()38,21)(4(

)6612,2)(4,7()149,1)(38,21(a

20 ==−

−=

0696,076,30

1422,2

)4,7()38,21)(4(

)149,1)(4,7()6612,2)(4(a

21 ==−

−=

A função linear que melhor ajusta os pontos dados pelo método dos mínimos quadrados édescrita pela equação:

x0696,01584,0y +=

Ajuste Polinomial

Seja uma função polinomial de grau m da forma:

mm

2210 xaxaxaay ++++= � (9)

Substituindo (9) na equação para a o somatório do desvio quadrático (1):

Page 71: USP - Cálculo Numérico

Ajuste de curvas 5 - 4

Cálculo Numérico e Computacional C.Y. Shigue

S = ( ) ( )∑∑==

−−−−−=−n

1i

2mm

2210i

n

1i

2ii xaxaxaayyy �

As equações normais para o cálculo dos coeficientes da função polinomial são obtidas apartir das condições para a minimização da soma do desvio quadrático:

0a

S

a

S

a

S

a

S

m210=

∂∂==

∂∂=

∂∂=

∂∂ � (10)

Substituindo S em (10) e derivando, resulta:

( )( ) 01xaxaxaay2a

Sn

1i

mim

2i2i10i

0=−−−−−−=

∂∂ ∑

=

( )( ) 0xxaxaxaay2a

Sn

1ii

mim

2i2i10i

1=−−−−−−=

∂∂ ∑

=

( )( ) 0xxaxaxaay2a

Sn

1i

2i

mim

2i2i10i

2=−−−−−−=

∂∂ ∑

=

( )( ) 0xxaxaxaay2a

Sn

1i

mi

mim

2i2i10i

n=−−−−−−=

∂∂ ∑

=

Rearranjando as equações acima, resulta o seguinte sistema de equações, denominado deequações normais:

∑∑∑∑====

=

++

+

+

n

1iim

n

1i

mi2

n

1i

2i1

n

1ii0 yaxaxaxan �

∑∑∑∑∑==

+

===

=

++

+

+

n

1i

iim

n

1i

1mi2

n

1i

3i1

n

1i

2i0

n

1i

i yxaxaxaxax �

Page 72: USP - Cálculo Numérico

Ajuste de curvas 5 - 5

Cálculo Numérico e Computacional C.Y. Shigue

∑∑∑∑∑==

+

===

=

++

+

+

n

1ii

2im

n

1i

2mi2

n

1i

4i1

n

1i

3i0

n

1i

2i yxaxaxaxax �

∑∑∑∑∑===

+

=

+

=

=

++

+

+

n

1ii

mim

n

1i

m2i2

n

1i

3mi1

n

1i

2mi0

n

1i

mi yxaxaxaxax �

Na forma matricial, o sistema de equações normais para o ajuste polinomial toma a forma:

[A][x] = [b]

que podem ser escritos omitindo os índices dos somatórios na forma:

=

∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑

++

+

+

m2i

2mi

1mi

mi

2mi

4i

3i

2i

1mi

3i

2ii

mi

2ii

xxxx

xxxx

xxxx

xxxn

]A[

�����

,

(11)

[ ]

=

m

2

1

0

a

a

a

a

x�

, [ ]

=

∑∑∑∑

imi

i2i

ii

i

yx

yx

yx

y

b�

Observar que a matriz de coeficientes [A] é simétrica, isto é, aij = aji. Deste modo, podemos

determinar o sistema de equações normais para qualquer ajuste polinomial como um subconjuntodo sistema acima.

Ajuste Parabólico

O ajuste parabólico ou de 2a ordem é um caso particular do ajuste polinomial para m = 2:

2210 xaxaay ++= (12)

de modo que o sistema de equações normais pode ser escrito como:

Page 73: USP - Cálculo Numérico

Ajuste de curvas 5 - 6

Cálculo Numérico e Computacional C.Y. Shigue

[ ]

=

∑∑∑∑∑∑∑∑

4i

3i

2i

3i

2ii

2ii

xxx

xxx

xxn

A , [ ]

=

2

1

0

a

a

a

x , [ ]

=

∑∑∑

i2i

ii

i

yx

yx

y

b (13)

Exemplo:A tabela seguinte apresenta os valores de calor específico a pressão constante para o ouro na faixade temperatura entre 10 e 100K. Ajustar pelo Método dos Mínimos Quadrados uma curva

parabólica do tipo 2210p TaTaaC ++= , onde Cp é o calor específico e T a temperatura

absoluta.

T(K) 10 15 20 25 30 40 50 60 70 80 90 100

Cp (J/kg.K) 2 7 16 26 37 57 73 84 92 99 104 108

Resolução:Para o cálculo dos coeficientes da matriz [A], por uma questão de compatibili dade com a notaçãode (13), definiremos y = Cp e x = T.

TABELA 1 Coeficientes do sistema de equações

x y x2 x3 x4 xy x2y10 2 100 1000 10000 20 20015 7 225 3375 50625 105 157520 16 400 8000 160000 320 640025 26 625 15625 390625 650 1625030 37 900 27000 810000 1110 3330040 57 1600 64000 2560000 2280 9120050 73 2500 125000 6250000 3650 18250060 84 3600 216000 12960000 5040 30240070 92 4900 343000 24010000 6440 45080080 99 6400 512000 40960000 7920 63360090 104 8100 729000 65610000 9360 842400

100 108 10000 1000000 100000000 10800 1080000SOMA: 590 705 39350 3044000 253771250 47695 3640625

Substituindo-se os valores calculados na tabela nas matrizes do sistema [A][x] = [b], obtém-se:

[ ]A =

12 590 39350

590 39350 3044000

39350 3044000 253771250

[ ]b =

705

47695

3640625

A solução deste sistema de equações obtida por inversão da matriz [A] é:

Page 74: USP - Cálculo Numérico

Ajuste de curvas 5 - 7

Cálculo Numérico e Computacional C.Y. Shigue

a0 = -27,1891 a1 = 2,54971 a2 = -0,01202

e a equação ajustada expressa como:

2p T01202,0T54971,21891,27C −+−=

A Fig. 1 mostra os dados experimentais juntamente com a curva parabólica ajustada peloscoeficientes calculados acima, na qual observa-se uma excelente concordância entre a curvaajustada e os pontos experimentais.

0

20

40

60

80

100

120

0 20 40 60 80 100

Temperatura (K)

Cp

(J/k

g.K

)

Fig. 1 Dados experimentais do calor específico a pressão constante para o ouro (símbolos) e acurva parabólica ajustada (linha).

Ajuste Multivar iável

O ajuste por função polinomial visto anteriormente é um caso particular de um ajustemultivariável, no qual cada um das variáveis x, x2, x3, ..., xm podem ser descritas como variáveisdistintas e independentes entre si: x1, x2, x3, ... , xm. A função dessas múltiplas variáveis pode serescrita como:

y a a x a x a xm m= + + + +0 1 1 2 2 � (14)

Substituindo a função (14) na equação para a soma dos desvios quadráticos resulta:

Page 75: USP - Cálculo Numérico

Ajuste de curvas 5 - 8

Cálculo Numérico e Computacional C.Y. Shigue

( ) ( )S y y y a a x a x a xi i

i

n

i m m

i

n

= − = − − − − −= =∑ ∑2

1

0 1 1 2 22

1

As equações normais para o cálculo dos coeficientes da função polinomial são obtidas apartir das condições para a minimização da soma do desvio quadrático:

0a

S

a

S

a

S

a

S

m210=

∂∂==

∂∂=

∂∂=

∂∂ � (15)

Calculando as derivadas:

( )( ) 01xaxaxaay2a

S n

1imm22110i

0=−−−−−−=

∂∂ ∑

=�

( )( ) 0xxaxaxaay2a

S n

1i1mm22110i

1=−−−−−−=

∂∂ ∑

=�

(16)

( )( ) 0xxaxaxaay2a

S n

1i2mm22110i

2=−−−−−−=

∂∂ ∑

=�

( )( ) 0xxaxaxaay2a

S n

1immm22110i

m=−−−−−−=

∂∂ ∑

=�

Resulta no sistema de equações normais:

na x a x a x a y

i

n

i

n

m

i

n

m i

i

n

0 1

1

1 2

1

2

1 1

+

+

+ +

=

= = = =∑ ∑ ∑ ∑�

x a x a x x a x x a x y

i

n

i

n

i

n

m

i

n

m i

i

n

1

1

0 12

1

1 1 2

1

2 1

1

1

1= = = = =∑ ∑ ∑ ∑ ∑

+

+

+ +

=�

(17)

x a x x a x a x x a x y

i

n

i

n

i

n

m

i

n

m i

i

n

2

1

0 2 1

1

1 22

1

2 2

1

2

1= = = = =∑ ∑ ∑ ∑ ∑

+

+

+ +

=�

Page 76: USP - Cálculo Numérico

Ajuste de curvas 5 - 9

Cálculo Numérico e Computacional C.Y. Shigue

x a x x a x x a x a x ym

i

n

m

i

n

m

i

n

m

i

n

m m i

i

n

= = = = =∑ ∑ ∑ ∑ ∑

+

+

+ +

=

1

0 1

1

1 2

1

22

1 1

Na forma matricial, o sistema de equações normais para o ajuste polinomial toma a forma:

[A][x] = [b] (18)

que podem ser escritos omitindo os índices dos somatórios na forma:

[ ]A

n x x x

x x x x x x

x x x x x x

x x x x x x

m

m

m

m m m m

=

∑ ∑ ∑∑ ∑ ∑ ∑∑ ∑ ∑ ∑

∑ ∑ ∑ ∑

1 2

1 12

1 2 1

2 2 1 22

2

1 22

���

� � � � �

, [ ]x

a

a

a

am

=

0

1

2�, [ ]b

y

x y

x y

x ym

=

∑∑∑

1

2� (19)

Observar que a matriz de coeficientes [A] é simétrica, isto é, aij = aji. Deste modo, podemos

determinar o sistema de equações normais para qualquer ajuste multivariável como umsubconjunto do sistema acima.

Exemplo:Considere os seguintes valores de temperatura (T), pressão (p) e volume (v) específico para o ar.Ajustar uma função multivariável do tipo T = apbvc, na qual a, b e c são constantes a seremdeterminados pelo método dos mínimos quadrados.

Temperatura (K) Pressão (bar) Volume específico (dm3/kg)90 2,397 100,2

100 5,599 44,67110 11,22 22,15120 20,14 11,45130 33,32 5,425

Resolução:Primeiramente, é necessário linearizar a função de ajuste de modo que as constantes estejamdesacopladas das variáveis T, p e v. Para isso, vamos aplicar o logaritmo sobre a função T =T(p,v) para obter:

vn.cpn.banTn ���� ++=

Fazendo a seguinte troca de variáveis, y = � n T, x1 = � n p, x2 = � n v, a0 = � n a, a1 = b e a2 = c, aequação acima pode ser re-escrita como:

22110 xaxaay ++=

Page 77: USP - Cálculo Numérico

Ajuste de curvas 5 - 10

Cálculo Numérico e Computacional C.Y. Shigue

As equações normais para esta função de ajuste de duas variáveis (x1 e x2) é um subsistema daequação (17) com três incógnitas (a0, a1 e a2) e três equações:

∑∑∑===

=

+

+

n

1ii2

n

1i21

n

1i10 yaxaxna

∑∑∑∑====

=

+

+

n

1ii12

n

1i211

n

1i

210

n

1i1 yxaxxaxax (20)

∑∑∑∑====

=

+

+

n

1ii22

n

1i

221

n

1i120

n

1i2 yxaxaxxax

Vamos calcular na tabela seguinte os coeficientes do sistema de equações normais.

y =� n T x1 = � n p x2 = � n v x12 x2

2 x1x2 x1y x2y4,49981 0,874218 4,607168 0,764257 21,226 4,027669 3,933814 20,731384,60517 1,722588 3,799302 2,967309 14,4347 6,544632 7,932811 17,496434,70048 2,417698 3,097837 5,845263 9,596597 7,489635 11,36434 14,561324,787492 3,002708 2,43799 9,016255 5,943794 7,320571 14,37544 11,671864,867534 3,506158 1,691018 12,29314 2,859542 5,928976 17,06634 8,231088

SOMA = 23,46049 11,52337 15,63332 30,88623 54,06063 31,31148 54,67275 72,69208

Substituindo os valores dos somatórios em (20), obtemos o seguinte sistema de equações:

46049,23a63332,15a52337,11a5 210 =++67275,54a31148,31a8863332,30a52337,11 210 =++

69208,72a06063,54a31148,31a63332,15 210 =++

cuja solução será: a0 = 4,762418, a1 = 0,063776 e a2 = -0,0695. A partir destas constantes,podemos obter a solução para o ajuste multivariável fazendo:

0285,117eeaana 762418,4a0

0 ===⇒= �0695,0ac063776,0ab 21 −====

de modo que0695,0063776,0 vp0285,117T −=

é a função de ajuste do problema.

Page 78: USP - Cálculo Numérico

Ajuste de curvas 5 - 11

Cálculo Numérico e Computacional C.Y. Shigue

Linear ização de Funções

As funções transcendentes de duas constantes devem ser linearizadas antes de aplicarmoso Método dos Mínimos Quadrados, a fim de obtermos o sistema de equações normais lineares. Oprocedimento varia, dependendo do tipo de função. Ilustraremos o procedimento de linearizaçãopara as funções exponencial, logaritmica, potencial e hiperbólica.

Ajuste Exponencial

Um ajuste exponencial geralmente emprega uma função do tipo:

bxe.ay = (21)

onde a e b são as constantes da função de ajuste exponencial.Este tipo de função é não-linear, de modo que precisamos linearizá-lo antes de aplicar o

Método dos Mínimos Quadrados. A linearização consiste em transformarmos a equação (21)numa equivalente à equação (2):

xaay 10aj += (22)

Para tanto, aplicamos o logaritmo em ambos os lados de (21):

bxanyn += �� (23)Se fizermos:

yny �=′ (24)

ana0 �= (25)

a1 = b (26)

A equação (21) poderá ser re-escrita como:

xaay 10aj +=′ (27)

Observe que esta equação é idêntica à equação (2), exceto pelo fato de que a variável y' écalculada pelo logaritmo de base natural da variável y original. Aplicando-se as transformações(25) e (26), obtemos as constantes de ajuste exponencial a e b empregando as equações (7) e (8)do Método dos Mínimos Quadrados para a função linear.

Ajuste Logar itmico

Um ajuste logarítmico geralmente emprega uma função do tipo:

Page 79: USP - Cálculo Numérico

Ajuste de curvas 5 - 12

Cálculo Numérico e Computacional C.Y. Shigue

xn.bay �+= (28)

onde a e b são as constantes da função de ajuste. Linearizando (21), obtemos as seguintesrelações de transformação:

y' = y x' = xn� aa0 = ba1 = (29)

A relação linearizada toma a forma:

xaay 10aj ′+= (30)

Ajuste Potencial

Um ajuste potencial geralmente emprega uma função do tipo:

bx.ay = (31)

onde a e b são as constantes da função de ajuste. Linearizando (22), obtemos as seguintesrelações de transformação:

yny �=′ x' = xn� ana0 �= ba1 = (32)

A relação linearizada toma a forma:

xaay 10aj ′+=′ (33)

Ajuste Hiperbólico

Um ajuste hiperbólico geralmente emprega uma função do tipo:

x

bay += (34)

onde a e b são as constantes da função de ajuste. Linearizando (23), obtemos as seguintesrelações de transformação:

yy =′x

1'x = aa0 = ba1 = (35)

Como sempre, a relação linearizada tem a forma:

Page 80: USP - Cálculo Numérico

Ajuste de curvas 5 - 13

Cálculo Numérico e Computacional C.Y. Shigue

xaay 10aj +=′ (36)

Avaliação da Qualidade do Ajuste

Além das funções de ajuste apresentadas neste texto, existem inúmeras outras funçõescom as quais podemos ajustar um conjunto de dados pelo método dos mínimos quadrados. Aquestão fundamental é: qual a função que representa o melhor ajuste entre todas as outrasfunções. Um método pelo qual podemos avaliar a qualidade de um ajuste é através do coeficientede correlação de Pearson. O coeficiente de correlação de Pearson r2 pode ser calculado na formamais geral como:

( )

∑ ∑

= =

=

−=n

1i

2n

1ii

2i

n

1i

2aji

2

yyn

yyn

1r (37)

O coeficiente de correlação é limitado aos seguintes valores: 0 12≤ ≤r . Quanto maispróximo de 1 for o valor de r2, melhor será o ajuste. Quando r2 ≅ 0 para um ajuste a doiscoeficientes, significa que o coeficiente angular é desprezível. Como um critério neste curso,vamos considerar que um bom ajuste é representado por valores de r2 > 0,99.

Uma outra forma do coeficiente de correlação, válido para ajuste de função do tipo lineary = a0 + a1x, é expressa como:

( )( )[ ]

( ) ( )( ) yx

mm

n

1iaji

n

1i

n

1i

2maj

2mi

n

1imajmi

SS1n

ynxyx

yyxx

yyxx

r−

=

−−

−−

=∑

∑ ∑

∑=

= =

= (38)

para a qual n

x

x

n

1ii

m

∑== e

n

y

y

n

1iaj

m

∑== são os valores médios de x e yaj, respectivamente.

As expressões:

( )

1n

xx

S

n

1i

2mi

x −

=∑

= e

( )1n

yy

S

n

1i

2maj

y −

=∑

=

Page 81: USP - Cálculo Numérico

Ajuste de curvas 5 - 14

Cálculo Numérico e Computacional C.Y. Shigue

representam a covariância x e covariância y, respectivamente.A equação (37) tem a vantagem de poder ser usada na avaliação da qualidade do ajuste de

funções polinomiais e multivariáveis. Já a equação (38) somente pode ser utili zada para avaliar aqualidade do ajuste de funções lineares ou linearizadas, como visto com as funções exponencial,logaritmo, potencial e hiperbólica, vistas anteriormente neste texto. Outras funções linearizáveistambém podem empregar a equação (38) para o cálculo do coeficiente de correlação, devendoobservar que os valores de

ExemploAjuste empregando diferentes tipos de funções:

x 1,0 1,2 1,4 1,6 1,8 2,0 2,2 2,4 2,6 2,8 3,0y 0,525 0,8448 1,2807 1,8634 2,6326 3,6386 4,944 6,6258 8,7768 11,5076 14,9484

Vamos ajustar aos pontos tabelados as seguintes funções: (a) linear y = a0 + a1x, (b) exponencial,do tipo y = aebx, (c) logaritmico, do tipo y = a + b ln x, (d) potencial, do tipo y = axb e (e)hiperbólico, do tipo y = a + b/x. Vamos determinar através do coeficiente de correlação dePearson qual destas funções representa o melhor ajuste e comparar graficamente os ajustesrealizados.

Resolução:

(a) Ajuste linear (regressão linear)

y a a x= +0 1

x y x2 xy

1,0 0,52500 1,000 0,525001,2 0,84478 1,440 1,013741,4 1,28068 1,960 1,792951,6 1,86340 2,560 2,981441,8 2,63260 3,240 4,738682,0 3,63856 4,000 7,277122,2 4,94400 4,840 10,876802,4 6,62580 5,760 15,901922,6 8,77679 6,760 22,819652,8 11,50759 7,840 32,221253,0 14,94844 9,000 44,84532

Soma = 22,0 57,58764 48,400 144,99387

( )a

x y x xy

n x x0

2

2 2 2

4840 5758764 22 14499387

11 4840 228 3187=

−=

−−

= −∑ ∑ ∑∑

∑∑( , )( , ) ( )( , )

( )( , ) ( ),

( )a

n xy x y

n x x1

2 2 2

11 14499387 22 57 58764

11 4840 2267770=

−=

−−

=∑ ∑ ∑

∑∑( )( , ) ( )( , )

( )( , ) ( ),

Page 82: USP - Cálculo Numérico

Ajuste de curvas 5 - 15

Cálculo Numérico e Computacional C.Y. Shigue

Cálculo do coeficiente de corr elação:

Sendo a função de ajuste x7770,63187,8yaj +−= , o coeficiente de correlação:

( )

∑ ∑

= =

=

−=n

1i

2n

1ii

2i

n

1i

2aji

2

yyn

yyn

1r

requer o cálculo das seguintes quantidades: Σ(y - yaj)2, Σy2 e (Σy)2 que estão apresentadas na

tabela seguinte:

yaj (y - yaj)2 y2

-1,54171 4,27130 0,27563-0,18632 1,06317 0,713651,16907 0,01246 1,640142,52446 0,43700 3,472263,87985 1,55563 6,930585,23524 2,54939 13,239126,59063 2,71139 24,443147,94602 1,74298 43,901239,30141 0,27523 77,0320410,65680 0,72384 132,4246312,01219 8,62155 223,45586

Soma = 57,58764 23,96394 527,52827

Substituindo em r2:

894,0)58764,57(52827,52711

96394,23111r

22 =

−××−=

Para verificação, vamos calcular o coeficiente de correlação pelo segundo método:

sx x

nxm=

−−

= =∑ ( ) ,40

,663322

1

4

100

sy y

nym=

−−

= =∑ ( ) ,

,2

1

22604314

104 75440

r as

sx

y= = =1 6

0

40( ,7770)

,66332

,75440,95 ⇒ r2 = 0,89

Page 83: USP - Cálculo Numérico

Ajuste de curvas 5 - 16

Cálculo Numérico e Computacional C.Y. Shigue

Assim, o ajuste linear x7770,63187,8y +−= não representa um bom ajuste porque ovalor de r2 < 0,99.

(b) Ajuste exponencial

bxaey =

Relações para linearização da função exponencial:

′ = = =y ny a na a b� �

0 1

′ = +y a a x0 1

x y' = ln y x2 xy' y’aj (y’ – y’aj)2 y’2

1,0 -0,64436 1,000 -0,64436 -0,44921 0,03808 0,415201,2 -0,16868 1,440 -0,20241 -0,12073 0,00230 0,028451,4 0,24739 1,960 0,34635 0,20775 0,00157 0,061201,6 0,62240 2,560 0,99584 0,53623 0,00743 0,387391,8 0,96797 3,240 1,74235 0,86472 0,01066 0,936972,0 1,29159 4,000 2,58318 1,19320 0,00968 1,668202,2 1,59817 4,840 3,51598 1,52168 0,00585 2,554162,4 1,89097 5,760 4,53833 1,85016 0,00167 3,575772,6 2,17211 6,760 5,64749 2,17865 0,00004 4,718072,8 2,44301 7,840 6,84042 2,50713 0,00411 5,968283,0 2,70461 9,000 8,11382 2,83561 0,01716 7,31490

Soma = 22,0 13,12519 48,400 33,47699 13,12519 0,09855 27,62859

( ) 0916,2)22()40,48)(11(

)47699,33)(22()12519,13)(4,48(

xxn

yxxyxa

222

2

0 −=−

−=−

′−′=

∑ ∑∑ ∑∑∑

( ) 6424,1)22()40,48)(11(

)12519,13)(22()47699,33)(11(

xxn

yxyxna

2221 =

−−=

′−′=

∑ ∑∑∑∑

Assim,

6424,1ab

12349,0eea

1

2867,2a0

===== −

de modo que a função de ajuste exponencial tem a forma:

x6424,1e12349,0y ⋅=

Page 84: USP - Cálculo Numérico

Ajuste de curvas 5 - 17

Cálculo Numérico e Computacional C.Y. Shigue

Na tabela acima, estão calculados os valores de Σ (y - yaj)2 = 0,09855 e Σy2 = 27,62859,

que substituindo na equação (37) do coeficiente de correlação, resulta:

992,0)12519,13(62859,2711

09855,0111r

22 =

−××−=

Este coeficiente de correlação indica que a função de ajuste exponencial representa umbom ajuste para os dados (x,y).

(c) Ajuste logaritmico

y a b nx= + .�

Relações para linearização da função logaritmica:

′ = = =x nx a a a b� 0 1

y a a x= + ′0 1

x' = ln x y x'2 x'y yaj (y - yaj)2 y2

0,000 0,52500 0,000 0,00000 -2,28673 7,90581 0,275630,182 0,84478 0,033 0,15402 -0,13699 0,96387 0,713650,336 1,28068 0,113 0,43091 1,68059 0,15993 1,640140,470 1,86340 0,221 0,87580 3,25505 1,93669 3,472260,588 2,63260 0,345 1,54741 4,64382 4,04501 6,930580,693 3,63856 0,480 2,52206 5,88612 5,05152 13,239120,788 4,94400 0,622 3,89813 7,00991 4,26800 24,443140,875 6,62580 0,766 5,80068 8,03586 1,98827 43,901230,956 8,77679 0,913 8,38632 8,97964 0,04115 77,032041,030 11,50759 1,060 11,84844 9,85344 2,73622 132,424631,099 14,94844 1,207 16,42254 10,66693 18,33135 223,45586

Soma = 7,017 57,58764 5,761 51,88632 57,58764 47,42781 527,52827

( ) 2867,2)017,7()761,5)(11(

)88632,51)(017,7()58764,57)(761,5(

xxn

yxxyxa

222

2

0 −=−

−=′−′

′′−′=

∑ ∑∑ ∑∑∑

( ) 7909,11)017,7()761,5)(11(

)58764,57)(017,7()88632,51)(11(

xxn

yxyxna

2221 =

−−=

′−′

′−′=

∑ ∑∑∑∑

7909,11ab

2867,2aa

1

0

==−==

Page 85: USP - Cálculo Numérico

Ajuste de curvas 5 - 18

Cálculo Numérico e Computacional C.Y. Shigue

A função de ajuste logaritmo tem a forma:

xn7909,112866,2y �⋅+−=

Coeficiente de correlação: 790,0)58764,57(52827,52711

42781,47111r

22 =

−××−=

(d) Ajuste potencial

y axb=

Relações para linearização da função potencial:

′ = ′ = = =x nx y ny a na a b� � �0 1

′ = + ′y a a x0 1

x' = ln x y' = ln y x'2 x'y' yaj (y - yaj)2 y2

0,000 -0,64436 0,000 0,00000 -0,75020 0,01120 0,415200,182 -0,16868 0,033 -0,03075 -0,19479 0,00068 0,028450,336 0,24739 0,113 0,08324 0,27481 0,00075 0,061200,470 0,62240 0,221 0,29253 0,68159 0,00350 0,387390,588 0,96797 0,345 0,56896 1,04040 0,00525 0,936970,693 1,29159 0,480 0,89526 1,36136 0,00487 1,668200,788 1,59817 0,622 1,26009 1,65171 0,00287 2,554160,875 1,89097 0,766 1,65549 1,91677 0,00067 3,575770,956 2,17211 0,913 2,07548 2,16061 0,00013 4,718071,030 2,44301 1,060 2,51537 2,38637 0,00321 5,968281,099 2,70461 1,207 2,97131 2,59655 0,01168 7,31490

Soma = 7,017 13,12519 5,761 12,28698 13,12519 0,04480 27,62859

( ) 7502,0)017,7()761,5)(11(

)28698,12)(017,7()12519,13)(761,5(

xxn

yxxyxa

222

2

0 −=−

−=′−′

′′′−′′=

∑ ∑∑ ∑∑∑

( ) 0463,3)017,7()761,5)(11(

)12519,13)(017,7()28698,12)(11(

xxn

yxyxna

2221 =

−−=

′−′

′′−′′=

∑ ∑∑∑∑

0463,3ab

47227,0eea

1

7502,0a0

===== −

Page 86: USP - Cálculo Numérico

Ajuste de curvas 5 - 19

Cálculo Numérico e Computacional C.Y. Shigue

0463,3x47227,0y ⋅=

996,0)12519,13(62859,2711

04480,0111r

22 =

−××−=

O coeficiente de correlação do ajuste potencial é o maior dentre todos os ajustesrealizados até aqui, indicando ser esta a melhor função de ajuste.

(e) Ajuste hiperbólico

x

bay +=

Relações para linearização da função logaritmica:

baaax

1x 10 ===′

y a a x= + ′0 1

x' = 1/x y x'2 x'y yaj (y - yaj)2 y2

1,000 0,52500 1,000 0,52500 -2,72875 10,58687 0,275630,833 0,84478 0,694 0,70398 0,29697 0,30010 0,713650,714 1,28068 0,510 0,91477 2,45819 1,38653 1,640140,625 1,86340 0,391 1,16463 4,07911 4,90936 3,472260,556 2,63260 0,309 1,46256 5,33982 7,32904 6,930580,500 3,63856 0,250 1,81928 6,34839 7,34319 13,239120,455 4,94400 0,207 2,24727 7,17359 4,97105 24,443140,417 6,62580 0,174 2,76075 7,86125 1,52633 43,901230,385 8,77679 0,148 3,37569 8,44312 0,11134 77,032040,357 11,50759 0,128 4,10985 8,94186 6,58297 132,424630,333 14,94844 0,111 4,98281 9,37410 31,07322 223,45586

Soma = 6,174 57,58764 3,921 24,06659 57,58764 76,12000 527,52827

( ) 4255,15)174,6()921,3)(11(

)06659,24)(174,6()58764,57)(921,3(

xxn

yxxyxa

222

2

0 =−

−=′−′

′′−′=

∑ ∑∑ ∑∑∑

( ) 1543,18)174,6()921,3)(11(

)58764,57)(174,6()06659,24)(11(

xxn

yxyxna

2221 −=

−−=

′−′

′−′=

∑ ∑∑∑∑

Page 87: USP - Cálculo Numérico

Ajuste de curvas 5 - 20

Cálculo Numérico e Computacional C.Y. Shigue

1543,18ab

4255,15aa

1

0

−====

x

1543,184255,15y −=

663,0)58764,57(52827,52711

12,76111r

22 =

−××−=

(f) Comparação entre os valores fornecidos e os valores ajustados

Pelo cálculo do coeficiente de correlação de Pearson, os melhores ajustes foram osobtidos pelas funções exponencial (r2 = 0,992) e potencial (r2 = 0,996). Através do cálculo dosvalores (x,y) usando as expressões obtidas pelas funções de ajuste, podemos comparargraficamente cada uma das funções de ajuste e verificar que os melhores ajustes calculados pelocoeficiente de correlação de Pearson correspondem às curvas que melhor representam ocomportamento dos valores (x,y) do problema.

Tabela – Comparação entre os valores de y fornecido e ajustados,

Dados fornecidos Dados ajustados

x y Linear Exponencial Logaritmo Potencial Hiperbólico

1,0 0,52500 -1,54171 0,63813 -2,28673 0,47227 -2,72875

1,2 0,84478 -0,18632 0,88627 -0,13699 0,82301 0,29697

1,4 1,28068 1,16907 1,23091 1,68059 1,31628 2,45819

1,6 1,86340 2,52446 1,70956 3,25505 1,97702 4,07911

1,8 2,63260 3,87985 2,37433 4,64382 2,83034 5,33982

2,0 3,63856 5,23524 3,29761 5,88612 3,90150 6,34839

2,2 4,94400 6,59063 4,57992 7,00991 5,21589 7,17359

2,4 6,62580 7,94602 6,36086 8,03586 6,79900 7,86125

2,6 8,77679 9,30141 8,83434 8,97964 8,67645 8,44312

2,8 11,50759 10,65680 12,26965 9,85344 10,87395 8,94186

3,0 14,94844 12,01219 17,04081 10,66693 13,41731 9,37410

Page 88: USP - Cálculo Numérico

Ajuste de curvas 5 - 21

Cálculo Numérico e Computacional C.Y. Shigue

(g) Gráfico dos pontos fornecidos e das curvas ajustadas

Gráfico comparativo do s ajustes

-2

2

6

10

14

18

1.0 1.5 2.0 2.5 3.0x

y

y

Linear

Exponencial

Logaritmo

Potencial

Hiperbólico

Exercícios

1. Considere a seguinte tabela de dados:

x 1,0 1,4 2,0

y 0,340 2,25 5,89

Ajustar uma função linear do tipo y = a0 + a1x e uma função exponencial do tipo y = aebx aosdados acima. Determinar qual delas representa o melhor ajuste através do cálculo docoeficiente de correlação de Pearson. Verificar graficamente os ajustes calculados.

2. Desenvolver as equações normais para a função f(x) = a.x + b.cos x (a e b são os coeficientes

de ajuste), empregando o Método dos Quadrados Mínimos, ajustá-la aos seguintes valores

numéricos e calcular o coeficiente de correlação:

x 1,0 1,2 2,0

y 1,683 2,046 2,512

Page 89: USP - Cálculo Numérico

Ajuste de curvas 5 - 22

Cálculo Numérico e Computacional C.Y. Shigue

3. Considere os seguintes valores numéricos:

x 0 0,5 0,8 1,2 1,8 2,0 3,0

y 3,8 2,8 2,5 1,3 0,4 -0,2 1,0

Traçar o gráfico dos pontos tabelados e ajustar uma função linear a eles. Traçar a reta ajustadaao gráfico dos pontos tabelados. Verificar gráfica e numericamente pelo coeficiente decorrelação de Pearson que o ajuste é de má qualidade. Corrigir o problema que estáprejudicando o ajuste linear e verificar novamente pelo gráfico e pelo coeficiente de correlaçãode Pearson a qualidade do ajuste.

4. Linerizar as seguintes funções:

(a) y a xb

x= +. 2 (b) y a bx= .ln (c) y a x b x= +.sen .cos

(d) y a ebx= .2

(e) y ax bx= + 3 (f) y a bx= +

5. A tabela seguinte fornece a população do Brasil (em milhões de habitantes) desde 1872:

ANO 1872 1890 1900 1920 1940 1950 1960 1970 1980 1990Pop. 9,9 14,3 17,4 30,6 41,2 51,9 70,9 93,1 130 150

Obtenha uma estimativa para a população brasileira no ano 2000 empregando diferentes tiposde ajustes de curvas.

Page 90: USP - Cálculo Numérico

1

Integração Numérica

Introdução A integração numérica é uma técnica comumente empregada na determinação de uma integral definida, cuja função ou não é disponível ou não possui uma solução analítica. Ela consiste na aproximação de uma integral definida do tipo:

∫=b

a

dx)x(fI (1)

por uma soma do tipo:

x.)x(f.wdx)x(fIn

1iii

b

a

∆≅= ∑∫=

(2)

na qual f(xi) são os valores da função f(x), ∆x = xi+1 - xi e wi é um valor numérico de ponderação que também é conhecido por função peso. No presente curso, nos restringiremos aos métodos de integração numérica para intervalo ∆x constante. A determinação desses métodos consiste basicamente em avaliar o valor da função peso wi.

Regra dos Trapézios A Regra dos Trapézios consiste em se aproximar o valor da função contínua de f(x) no intervalo [a,b] por uma função de primeira ordem; isto, geometricamente, é equivalente a aproximar uma curva qualquer por uma reta, conforme mostra a Fig. 1. Desta forma, a área sob a função f(x), que é equivalente à integral dessa função, é aproximada pela área do trapézio cuja largura é igual a (b – a) e a altura média igual a [f(a) + f(b)]/2.

y = f(x)y

x

reta

f(b)

b

f(a)

a

Fig. 1 Gráfico de uma função aproximada por uma reta no intervalo [a,b].

Page 91: USP - Cálculo Numérico

2

Fazendo-se ∆x = b – a, a fórmula para a integral pode ser escrita como:

[ ]∫ +≅b

a

)b(f)a(f2

hdx)x(f (3)

O erro de truncamento eT pode ser expresso como:

{ }eh

b a M onde M max f a bT = − = ′′ ≤ ≤2

12( ) , : ( ) ,ξ ξ (4)

Exemplo 1: Calcular ∫1

0

x dx.e empregando a regra dos trapézios.

Solução: Vamos calcular a integral aproximada pela regra do trapézio com um, dois e quatro intervalos, entre os extremos de integração [0;1]. (a) Com um intervalo, n = 1 e, portanto, h = ∆x = (b – a)/n = (1 – 0)/1 = 1.

[ ] ( ) ( ) 1,859142,7182812

1ee

2

1)1(f)0(f

2

hdx.e 10

1

0

x =+=+=+≅∫

(b) Com dois intervalos, n = 2 e h = ∆x = (b – a)/n = (1 – 0)/2 = 0,5.

[ ] ( )( ) 1,753932,718281,64872.21

2

5,0

ee2e2

5,0)1(f)5,0(f2)0(f

2

hdx.e 15,00

1

0

x

=++=

++=++≅∫

(c) Com quatro intervalos, n = 4 e h = ∆x = (b – a)/n = (1 – 0)/4 = 0,25

[ ]

( )( ) 1,727222,718282.2,117001,64872.228403,1.21

2

25,0

ee2e2e2e2

25,0

)1(f)75,0(f2)5,0(f2)25,0(f2)0(f2

hdx.e

175,05,025,00

1

0

x

=++++=

++++=

++++≅∫

A solução exata vale 71828,1171828,2eedx.e 011

0

x =−=−=∫ . Calculando o erro para cada

valor de integral obtida pela regra dos trapézios, temos: (a) n = 1, erro = 1,71828 - 1,85914= 0,14 (b) n = 2, erro = 1,71828 - 1,75393= 0,036 (c) n = 4, erro = 1,71828 - 1,72722= 0,0089

Page 92: USP - Cálculo Numérico

3

Regra de Simpson A Regra de Simpson consiste na aproximação da função contínua f(x) no intervalo [a,b] por uma função de segunda ordem, ou seja, na aproximação de uma curva por uma parábola. A fórmula para a integral tem a forma:

[ ]f x dxh

f x f x f x onde h x x x x x

a

b

( ) ( ) ( ) ( ) ,≅ + + = = − = −∫ 340 1 2 2 1 1 0∆ (5)

Esta fórmula também é conhecida como regra de Simpson 1/3 por causa do fator que multiplica h. Observar que são necessários, no mínimo, três valores de f(xi) para se calcular a integral pela regra de Simpson. Na notação usada aqui, x0 = a, x2 = b e x1 é um ponto equidistante de x0 e x2. Para n intervalos ∆x, a fórmula pode ser escrita como:

[ ]f x dxh

f x f x f x f x f x f xn n n

a

b

( ) ( ) ( ) ( ) ( ) ( ) ( )≅ + + + + + +− −∫ 34 2 2 40 1 2 2 1L (6)

na qual n é par (correspondendo a um número par de intervalos de integração) ou, equivalentemente, a regra de Simpson 1/3 só pode ser aplicada para um número ímpar de pontos xi ,f(xi). O erro de truncamento eS é expresso por:

{ }eh

b a M onde M max f a bT = − − = ≤ ≤4

4

180( ) , : ( ) ,( ) ξ ξ (7)

Exemplo 2: Calcular ∫1

0

x dx.e empregando a regra de Simpson 1/3.

Solução: Vamos calcular a integral aproximada pela regra de Simpson com dois e quatro intervalos, entre os extremos de integração [0;1]. (a) Com dois intervalos, n = 2 e, portanto, h = ∆x = (b – a)/n = (1 – 0)/2 = 0,5.

[ ] ( ) ( )1,71886

2,71828648721413

504

3

5015040

31500

1

0

=

++=++=++≅∫ ,.,

eee,

)(f),(f)(fh

dx.e ,x

(b) Com quatro intervalos, n = 4 e h = ∆x = (b – a)/n = (1 – 0)/4 = 0,25

Page 93: USP - Cálculo Numérico

4

[ ]

( )( ) 7183212,718284.2,117001,64872228403141

3

250

4243

250

17502504250203

1750502500

1

0

,.,.,

eeeee,

)(f),(f),(f),(f)(fh

dx.e

,,,

x

=++++=

++++=

++++≅∫

A solução exata vale 71828,1171828,2eedx.e 011

0

x =−=−=∫ . Calculando o erro para cada

valor de integral obtida pela regra de Simpson, temos os seguintes valores numéricos: (a) n = 2, erro = 1,71828 - 1,71886= 0,00058 (b) n = 4, erro = 1,71828 - 1,71832= 0,00004 Comparando estes resultados com aqueles obtidos pela regra dos trapézios, observa-se que a regra de Simpson apresenta menor erro de truncamento, pois a aproximação pela regra de Simpson é feita por uma função de 2o grau integrada, o que representa uma aproximação com convergência de 4a ordem, conforme podemos observar da equação (7).

Exercícios propostos 1. Demonstre geometricamente e prove analiticamente que se f”(x) > 0 e a ≤ x ≤ b, a

aproximação para f x dx

a

b

( ).∫ dada pela regra dos trapézios será sempre maior que o valor

verdadeiro da integral.

2. Considere a integral sen .x dx

0

1

∫ . Mostre que o resultado obtido pela regra de Simpson com

h = 0,5 é próximo ao resultado exato (dentro de aproximadamente uma parte em 3000). Explique “qualitativamente” porque a concordância próxima é obtida.

3. A integral elíptica completa do primeiro tipo é expresso por:

Kd

( )sen .sen

/

θφ

θ φ

π

=−∫ 1 2 2

0

2

Calcule K(30o), usando a regra de Simpson com quatro intervalos. O resultado exato para

quatro casas decimais é 1,6858. Calcule K(85o) usando a regra de Simpson com quatro

Page 94: USP - Cálculo Numérico

5

intervalos; o resultado exato é 3,8320. Por que este resultado é tão ruim comparado ao do exercício anterior?

4. Use a fórmula de erro de truncamento para estimar o valor de h para o cálculo de e dxx−∫0

5

usando a regra dos trapézios e a regra de Simpson com erro menor do que 10-6. 5. Dados três valores de x = -h, 0, h e três valores correspondentes de y = y0, y1 , y2,

substitua os três pares de valores de x e y na equação geral de uma parábola, y = a + bx +

cx2, para obter três equações nas três incógnitas a, b e c. Usando esses valores de a, b e c, integre a equação da parábola entre os limites -h e h para obter:

( ) ( )a bx cx dxh

y y y

h

h

+ + = + +−∫ 2

0 1 234.

que é, naturalmente, a regra de Simpson para três pontos adjacentes. Mostra-se, assim, que a regra de Simpson é equivalente a aproximação por uma série de segmentos de parábolas.

6. Deduza uma fórmula de integração para I f x dx

a

b

= ∫ ( ). dividindo o intervalo em n

intervalos iguais de largura hb a

n=

−. Aproxime a integral para cada intervalo pela área

do retângulo cuja altura é o valor de f(x) na extremidade esquerda, conforme mostra a Fig. P1. Este método de integração é chamado de integral de Riemann, e é o procedimento para o cálculo exato de uma integral através da teoria de limites.

x

. . .y0y1y2 yn-1

x0 x1 x2 x3 xn-1 xn

h h h h

Fig. P1

Mostre que o erro de truncamento para a integral de Riemann é dado por:

Page 95: USP - Cálculo Numérico

6

Eb a

y hT =−

( )

( )2

ξ , onde a < ξ < b

7. Dados os seguintes valores numéricos, onde y deve ser alguma função (desconhecida) de x,

encontre a área sob a curva representada aproximadamente por y: (a) Usando a regra do trapézio; (b) Usando a regra de Simpson; (c) Estimar o erro de truncamento para cada um dos casos acima. Qual dos dois resultados é mais preciso? Justifique a sua resposta.

x 1,0 1,2 1,4 1,8 2,0 2,2 2,4 2,6 2,8 3,0 y 1,00 1,82 2,08 3,52 4,70 5,12 6,38 6,98 8,22 9,00

8. Considere os seguintes valores de uma função:

x 1,0 1,1 1,2 1,3 1,4 1,5 1,6 1,7 1,8 y 1,543 1,668 1,811 1,971 2,151 2,352 2,577 2,828 3,107

Calcule f x dx( )

,

,

1 0

1 8

∫ , usando a regra dos trapézios e a regra de Simpson com:

(a) h = 0,1 (b) h = 0,2 (c) h = 0,4 Se a função tabulada for cosh x, avalie o erro da aproximação, estime o erro de truncamento para os métodos utilizados e compare-os.

9. As integrais seguintes não possuem primitiva, de modo que utilizaremos a própria solução

da integração numérica para encontrar a solução exata com cinco casas decimais usando a regra de Simpson e variando o número de intervalos de integração até encontrar o resultado no qual ele não difira do anterior na quinta casa decimal. Calcule para a = 0 e b = 1 nas duas primeiras integrais e a = 0,1 e b = 1 na última.

(a) e dxx

a

b−∫

2; (b) ∫

b

a

dxx

xsen; (c)

ln x

xdx

a

b

( )1+∫

Page 96: USP - Cálculo Numérico

Solução Numérica de Equações Diferenciais Ordinárias 7 - 1

Cálculo Numérico e Computacional C.Y. Shigue

Solução Numérica de Equações Diferenciais Ordinárias

Introdução

Diversos problemas técnicos e científicos são descritos matematicamente por equaçõesdiferenciais que representam variações das quantidades físicas que os descrevem. Algunsexemplos de equações diferenciais são:

(1) reação química de 1a ordem BA →← , descrita pela equação A

A kCdt

dC−= , na qual CA é a

concentração do reagente A, k a constante da reação e t o tempo decorrido desde o inícioda reação.

(2) descarga de um circuito elétrico contendo uma resistor em série com um capacitor,

descrito pela equação QC

dt

dQRV +=0 , para a qual V0 é a tensão contínua de alimentação

do circuito, R a resistência, C a capacitância, Q a carga elétrica acumulada no capacitor e

dtdQ

i = a corrente do circuito.

(3) condução de calor num material sólido, descrito pela equação de Fourier dxdT

kAq =& , na

qual q& é o fluxo térmico, k a condutividade térmica, A a área de secção transversal aofluxo térmico, T a temperatura e x a coordenada espacial na direção do fluxo de calor.

(4) pêndulo simples, descrito pela equação θ−=θ

seng

dt

dl2

2, na qual θ é o ângulo formado

pelo pêndulo em relação ao eixo vertical, g a aceleração da gravidade, l o comprimento dopêndulo e t o tempo.

Dos exemplos citados, vemos que o grau (ou ordem) de uma equação diferencial podevariar. O grau de uma equação diferencial é definido pelo termo da equação que contém aderivada de maior ordem. Por exemplo, a seguinte equação diferencial 02 =−+xy é umaequação diferencial de 1o grau porque a derivada y´ é de 1a ordem. Já a equação diferencial

0852 =+−+′+′′−′′′ xyyyxy é uma equação diferencial de 3o grau porque o termo dederivada de maior ordem é de 3a ordem. Se a solução de uma equação diferencial y for umafunção de uma única variável x, isto é, se y = y(x), então a equação diferencial é chamada deequação diferencial ordinária.

Definição

Uma equação diferencial ordinária de grau n é uma equação que pode ser descrita naforma geral como:

)y,,y,y,y,x(fy )n()n( 1−′′′= K (1)

Page 97: USP - Cálculo Numérico

Solução Numérica de Equações Diferenciais Ordinárias 7 - 2

Cálculo Numérico e Computacional C.Y. Shigue

sendo que n

n)n(

dx

ydy ≡ empregando a notação de Leibniz.

Uma equação diferencial ordinária (E.D.O.) de 1a ordem para duas variáveis x e y édefinida como uma equação da forma espacial:

′ = =ydydx

f x y( , ) (2)

ou para duas variáveis y e t, na forma temporal como:

& ( , )ydydt

f y t= = (3)

No caso particular f(x,y) = f(x), podemos obter a solução geral para E.D.O. de 1a ordem (2)por separação de variáveis:

dx)x(fdy)x(fdxdy

y ⋅=⇒==′ (4)

que pode ser integrada diretamente como:

∫ +⋅= Cdx)x(fy (5)

onde C é a constante de integração. Para obtermos uma solução particular (ou seja, um valorespecífico para a constante C), é necessário fornecer uma condição de contorno para aequação (2):

f x y C( , )0 0 0= (4)

Se y = y(x) é uma solução, então dy/dx = f(x,y) e y0 = y(x0) é a condição de contorno daequação (2).Se considerarmos a E.D.O. (3) em que a variável t representa o tempo, então a condição paraobtenção de uma solução particular de (3) é chamada condição inicial (análoga à condição decontorno, somente que esta se aplica a problemas envolvendo apenas coordenadas espaciais).

Exemplo 1

Seja a E.D.O. de 1a ordem: yy =′ , cuja solução analítica geral é expressa por xCey = . Seimpusermos como condição de contorno y(0) = 1, isto é, em x = 0, y = 1 e substituirmos na

solução geral, vem que, CCe == 01 .Portanto, a solução particular da E.D.O. y’ = y é obtida substituindo-se o valor da constantede integração C calculada da condição de contorno y(0) = 1, resultando:

xey =

Page 98: USP - Cálculo Numérico

Solução Numérica de Equações Diferenciais Ordinárias 7 - 3

Cálculo Numérico e Computacional C.Y. Shigue

Exemplo 2Seja a E.D.O. de 1o grau, y' = x + y, cuja solução analítica, obtida pelo Método dos FatoresIntegrantes1, é expressa por: y(x) = Cex -x - 1. Se adotarmos a condição de contorno y(0) = 0,vem que y(0) = C - 1 = 0. Portanto, C = 1, que substituindo na solução geral, resulta a soluçãoparticular: y(x) = ex - x - 1.

É importante salientar que a solução geral representa uma família de soluções (isto é,um conjunto infinito de soluções) e que a solução particular representa uma solução única.Como nos métodos numéricos pressupõe-se que a solução do problema seja única, isto irárequerer na descrição do problema a especificação da condição de contorno juntamente com aequação diferencial.

Método de Euler

O Método de Euler é um método aproximado de 1a ordem, isto é, ele aproxima asolução da E.D.O. de 1o grau y(x) = y(x) por uma função de 1o grau, isto é, por uma reta. AFig. 6.1 ilustra a aproximação da solução exata y = y(x) por uma solução aproximada y ,obtida pelo prolongamento de uma reta tangente à curva de y = y(x) até o valor de x para oqual deseja-se obter a solução da E.D.O.

A equação genérica para o cálculo da solução de uma E.D.O. de 1o grau pelo Métodode Euler é expressa por:

y y hf x yi i i i+ = +1 ( , )para a qual

h x xi i= −+1

Exemplo 3:Seja a E.D.O. y’ = x, com a condição de contorno y(0) = 2. Calcular a solução da E.D.O.empregando o método de Euler em x = 2.No enunciado do exemplo não foi especificado o valor do sub-intervalo de integração h, demodo que vamos calcular inicialmente com h = 1.A equação do método de Euler para a E.D.O. do exemplo tem a forma:

iii xhyy .1 +=+

À partir da condição de contorno, x = 0, até o valor de x = 2, existem dois valores da solução aserem calculados: em x = 1 e em x = 2. A seguir estão apresentadas as contas para o cálculo dasolução aproximada da E.D.O. nesses dois pontos.

1 Matemática Superior, E. Kreyszig, Livros Técnicos e Científicos, Rio de Janeiro,1969, p.69.

Page 99: USP - Cálculo Numérico

Solução Numérica de Equações Diferenciais Ordinárias 7 - 4

Cálculo Numérico e Computacional C.Y. Shigue

(a) h = 1

i = 0 x1 = x0 + h = 0 + 1 = 1y1 = y0 + h.x0 = 2 + 1.0 = 2

i = 1 x2 = x1 + h = 1 + 1 = 2y2 = y1 + h.x1 = 2 + 1.1 = 3

Assim, a solução da E.D.O. y’ = x em x = 2 é igual a y = 3.

Vamos repetir o cálculo agora para h = 0,5

(a) h = 0,5

i = 0 x1 = x0 + h = 0 + 0,5 = 0,5y1 = y0 + h.x0 = 2 + 0,5.0 = 2

i = 1 x2 = x1 + h = 0,5 + 0,5 = 1,0y2 = y1 + h.x1 = 2 + 0,5.0,5 = 2,25

i = 2 x3 = x2 + h = 1,0 + 0,5 = 1,5y3 = y2 + h.x2 = 2,25 + 0,5.1,0 = 2,75

i = 3 x4 = x3 + h = 1,5 + 0,5 = 2,0y4 = y3 + h.x3 = 2,75 + 0,5.1,5 = 3,5

Assim, a solução da E.D.O. y’ = x em x = 2 é igual a y = 3,5.

Vamos comparar os dois resultados com a solução analítica:

∫ ∫ +=⇒=⇒= Cx

ydxxdyxdxdy

2.

2

A constante de integração C é avaliada substituindo-se a condição de contorno na soluçãoanalítica:

220

22)0(2

=⇒+=⇒= CCy

Desta forma, a solução analítica particular para este problema é: 22

2

+=x

y . Calculando-se a

solução exata em x = 2, resulta y(2) = 42222

=+ .

Assim, o erro da solução pelo método de Euler com h = 1 valevalor exato - valor aproximado = 4 - 3 = 1, enquanto que para h = 0,5 o erro vale

Page 100: USP - Cálculo Numérico

Solução Numérica de Equações Diferenciais Ordinárias 7 - 5

Cálculo Numérico e Computacional C.Y. Shigue

4 - 3,5 = 0,5. Observa-se, assim, que quando o intervalo h é reduzido pela metade, o erroreduz-se pela metade.

Para verificarmos este resultado, vamos calcular a solução aproximada de uma outra E.D.O.pelo método de Euler com diferentes valores de h e comparar com a solução exata.

Exemplo 4:Seja a E.D.O. y’ = y, com a condição de contorno y(1) = 1. Calcular a solução da E.D.O.empregando o método de Euler em x = 2, para h = 0,5 e h = 0,25.Neste exemplo, por questão de conveniência, vamos realizar os cálculos numa tabela quesumariza os resultados.A equação do método de Euler para a E.D.O. y’ = y é:

iii yhyy .1 +=+

(a) h = 0,5

i xi yi yi+1

0 1,0 1,0 1,51 1,5 1,5 2,252 2,0 2,25

(b) h = 0,25

i xi yi yi+1

0 1,0 1,0 1,251 1,25 1,25 1,56252 1,5 1,5625 1,95313 1,75 1,9531 2,44144 2,0 2,4414

(c) A solução analítica é dada por:

∫ ∫ ′+=⇒=⇒= Cxydxy

dyy

dxdy

ln

Re-escrevendo a solução analítica na forma y = f(x), resulta:

xCey =

A constante de integração C é calculada a partir da condição de contorno do problema:

1111)1( −=⇒=⇒= eCCey

Page 101: USP - Cálculo Numérico

Solução Numérica de Equações Diferenciais Ordinárias 7 - 6

Cálculo Numérico e Computacional C.Y. Shigue

que, substituindo na solução analítica geral, resultará na expressão: 1−= xey como soluçãoanalítica particular do problema.Calculando-se a solução exata em x = 2, obtém-se y(2) = e2-1 = e1 = 2,7183. Comparando-se oresultado exato com os resultados aproximados de (a) e (b), resulta:

h = 0,5 erro = 2,7183 – 2,25 = 0,47h = 0,25 erro = 2,7183 – 2,4414 = 0,28

o que corresponde a uma redução de 1,7 vezes no erro quando o intervalo h é reduzido pelametade.

Método de Euler Estendido

Para reduzir o erro de truncamento do Método de Euler, propôs-se a aproximação dasolução y(x) = y(x) por uma função de 2a ordem, a partir da série de Taylor, na forma:

y y hf x yh

f x yi i i i i i+ = + + ′1

2

2( , ) ( , )

Observar que, além do cálculo da derivada da função y = y(x), este método requer o cálculo dasua derivada segunda também.

Método de Euler Modificado ou Aperfeiçoado

Para evitar o cálculo da derivada segunda, propôs-se o Método de Euler Modificado,que consiste na correção do valor estimado yi+1 , tomando-se a derivada da função y = y(x)em xi+1 e calculando-se a inclinação da reta de aproximação em xi como a média entre asinclinações das retas tangentes em xi e xi+1.

[ ]y yh

f x y f x h yi i i i i i+ += + + +1 12( , ) ( ,

Métodos de Runge-Kutta

Os Métodos de Runge-Kutta consistem em métodos de aproximação de 2a e 4a ordem.No caso do Método de Runge-Kutta de 2a ordem, a expressão para o cálculo aproximado deyi+1 é equivalente à do Método de Euler Modificado, ou seja,

[ ]y yh

f x y f x h yi i i i i i+ += + + +1 12( , ) ( ,

que pode ser reescrito na forma:

Page 102: USP - Cálculo Numérico

Solução Numérica de Equações Diferenciais Ordinárias 7 - 7

Cálculo Numérico e Computacional C.Y. Shigue

( )y yh

k k

k f x y k f x h y hk

i i

i i i i

+ = + +

= = + +

1 1 2

1 2 1

2( , ) ( , )

A fórmula do Método de Runge-Kutta de 4a ordem é dada por:

( )y yh

k k k k

k f x y

k f x h y hk

k f x h y hk

k f x h y hk

i i

i i

i i

i i

i i

+ = + + + +

== + += + += + +

1 1 2 3 4

1

2 1

3 2

2 3

62 2

2 2

2 3

( , )

( / , / )

( / , / )

( , )

Exemplo 5Seja a equação diferencial ordinária y’ – y = 1 – x, com a condição de contorno y(1) = -2,calcular a solução numérica empregando o método de Euler, o método de Euler Modificado eo método de Runge-Kutta de 4a ordem. Vamos verificar numericamente que a solução pelométodo de Runge-Kutta de 2a ordem é igual à do método de Euler Modificado. Sendo asolução exata y(x) = Cex + x, vamos calcular a constante de integração e, à partir da soluçãoexata particular, determinar o erro para cada um dos métodos numéricos.

SoluçãoRe-escrevendo a E.D.O. na forma canônica, y’ = y – x + 1, vem que:

f(x,y) = y – x + 1

A condição de contorno, x0 = 1, y0 = -2 que, substituindo na solução exata geral, y(x) = Cex +x, vem que C = -1,10364, de modo que a solução exata particular da E.D.O. é expressa como:

y(x) = -1,10364ex + x (solução exata)

1. Método de Euler h = 0.2

yi+1 = yi + h.f(xi,yi) = yi + h.(yi – xi + 1)

Os resultados dos cálculos estão apresentados na Tabela seguinte.

i xi yi yexato erro = |yi - yexato| f(xi,yi) xi+1 yi+1

0 1.0 -2.00 -2.00 0.00 -2.00 1.2 -2.401 1.2 -2.40 -2.46 0.06 -2.60 1.4 -2.922 1.4 -2.92 -3.08 0.16 -3.32 1.6 -3.583 1.6 -3.58 -3.87 0.28 -4.18 1.8 -4.424 1.8 -4.42 -4.88 0.46 -5.22 2.0 -5.46

Page 103: USP - Cálculo Numérico

Solução Numérica de Equações Diferenciais Ordinárias 7 - 8

Cálculo Numérico e Computacional C.Y. Shigue

5 2.0 -5.46 -6.15 0.69 -6.46 2.2 -6.766 2.2 -6.76 -7.76 1.00 -7.96 2.4 -8.357 2.4 -8.35 -9.77 1.42 -9.75 2.6 -10.308 2.6 -10.30 -12.26 1.96 -11.90 2.8 -12.689 2.8 -12.68 -15.35 2.67 -14.48 3.0 -15.58

10 3.0 -15.58 -19.17 3.59 -17.58 3.2 -19.0911 3.2 -19.09 -23.88 4.78 -21.29 3.4 -23.3512 3.4 -23.35 -29.67 6.32 -25.75 3.6 -28.5013 3.6 -28.50 -36.79 8.29 -31.10 3.8 -34.7214 3.8 -34.72 -45.53 10.82 -37.52 4.0 -42.2215 4.0 -42.22 -56.26 14.04 -45.22 4.2 -51.2716 4.2 -51.27 -69.40 18.13 -54.47 4.4 -62.1617 4.4 -62.16 -85.49 23.33 -65.56 4.6 -75.2718 4.6 -75.27 -105.19 29.92 -78.87 4.8 -91.0419 4.8 -91.04 -129.30 38.26 -94.84 5.0 -110.0120 5.0 -110.01 -158.79 48.78 -114.01 5.2 -132.82

2. Método de Euler Modificado h = 0.2

y'(xi) = f(xi,yi) y'(xi+1) = f(xi+1,y*i+1) y'm = [y'(xi) + y'(xi+1)] / 2

yi+1 = yi + h.y’m

i xi yi yexato erro y'(xi) xi+1 y*i+1 y'(xi+1) y'm yi+1

0 1.0 -2.00 -2.00 0.00 -2.00 1.2 -2.40 -2.60 -2.30 -2.461 1.2 -2.46 -2.46 0.00 -2.66 1.4 -2.99 -3.39 -3.03 -3.072 1.4 -3.07 -3.08 0.01 -3.47 1.6 -3.76 -4.36 -3.91 -3.853 1.6 -3.85 -3.87 0.02 -4.45 1.8 -4.74 -5.54 -4.99 -4.854 1.8 -4.85 -4.88 0.03 -5.65 2.0 -5.98 -6.98 -6.31 -6.115 2.0 -6.11 -6.15 0.05 -7.11 2.2 -7.53 -8.73 -7.92 -7.696 2.2 -7.69 -7.76 0.07 -8.89 2.4 -9.47 -10.87 -9.88 -9.677 2.4 -9.67 -9.77 0.10 -11.07 2.6 -11.88 -13.48 -12.27 -12.128 2.6 -12.12 -12.26 0.14 -13.72 2.8 -14.87 -16.67 -15.20 -15.169 2.8 -15.16 -15.35 0.19 -16.96 3.0 -18.55 -20.55 -18.76 -18.9110 3.0 -18.91 -19.17 0.25 -20.91 3.2 -23.10 -25.30 -23.11 -23.5311 3.2 -23.53 -23.88 0.34 -25.73 3.4 -28.68 -31.08 -28.41 -29.2212 3.4 -29.22 -29.67 0.45 -31.62 3.6 -35.54 -38.14 -34.88 -36.1913 3.6 -36.19 -36.79 0.60 -38.79 3.8 -43.95 -46.75 -42.77 -44.7514 3.8 -44.75 -45.53 0.79 -47.55 4.0 -54.26 -57.26 -52.40 -55.2315 4.0 -55.23 -56.26 1.03 -58.23 4.2 -66.87 -70.07 -64.15 -68.0616 4.2 -68.06 -69.40 1.34 -71.26 4.4 -82.31 -85.71 -78.48 -83.7517 4.4 -83.75 -85.49 1.74 -87.15 4.6 -101.18 -104.78 -95.97 -102.9518 4.6 -102.95 -105.19 2.25 -106.55 4.8 -124.26 -128.06 -117.30 -126.4119 4.8 -126.41 -129.30 2.90 -130.21 5.0 -152.45 -156.45 -143.33 -155.0720 5.0 -155.07 -158.79 3.72 -159.07 5.2 -186.89 -191.09 -175.08 -190.09

Page 104: USP - Cálculo Numérico

Solução Numérica de Equações Diferenciais Ordinárias 7 - 9

Cálculo Numérico e Computacional C.Y. Shigue

3. Método de Runge-Kutta de 2a ordem h = 0.2

k1 = f(xi,yi) k2 = f(xi + h,yi + hk1)

yi+1 = yi + h/2.(k1 + k2)

i xi yi yexato erro k1 k2 xi+1 yi+1

0 1.0 -2.00 -2.00 0.00 -2.00 -2.60 1.20 -2.461 1.2 -2.46 -2.46 0.00 -2.66 -3.39 1.40 -3.072 1.4 -3.07 -3.08 0.01 -3.47 -4.36 1.60 -3.853 1.6 -3.85 -3.87 0.02 -4.45 -5.54 1.80 -4.854 1.8 -4.85 -4.88 0.03 -5.65 -6.98 2.00 -6.115 2.0 -6.11 -6.15 0.05 -7.11 -8.73 2.20 -7.696 2.2 -7.69 -7.76 0.07 -8.89 -10.87 2.40 -9.677 2.4 -9.67 -9.77 0.10 -11.07 -13.48 2.60 -12.128 2.6 -12.12 -12.26 0.14 -13.72 -16.67 2.80 -15.169 2.8 -15.16 -15.35 0.19 -16.96 -20.55 3.00 -18.9110 3.0 -18.91 -19.17 0.25 -20.91 -25.30 3.20 -23.5311 3.2 -23.53 -23.88 0.34 -25.73 -31.08 3.40 -29.2212 3.4 -29.22 -29.67 0.45 -31.62 -38.14 3.60 -36.1913 3.6 -36.19 -36.79 0.60 -38.79 -46.75 3.80 -44.7514 3.8 -44.75 -45.53 0.79 -47.55 -57.26 4.00 -55.2315 4.0 -55.23 -56.26 1.03 -58.23 -70.07 4.20 -68.0616 4.2 -68.06 -69.40 1.34 -71.26 -85.71 4.40 -83.7517 4.4 -83.75 -85.49 1.74 -87.15 -104.78 4.60 -102.9518 4.6 -102.95 -105.19 2.25 -106.55 -128.06 4.80 -126.4119 4.8 -126.41 -129.30 2.90 -130.21 -156.45 5.00 -155.0720 5.0 -155.07 -158.79 3.72 -159.07 -191.09 5.20 -190.09

4. Método de Runge-Kutta de 4a ordem h = 0.2

k1 = f(xi,yi) k2 = f(xi + h/2,yi + hk1/2)

k3 = f(xi + h/2,yi + hk2/2) k4 = f(xi + h,yi + hk3)

yi+1 = yi + h/6.(k1 + 2k2 + 2k3 + k4)

i xi yi yexato erro k1 k2 k3 k4 xi+1 yi+1

0 1.0 -2.00 -2.00 0.00 -2.00 -2.30 -2.33 -2.67 1.20 -2.461 1.2 -2.46 -2.46 0.00 -2.66 -3.03 -3.07 -3.48 1.40 -3.082 1.4 -3.08 -3.08 0.00 -3.48 -3.92 -3.97 -4.47 1.60 -3.873 1.6 -3.87 -3.87 0.00 -4.47 -5.01 -5.07 -5.68 1.80 -4.884 1.8 -4.88 -4.88 0.00 -5.68 -6.34 -6.41 -7.16 2.00 -6.155 2.0 -6.15 -6.15 0.00 -7.15 -7.97 -8.05 -8.97 2.20 -7.766 2.2 -7.76 -7.76 0.00 -8.96 -9.96 -10.06 -11.17 2.40 -9.777 2.4 -9.77 -9.77 0.00 -11.17 -12.38 -12.50 -13.87 2.60 -12.268 2.6 -12.26 -12.26 0.00 -13.86 -15.34 -15.49 -17.16 2.80 -15.359 2.8 -15.35 -15.35 0.00 -17.15 -18.96 -19.14 -21.18 3.00 -19.17

Page 105: USP - Cálculo Numérico

Solução Numérica de Equações Diferenciais Ordinárias 7 - 10

Cálculo Numérico e Computacional C.Y. Shigue

10 3.0 -19.17 -19.17 0.00 -21.17 -23.38 -23.61 -26.09 3.20 -23.8711 3.2 -23.87 -23.88 0.00 -26.07 -28.78 -29.05 -32.08 3.40 -29.6712 3.4 -29.67 -29.67 0.00 -32.07 -35.38 -35.71 -39.41 3.60 -36.7913 3.6 -36.79 -36.79 0.00 -39.39 -43.43 -43.83 -48.36 3.80 -45.5314 3.8 -45.53 -45.53 0.00 -48.33 -53.27 -53.76 -59.28 4.00 -56.2515 4.0 -56.25 -56.26 0.00 -59.25 -65.28 -65.88 -72.63 4.20 -69.3916 4.2 -69.39 -69.40 0.00 -72.59 -79.95 -80.69 -88.93 4.40 -85.4917 4.4 -85.49 -85.49 0.00 -88.89 -97.88 -98.78 -108.84 4.60 -105.1918 4.6 -105.19 -105.19 0.00 -108.79 -119.77 -120.87 -133.16 4.80 -129.3019 4.8 -129.30 -129.30 0.01 -133.10 -146.51 -147.85 -162.87 5.00 -158.7920 5.0 -158.79 -158.79 0.01 -162.79 -179.17 -180.80 -199.15 5.20 -194.85

Para comparação visual, o gráfico contendo as soluções numéricas e a solução exata estámostrado na Fig. 1 e os resultados numéricos resumidos na Tabela seguinte.

Tabela comparativa dos resultados numéricos e exato.

x Euler Euler Modificado Runge-Kutta 4a ordem Solução exata

1.0 -2.00 -2.00 -2.00 -2.001.2 -2.40 -2.46 -2.46 -2.461.4 -2.92 -3.07 -3.08 -3.081.6 -3.58 -3.85 -3.87 -3.871.8 -4.42 -4.85 -4.88 -4.882.0 -5.46 -6.11 -6.15 -6.152.2 -6.76 -7.69 -7.76 -7.762.4 -8.35 -9.67 -9.77 -9.772.6 -10.30 -12.12 -12.26 -12.262.8 -12.68 -15.16 -15.35 -15.353.0 -15.58 -18.91 -19.17 -19.173.2 -19.09 -23.53 -23.87 -23.883.4 -23.35 -29.22 -29.67 -29.673.6 -28.50 -36.19 -36.79 -36.793.8 -34.72 -44.75 -45.53 -45.534.0 -42.22 -55.23 -56.25 -56.264.2 -51.27 -68.06 -69.39 -69.404.4 -62.16 -83.75 -85.49 -85.494.6 -75.27 -102.95 -105.19 -105.194.8 -91.04 -126.41 -129.30 -129.305.0 -110.01 -155.07 -158.79 -158.79

Page 106: USP - Cálculo Numérico

Solução Numérica de Equações Diferenciais Ordinárias 7 - 11

Cálculo Numérico e Computacional C.Y. Shigue

-160

-140

-120

-100

-80

-60

-40

-20

0

0.0 1.0 2.0 3.0 4.0 5.0x

y(x)

Euler

Euler Mod.

Runge-Kutta

Exato

Fig. 1 Gráfico com as soluções numéricas e exata da E.D.O. y’ – y = x – 1.

Exercícios propostos

1. Calcular a solução das seguintes E.D.O. de 1o grau nos valores indicados, utilizando ométodo de Euler e compare com a solução exata à partir da solução analítica:

(a) y’ + 2y = x2, y(0) = 0,25, y(2)h = 0,5 e h = 0,25

Solução analítica: Cxx

y +−=22

2

(b) y’ + y = sen x, y(0) = -0,5, y(2)h = 1,0 e h = 0,5Solução analítica: )cos(sen xxCy −=

(c) y’ + 2y = x, y(0) = 1, y(3)h = 1 e h = 0,5

Solução analítica: xCex

y 2

41

2−+−=

(d) y’ – y = 1 – x, y(1) = -2, y(2)h = 0,5 e h = 0,2Solução analítica: xCey x −=