Você está na página 1de 90

UNIVERSIDADE FEDERAL DA BAHIA – UFBA

INSTITUTO DE CIÊNCIAS AMBIENTAIS E DESENVOLVIMENTO


SUSTENTÁVEL – ICADS

APOSTILA DE CÁLCULO NUMÉRICO

BARREIRAS – BA
MARÇO/2013

2
DIANDRA CHISA TANAKA

APOSTILA DE CÁLCULO NUMÉRICO

Trabalho apresentado a Universidade


Federal da Bahia – UFBA, como
requisito para complementação da
nota do quarto semestre na matéria
de Cálculo Numérico.

Orientador: Prof. D.Sc. Kennedy Morais Fernandes

BARREIRAS – BA
MARÇO/2013

3
SUMÁRIO

Introdução 7

1. Representação dos Números, Aritmética de Ponto Flutuante e Erros em


Máquinas Digitais 8
1.1 Classificando os Erros ......................................................................................... 8
1.2 Representação dos Números e Erros em Máquinas Digitais ............................... 8
1.2.1 Representação de Inteiros ........................................................................... 9
1.2.2 Representação de Reais .............................................................................. 9
1.3 Aritmética de Ponto Flutuante ............................................................................. 9

2. Cálculo de Raízes Reais 11


2.1 Método de Newton ............................................................................................ 11
2.1.1 Algoritmo .................................................................................................. 13
2.1.2 Exemplo .................................................................................................... 14
2.1.3 Resultados Numéricos .............................................................................. 14
2.2 Método da Bisseção ........................................................................................... 15
2.2.1 Algoritmo .................................................................................................. 16
2.2.2 Exemplo .................................................................................................... 17
2.2.3 Resultados Numéricos .............................................................................. 18
2.3 Método da Secante ............................................................................................. 20
2.3.1 Algoritmo .................................................................................................. 21
2.3.2 Exemplo .................................................................................................... 21
2.3.3 Resultados Numéricos .............................................................................. 22
2.4 Método Pégaso .................................................................................................. 23
2.4.1 Algoritmo .................................................................................................. 23
2.4.2 Exemplo .................................................................................................... 24
2.4.3 Resultados Numéricos .............................................................................. 25

3. Resolução de Sistemas Lineares 26


3.1 Método Direto: Eliminação Gaussiana .............................................................. 26
3.1.1 Algoritmo .................................................................................................. 27

4
3.1.2 Exemplo .................................................................................................... 28
3.1.3 Resultados Numéricos .............................................................................. 28
3.2 Método Iterativo: Gauss Seidel ......................................................................... 28
3.2.1 Algoritmo .................................................................................................. 30
3.2.2 Exemplo .................................................................................................... 31
3.2.3 Resultados Numéricos .............................................................................. 32
3.3 Comparação: Eliminação Gaussiana e Gauss Seidel ......................................... 32
3.3.1 Exemplo .................................................................................................... 32
3.3.2 Resultados Numéricos .............................................................................. 33

4. Interpolação Polinomial 35
4.1 Polinômio de Lagrange ...................................................................................... 36
4.1.1 Algoritmo .................................................................................................. 36
4.1.2 Exemplo .................................................................................................... 37
4.1.3 Resultados Numéricos .............................................................................. 38
4.2 Splines ............................................................................................................... 39
4.2.1 Algoritmo .................................................................................................. 40
4.2.2 Exemplo .................................................................................................... 42
4.2.3 Resultados Numéricos .............................................................................. 43

5. Ajuste de Curvas - Método dos Mínimos Quadrados 44


5.1 Descrição do Método ....................................................................................... 44
5.1.1 Ajuste Polinomial ..................................................................................... 45
5.1.2 Algoritmo .................................................................................................. 47
5.1.3 Exemplo .................................................................................................... 48
5.1.4 Resultados Numéricos .............................................................................. 49

6. Integração Numérica 51
6.1 Regra do Trapézio ............................................................................................. 51
6.1.1 Algoritmo .................................................................................................. 53
6.1.2 Exemplo .................................................................................................... 54
6.1.3 Resultados Numéricos .............................................................................. 54
6.2 Método de Simpson ........................................................................................... 54
6.2.1 Algoritmo .................................................................................................. 56
5
6.2.2 Exemplo .................................................................................................... 57
6.2.3 Resultados Numéricos .............................................................................. 57

7. Resolução de Equações Diferenciais Ordinárias 58


7.1 Método de Euler ................................................................................................ 58
7.1.1 Algoritmo .................................................................................................. 59
7.1.2 Exemplo .................................................................................................... 60
7.1.3 Resultados Numéricos .............................................................................. 62
7.2 Métodos de Runge Kutta ................................................................................... 65
7.2.1 Algoritmo .................................................................................................. 66
7.2.2 Exemplo .................................................................................................... 67
7.2.3 Resultados Numéricos .............................................................................. 67

8. Conclusão 70

9. Referências Bibliográficas 71

10. Anexos 72

6
INTRODUÇÃO

Os métodos numéricos fazem parte da história da humanidade. Desde o século


passado, os matemáticos procuram desenvolver fórmulas gerais que, por meio de
iterações, possam calcular numericamente equações, sistemas, integrais, entre outras.
Poder solucionar problemas, que seriam inviáveis (por demandar um trabalho
muito exaustivo) ou impossíveis (por não existir solução algébrica) sem o cálculo
numérico, é muito vantajoso e permite que os avanços nas mais variadas áreas da
ciência aconteçam com velocidade e eficiência.
Essa apostila resume os principais e mais conhecidos métodos utilizados e vistos
durante o curso de Cálculo Numérico. Em cada Capítulo, procuramos descrever o
método da melhor forma possível, apresentando sua formulação matemática, algoritmo,
exemplo e resultados numéricos.
No Capítulo 2, fizemos uma breve explanação relacionada a erros e
representação dos números. No Capítulo seguinte, apresentamos quatro métodos que
podem ser utilizados para o cálculo de raízes reais.
O Capítulo 4 traz dois métodos muito conhecidos para a resolução de sistemas
lineares. O primeiro é direto e chama-se Eliminação Gaussiana, enquanto o segundo
fornece o resultado após realizar iterações e é conhecido por Gauss-Seidel. A
interpolação polinomial, muito importante quando se realiza ensaios em laboratórios,
por exemplo, é explicada no quinto Capítulo. Enquanto o ajuste de curvas é apresentado
no Capítulo seguinte.
Os dois últimos Capítulos tratam de integração numérica e métodos para
resolução de equações diferenciais, respectivamente.
Anexados ao presente trabalho, encontram-se os códigos que foram utilizados na
execução de cada problema apresentado.

7
CAPÍTULO 1

Representação dos Números, Aritmética de Ponto Flutuante e


Erros em Máquinas Digitais

Quando iniciamos um estudo e obtemos equações que modelam uma situação,


almejamos resolvê-las analiticamente. Todavia, nem sempre isso é possível. É nesse
momento que a Programação oferece inúmeras possibilidades de resoluções através de
variados métodos numéricos. Associado a cada método desses, existem os erros,
assunto deste Capítulo.

1.1 Classificando os Erros

Podemos classificar os erros da seguinte maneira:


 Erro Inicial: É equivalente a soma das incertezas provenientes da
medição dos parâmetros, das condições iniciais, entre outros. Em
algumas situações, são tão significativos que invalidam completamente
as soluções numéricas obtidas.
 Erro de Truncamento: A máquina não nos permite trabalhar com
números de infinitos dígitos. Por esse motivo, no truncamento, alguns
algarismos que excedem a precisão da máquina, são desprezados, não
sendo levados em consideração.
 Erro de Arredondamento: Nesse processo, tais algarismos que excedem a
precisão da máquina são considerados.

1.2 Representação dos Números e Erros em Máquinas Digitais

Nos computadores, os cálculos são efetuados com base nos pulsos elétricos.
Assim, só dois estados podem ocorrer: presença e ausência de corrente elétrica. Assim,
é conveniente a representação binária de números, uma vez que na base 2 só dígitos 0 e
1 são considerados. Também, por conveniência, os números inteiros são representados
de forma diferente daquela dos números reais. (CUNHA, 2000).

8
1.2.1 Representação de Inteiros
Um número inteiro é representado pelos coeficientes de sua expansão binária.
Dessa forma, consideremos a expansão binária do número inteiro N:

= 2 + 2 +⋯+ 2 + 2

onde =1e ,…, são 0 ou 1. A representação binária de N será:

=( … ).

Como a representação binária exige muitos dígitos e sua passagem para base
octal é relativamente simples, alguns computadores usam a representação octal.
(CUNHA, 2000).

1.2.2 Representação de Reais


Se o número real tem parte inteira , sua parte fracionária = − pode
ser escrita como uma soma de frações binárias:

= 2 + 2 + 2 + ⋯.

Assim, o número real será representado juntando as partes inteira e fracionária,


ou seja,

=( … … ).(CUNHA, 2000).

1.3 Aritmética de Ponto Flutuante

Um computador ou calculadora representa um número real no sistema


denominado aritmética de ponto flutuante. Neste sistema, o número r será representado
na forma:
( ) = ±(. … )×

