Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Apostila calc numerico, Notas de estudo de Engenharia Civil

Apostila de Cálculo Numérico - Por: <br>Marcelo Gameiro Munhoz <br>Antonio Cesar Germano Martins <br>

Tipologia: Notas de estudo

Antes de 2010

Compartilhado em 16/08/2006

hugo-makoto-6
hugo-makoto-6 🇧🇷

4.7

(78)

241 documentos

1 / 36

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Apostila de
Complementos de
Cálculo Numérico
2002
Marcelo Gameiro Munhoz
1
Apostila de Complementos de Cálculo Numérico
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24

Pré-visualização parcial do texto

Baixe Apostila calc numerico e outras Notas de estudo em PDF para Engenharia Civil, somente na Docsity!

Apostila de

Complementos de

Cálculo Numérico

Marcelo Gameiro Munhoz

1

Antonio Cesar Germano Martins

2

onde k e Is são constantes, q é a carga do elétron e T a temperatura do dispositivo. Essa
equação corresponde ao modelo matemático do diodo (não se preocupe em entender esta
equação, pois isto é só um exemplo).
Portanto, ao se incluir o diodo no circuito da Figura 1.1, tem-se a seguinte equação
descrevendo o comportamento da corrente elétrica no circuito:
A inclusão desse novo componente no circuito tornou nosso problema mais
complicado e de difícil solução analítica. O que isso quer dizer? Tornou-se difícil se obter
uma expressão para i , principalmente quando comparado ao caso anterior, quando tínhamos
simplesmente i=V/R.
Como resolver esse problema então? Como obter o valor de i? A solução está na
utilização de métodos numéricos que serão aprendidos neste curso.

1. 2 A importância do curso de Cálculo Numérico

Ao resolver um problema matemático numericamente, o mais comum é o profissional
utilizar um pacote computacional. Porém, ele terá que tomar uma série de decisões antes de
resolver o problema. E para tomar essas decisões, é preciso ter conhecimento de métodos
numéricos. O profissional terá que decidir:
  • Pela utilização ou não de um método numérico (existem métodos numéricos para se
resolver este problema?);
  • Escolher o método a ser utilizado, procurando aquele que é mais adequado para o seu
problema. Que vantagens cada método oferece e que limitações eles apresentam;
  • Saber avaliar a qualidade da solução obtida. Para isso, é importante ele saber
exatamente o que está sendo feito pelo computador ou calculadora, isto é, como
determinado método é aplicado.

1.3 Objetivos do Curso:

Os principais objetivos do curso são:
  • Apresentar diversos métodos numéricos para a resolução de diferentes problemas
matemáticos. Pretende-se deixar bem claro a importância desses métodos, mostrando:
  • a essência de um método numérico;
  • a diferença em relação a soluções analíticas;
  • as situações em que eles devem ser aplicados;
  • as vantagens de se utilizar um método numérico;
  • e as limitações na sua aplicação e confiabilidade na solução obtida.
  • Melhorar a familiarização e “intimidade” do aluno com a matemática, mostrando seu
lado prático e sua utilidade no dia-a-dia de um engenheiro. Rever conceitos já vistos,
exercitá-los e utilizá-los de maneira prática;

4

  • Apresentar ao aluno maneiras práticas de se desenvolver e utilizar métodos numéricos.
Isso significa mostrar como usar esses métodos numéricos na calculadora e em um
computador;
  • Treinar o aluno a aprender outros métodos numéricos por conta própria. No seu dia-a-dia
profissional, ele pode se deparar com um problema cuja solução depende de um método
numérico que não foi visto no curso. Portanto, ele deverá ser capaz de encontrar a
literatura pertinente, estudar o método e aprender a sua utilização de maneira conceitual
e prática (usando um aplicativo computacional) por conta própria.

5

Sinal Dígitos

Figura 2.1 - Representação de números inteiros.

Para um número real qualquer (inteiro ou não inteiro) é utilizada a representação de ponto flutuante , que é dada pela expressão: F 0 B 1(0.d 1 d2d3 ...d0 0 1 F (^) t F 0 B 4) b e onde: 0.d 1 d2 d3 ...d0 0 1 F (^) t é uma fração na base b , também chamada de mantissa , com 0 F 0 A 3dF 0 A 3 (^) i b-1 , para todo i = 1,2,3,...,t , sendo t o número máximo de dígitos da mantissa que é determinado pelo comprimento de palavra do computador; e é um expoente que varia em um intervalo dado pelos limites da máquina utilizada. Esse tipo de representação é chamada de ponto flutuante pois o ponto da fração “flutua” conforme o número a ser representado e sua posição é expressa pelo expoente e. A figura 2.1 ilustra essa representação.