9
onde:
é a base em que a máquina opera;
t é o número de dígitos na mantissa;
e é o expoente no intervalo [1,u].
Em qualquer máquina, apenas um subconjunto dos números reais é representado
exatamente, e, portanto, a representação de um número real será realizada através do
truncamento ou arredondamento, ambos supracitados na seção 1.1.(RUGGIERO e
LOPES, 1996).
Supondo = 10; = 3 ∈ [−5,5], considere o conjunto dos números reais e o
seguinte conjunto:

= { ∈ | ≤| |≤ }

Vamos analisar os casos que podem ocorrer:


 Caso 1 - ∈
Suponhamos = 235.89 = 0.23589 × 10 . Esse número possui cinco dígitos
na mantissa. Estão representados nessa máquina os números: 0.235 × 10 , caso haja o
truncamento ou 0.236 × 10 se o valor for arredondado. (RUGGIERO e LOPES,
1996).
 Caso 2 - | | <
A máquina acusa o que se chama de underflow.
 Caso 3 - | | >
A máquina acusa overflow.

Um fato interessante, é que muitas linguagens permitem um recurso denominado


precisão dupla. A partir dele, a mantissa admite o dobro do número de dígitos, em
contrapartida, o tempo de execução aumenta, assim como o consumo da memória.

10
CAPÍTULO 2

Cálculo de Raízes Reais

Para resolver muitos problemas relacionados às áreas de Ciência e Engenharia, é


necessário encontrar as raízes das equações (zeros das funções), ou seja, valores de
que satisfaçam ( ) = 0.
Equações de primeiro grau podem ser resolvidas, simplesmente, isolando a
variável , enquanto as de segundo grau são calculadas através da conhecida fórmula de
±√
bháskara = . Contudo, de acordo com o teorema de Abel-Ruffini, não é

possível solucionar analiticamente equações de grau igual ou superior a cinco.


Para estas situações, são desenvolvidos métodos numéricos capazes de calcular
aproximadamente essas raízes. Eles se baseiam em valores iniciais informados pelo
usuário e são iterativos, isto é, repetem o procedimento até que o erro seja menor que o
desejado.
Nesse Capítulo, apresentamos alguns deles: Newton, Bisseção, Secante e
Pégaso.

2.1 Método de Newton

Isaac Newton (1642-1727) publicou seu método para encontrar raízes de


equações não lineares em 1687. Esse método também é conhecido como Newton-
Raphson, devido à sistematização apresentada por Joseph Raphson em 1690. (CUNHA,
2000).
Observe a Figura 2.1.

11
Figura 2.1: Interpretação gráfica do método de Newton. (FONTE: CUNHA, 2000)

Seja a única raiz de ( ) = 0 no intervalo dado e uma aproximação dessa


raiz. Além disso, as derivadas ′( ) e ′′( ) devem existir, ser contínuas e com sinal
constante no intervalo. Geometricamente, o método de Newton consiste em aproximar
um arco de curva por uma reta tangente traçada a partir de um ponto da curva.
Pela Figura 2.1 temos que:

( ) ( )
tan = = ′( ) → = −
( )

Na repetição, calculamos a partir de :

( )
= −
′( )

Genericamente, o procedimento segue a Equação 2.1.

( )
= − ( )
, k=0, 1, 2, ... (2.1)

Os critérios de parada podem ser um número máximo de iterações ou um erro


pré-determinado atingido.

12
2.1.1. Algoritmo
A formulação ilustrada anteriormente pode ser executada pela máquina através
da implementação dos algoritmos da Figura 2.2.
As variáveis reais são: o valor inicial x0 e erro, ambos informados pelo usuário.
x e deltaX fazem parte do processo proposto pela Equação 2.1.
Como parâmetros inteiros, temos o número máximo de iterações nmax,
fornecido pelo usuário e n que consiste em um contador de iterações realizadas.
Os Algoritmos 2 e 3 são auxiliares para o cálculo do valor da função num
determinado ponto, assim como sua derivada.

Algoritmo 1
Método Newton
real x0, x, erro, deltaX
int nmax, n
entre com x0, erro, nmax
x←x0
n←0
escreva n, x, df(x), f(x)
repita
deltaX ← - f(x)/df(x)
x ← x + deltaX
n ← n+1
escreva n, x, df(x), f(x), deltaX
se (abs(deltaX)≤erro e abs(f(x))≤erro) ou df(x)=0 ou n ≥nmax
então interrompa
fim se
fim repita
imprima x
FIM

Algoritmo 2
função f (x)
retorne (função desejada)
fim

Algoritmo 3
função df (x, erro)
retorne (f(x+erro)-f(x))/erro

fim
Figura 2.2: Algoritmos para Método de Newton

13
2.1.2 Exemplo
( )= /
Vamos calcular uma raiz aproximada da função − através do
Método de Newton. Para isso, plotamos na Figura 2.3 o gráfico de ( ).

/
Figura 2.3: Gráfico da função ( ) = −

É nítido que há duas raízes e próximas de zero, tal que <0e > 0.

2.1.3 Resultados Numéricos


Inserindo como parâmetros de entrada x0= 0, erro= 10 , nmax= 100 obtemos
os dados organizados na Tabela 2.1.

14
Iteração x
0 0,000000
1 -2,097152
2 -1,153990
3 -0,846364
4 -0,816356
5 -0,815564
6 -0,815554
Tabela 2.1: Resultados obtidos para cada iteração do Método de Newton

Portanto, a raiz aproximada é = −0,815554. Observando o gráfico da Figura


2.3, concluímos que é a aproximação de , além disso, o valor obtido faz sentido
pois está próximo de zero e < 0.

2.2 Método da Bisseção

É um método relativamente simples. Basicamente, consiste em se aproximar da


raiz por valores à esquerda e à direita . Para melhor compreensão, podemos
observar a Figura 2.4.

Figura 2.4: Representação da curva e obtenção da raiz através do método da Bisseção.


(FONTE: SHIGUE, 2009)

15
Os intervalos entre a raiz e tais valores vão sendo diminuídos gradativamente até
que o intervalo seja tão ou mais estreito quanto o erro solicitado. A redução desse
intervalo ocorre obedecendo a Equação 2.2.

= (2.2)

onde é o valor médio.

Obviamente, a raiz da equação pertence a algum dos intervalos [ ; ] ou


[ ; ]. Temos, então, que se o sinal de ( ) for igual ao sinal de ( )
(SITUAÇÃO 1), está no intervalo [ ; ]. Analogamente, caso o sinal de ( )
seja o mesmo de ( ) (SITUAÇÃO 2), ∈ [ ; ].
Para a redução do intervalo, obedeceremos as seguintes condições:
 SITUAÇÃO 1: ← ;
 SITUAÇÃO 2: ← .
Dessa forma, iremos reduzindo o intervalo até que este seja menor que o erro ( )
desejado (Equação 2.3) ou que o limite de iterações seja extrapolado.

| - |< (2.3)

O algoritmo desse método é apresentado na próxima seção.

2.2.1 Algoritmo
As duas situações citadas anteriormente podem facilmente ser obedecidas pela
máquina através da implementação do algoritmo da Figura 2.5.
As variáveis reais xE, xD, e xM correspondem aos parâmetros , e ,
respectivamente, citados anteriormente. É importante ressaltar que xE e xD são
informados pelo usuário inicialmente, assim como o erro desejado.
Da mesma forma como ocorreu no algoritmo da seção 2.1.1, faremos uso de
uma função, representada no Algortimo 2, que retorne o valor da função naquele ponto.

16
Algoritmo 1
Método da Bisseção
real xE, xD, xM, erro
int nmax, n
entre com xE, xD, erro, nmax
xM←(xE+xD)/2
n←0
escreva n, xE, xD, xM, abs(xD-xE)
faça enquanto (abs(xD-xE)>erro e n<nmax)
se (f(xE)*f(xM)>0.0) xE=xM
senão xD=xM
xM=(xE+xD)/2
n←n+1
escreva n, xE, xD, xM, abs(xD-xE)
fim faça
FIM

Algoritmo 2
função f (x)
retorne (função desejada)
fim
Figura 2.5: Algoritmo para Método da Bisseção

2.2.2 Exemplo
Neste momento, vamos por em execução este método a fim de encontrar uma
raiz aproximada para a função ( ) = 0,05 ³ − 0,4 +3 ( ) , com
= 1 × 10 .
A Figura 2.6 ilustra o gráfico para a função ( ). A curva intercepta várias
vezes o eixo x. Vamos calcular através do método da Bisseção a raiz pertencente ao
intervalo [-5,0 ; -1,0]. Isso significa que vamos inserir como parâmetros de entrada
= −5,0 e = −1,0.

17
Figura 2.6: Gráfico da função ( ) = 0,05 ³ − 0,4 +3 ( )

2.1.3 Resultados Numéricos


Inserindo os parâmetros de entrada e executando o programa, confeccionamos a
Tabela 2.2.

18
n erro

0 -5,000000 -1,000000 -3,000000 4,000000