Sinal posição do ponto = expoente e dígitos = mantissa

Figura 2.2 - Representação de números reais.

Alguns exemplos da representação de ponto flutuante pode ser visto na tabela a seguir:

Número na base decimal Representação em ponto flutuante mantissa base Expoente 1532 0.1532F 0 B 4 104 0.1532 10 4 15.32 0.1532F 0 B 4 102 0.1532 10 2 0.00255 0.255F 0 B 4 10 -2^ 0.255 10 - (^10) 0.10F 0 B 4 102 0.10 10 1 (^10) 0.1010F 0 B 4 24 0.1010 2 4

3. Aplicação à Linguagem de Programação C

Na linguagem C é possível especificar a representação que deve ser usada para os números a serem armazenados em uma dada variável. Para números inteiros (representação de ponto fixo) existem duas palavras chaves para declarar uma variável: int e long. A diferença entre essas duas representações é o número de dígitos a ser usado. No caso do int , utiliza-se 15 dígitos binários e mais um dígito para o sinal, ou seja, 16 bits que é igual a 2 bytes. Portanto, uma variável declarada com int pode armazenar números de –32768 (=-2 15 ) a +32767 (=2 15 -1). Já a palavra chave long corresponde a representação de ponto fixo com 32 bits (31 dígitos binários para o número mais um dígito para o sinal), ou seja, 4 bytes. Neste caso, uma variável declarada como long pode armazenar números de – 2.147.483.648 (= -2 31 ) a 2.147.483.647 (=2 31 -1).

7

No caso da representação de ponto flutuante, também existem duas palavras: float e double. A palavra float corresponde a representação com base binária ( b=2 ), número máximo de dígitos igual a 24 ( t=24 ) e expoente entre –126 e 127. Portanto, uma variável declarada como float pode armazenar números reais entre ~10-38^ e ~10 38. Já a palavra chave double apresenta um

número máximo de dígitos igual a 53 ( t=53 ) e expoente entre –1022 e 1023, ou seja, varáveis declaradas como double podem armazenar números entre ~10-307^ a ~10 307.

8

O erro cometido ao se calcular o valor de , por exemplo, é apenas um tipo de erro que pode surgir ao se resolver um problema real. Outros tipos de erros também podem aparecer devido a outros tipos de problemas ou limitações. A solução matemática de um determinado problema envolve diversas etapas, como discutido na introdução desta apostila. A solução do problema se inicia com a criação de um modelo matemático do sistema em questão. Esse modelo sempre apresentará aproximações e limitações. Além disso, na grande maioria das vezes, dados experimentais serão utilizados para se obter a solução. Como toda medida experimental apresenta uma incerteza, a solução do problema será influenciada pelas mesmas. Portanto, logo de início, existem diversos fatores que introduzem incertezas na solução numérica do problema. Esse tipo de erro é chamado de erro inicial. O problema discutido na introdução deste capítulo para o cálculo de , que se refere a inevitável limitação na representação de números irracionais (por exemplo), introduz erros no resultado. Esse tipo de erro é chamado de erro de arredondamento. Vamos considerar um outro tipo de problema prático que pode surgir ao realizarmos determinadas operações. Digamos que precisamos calcular o valor de e x. Mais uma vez, iremos utilizar uma máquina digital (calculadora ou computador). Como esse equipamento irá realizar essa operação? Sabemos que a exponencial é uma função que pode ser representada por uma série infinita dada por:

(3.3)

e na prática é impossível calcular seu valor exato. Portanto, mais uma vez, teremos que fazer uma aproximação, que levará a um erro no resultado final de ex. Neste caso, faremos um truncamento dessa série, e o erro gerado no valor de e x^ é chamado de erro de truncamento.

3. Propagação e Condicionamento de Erros Numéricos

Vamos supor que queremos calcular o valor de - e^3. Como vimos anteriormente, ao calcularmos o valor de , teremos que realizar um arredondamento, que leva ao um resultado aproximado de , ou seja, existe um erro de arredondamento associado ao resultado. Para calcularmos o valor de e^3 teremos que fazer um truncamento, que também irá gerar um erro no resultado

obtido. Portanto, o resultado da operação de subtração entre e e 3 apresentará um erro que é proveniente dos erros nos valores de e e 3 separadamente. Em outras palavras, os erros nos valores de e e 3 se propagam para o resultado de - e^3. Podemos concluir