1 -3,000000 -1,000000 -2,000000 2,000000
2 -3,000000 -2,000000 -2,500000 1,000000
3 -3,000000 -2,500000 -2,750000 0,500000
4 -2,750000 -2,500000 -2,625000 0,250000
5 -2,750000 -2,625000 -2,687500 0,125000
6 -2,687500 -2,625000 -2,656250 0,062500
7 -2,656250 -2,625000 -2,640625 0,031250
8 -2,656250 -2,640625 -2,648438 0,015625
9 -2,656250 -2,648438 -2,652344 0,007813
10 -2,652344 -2,648438 -2,650391 0,003906
11 -2,652344 -2,650391 -2,651367 0,001953
12 -2,652344 -2,651367 -2,651855 0,000977
13 -2,651855 -2,651367 -2,651611 0,000488
14 -2,651611 -2,651367 -2,651489 0,000244
15 -2,651611 -2,651489 -2,651550 0,000122
16 -2,651550 -2,651489 -2,651520 0,000061
17 -2,651520 -2,651489 -2,651505 0,000031
18 -2,651505 -2,651489 -2,651497 0,000015
19 -2,651505 -2,651497 -2,651501 0,000008
Tabela 2.2: Resultados obtidos para cada iteração do Método da Bisseção

A raiz aproximada obtida é = −2,651501. Observando novamente o gráfico


da Figura 2.6, o resultado tem sentido geométrico.
Foram relativamente numerosas as iterações necessárias para que o valor
convergisse, ou seja, o método da Bisseção é, geralmente, lento.
Em muitos casos é utilizado para reduzir o intervalo antes de usar outro método
de convergência mais veloz (CAMPOS FILHO, 2001).

19
2.3 Método da Secante

Em vez da reta tangente, como utilizamos no Método de Newton, podemos


utilizar retas secantes como aproximações lineares locais da função.
No Método da Secante, tomamos a reta que passa pelos pontos ( , ( )) e
( , ( )) como uma aproximação linear da curva = ( ), como indica a Figura
2.6. (CUNHA, 2000).

Figura 2.6: Reta secante como aproximação linear da curva.


(FONTE: CUNHA, 2000)

Podemos utilizar a semelhança de triângulos entre ABC e AED e explicitar .


Temos, por conseguinte:
( )− ( )
=
( )− ( )

Generalizando:
( )− ( )
= , = 0, 1, 2, …
( )− ( )

Podemos ainda realizar algumas operações algébricas e obter:

( )
= − ( ) (2.4)

20
A diferença entre esse método e o de Newton consiste na aproximação da
derivada, que, neste caso, se faz pela secante.

2.3.1 Algoritmo
Fazendo uma analogia entre a Equação 2.4 e as variáveis do algoritmo da Figura
2.7, representamos por xE, por xD e por x. Esses dois últimos são
parâmetros fornecidos pelo usuário, assim como o erro e o valor máximo de iterações
nmax.
Novamente, necessitamos da função exposta no Algoritmo 2 para calcular o
valor da função num ponto x.

Algoritmo 1
Método da Secante
real xE, xD, x, erro
int nmax, n
entre com xE, xD, erro, nmax
n←0
x ← xE-(((xD-xE)*f(xE))/(f(xD)-f(xE)))
escreva n, xE, xD, x, abs(xD-x)
faça enquanto (abs(xD-x)>erro e n<nmax)
xD ← x
x ← xE-(((xD-xE)*f(xE))/(f(xD)-f(xE)))
n←n+1
escreva n, xE, xD, x, abs(xD-x)
fim faça
FIM

Algoritmo 2
função f (x)
retorne (função desejada)
fim
Figura 2.7: Algoritmo para Método da Secante

2.3.2 Exemplo
Dada a função ( )= 3 ²− , vamos calcular uma raiz aproximada que
forneça um erro menor que = 1 × 10 .
A Figura 2.8 apresenta o gráfico de ( ). Podemos notar que, nesse trecho, a
curva intercepta o eixo da abscissa apenas uma vez.

21
Figura 2.8: Gráfico da função ( ) = 3 ² −

Informamos como parâmetros iniciais, além do erro, xE=1 e xD=3.

2.3.3 Resultados Numéricos


A Tabela 2.3 apresenta os resultados numéricos obtidos.

n xE xD x erro
0 1,000000 3,000000 0,739570 2,260430
1 1,000000 0,739570 0,739109 0,000460
2 1,000000 0,739109 0,739086 0,000023
3 1,000000 0,739086 0,739085 0,000001
Tabela 2.3: Resultados numéricos para cada interação do Método da Secante

Com poucas iterações, o método nos fornece que a raiz aproximada é =


0,739085. É interessante ressaltar que os parâmetros iniciais fornecidos não formavam
um intervalo no qual a raiz estava contida.

22
2.4 Método Pégaso
A origem do nome “Pégaso” é devida a utilização deste método em um
computador Pégaso, sendo seu autor desconhecido.(BARROSO, et al. 1987).
Assim como o Método da Secante, visto na seção 2.3, o presente método
também fará uso da Equação 2.4.
Os pontos [ , ( )] e [ , ( )] pelos quais será traçada a reta para
obter são escolhidos de tal modo que ( ) e ( ) tenham sempre sinais
opostos, garantindo assim que ∈[ , ]. Além disso, o valor de ( ) é
( )
reduzido por um fator igual a de modo a evitar a retenção de um ponto.
( ) ( )

Deste modo, a reta pode ser traçada por um ponto não pertencente à curva de ( ).
(CAMPOS FILHO, 2001).

2.4.1 Algoritmo
No Algoritmo 1, representado na Figura 2.9, as variáveis reais a e b são os
limites inferior e superior, respectivamente, do intervalo no qual se encontra a raiz, o
erro corresponde a precisão desejada pelo usuário. fb e fa são os valores da função nos
pontos b e a e x e fx estão variando até atingir a raiz. nmax corresponde a quantidade de
iterações máxima desejada, n e i são contadores e, finalmente, deltaX faz parte da
fórmula do método Pégaso.
O Algoritmo 2 apenas retorna o valor da função em determinado ponto. Tal
função varia de acordo com o problema.
O critério de parada, além do número de iterações máxima, é a comparação entre
o erro desejado e dois valores: o valor da função no ponto x e deltaX. Assim, f(x)
gradativamente se aproxima de zero (ou seja, do eixo da abscissa) até tornar-se menor
que o erro desejado, encerrando, assim, o programa.

23
Algoritmo 1
Método da Secante
real a, b, erro, x, deltaX, fa, fb, fx
int nmax, n, i
entre com a, b, erro, nmax
fa←f(a)
fb←f(b)
fx←fb
n←0
x←b
deltaX←fx/(fb-fa)*(b-a)
escreva n, a, fa, b, fb, x, fx, deltaX
para (i←0; i<nmax;i←i+1) faça
deltaX←fx/(fb-fa)*(b-a)
x ← x+deltaX
escreva n, a, fa, b, fb, x, fx, deltaX
se(abs(deltaX)≤erro e abs(abs(fx)≤erro))ou(n≥nmax) então
interrompa
fim se
se (fx*fb<0) então
a←b
fa←fb
senão
fa←fa*(fb/(fb+fx))
fim se
b←x
fb←fx
n←n+1
fim faça
FIM

Algoritmo 2
função f (x)
retorne (função desejada)
fim

Figura 2.9: Algoritmo do Método Pégaso

2.4.2 Exemplo
Vamos encontrar numericamente uma das raízes da função polinomial de grau 3
( ) tal que ( )= ³−2 − 20 + 30.
A Figura 2.10 apresenta o gráfico da ( ). Vamos analisar seu comportamento
para que possamos determinar quais serão os limites a e b.
24
Figura 2.10: Gráfico da função ( ) = ³ − 2 − 20 + 30

No trecho do gráfico ilustrado pela Figura 2.10 é possível visualizar duas raízes.
Vamos encontrar a raiz pertencente ao intervalo [-5,0] com um erro = 10 e número
máximo de 100 iterações.

2.4.3 Resultados Numéricos


Após a execução do programa, confeccionamos a Tabela 2.4 que apresenta os
resultados obtidos.
n x f(x) deltaX
0 -4,237288 2,757689 -0,237288
1 -4,289412 0,069000 -0,052124
2 -4.290746 -0,000878 -0,001334
3 -4,290730 -0,000004 0,000017
4 -4,290730 -0,000004 0,000000
Tabela 2.4: Resultados Numéricos para cada Iteração do Método Pégaso

Logo, o valor aproximado para a raiz é x=-4,290730. A convergência foi veloz,


pois não houve mais erro considerável na quarta iteração.

25
CAPÍTULO 3

Resolução de Sistemas Lineares

A necessidade de resolver sistemas lineares aparece numa grande quantidade de


problemas científicos. Existem estimativas que apontam que, a cada quatro problemas
de simulação em matemática, três convertem-se em solução de sistema de equações.
(CUNHA, 2000).
Dominar métodos para a resolução desses sistemas é fundamental para o estudo
de equações diferenciais parciais, otimização, regressão, entre outros. Podemos
classificá-los em dois tipos:
 Métodos Diretos: conduzem à solução exata, com pequenos erros de
arredondamento e um número finito de operações aritméticas;
 Métodos Iterativos: são construídos através de sequências de
aproximações.
Nesse Capítulo vamos apresentar independentemente duas formas de resolução
de sistemas lineares: Eliminação Gaussiana (Direto) e Gauss-Seidel (Iterativo). Por fim,
vamos resolver com os dois métodos um mesmo exemplo á nível de comparação.

3.1 Método Direto: Eliminação Gaussiana


Seja o sistema de equações representado por [A][x]=[b], onde [x] é o vetor solução e:


[A] = ⋮ ⋮ ⋮

[b] = ⋮