então que, ao se resolver um problema numericamente, a cada etapa e a cada operação realizada, devem surgir diferentes tipos de erros gerados das mais variadas maneiras, e estes erros se propagam e determinam o erro no resultado final obtido. A propagação de erros é muito importante pois, além de determinar o erro final de uma operação numérica, ela também determina a sensibilidade de um determinado problema ou método numérico. Se uma pequena variação nos dados de entrada de um problema levar a uma grande diferença no resultado final, considera-se que essa operação é mal-condicionada , ou seja, existe uma grande propagação de erros nessa operação. Por outro lado, se uma pequena variação nos dados de entrada leva a apenas uma pequena diferença no resultado final, então essa operação é bem-condicionada.

4. Erros na Aritmética de Ponto Flutuante

10

Nós vimos nas seções anteriores que ao manipularmos os números de maneira prática, estaremos sempre trabalhando com erros, devido a diversos fatores. Vamos agora examinar os erros mais comuns que aparecem quando um computador manipula os números. O primeiro tipo de erro que está presente na forma como computadores trabalham com números corresponde aos erros de arredondamento e truncamento. Como citado anteriormente, esses erros estão presentes pois os computadores precisam representar os números com uma quantidade finita de algarismos. Vamos supor, para simplificação, um computador com uma representação de ponto flutuante na base decimal ( b=10 ) e uma mantissa de 4 algarismos ( t=4 ). A fim de representarmos em ponto flutuante nesse computador, por exemplo, o número 734,68, teríamos que trunca-lo para 0,7346F 0 B 4 103 ou arredonda-lo para 0,7347F 0 B 4 103. Portanto, no truncamento, estaríamos

cometendo um erro de 0,8F 0 B 4 10 -1^ e no arredondamento, um erro de 0,2F 0 B 4 10 -1^. Podemos generalizar esse exemplo e dizer que, em uma representação de ponto flutuante na base b e mantissa de t algarismos, os erros de truncamento serão dados por:

(3.4)

onde o número em questão foi representado na forma x=fF 0 B 4 (^) x b e. E os erros de arredondamento serão dados por:

(3.5)

Portanto, para uma representação numérica com t=24 ou t=53 (como no caso da maioria dos computadores) esse erro é muito pequeno. Apesar de pequeno, é importante lembrar que ele se propagará nas operações aritméticas realizadas pelo computador. Vamos tomar como exemplo a soma dos números 6563 (= 0,6563F 0 B 4 104 ) e 3,375 (= 0,3375F 0 B 4 101 ) no nosso computador fictício

de mantissa com 4 algarismos. A soma desses dois números corresponde a 6566,375. Como nosso computador pode representar com apenas 4 algarismos, o resultado dessa operação será 0,6566F 0 B 4 104 = 6566. Ou seja, apesar de partirmos de dois números exatos, o resultado da soma não será exata. Mais uma vez, para um computador real, esse erro será pequeno, porém, se um número muito grande de operações for realizado e se existir a necessidade de se obter um resultado bastante preciso, será necessário se levar em consideração esse tipo de erro para avaliar o resultado obtido. Existe mais um tipo de erro que aparece quando computadores manipulam números. Esse erro se refere à conversão de números de uma base para a outra. O tipo de conversão mais comum é da base decimal (usada por humanos) para a base binária (usada por computadores) e vice-versa. Um exemplo bastante peculiar é o número 0,1. Ao convertermos esse número da base decimal para a base binária (existem diversos algoritmos para se realizar essa conversão, mas não vamos entrar nesse detalhe aqui), obtemos como resposta:

(0,1) 10 = (0,0001100110011...) 2 (3.6)

onde representamos com um subscrito a base em que esse número está escrito. Portanto, notamos que, ao se converter o número 0,1 da base decimal para a base binária, obtemos um número com infinitos algarismos! Como esse número não pode ser representado pelo computador, ele será truncado, introduzindo um erro na sua representação. Uma forma interessante de constatar esse problema é escrevendo um pequeno programa que calcule o valor de. Você verá que esse número não é igual a 100!

11

4. Resolução Numérica de Equações (Zero de

Funções)

1. Introdução

No exemplo usado na introdução desta apostila, vimos que ao tentar calcularmos a corrente elétrica de um circuito simples contendo apenas uma bateria, um resistor e um diodo, já nos deparamos com um problema matemático de difícil solução. Esse problema corresponde ao cálculo do valor da corrente i que satisfaz a equação

(4.1)

Em outras palavras, precisamos resolver ou encontrar o zero da função acima. Neste capítulo iniciaremos o estudo de métodos numéricos que nos permitirão resolver problemas como esse.

2. Zeros ou Raízes de Funções