Esse método consiste basicamente em transformar a matriz [A] num sistema


triangular equivalente através da aplicação repetida de dois tipos de operações:

26
 Permutação entre duas linhas;
 Subtração de uma linha por outra multiplicada por uma constante.
(SHIGUE, 2009).
Podemos resolver o sistema por recorrência através da Equação 3.1 e
calcular o determinante da matriz de coeficientes [A] com a Equação 3.2.

(3.1)

(3.2)

3.1.1 Algoritmo
A matriz A e o vetor b correspondem a matriz e o vetor supracitados. i, j e k são
apenas contadores que tem a função de auxiliar nos cálculos.

Algoritmo 1 (CUNHA, 2000)


Eliminação Gaussiana
entre com Matriz A e vetor b
para k=1,n-1,1 faça
encontre i≥k tal que ≠0
se = 0 para todo i≥k, então A não é inversível
troque a linha k com a linha l
para i=k+1,n,1 faça
m← ←
← -m
para j=k+1,n,1 faça
← -m
FIM
Figura 3.1: Algoritmo da Eliminação Gaussiana

27
3.1.2 Exemplo
Vamos calcular a solução do sistema representado pela Equação 3.3 abaixo pelo
método Eliminação Gaussiana:

10 3 −2 57
2 8 −1 = 20 (3.3)
1 1 5 −4

3.1.3 Resultados Numéricos


Denotando a matriz quadrada de ordem 3 supracitada de [A] e o vetor do lado
direito da equação de [B], após a triangularização realizada pelo programa, obtemos:

10,0000000 3,0000000 −2,0000000


[A] = 0 7,4000000 −0,6000000
0 0 5,2567567

57,0000000
[B] = 8,6000000
−10,5135135

Fazendo a retrossubstituição, encontramos o vetor solução [X]:

5,0000000
[X] = 1,0000000
−2,0000000

Verificar a veracidade da resposta obtida é simples. Basta substituir o vetor [X]


na Equção 3.3.

3.2 Método Iterativo: Gauss Seidel

Gauss publicou seu método Iterativo para resolver sistemas de equações


provenientes do Método dos Mínimos Quadrados (Capítulo 5) em 1874. (CUNHA,
2000).
Seja o sistema de equações:

28
tal que os coeficientes da diagonal principal sejam não nulos. Vamos isolar cada
, = 1, 2, … ,

Repare que para calcular , por exemplo, precisamos de , = 2, 3, 4, … , .


Por isso é importante atribuir inicialmente valores para cada . Uma das vantagens dos
métodos iterativos é que a convergência independe desses valores inicialmente
atribuídos. (CAMPOS FILHO, 2001)
Após esse cálculo de , partimos para que receberá um novo valor diferente
daquela estimativa inicial. O mesmo ocorrerá para todos os , até o n-ésimo. Isso finda
a primeira iteração.
Na segunda iteração, voltamos a e o recalculamos. O mesmo ocorre para todo
e isso ocorre sucessivamente, até que algum dos critérios de parada seja satisfeito. Os
critérios são:
 Excedeu o número de iterações máximo;
 As diferenças entre dois valores sucessivos de todos os são menores
que um valor pré-determinado :

FONTE: SHIGUE, 2009

29
É condição suficiente para a convergência do método iterativo Gauss-Seidel que
a matriz dos coeficientes A do sistema = tenha diagonal estritamente dominante.
(CAMPOS FILHO, 2001). Isto é:

| |> , = 1, 2, 3, …
/

3.2.1 Algoritmo
A Figura 2.11 apresenta o Algoritmo do Método Gauss Seidel. Nele, atribuímos

como valores iniciais para a solução = .

Os parâmetros reais A(100,100), B(100) e sol(100) correspondem à matriz e os


vetores do sistema linear. v(100) auxilia na comparação entre a iteração atual e a
anterior, erro é a precisão da solução solicitada pelo programa e r, soma, t, NormaNum,
NormaDen e NormaRel são variáveis que auxiliam na verificação das condições de
parada.
Nos parâmetros inteiros, nmax é o número máximo de iterações, iter conta
quantas iterações já foram realizadas e n é a ordem do sistema. i e j são apenas
contadores.

30
Método Gauss Seidel
inteiro n,i,j, nmax, iter
real A(100,100), B(100), sol(100), v(100), erro, r, soma, t, NormaNum,
NormaDen, NormaRel
entre com A(100,100), B(100), erro, nmax, n
para (i←1; i<n; i←i+1) faça
r←1/A(i, i)
para (j←1; j<n; j←j+1) faça
se (i≠j) então
A(i, j)=A(i, j)*r
fim se
fim para
B(i) ← B(i)*r
sol(i) ← B(i)
fim para
iter(i) ← 0
repita
iter(i) ← iter(i)+1
para (i←1; i<n; i←i+1) faça
soma←0
para (j←1; j<n; j←j+1) faça
se(i≠j) então soma←soma+A(i, j)*sol(j) fim se
fim para
v(i) ←sol(i)
sol(i) ←B(i)-soma
fim para
NormaNum←0
NormaDen←0
para (i←1; i<n; i←i+1) faça
t←abs(sol(i)-v(i))
se (t>NormaNum) então NormaNum←t fim se
se (abs(sol(i))>NormaDen) então NormaDen←abs(sol(i)) fim se
fim para
NormaRel←NormaNum/NormaDen
escreva Iter, sol, NormaRel
se (NormaRel≤erro ou iter≥nmax) então interrompa fim se
fim repita
FIM

Figura 3.2: Algoritmo do Método Gauss Seidel

3.2.2 Exemplo
Vamos submeter o Método Gauss Seidel a resolver a Equação 3.4.
31
5 2 0 −1 6
1 8 −3 2 10 (3.4)
=
0 1 6 1 −5
1 −1 2 9 0

Os dados de entrada foram = 10 e = 100.

3.2.3 Resultados Numéricos


Os resultados alcançados com a execução desse método encontram-se
organizados na Tabela 3.1.

Iteração Norma Relativa

1 0,70000005 0,84999996 -0,97500002 0,23333333 0,51282048


2 0,90666676 0,71270829 -0,99100697 0,19867283 0,20854214
3 0,95465130 0,70937276 -0,98467433 0,19156335 4,87313829× 10
4 0,95456362 0,71353585 -0,98418325 0,19192652 4,22999123× 10
5 0,95297098 0,71382827 -0,98429251 0,19216026 1,61805167× 10
6 0,95290077 0,71373761 -0,98431635 0,19216329 9,21031824× 10
7 0,95293766 0,71372336 -0,98431450 0,19215719 3,74832198× 10
8 0,95294213 0,71372497 -0,98431373 0,19215670 4,54158908× 10
Tabela 3.1: Resultados Numéricos do Método Gauss Seidel

0,95294213
0,71372497
Portanto, temos que a solução convergiu. O vetor solução é .
−0,98431373
0,19215670

3.3 Comparação: Eliminação Gaussiana e Gauss Seidel

Nesta seção vamos resolver numericamente uma equação de sistema linear


através dos dois métodos estudados neste Capítulo: Eliminação Gaussiana e Gauss
Seidel. Posteriormente, analisaremos os resultados obtidos.
3.3.1 Exemplo
O sistema a ser resolvido é o representado pela Equação 3.5.

32
5 1 1 5
3 4 1 = 6 (3.5)
3 3 6 0

Os dados de entrada inseridos para o método Gauss Seidel são = 10 e


= 100.

3.3.2 Resultados Numéricos


Expomos inicialmente os dados obtidos pelo método direto em estudo, seguido
do método iterativo.

 Eliminação Gaussiana
Após o processo de triangularização, a matriz [A] está configurada da seguinte
maneira:

5,0000000000 1,0000000000 1,0000000000


[A] = 0 3,399999999 0,4000000000
0 0 5,1176470588

Já o vetor [B] se torna:

5,000000000
[B] = 3,000000000
−5,1176470588

Fazendo a retrossubstituição, encontramos o vetor solução [X]:

1,0000000
[X] = 1,0000000
−1,0000000

 Gauss Seidel
Os resultados obtidos através do método iterativo estão na Tabela 3.2

33
Iteração Norma Relativa

1 0.69999999 0.97500002 -0.83749998 0.8589743448


2 0.97249997 0.98000002 -0.97624999 0.27806121
3 0.99924999 0.99462497 -0.99693751 2.67701056× 10
4 1.0004625 0.99888748 -0.99967504 4.26053628× 10
5 1.0001575 0.99980062 -0.99997902 9.12999385× 10
6 1.0000356 0.99996805 -1.0000019 1.67423481× 10
7 1.0000068 0.99999535 -1.0000011 2.88484516× 10
8 1.0000012 0.99999940 -1.0000002 5.60282979× 10
Tabela 3.2: Resultados Numéricos do Método Gauss Seidel

Através desse exemplo, fica claro que o método direto fornece resultados mais
seguros, enquanto o método iterativo é menos confiável, visto que é construído de
forma iterativa, com as soluções anteriores. Não obstante, este fato não torna o método
de Gauss Seidel inválido, pois o erro estipulado foi nitidamente respeitado.

34
CAPÍTULO 4

Interpolação Polinomial

Muitas vezes, os profissionais das áreas de Química, Engenharias, Biologia,


Estatística e diversas outras, realizam experimentos e constroem tabelas com os
resultados obtidos. Comumente, ocorre a necessidade de se obter um valor
intermediário entre os seus dados, ou seja, que não consta na tabela. Nessas situações,
utiliza-se a interpolação polinomial.
A aproximação de funções por polinômios é uma das ideias mais antigas da
análise numérica, e ainda uma das mais usadas. Isso ocorre em decorrência dos
polinômios possuírem derivadas e integrais que resultam em novas funções também
polinomiais, além de suas raízes que podem ser encontradas facilmente (FRANCO,
2006).
Além de encontrar valores intermediários em tabelas, o conceito da interpolação
também é de suma importância em outros pontos da programação, como, por exemplo,
a integração numérica.
Apresentamos neste Capítulo dois métodos empregados para a interpolação
polinomial: Lagrange e Splines cúbicos naturais.

4.1 Polinômio de Lagrange

Dados + 1 pontos( , ), ( , ),..., ( , ), tais que = ( ) e ∈


( , ). Deve-se obter um polinômio ( ) de grau menor ou igual a n e possuindo
nos pontos o mesmo valor da função ( ), como ilustra a Figura 4.1.

35
Figura 4.1: Polinômio ( ) passando pelos pontos fornecidos

Através de uma dedução matemática que envolve combinação linear de


polinômios, temos que a fórmula do polinômio interpolador de Lagrange é:

( ) = ∑ ∏ / (4.1)

4.1.1 Algoritmo
Desenvolver um algoritmo que obedeça a Equação 4.1 não é um trabalho difícil.
O apresentamos na Figura 4.2.
O parâmetro inteiro n, representa a quantidade de pontos conhecidos, enquanto i e
j são apenas contadores.
Já os vetores reais x e y, correspondem aos números dados como entrada e os
valores da função nestes pontos, respectivamente. É importante lembrar, que é
aconselhável alocar memória para estes vetores de tamanho n. A variável xvalor é o
valor a ser interpolado. p é o parâmetro de saída, corresponde ao valor da função no
ponto xvalor e, finalmente, c e d são auxiliares no cálculo de p.

36
Método Lagrange
inteiro n, i, j
real *y, *x, xvalor, p, c, d
parâmetros de entrada: n, *y, *x, xvalor
aloca memória para y e x
p=0
para i=1, n, 1 faça
c=1.0
d=1.0
para j=1, n, 1 faça
se j≠i então
c=c*(xvalor-x(j))
d=d*(x(i)-x(j))
fim se
fim para
p=p+y(i)*(c/d)
fim para
Figura 4.2: Algoritmo do método de Lagrange

4.1.2 Exemplo
Este exemplo é muito comum na área de Estatística.
Os países costumam realizar o levantamento populacional periodicamente,
através de fundações (no Brasil, por exemplo, o órgão responsável por isso é o IBGE).
Elas organizam os dados e podem, assim, estimar a população em um determinado ano
que não houve o levantamento populacional.
O Censo da população dos Estados Unidos entre os anos de 1930 e 1980 fornece
os seguintes dados pontuais (ou degenerados) organizados na Tabela 4.1:

Ano População(x10³)
1930 123203
1940 131669
1950 150697
1960 179323
1970 203212
1980 226505
Tabela 4.1: Pontos fornecidos pelo Censo

37
Plotamos os pontos da Tabela 4.1, apenas para facilitar a visualização do
crescimento populacional. O gráfico está representado na Figura 4.3.

Figura 4.3: Gráfico dos pontos fornecidos pelo Censo americano

Nota-se que os pontos apresentam um comportamento crescente, porém, não


seguem nenhuma função específica.
Deseja-se conhecer a população nos anos de 1932, 1965, 1947, 1959 e 1976.

4.1.3 Resultados Numéricos


Fornecendo os dados da Tabela 4.1 para o código implementado, obtemos os
resultados organizados na Tabela 4.2 para o método de Lagrange, onde o vetor x
representa os anos interpolados.

(anos) Lagrange

1932 125267,47
1947 143395,11
1959 176477,01
1965 192407,05
1975 215271,80
Tabela 4.2: Resultados numéricos estimando a população americana

38
Cientes de que a interpolação fornece apenas uma aproximação da população em
determinado ano, não podemos confiar completamente nos resultados obtidos.Vale
lembrar também que não é possível validar os dados da Tabela 4.2, pois o Censo
demográfico americano é realizado apenas a cada 10 anos e não se sabe de que forma o
crescimento populacional se comporta nesse intervalo.

4.2 Splines

O termo spline, em inglês, significa longas tiras de madeira. Elas eram usadas, há
muito tempo atrás, para interpolar, de modo suave, pontos das estruturas de navios e
aviões. (CAMPOS FILHO, 2001).
Sejam n+1 pontos ( , ), i= 0, 1, 2, ..., n, com < <⋯< . A intenção é
calcular n polinômios interpoladores cúbicos que passem por dois pontos sucessivos,
portanto, cada polinômio é utilizado no intervalo [ , ].
São da forma:

( )= ( − ) + ( − ) + ( − )+ , i=0, 1, ..., n-1 (4.2)

E satisfazem as condições:
 ( )= , = 0,1,2, … , − 1 e ( )=
 ( )= ( ), = 0,1,2, … , − 2
 ′( )= ′ ( ), = 0,1,2, … , −2
 "( )= " ( ), = 0,1,2, … , − 2

Sabemos que ℎ = − , com k=1. Temos os coeficientes de ( ):

=[ ( )− ( )]/6ℎ
= ( )/2
( ) ( )
=[ + ]

39
A fim de simplificar o processo, denotamos ( )= . Através das condições
supracitadas, obtemos uma equação Ax=b.
onde:
=( , ,…, )T (4.3)

(4.4)

(4.5)

No spline natural, temos mais uma condição:


= =0

Por conseguinte, encontramos os valores contidos no vetor x e os substituímos nos


coeficientes de ( ).

4.2.1 Algoritmo
Este método é mais complexo do que o de Lagrange. Toda a dedução matemática
apresentada está no código da Figura 4.4

40
Dentro dos parâmetros inteiros, temos a quantidade de dados fornecidos n, dois
contadores auxiliares i e j e o intervalo s no qual se encontra o valor a ser interpolado e
a variável real que denotamos como: valor.
Nos reais, o vetor h corresponde aos intervalos entre os valores de x fornecidos,
y(i) é o valor da função no ponto x(i), g é o vetor solução obtido através do método
Gauss Seidel, A é a matriz da Equação 4.4 e B é o vetor da Equação 4.5. a, b, c e d são
os coeficientes da Equação 4.2 e f é o valor da função no ponto valor

Método Splines Cúbicos Naturais


inteiro n, i, j, s
real *h, *x, *y, *g, **A, *B, a, b, c, d, valor, f
parâmetros de entrada: n, valor
alocar memória para todos os ponteiros
n=n-1
para i=1,n,1
h(i)=x(i)-x(i-1)
fim para
faça i=0,n,1
B(i)=0.0
faça j=0,n,1
A(i,j)=0.0
fim faça
fim faça
faça i=1,n-1,1
A(i,i)=2*(h(i)+h(i+1))
A(i,i-1)=h(i)
A(i,i+1)=h(i+1)
B(i)=6*((y(i+1)-y(i))/h(i+1)-(y(i)-y(i-1))/h(i))
fim faça
chama função GAUSS_SEIDEL
faça i=0,n-1,1
se (valor>x(i) e valor<x(i+1)) então
s=i+1
fim se
fim faça
a=(g(s)-g(s-1))/(6*h(s))
b=g(s)/2
c=(y(s)-y(s-1))/h(s)+(2*h(s)*g(s)+g(s-1)*h(s))/6
d=y(s)
leia valor
f=a*(valor-x(s))**3+b*(valor-x(s))**2+c*(valor-x(s))+d
imprima f
Figura 4.4: Algoritmo do método Splines cúbicos naturais

41
4.2.2 Exemplo
Essa aplicação pertence à área da Física. Obteve-se os dados através de um
experimento sobre propagação da onda sonora e deseja-se conhecer, a partir desses,
outros valores.
A velocidade do som na água é aproximadamente quatro vezes maior que no ar. A
Tabela 4.3 ilustra como essa velocidade se comporta quando a temperatura varia.

Temperatura (oC) Velocidade (m/s)


86,0 1552
93,3 1548
98,9 1544
104,4 1538
110,0 1532
Tabela 4.3: Velocidade do som na água obtida experimentalmente com a variação da
temperatura

Plotamos os dados da Tabela 4.3 para observar como se dá a distribuição desses


pontos. O gráfico está representado na Figura 4.5.

Figura 4.5: Gráfico dos pontos fornecidos pela Tabela 4.3

42
Observamos que, conforme a temperatura aumenta, a velocidade do som na água
decresce. Isso ocorre, pois, o aumento da temperatura decresce a densidade do sistema,
ou seja, reduz a coesão entre as moléculas, dificultando a propagação do som.
Deseja-se obter a velocidade do som na água nas temperaturas: 89oC, 95,6 oC,
100 oC e 107,9 oC.

4.2.4 Resultados Numéricos


Após compilar os programas do método de Splines, obtivemos os dados
organizados na Tabela 4.4. x representa as temperaturas interpoladas.

o
C Velocidade por
Splines (m/s)
95,6 1546,5773
89,0 1550,4039
100,0 1542,9645
107,9 1534,1970
Tabela 4.4: Resultados numéricos para as temperaturas interpoladas