Dada uma função f(x) , dizemos queF 0 6 1é raiz, ou zero de f se e somente F 0 6 1f( )=0. Graficamente, os zeros de uma função f(x) correspondem aos valores de x em que a função intercepta o eixo horizontal do gráfico, como mostrado na figura 4.1. Figura 4.1 - Interpretação gráfica do zero de uma função.

A função g(x) da figura 4.1 tem 5 raízes no intervalo [ a , b ]: x 1 , x 2 , x 3 , x 4 , x 5. As raízes de uma função podem ser encontradas analiticamente, ou seja, resolvendo a equação f(x)=0 de maneira exata, como mostrado nos exemplos a seguir:

Porém, nem sempre é possível se encontrar analiticamente a raiz de uma função, como nos casos a seguir:

Nestes casos precisamos de um método numérico para encontrar uma estimativa para a raiz da função estudada, ou seja, um valor tão aproximado quando se deseje. Tais métodos devem envolver as seguintes etapas: (a) Determinação de um intervalo em x que contenha pelo menos uma raiz da função f(x) , ou seja, isolamento das raízes ;

13

(b) Calculo da raiz aproximada através de um processo iterativo até a precisão desejada.

3. Processos Iterativos

Existe um grande número de métodos numéricos que são processos iterativos. Como o próprio nome já diz (consulte um dicionário para verificar o significado de iterativo ), esses processos se caracterizam pela repetição de uma determinada operação. A idéia nesse tipo de processo é repetir um determinado cálculo várias vezes, obtendo-se a cada repetição ou iteração um resultado mais preciso que aquele obtido na iteração anterior. E, a cada iteração utiliza-se o resultado da iteração anterior como parâmetro de entrada para o cálculo seguinte. Alguns aspectos comuns a qualquer processo iterativo, são:

  • Estimativa inicial : como um processo iterativo se caracteriza pela utilização do resultado da iteração anterior para o cálculo seguinte, a fim de se iniciar um processo iterativo, é preciso que se tenha uma estimativa inicial do resultado do problema. Essa estimativa pode ser conseguida de diferentes formas, conforme o problema que se deseja resolver;
  • Convergência : a fim de se obter um resultado próximo do resultado real, é preciso que a cada passo ou iteração, o resultado esteja mais próximo daquele esperado, isto é, é preciso que o método convirja para o resultado real. Essa convergência nem sempre é garantida em um processo numérico. Portanto, é muito importante se estar atento a isso e realizar a verificação da convergência do método para um determinado problema antes de tentar resolvê-lo;
  • Critério de Parada : obviamente não podemos repetir um processo numérico infinitamente. É preciso pará-lo em um determinado instante. Para isso, devemos utilizar um certo critério, que vai depender do problema a ser resolvido e da precisão que precisamos obter na solução. O critério adotado para parar as iterações de um processo numérico é chamado de critério de parada.

Para encontrarmos as raízes ou zeros de uma função iremos utilizar métodos numéricos iterativos. Como já mencionado, o primeiro passo para se resolver um processo iterativo corresponde a obtenção de uma estimativa inicial para o resultado do problema. No caso de zeros de funções, usamos a operação chamada de isolamento de raízes , que veremos na seção seguinte.

4. Isolamento de Raízes

Para determinarmos o número e a localização aproximada de raízes de uma função, a fim de obtermos uma estimativa inicial a ser usada nos processo iterativos, podemos examinar o comportamento dessa função através de um esboço gráfico. Por exemplo, seja uma função f(x) tal que:

f( x ) = g( x ) - h( x ) (4.2)

As raízes de f(x), são tais que:

g( x ) – h (x ) = 0 (4.3) ou ainda: g( x ) = h (x ) (4.4)

14

x 1 2 3 4 f(x) -3.20 -1.81 0.10 2.

Pelo teorema de Bolzano, concluímos que existe pelo menos uma raiz real no intervalo [2,3].

5. Método da Dicotomia ou Bissecção.