Diferente do exemplo utilizado na resolução com o método Lagrange, nesse, os


dados obtidos podem ser testados de forma empírica, visto que não há uma fórmula
matemática que possa descrevê-lo.
Voltamos a afirmar que esses resultados são provenientes de ajustes, portanto,
existe um erro associado.

43
CAPÍTULO 5

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

Nas mais variadas áreas da Ciência, como Engenharia, Estatística e Física, os


pesquisadores frequentemente realizam experimentos e obtém dados empíricos. Com
base nesses dados, eles propõem modelos teóricos (equações) que melhor se ajustam, ou
seja, aqueles em que possuem uma menor discrepância entre o real e a formulação
matemática.
A importância da obtenção desta equação de ajuste consiste no fato de que se
torna possível prever como, provavelmente, uma variável se comportará quando
submetida a alguma situação já trabalhada experimentalmente. Por exemplo, uma
empresa pode estimar o lucro de determinado ano com base na lucratividade dos anos
antecedentes ou um engenheiro pode dimensionar uma barra de aço embasado nas
tensões aplicadas empiricamente.
Obviamente, é necessário ser cauteloso e coerente com os resultados obtidos,
visto que, quando se trata de experimentos, devem-se levar em consideração as
limitações, tanto dos aparelhos utilizados, quanto do indivíduo que os manuseia
(BARROSO, et al. 1987).
As equações das curvas obtidas através do método dos mínimos quadrados podem
ser: retas, polinômios, hipérboles, exponenciais, potenciais, entre outras. Neste
Capítulo, ajustamos os dados através de uma parábola.

5.1 Descrição do Método

A intenção do ajuste de curvas é minimizar o somatório do desvio quadrático S:

= ∑ ( − )² (5.1)

Obtemos o mínimo da Equação 5.1 fazendo = 0. Essa operação resulta num


sistema constituído de equações, chamadas equações normais e, a partir delas, temos os
coeficientes da curva de ajuste (SHIGUE, 2009).

44
5.1.1 Ajuste Polinomial
Seja y um polinômio:

= + + +⋯+ (5.2)

Substituindo a Equação 5.2 em 5.1, temos:

2
= ∑ ( − 0 − 1 − 2 − ⋯− )² (5.3)

Para encontrar as equações normais, vamos derivar parcialmente a Equação 5.3


com relação aos parâmetros , , ,…, .

2
=∑ −2. ( − 0 − 1 − 2 − ⋯− )=0

2
=∑ −2 . ( − 0 − 1 − 2 − ⋯− )=0

2
=∑ −2 .( − 0 − 1 − 2 − ⋯− )=0

...

2
=∑ −2 .( − 0 − 1 − 2 −⋯− )=0

Assim, temos as equações normais mencionadas anteriormente:

45
Podemos rearranjá-las numa forma matricial:

(5.4)

onde:

46
 Ajuste Parabólico
A parábola é apenas um caso particular do ajuste polinomial supracitado
submetido à condição m=2. Por conseguinte, nosso sistema de equações normais é:

(5.5)

5.1.2 Algoritmo

Vamos implementar um algoritmo capaz de preencher a matriz [A] e o vetor [b]


da Equação 5.5. A solução [x] pode ser obtida com algum método de resolução de
sistema linear, como Gauss-Seidel ou Eliminação Gaussiana vistos no Capítulo 3.
No Algoritmo as variáveis reais A, b e sol, representam a matriz A, o vetor b e o
vetor solução x, respectivamente, das Equações 5.5. Já os ponteiros x e y correspondem
aos valores fornecidos pelo próprio problema.
Os parâmetros inteiros i, j e k, são contadores auxiliares e m é a quantidade de
dados que os ponteiros x e y armazenarão.
A função eliminação gaussiana recebe como parâmetros a matriz A e o vetor B e
retorna o vetor solução sol.

47
Método dos Mínimos Quadrados
real A(3,3), b(3), sol(3), *y, *x
inteiro i, j, m, k
leia m
Alocar memória para x e y
Entrar com x e y
faça i= 0, 2, 1
faça j= 0, 2, 1
A(i, j)← 0.0
B( i ) ←0.0
faça k=1, m, 1
A( i, j ) ←A( i, j ) +x( k )**(i+j)
b( i )←b( i )+y( k )*x( k )**i
fim faça
fim faça
fim faça
CHAMA FUNÇÃO ELIMINAÇÃO GAUSSIANA
faça i= 0,1,1
imprima sol( i )
fim faça
FIM
Figura 5.1: Algoritmo do Método dos Mínimos Quadrados

5.1.3 Exemplo
Vamos aplicar o algoritmo visto na Figura 5.1 para encontrar os coeficientes de
uma parábola que melhor se ajuste aos dados da Tabela 5.1.

x 1 2 3 4 5 6
y 10 5.49 0.89 -0.14 -1.07 0.84
Tabela 5.1: Conjunto de pontos x e y

Para analisar como a curva se comporta, plotamos os pontos da Tabela 5.1 no


gráfico da Figura 5.2:

48
Figura 5.2: Gráfico dos pontos da Tabela 5.2

Ao fornecer os dados x e y para o programa de ajuste de curvas implementado,


obtivemos o vetor solução: [17,114573 ; -7,7468090 ; 0,83522493]. O que indica que a
parábola que melhor se ajusta aos pontos é a equação 5.6:

( ) = 0,83522493 − 7,7468090 + 17,114573 (5.6)

5.1.4 Resultados Numéricos


Plotamos, pois, a curva da Equação 5.6 e os dados da Tabela 5.1 simultaneamente
na Figura 5.3.

49
Figura 5.3: Comparação entre a curva ajustada e os pontos fornecidos

Verificamos que o resultado foi muito satisfatório, pois a curva se ajustou da


melhor forma possível aos pontos, de modo a minimizar o erro.
A Tabela 5.2 apresenta o valor da função no ponto x, fazendo uma comparação
entre os dados fornecidos e o resultado da parábola ajustada.

x 1 2 3 4 5 6
y 10 5,49 0,89 -0,14 -1,07 0,84
g(x) 10,202989 4,961855 1,391170 -0,509064 -0,738849 0,701816
|∆ | 0,202989 0,528145 0,501170 0,369064 0,331151 0,138184
Tabela 5.2: Valores fornecidos e obtidos e a diferença ∆ entre eles em módulo

A diferença entre os valores obtidos e os fornecidos se encontra, em todos os


casos, na primeira casa decimal. Vale lembrar, que o ajuste através dos mínimos
quadrados não visa encontrar uma função que contenha os pontos dados, mas, ajustar
uma curva da melhor forma possível, minimizando erros.

50
CAPÍTULO 6

Integração Numérica

Sabemos do Cálculo Diferencial e Integral que se ( ) é uma função contínua


em [a, b], então esta função tem uma primitiva neste intervalo, ou seja, ( ) tal que
( ) = ( ). Assim, ∫ ( ) = ( ) − ( ), no entanto, pode não ser fácil
expressar esta função primitiva por meio de combinações finitas de funções
elementares. (RUGGIERO e LOPES, 1996).
Nesse caso ou na situação de não haver primitiva, podemos recorrer a alguns
métodos numéricos que nos forneçam boas aproximações.
A ideia básica da integração numérica reside na aproximação da função
integrando por um polinômio. A escolha desse polinômio e dos pontos que serão usados
na sua determinação vai definir os diversos métodos de integração. Uma vez
estabelecida a aproximação polinomial conveniente, sua integração é fácil. (CUNHA,
2000).
Os métodos de integração numérica geralmente seguem fórmulas como a
expressa na Equação 6.1.

∫ ( ) ≅∑ ( ) (6.1)

onde representa o peso da integração e são os pontos de integração.

6.1 Regra do Trapézio

Na Regra do Trapézio o polinômio que liga os pontos( , ( )) e ( , ( )),


vistos na Figura 6.1, é de primeiro grau, ou seja, é a conhecida função afim. A área do
trapézio representado é dada pela Equação 6.2.

[ ( ) ( )]×( ) (6.2)
=

51
Figura 6.1: Aproximação da integral pela área de um trapézio

A Figura 6.2 demonstra um segundo caso. Quando a integral é aproximada por n


trapézios.

Figura 6.2: Aproximação da integral pela área de n trapézios

A área de cada trapézio é dada pela Equação 6.3.

×
= (6.3)

Temos, então, que:

52

( ) ≅ = [ + ]
2

( ) ( )
= ℎ ( + ( )+ )
2 2

6.1.1 Algoritmo
O algoritmo que envolve o modelo matemático supracitado está na Figura 6.3
Entre as variáveis reais, temos um vetor x que recebe o valor da função nos
pontos desejados para, posteriormente, realizar o somatório denotado por soma. I é o
valor da integral, h é a altura do trapézio e d uma variável auxiliar.
Entre os parâmetros inteiros, a e b são, respectivamente, os limites inferior e
superior de integração, n é a quantidade de pontos e i é apenas um contador.

Algoritmo 1
Regra dos Trapézios
real x(50), soma, I, h, d
int a, b, n, i
entre com a, b, n
h←(b-a)/n
←0
d←a
faça
x(i)=f(d)
←i+1
d ← d+h
enquanto(d≤b)
soma←0
faça i=1,n-1,1
soma←soma+x(i)
fim faça
I←0,5*h*(2*soma+x(0)+x(n))
escreva I
FIM
Algoritmo 2
função f (x)
retorne (função desejada)
fim
Figura 6.3: Algoritmo da Regra dos Trapézios

53
6.1.2 Exemplo
Vamos integrar as funções ( )e ( ). (CAMPOS FILHO, 2001).

( )= ( )

( )
( )=
√2 + 4

Para ( ) entraremos com n=4 e para ( ), n=5.

6.1.3 Resultados Numéricos


Os resultados obtidos para ( )e ( ) encontram-se na Tabela 6.1.

Função Resultado
( ) 18,030964
( ) 0,564431
Tabela 6.1: Integração numérica de ( )e ( )

É importante ressaltar que, quanto maior o valor de n, mais próximo o resultado


obtido estará do valor real. Isso acontece porque h e n variam de maneira inversamente
proporcional e h é a altura dos trapézios. Quanto menor h, mais os trapézios agrupados
se aproximam da curva desejada.

6.2 Método de Simpson

Diferente da Regra dos Trapézios, que utilizava como polinômio interpolante


uma função de primeiro grau, no Método de Simpson, a curva é uma função quadrática.
Sejam três pontos ( , ), ( , )e( , ). Vamos interpolar entre
eles um polinômio de Lagrange de segundo grau.

54
Para melhor compreensão, realizamos uma mudança de notações, como
demonstra a Figura 6.4.

Figura 6.4: Integração numérica através da Regra de Simpson

A integral de ( ) é:

Considerando:

ℎ= e =

∫ ( ) se torna:

Vamos agora dividir o intervalo [ , ] em n intervalos. Isto é:

55
Depois de algumas operações algébricas, temos que ∫ ( ) é:

6.2.1 Algoritmo
O algoritmo do Método de Simpson está na Figura 6.5.
Os parâmetros são exatamente os mesmos utilizados na Regra dos Trapézios.
Algoritmo 1
Método de Simpson
real x(50), soma, I, h, d
int a, b, n, i
entre com a, b, n
h←(b-a)/n
←0
d←a
faça
x(i)=f(d)
←i+1
d ← d+h
enquanto(d≤b)
soma←0
faça i=1,n-1,1
se ((i÷2)≠0) então
soma←soma+2*x(i)+x(i+1)
fim se
fim faça
I←(1÷ 3)*h*(2*soma+x(0)-x(n))
escreva I
FIM
Algoritmo 2
função f (x)
retorne (função desejada)
fim
Figura 6.5: Algoritmo do Método de Simpson

56
6.2.2 Exemplo
Vamos integrar as funções ( )e ( ). (CAMPOS FILHO, 2001).

( )= (4 ³ + 3 ² + + 1)

1
( )=

Para ( ) entraremos com n=6 e para ( ), n=10.

6.2.3 Resultados Numéricos


Os resultados obtidos para ( )e ( ) encontram-se na Tabela 6.1.

Função Resultado
( ) 112,000000
( ) 0,693150
Tabela 6.2: Integração numérica de ( )e ( )

57
CAPÍTULO 7

Resoluções de Equações Diferenciais Ordinárias

Equações diferenciais devem possuir como parâmetros funções representadas


por incógnitas e, no mínimo, uma derivada dessas funções. Elas se destacam em áreas
como mecânica dos fluidos, fluxo de calor, vibrações, economia, entre outras.
(RUGGIERO e LOPES, 1996).
Se possuir apenas uma variável independente, é classificada como uma equação
diferencial ordinária (E.D.O), caso contrário, é uma equação diferencial parcial (E.D.P).

(E.D.O) (E.D.P)

Os métodos analíticos são restritos apenas a algumas formas especiais de função,


visto que nem toda EDO tem solução analítica. Os métodos numéricos não possuem tal
limitação, contudo, a solução numérica é obtida como uma tabela de valores da função
em vários valores da variável independente, em vez de uma relação funcional como na
solução analítica. Deste modo, praticamente qualquer EDO pode ser resolvida
numericamente. No entanto, se as condições iniciais forem alteradas, toda a tabela deve
ser recalculada. (CAMPOS FILHO, 2001)
A utilização de computadores nessa área é de suma importância no sentido de
calcular soluções aproximadas através de métodos numéricos e posteriormente gerar
gráficos da função, facilitando a compreensão do problema.
Neste Capítulo vamos conhecer e implementar o Método de Euler e os demais
Métodos Runge-Kutta.

7.1 Método de Euler

Seja a equação de primeira ordem com condição inicial:

58
( )= ( , )
( )= (7.1)

Consideremos a malha¹ definida pelo passo h. Podemos usar a fórmula de


diferenças finitas avançadas para discretizar a derivada de ( ) no ponto . Temos,
então:

= ( , ) (7.2)

Isolando :
= +ℎ ( , ), = 1,2, … (7.3)

A Equação 7.3 define o Método de Euler.


Vejamos uma aplicação a seguir.

7.1.1 Algoritmo
A Figura 7.1 apresenta o Algoritmo para o Método de Euler. O usuário deve
entrar com as condições iniciais Qzero e tzero, o tempo final tfim e o passo h. n
corresponde ao número de pontos que serão calculados e i é apenas um contador.
O Algoritmo 2 retorna apenas o valor da função num determinado x.

______________________________________________________________________
¹Uma malha é um conjunto finito de pontos. A malha de passo h associada a é o conjunto de
pontos = ± ℎ, = 1,2, …

59
Algoritmo 1
Método de Euler
real Q, Qzero, t, tzero, h, tfim
inteiro n, i
entre com Qzero, tzero, tfim, h
←(tfim-tzero)/h
←0
t ← tzero
Q ← Qzero
faça i=1,n,1
Q←Q+h*f(x)
t←t+h
escreva i, t, Q
FIM
Algoritmo 2
função f (x)
retorne (função desejada)
fim
Figura 7.1: Algoritmo do Método de Euler

7.1.2 Exemplo
Um tanque contém, inicialmente, a solução de 45 kg de sal dissolvidos em
5000L de água. Ele recebe r galões por minuto, onde cada galão comporta 100g de sal
dissolvidos em 100 L de água. O tanque possui um orifício por onde sai a solução a r
galões por minuto. A Figura 7.2 esquematiza a situação.
Deseja-se conhecer a função que representa a quantidade de sal no tanque e
como ela se comporta.

Figura 7.2: Esquematização do Exemplo


Fonte: BOYCE, W. E.; DIPRIMA, R. C.. 2006. p. 29
60
Parâmetros:
t0 = tempo inicial (min);
t = tempo (min);
Q = quantidade de sal dissolvido no tanque (kg);
Q0 = quantidade inicial de sal dissolvido no tanque (kg);
r = galões;

A variação de soluto com relação ao tempo no tanque é:

(7.1.1)

Logo, a equação diferencial que representa esse problema é:

(7.1.2)

Condição inicial:

(7.1.3)

Onde:
t0 = 0 min
Q0 = 45 kg

Com a equação diferencial (7.1.2) e a condição inicial (7.1.3) está formulado o


P.V.I. em questão.

 Resolução Analítica
Neste momento, vamos resolver essa EDO de forma analítica de modo que,
quando obtivermos a resolução numérica, possamos ter condições de validá-la.
Organizando a Equação 7.1.2, temos:

(7.1.4)

61
O fator integrante da Equação 7.1.4 é:

µ(t) = e ʃ(r/50)dt = e r.t/50 (7.1.5)

Multiplica-se a Equação 7.1.5) em ambos os lados de 7.1.4 e, posteriormente,


calculamos a integral dos termos. Assim:

(7.1.6)

Aplicando-se as condições (7.1.3) para calcular o valor da constante C e tornar a


solução particular:

(7.1.7)

 Resolução Numérica
A fórmula geral do Método de Euler, para esse exemplo, pode ser calculada
substituindo a Equação 7.1.2 em 7.3 e adaptando os parâmetros:

(7.1.8)

7.1.3 Resultados Numéricos


Com os dados coletados através do procedimento descrito, foi possível
plotar o gráfico com diferentes valores de h.

62
Figura 7.3: Gráfico composto pelas curvas formadas por diferentes valores de h e a
solução exata

Abaixo, um gráfico comparativo que apresenta vários valores de Q0, através do


qual é possível perceber que as curvas plotadas entre 30 < Q < 50 tem comportamento
semelhante ao do gráfico anterior.

Figura 7.4: Gráfico representativo de uma situação semelhante a do exemplo


Fonte: BOYCE, W. E.; DIPRIMA, R. C.. 2006. p. 30.
Analisando a Figura 7.3, infere-se que, quando o passo é menor, a curva se
aproxima da solução exata, em outras palavras, a aproximação converge para a solução,

63
diminuindo o erro associado ao método de Euler. A seguir, as Tabelas 7.1 à 7.4 que
expressam em valores essa situação.

Tempo Quantidade de Sal Quantidade de Sal Erro absoluto


Aproximada Exata
10,0 21,000000 45,000000 24,000000
30,0 7,560000 17,047768 9,487767
50,0 5,409600 8,628718 3,219118
70,0 5,065536 6,092949 1,027413
90,0 5,010486 5,329190 0,318704
Tabela 7.1: Dados referentes a h=10.0 e r=3