O método da dicotomia ou bissecção é a forma mais intuitiva de se obter a raiz de uma função. Seja uma função f(x) contínua em um intervalo [ a,b ], eF 0 6 1uma raiz de f(x ) isolada neste intervalo através de um dos métodos descritos no item anterior. Inicialmente, subdividimos este intervalo em suas duas metades, ou seja: Verificamos se a raiz está contida na primeira ou na segunda metade do intervalo inicial, usando o teorema de Bolzano. Ou seja, se a função f(x) mudar de sinal entre a e saberemos que a raiz está nessa primeira metade do intervalo [ a , b ]. Caso a função f(x) mude de sinal entre e b , a raiz deverá estar na segunda metade do intervalo original. Em seguida repetimos o processo para aquela metade que contém a raiz de f(x) : dividimos o intervalo ao meio e verificamos em qual metade está a raiz. Podemos continuar repetindo esse processo indefinidamente. A estimativa da raizF 0 6 1em cada etapa será o ponto médio do intervalo em estudo onde sabemos que existe uma raiz. E, como todo processo numérico, é importante estimarmos o erro nesse resultado obtido. No caso do método da bissecção, o erro na estimativa será dado pela metade do comprimento do intervalo em estudo. A seguir, uma ilustração desse processo, onde os sinais acima do eixo horizontal representam o sinal da função:

16

Exemplo: Encontre uma estimativa para a raiz de:

com um erro menor ou igual a 0,050.

Os gráficos de e x^ e de - x são:

Através da interseção mostrada no grafíco, podemos concluir que a raiz de f(x) F 0 C E[-1,0]. Utilizando o método da dicotomia, temos:

17

Podemos estar satisfazendo (1) e, entretanto, f(x 0 ) pode ser muito maior que zero. Assim, em certos casos pode-se usar a seguinte condição:

F 0 A 3erro estipulado (4.6)

Tanto o critério (4.5), quanto o critério (4.6), podem levar a um número muito grande de iterações. Uma maneira de se contornar este problema é tomar como um critério de parada adicional, um certo número de iterações máximo.

6.1.. Estimativa do número de iterações no método da bisseção.

Como, no método da bisseção, em cada passo, dividimos o intervalo por 2, temos:

(4.7)

onde k é o número de iterações e [ a (^) o , bo ] é o intervalo inicial que isola a raiz da função.

Dado o seguinte critério de parada:

(4.8)

onde F 0 6 5 é o erro estipulado, temos que:

(4.9)

De (4.9) em (4.7):

(4.10)

Re-arranjando os termos em (4.10):

(4.11)

Tomando o log de ambos os lados de (4.11):

(4.12)

e usando as propriedades do log segue que:

(4.13)

A expressão (4.13) dá o número de iterações necessárias para que o critério de parada, definido em (4.8), seja satisfeito.

19

7. Método das Aproximações Sucessivas ou Método de

Iteração Linear (MIL)

O método da iteração linear é um processo iterativo que apresenta vantagens e desvantagens em relação ao método da bissecção. Seja uma função f(x) contínua em um intervalo [ a,b ] que contenha uma raiz de f(x). O Método de Iteração Linear inicia- se reescrevendo a função f(x) como,

f(x) =F 0 6 A(x) – x (4.14)

Essa forma de escrever f(x) é bastante útil. No ponto x que corresponde à raiz de f(x) , isto é, f(x) = 0 , teremos que:

f(x) =F 0 6 A(x) – x =0 (4.15) F 0 6 A(x) = x (4.16)

ou seja, no ponto x que corresponde à raiz de f(x) , ao substituirmos o valor de x na função F 0 6 A(x) , teremos como resultado o próprio valor de x. Portanto, a raiz de f(x) será o ponto fixo de F 0 6 A(x) , ou seja, o valor que ao ser substituído em F 0 6 A(x) retorna o próprio valor de x. Por exemplo, a função f(x) = x^2 - x – 2 pode ser reescrita como, f(x) = x 2 – 2 – x =F 0 6 A(x) – x , onde F 0 6 A(x) = x 2 – 2. Essa função tem como ponto fixo o valor x=2 , pois F 0 6 A(2) = 2 2 – 2 = 2. E esse é exatamente o valor da raiz de

f(x) , pois f(2) = 2^2 – 2 – 2 = 0. Portanto, para encontrarmos a raiz de f(x) , podemos encontrar o valor numérico que ao substituirmos em F 0 6 A(x) retorna o próprio valor de x. Para encontrarmos esse valor de x , vamos utilizar um processo iterativo, onde começamos a calcular o valor de F 0 6 A(x) com um valor inicial de x , e recalculamos repetidamente o valor de F 0 6 A(x) sempre usando o resultado de uma dada iteração como a nova estimativa de x , ou seja, fazendo:

(4.17)

onde, k é a ordem da iteração em que estamos ( k = 0, 1, 2, 3, 4, ...). A função F 0 6 A(x) é chamada de função de iteração. Pode-se notar que dada uma função f(x) existem diversas funções de iteração que podem ser usadas no processo.

Exemplo: Encontre algumas funções de iteração a partir de f ( x ) = x^2 + ln( x ) - x +1.

ou então, ou ainda,

20