Tempo Quantidade de Sal Quantidade de Sal Erro absoluto


Aproximada Exata
10,0 24,600000 34,632729 10,032728
30,0 9,705961 13,925206 4,219245
50,0 6,129901 7,688221 1,558319
70,0 5,271289 5,809677 0,538387
90,0 5,065136 5,243870 0,178733
Tabela 7.2: Dados referentes a h=5.0 e r=3

Tempo Quantidade de Sal Quantidade de Sal Erro absoluto


Aproximada Exata
10,0 26,544605 28,309931 1,765326
30,0 11,250223 12,020816 0,770593
50,0 6,813228 7,114629 0,301402
70,0 5,526029 5,636914 0,110886
90,0 5,152604 5,191835 0,039231
Tabela 7.3: Dados referentes a h=1.0 e r=3

64
Tempo Quantidade de Sal Quantidade de Sal Erro absoluto
Aproximada Exata
10,0 26,912827 27,084574 0,171747
30,0 11,576203 11,651715 0,075512
50,0 6,973567 7,003490 0,029923
70,0 5,592282 5,603451 0,011169
90,0 5,177749 5,181759 0,004011
Tabela 7.4: Dados referentes a h=0.1 e r=3

É nítido que a resolução numérica através do Método de Euler alcança


resultados muito satisfatórios. Também é necessário deixar claro que, conforme o valor
do passo h diminui, resultados ainda mais precisos podem ser alcançados.

7.2 Métodos Runge Kutta

A ideia do Método de Euler (que é um método de Runge Kutta de primeira


ordem), visto anteriormente, tem versões de maior precisão nos trabalhos de Runge em
1895, para o caso de uma equação, e Kutta em 1901, para o caso de um sistema de
equações diferenciais de primeira ordem.(CUNHA, 2000).
Portanto, se o usuário desejar uma exatidão maior em seus resultados, deve optar
por um Método de Runge Kutta de ordem mais elevada. Sua forma geral é:

= + ℎ∅( , ; ℎ), ∅( , ; ℎ) = + + ⋯+ ,
= ( , ),
= ( + ℎ, + ℎ ),
= ( + ℎ, + ℎ( + )),

= + ℎ, + ℎ( + +⋯+ , ),

sendo a, b e c constantes definidas para cada método particular. (CAMPOS


FILHO, 2001). Essas constantes são exibidas na Tabela 7.5

65
Tabela 7.5: Constantes do Método Runge Kutta

7.2.1 Algoritmo
Apresentamos nas Figuras 7.5, 7.6 e 7.7 os Algoritmos dos Métodos de Runge
Kutta para n=2, n=3 e n=4, repectivamente.

Algoritmo 1 (CUNHA, 2000)


Runge-Kutta ordem 2
entre com Yzero, h e f(x,y)
k=0,1,2,... faça
Mzero←h*f( , )
Mum←h*f( + ℎ, + Mzero)
= + (Mzero + Mum)/2)
FIM
Figura 7.5: Algoritmo do Método de Runge-Kutta ordem 2

Algoritmo 1 (CUNHA, 2000)


Runge-Kutta ordem 3
entre com Yzero, h e f(x,y)
k=0,1,2,... faça
Mzero←h*f( , )
Mum←h*f( + 0.5 ∗ ℎ, + 0.5 ∗ Mzero)
Mdois←h*f( , − Mzero + 2 ∗ Mum)
= + (Mzero + 4 ∗ Mum + Mdois)/6)
FIM

Figura 7.6: Algoritmo do Método de Runge-Kutta ordem 3

66
Algoritmo 1 (CUNHA, 2000)
Runge-Kutta ordem 4
entre com Yzero, h e f(x,y)
k=0,1,2,... faça
Mzero←h*f( , )
Mum←h*f( + 0.5 ∗ ℎ, + 0.5 ∗ Mzero)
Mdois←h*f( 0.5 ∗ ℎ, + 0.5 ∗ Mum)
Mtres←h*f( , + Mdois)
= + (Mzero + 2 ∗ Mum + 2 ∗ Mdois + Mtres)/6)
FIM

Figura 7.7: Algoritmo do Método de Runge-Kutta ordem 4

7.2.2 Exemplo
Vamos utilizar como exemplo a equação diferencial:
1
( )= −2 ²
1+ ²

A resolvemos através de todos os métodos de Runge-Kutta estudados para h=0,1


e h=0,01.

7.2.3 Resultados Numéricos


Os resultados numéricos encontrados para os métodos de Runge-Kutta, assim
como a solução analítica, encontram-se dispostos nas Tabelas 7.6 e 7.7

x Solução Euler Runge-Kutta Runge-Kutta Runge-Kutta


Analítica ordem 2 ordem 3 ordem 4
0,2 0,192308 0,197010 0,191292 0,192321 0,192307
0,4 0,344828 0,360854 0,342931 0,344878 0,344825
0,6 0,441176 0,465566 0,438854 0,441258 0,441172
0,8 0,487805 0,513707 0,485559 0,487896 0,487800
Tabela 7.6: Resultados para h=0,1

67
x Solução Euler Runge-Kutta Runge-Kutta Runge-Kutta
Analítica ordem 2 ordem 3 ordem 4
0,2 0,192308 0,192842 0,192298 0,192308 0,192308
0,4 0,344828 0,346439 0,344810 0,344828 0,344828
0,6 0,441176 0,443536 0,441156 0,441177 0,441177
0,8 0,487805 0,490303 0,487785 0,487805 0,487805
Tabela 7.7: Resultados para h=0,01

Para uma visualização mais clara, vamos plotar um gráfico para cada valor de h
testado para que ilustrem os resultados obtidos. Eles se encontram nas Figuras 7.8 e 7.9.

Figura 7.8: Curvas obtidas para h=0,1

68
Figura 7.9: Curvas obtidas para h=0,01

Na Figura 7.8 já podemos constatar a proximidade das curvas, exceto a do


método de Euler que se mateve levemente afastada. Na Figura 7.9, a diferença existente
entre as curvas é muito pequena.
O exemplo apresentado demonstra com clareza a eficiência e praticidade dos
Métodos de Runge-Kutta. A sua facilidade de implementação e precisão os tornam
muito frequentes na resolução de equações diferenciais ordinárias.
Percebemos também que conforme a ordem do método cresce, os resultados se
tornam ainda mais exatos. Como esperado, o decréscimo de h também contribui para
resultados ainda mais perfeitos.

69
8. CONCLUSÃO

Os métodos numéricos abrem um leque de possibilidades muito extenso ao


programador. O permite escolher entre vários métodos existentes um que se ajuste às
suas necessidades. Um exemplo clássico se encontra no Capítulo 7 que apresenta
métodos para a resolução de equações diferenciais ordinárias. Podemos escolher qual
dos métodos Runge-Kutta utilizaremos, a depender da precisão desejada.
O aprendizado relacionado a esses métodos, mesmo que de forma básica, deve
ocorrer durante os cursos de Engenharia, pois são fundamentais para solucionar muitos
problemas frequentes. Um exemplo disso é o cálculo de projetos estruturais que
necessita da resolução de sistemas lineares.
É interessante que o aluno perceba que não há limites dentro dessa área. Os
métodos podem, e devem, ser aprimorados com o passar dos anos ou formas diferentes
de se realizar a mesma operação podem ser implementadas, sempre visando uma maior
praticidade na obtenção de resultados.

70
REFERÊNCIAS BIBLIOGRÁFICAS

CUNHA, M. C. C. Métodos Numéricos – 2ª edição. Editora Unicamp, 2000.

RUGGIERO, M. A. G.; LOPES, V. L. da R. Cálculo Numérico – Aspectos Teóricos e


Computacionais – 2ª edição. Pearson Education do Brasil, 1996.

SHIGUE, C. Y. Cálculo de Raízes de Funções, 2009.

CAMPOS FILHO, F. F. Algoritmos Numéricos – 2ª edição. Editora LTC, 2001.

BARROSO, C. L; BARROSO, M. M. A; CAMPOS FILHO, F. F; CARVALHO, M. L.


B., MAIA, M. L. Cálculo Numérico (com Aplicações) – 2ª edição. Editora Harbra ltda.,
1987.

FRANCO, N. B. Cálculo Numérico. Editora Pearson Prentice Hall, 2006.

SHIGUE, C. Y. Cálculo de Sistemas de Equações Lineares, 2009.

SHIGUE, C. Y. Apostila de Ajuste de Curvas, 2009.

71
ANEXOS

 CAPÍTULO 2

Código para o Método da Bisseção

72
Código para o Método de Newton

73
Código para o Método da Secante

74
75
Código para o Método Pégaso

 CAPÍTULO 3

76
Código para Eliminação Gaussiana

77
78
Código para Método Gauss Seidel

 CAPÍTULO 4

79
Código para Método de Lagrange

80
81
Código para Splines Cúbicas Naturais

82
 CAPÍTULO 5

83
Código para Ajuste pelo Método dos Mínimos Quadrados

84
 CAPÍTULO 6

Código para Integração pelo Método de Simpson

85
Código para Regra dos Trapézios

86
 CAPÍTULO 7

Código para Método de Euler

87
Código para Método de Runge-Kutta ordem 2

88
Código para Método Runge-Kutta de ordem 3

89
Código para Método Runge-Kutta ordem 4

90

Você também pode gostar