Вы находитесь на странице: 1из 30

UNIVERSIDADE FEDERAL DA BAHIA

INSTITUTO DE CINCIAS AMBIENTAIS E


DESENVOLVIMENTO SUSTENTVEL- (ICADS)
COLEGIADO DE FSICA
DISCIPLINA: CALCULO NUMRICO

Drick Gabriel F. Borges


Calculo numrico abordagem terica e computacional


Professor: Kennedy Morais Fernandes

Barreiras-ba, 8 de outobro de 2012

Sumrio

1- Introduo
-Conceito de calculo numrico
-Aplicaes
-erros
2- Raizes
-Mtodo da Bisseo
-Mtodo de Newton
-Mtodo da Secante
3- Sistemas Lineares
-Mtodo da Eliminao Gaussiana
-Mtodo da Gauss Seidel
4- Ajuste de curvas
-Mtodos do Mnimo Quadrado
5- Interpolao
-Polinmio de Lagrange
-Spline Cubico
6- Integrao Numrica
-Regra do Trapzio
-Mtodo de Simpson
7- Resoluo de EDO
-Mtodo Euler
-Mtodos de Runge Kutta
8- Concluso
9- Referncias








1. Introduo

Clculo Numrico e o ramo da matemtica que desenvolve algoritmos


para simular processos matemticos complexos provenientes do mundo real.
Esses algoritmos so seqncia de instrues ordenadas, de modo a fornecer em
seu decurso, a soluo para um problema especfico. No contexto de Clculo
Numrico, os algoritmos so denominados de Mtodos Numricos.[1] Esses
mtodos se aplicam principalmente a problemas que no apresentam uma
soluo exata(situao real), portanto precisam ser resolvidos numericamente.

Calculo numerico aplica-se as cincias exatas e as engenharias,
geralmente em problemas fisicos do contexto real, como:
- eltricidade
- petrleo
- cores
- presso
- resistncia

A utilizao de simuladores numricos para determinao da soluo de
um problema requer a execuo da seguinte seqncia de etapas:
Etapa 1: Definir o problema real a ser resolvido
Etapa 2: Observar fenmenos, levantar efeitos dominantes e fazer referncias a
conhecimentos prvios fsicos e matemticos
Etapa 3: Modelagem, fase de obteno de um modelo matemtico que descreve
um problema fsico em questo.
Etapa 4: Resoluo, fase de obteno da soluo atravs da aplicao de mtodos
numricos.



Ao se tentar representar um fenmeno fsico por meio de um mtodo
matemtico, raramente se tem uma descrio correta deste fenmeno,
normalmente, so necessrias vrias simplificaes do mundo fsico para que se
tenha um modelo. Tais simplificaes resultam em erros. A resoluo de modelos
matemticos exige, muitas vezes, o uso de instrumentos de clculo que
necessitam de aproximaes, tais aproximaes podem gerar erros, tais como: [1]
- Erros inerentes.
- Erros de arredondamento.
- Erros de truncamento.

Erro inerentes, so erros que existem nos dados e so causados pelos
erros dos prprios equipamentos utilizados na captaao dos dados.
Erros de arredondamento, so os erros originados pela representao do
nmeros reais utilizando-se apenas um numero finito de casas decimais.
Erros de truncamento, so os erros causados quando utilizamos num
processo algoritmo infinito apenas uma parte finita do processo.
A noo de erro sempre estar presente em todos os campos do Clculo
Numrico, pois sempre temos dados nem sempre exatos, as operaes sobre
valores no exatos propagam os erros e os Mtodos Numricos so, em geral
mtodos de aproximao. [1]

2. Raizes

Nas mais diversas reas das cincias exatas ocorrem, frequentemente,


situaes que envolvem a resoluo de uma equao do tipo () = 0
A idia central dos mtodos numricos para encontrar as raizes de uma
equao, parti de uma aproximao inicial para a raiz (um intervalo onde
imaginamos a raiz estar contida) e em seguida refinar essa aproximao atravs
de um processo iterativo. [2]
A forma como se efetua o refinamento que diferencia os mtodos.
Temos varios mtodo, sero apontados nesse trabalho o da Bisseao, de Newton,
da Secante.

Mtodo da Bisseo, parte de um intervalo inicial [a,b] que se sabe
conter o zero de , suposto nico. Em cada iterao produzido um intervalo
com metade do comprimento do intervalo actual. Para tal, divide-se o intervalo
actual a meio e escolhe-se o subintervalo esquerdo ou direito de forma a que a
funo tenha sinais diferentes nos extremos do subintervalo escolhido. Ou seja,
! !!
sendo [! , ! ] o intervalo na iterao n, calcula-se !!! = ! ! ! . O valor + 1
substitui ! ou ! consoante !!! (! ) < 0 ou !!! (! ) < 0 . Desta
forma, assegura-se que s [! , ! ] em qualquer iterao. O erro absoluto da
!!!

estimativa de ! e dado por !! .[3]



Calculando a raiz da funo = 1 + + ! pelo mtodo da bisseo, com
erro de 10!! .

Fortran 1 (implementao)

program bissecao
implicit none
real xm,xe,xd,f,e
integer result,i
result=21
open(unit=result,file='result.txt')
xe=-2.
xd=-1.
e=10**(-5.)
xm=(xe+xd)/2.
do while (abs(xe-xd)>e)
if (f(xe)*f(xm)>0.) then
xe=xm
else
xd=xm
end if
xm=(xe+xd)/2.
write(*,*)'raiz',xm
end do
end

function f(x)
real f,x
f=1+x+exp(x)
return
end



Resultados obtidos

n
!
f(! )
!
f(! )
!!!
f(!!! )
0
-2.000
-0.865
-1.000
+0.368
-1.500
-0.277
1
-1.500
-0.277
-1.000
+0.368
-1.250
+0.037
2
-1.500
-0.277
-1.250
+0.037
-1.375
-0.122
3
-1.375
-0.122
-1.250
+0.037
-1.313
-0.043
4
-1.313
-0.043
-1.250
+0.037
-1.281
-0.004
5
-1.281
-0.004
-1.250
+0.037
-1.266
+0.016
6
-1.281
-0.004
-1.266
+0.016
-1.276
+0.006
7
-1.281
-0.004
-1.273
+0.006
-1.277
+0.001
Tabela 1

A soluo da equao ser s = 1.277 4 10!! , ou seja, s [1.281, 1.273].

Mtodo da Newton, e um dos mtodos mais poderosos para resolver
equaes do tipo () = 0. Este mtodo parte de uma estimativa inicial x0 e
gera uma sucesso {! } de uma forma recorrente.
Cada novo valor da sucesso, !!! , e determinado como sendo a abcissa
do ponto de interseo com o eixo dos xx da reta tangente a funo no ponto
(! , ((! )), ou seja, no ponto correspondente ao valor anterior da sucesso.
A expresso de interao que permite determinar !!! em funo de ! e dado
por : [3]

y = f(! ) + f(! ) ( ! )
! + 1 = !

(! )

(! )



Calculando a raiz da funo = 1 + + ! pelo mtodo de Newton, erro de
10!! .

Fortran 2 (implementao)

program newton
implicit none
real xo,xn,f,df,e,h
integer i
xo=0.

e=10**(-6.)
xn=xo-(f(xo)/df(xo))
do while (abs(f(xn))>e)
xo=xn
xn=xo-(f(xo)/df(xo))
print*,xn
end do
end
function f(x)
real f,x
f=1+x+exp(x)
return
end
function df(x)
real df,x,f,h
h=0.01
df=(f(x+h)-f(x))/h
return
end


Resultados obtidos

n
!!!
erro
!
f(! )
f(! )
!!
0
-1.0000
+1.368
-1.26894
+3.68 10
1.2 10!!
1
-1.26894 +1.22 10!!
+1.281
-1.27845
1.5 10!!
2
-1.27845 +1.27 10!!
+1.278
-1.27846
1.6 10!!!
Tabela 2

A soluo aproximada ser s 1.27846

Mtodo da Secante, e semelhante ao mtodo de Newton, com a diferena
de que a reta tangente a funo substituda pela reta secante nos dois ltimos
pontos. Este mtodo obriga a que em cada iterao sejam guardadas as duas
ltimas estimativas da soluo a determinar. Essa reta e descrita pela equao: [3]
= !!! +

!!!
( !!! )
!!!


!!! =

+ 1 (!!! )

(!!! )


Calculando a raiz da funo = 1 + + ! pelo mtodo da Secante, com erro
de 10!! .

Fortran 3 (implementao)

program newton
implicit none
real a,b,xn,f,e,h
integer i
a=-1.
b=0.
e=10**(-5.)
xn=a-(f(a)/(f(a)-f(b)))*(a-b)
do while (abs(f(xn))>e)
a=xn
xn=a-(f(a)/(f(a)-f(b)))*(a-b)
print*,xn
end do
end
function f(x)
real f,x
f=1+x+exp(x)
return
end


Resultados obtidos


n
!!!
0
-1.00000
1
-1.10000
2
-1.27249
Tabela 3

!
-1.10000
-1.27249
-1.27834

!!!
-1.27249
-1.27834
-1.27846

f(!!! )
7.65 10!!
1.55 10!!
1.01 10!!

erro
7.6 10!!
1.7 10!!
1.2 10!!

A estimativa obtida s 1.27846.




3. Sistemas lineares

A resoluo de sistemas de equaes lineares um dos problemas


numricos mais comuns em aplicaes cientficas. Tais sistemas surgem, por
exemplo, em conexo com a soluo de equaes diferenciais parciais,
determinao de caminhos timos em redes e interpolao o de pontos, dentre
outros. Vamos abordar nesse capitulo dois mtodos para soluo de sistemas
lineares o mtodo de Eliminao Gaussiana e Gauss Seidel.[4]

Eliminao Gaussiana, e um mtodo exato tambm chamado de mtodo
de Gauss Simples, consiste em transformar o sistema dado num sistema
triangular equivalente atravs de uma sequncia de operaes elementares
sobre as linhas do sistema original, isto , o sistema equivalente obtido atravs

da aplicao repetida da operao, substituir uma equao pela diferena entre


essa mesma equao e uma outra equao multiplicada por uma constante
diferente de zero. claro que tal operao no altera a soluo do sistema, isto ,
obtem-se com ela outro sistema equivalente ao original. O objetivo organizar
essa sequncia de operaes de tal forma que o sistema linear resultante seja
triangular superior.
Utilizando o mtodo de Eliminao Gaussiana para encontrar a soluo
para ! , ! ! .
3 1 1 !
7
0
!


=
1 4 2
4
0
!
0 2 5 !
5
0
resultados obtidos:
Soluo exata
2.0000
0.0000
1.0000
Tabela 4

Os resultados mostrados na tabela 4 corresponde a soluo exata para
! , ! ! nessa ordem.

Fortran 4 (implementao)
program elininacaogauss
implicit none
real A(100,100), B(100), X(100), max, aux
integer i, j, k, n, entrada,saida
entrada = 12
saida=11
n = 3
open (unit = entrada, file = 'entrada.txt')
open (unit = saida, file = 'saida.txt')
do i=1,n,1
read (entrada,*) (A(i,j), j=1,n,1)
end do
do i=1,n,1
read (entrada,*) B(i)
end do
do i=1,n-1,1
k = i
max = abs(A(i,i))
do j=i+1,n,1
if(abs(A(j,i)) > max) then
max = abs(A(j,i))

k = j
end if
end do
if (i .ne. k) then
do j=1,n,1
aux = A(i,j)
A(i,j) = A(k,j)
A(k,j) = aux
end do
aux = B(i)
B(i) = B(k)
B(k) = aux
end if
do j=i+1,n,1
aux = A(j,i)/A(i,i)
A(j,i) = 0
do k=i+1,n,1
A(j,k) = A(j,k) - aux*A(i,k)
end do
B(j) = B(j) - aux*B(i)
end do
end do
do i=n, 1, -1
X(i) = B(i)
do j=i+1,n,1
X(i) = X(i) - A(i,j)*X(j)
end do
X(i) = X(i)/A(i,i)
end do
do i=1,n,1
write(saida,*) X(i)
end do
close (entrada)
close (saida)
end

Mtodo de Gauss Seidel, sendo um mtodo interativo, tem melhor


comportamento do que os mtodos exatos quando se trabalha com matrizes
esparsas. um dos mtodos iterativos mais comuns e simples para ser
programado em computador. A idia principal , cada coordenada do vetor
correspondente nova aproximao calculada a partir da respectiva equao
do sistema, utilizando-se as coordenadas do vetor aproximao da iterao
anterior, quando essas ainda no foram calculadas na iterao corrente, e as
coordenadas do vetor aproximao da iterao corrente, no caso contrrio. [5]
A funo interao do mtodo de Gauss Seidel pode ser expressada por:
!

! =

!!!
!
!!! !" !

!!

!
!!!
!!!!! !" !

= 1



Fortran 5 (implementao)

program gausseidel
implicit none
real A(100,100), B(100), X(100)
integer n, entrada, i, j, k,saida
character * 15 texto
entrada = 12
open (unit = entrada, file = 'dados.txt')
open (unit = saida, file = 'saida.txt')
read (entrada,*) texto
read (entrada,*) n
read (entrada,*) texto
do i=1,n,1
read (entrada,*) (A(i,j), j=1,n,1)
end do
read (entrada,*) texto
do i=1,n,1
read (entrada,*) B(i)
end do
do i=1,n,1
X(i) = 0
end do
do k=1,100,1
do i=1,n,1

X(i) = B(i)
do j=1,i-1,1
X(i) = X(i) - A(i,j)*X(j)
end do
do j=i+1,n,1
X(i) = X(i) - A(i,j)*X(j)
end do
X(i) = X(i)/A(i,i)
end do
end do
do i=1,n,1
write(saida,*) X(i)
end do
end


Aplicando-se Gaus Seidel, para calcular ! , ! ! .

3 1 1 !
7
0
!

1 4 2 ! = 4 = 0
0 2 5 !
5
0

Resultados obtidos

Interaes
!
!
!
1
2.3333
0.4167
0.8333
2
1.9167
0.1042
0.9583
3
1.9792
0.0260
0.9896
4
1.9942
0.0065
0.9974
5
1.9987
0.0016
0.9993
6
1.9997
0.0004
0.9998
7
1.9999
0.0001
1.0000




Soluo exata
2.0000
0.0000
1.0000
Tabela 5

Observa-se, que com poucas interaes se obteve o soluo exata
! = 2.000, ! = 0.000, ! = 1.000

4. Ajuste de curvas

Seja um conjunto de dados contendo n pares de valores (x, y) obtidos


numrica ou experimentalmente. De modo a calcular qualquer valor de y distinto
dos valores tabelados, ajustamos uma funo y = f(x) atravs do chamado Mtodo
dos Mnimos Quadrados.

Considere uma equao relacionando a varivel y com a varivel


independente x, como y = f (x) , onde y indica que este o valor aproximado de y.
Queremos encontrar a funo y = f (x) , cujo desvio em relao aos valores y seja
expresso como ! = ! ! .
Por uma questo de convenincia trabalharemos com o desvio quadrtico
!
! = (! ! )!
A funo y = f ( x ) que melhor ajusta os pontos (x, y) dados aquela que
minimiza o somatrio dos desvios quadrticos S:

!

!!
!!!

(! ! )!

=
!!!

A condio de minimizao da funo S satisfeita fazendo-se dS = 0, ou


seja, necessitamos calcular a derivada da funo S em relao aos parmetros de
ajuste da funo y = f(x) para que possamos encontrar o sistema de equaes
denominado equaes normais que conduz ao melhor ajuste dos pontos (x,y)
pela funo y = f(x) escolhida. Para cada tipo de funo de ajuste existe um
sistema de equaes normais que minimiza a soma dos desvios quadrticos S.

Temos varios ajustes que se fundamentam nos mtodos dos Mnimos
Quadrados, nesse trabalho ser apresentado ajuste linear, ajuste exponencial e
ajuste potencial.


Dados os pontos abaixo, faremos 3 ajustes: linear, exponencial e potencial.

x 1.0
1.2
1.4
1.6
1.8
2.0
2.2
2.4
2.6
2.8
3.0
y 0.525 0.8448 1.2807 1.8634 2.6326 3.6386 4.944 6.6258 8.7768 11.5076 14.9484
Tabela 6

Ajuste linear, funo na forma = ! + ! . A determinao dos coeficientes
! ! pelo mtodo dos mnimos quadrados e dado pelas expresses:

!
!
!
! !
!!!
!!! !!! !!!
! =

!!!! ! ( !!!! )!

!!!! !!!! !!!!
! =

!!!! ! ( !!!! )!

Fortran 6 (implementao)

program ajuste
implicit none

real X(100), Y(100), A(100,100), B(100), max, aux
integer i, j, k, entrada , saida, n, pontos

entrada = 12

saida = 14

open (unit = entrada, file = 'entrada.txt',status='old')
open (unit = saida, file = 'saida.txt')

read(entrada,*) n ! n determina o tipo de ajuste polinomial

read(entrada,*) pontos !quantidade de pontos

do i = 1, pontos, 1
read(entrada,*) X(i), Y(i)
end do

close(entrada)

do i=1,n,1
do j=1,n,1
A(i,j) = 0
end do
end do

A(1,1) = pontos

do i=1,n,1
do j= 1,pontos,1
A(i,n) = A(i,n) + X(j)**(n + i - 2)
end do
end do

do j=2,n-1,1
do i=1,pontos,1
A(1,j) = A(1,j) + X(i)**(j - 1)
end do
end do

do i=2,n,1
do j=1,n-1,1
A(i,j) = A(i - 1, j + 1)
end do
end do

do i=1,n,1
B(i) = 0
end do

do i=1,n,1
do j=1,pontos,1
B(i) = B(i) + (X(j)**(i - 1))*Y(j)
end do

end do

! inicio da resoluo do sistema

do i=1, n-1, 1

k=i

max=abs(A(i,i))

do j=i+1,n,1
if (abs(A(j,i)) > max) then
max = abs(A(j,i))
k = j
end if
end do

if (i .ne. k) then

do j=1, n, 1
aux = A(i,j)
A(i,j) = A(k,j)
A(k,j) = aux
end do

aux = B(i)
B(i) = B(k)
B(k) = aux
end if

do j=i+1,n,1
aux=A(j,i)/A(i,i)
A(j,i)=0

do k=i+1,n,1
A(j,k)=A(j,k) - A(i,k)*aux
end do

B(j)=B(j) - B(i)*aux
end do
end do

do i=n,1,-1

X(i) = B(i)

do j=i+1,n,1
X(i)=X(i) - A(i,j)*X(j)
end do


X(i)=X(i)/A(i,i)

end do

write (saida,*) 'Coeficientes do polinomio'

do i=1,n,1
write(saida,*) X(i)
end do

close(saida)

end

solues

logo o ajuste Linear : = 8.3187 + 6.770


O grfico 1 apresenta o ajuste Linear com os pontos da tabela 6.





Ajuste Exponencial, funo na forma = ! !! , precisa ser linearizada.
Linearizao y = ln(y) ;
ln = (! ) + (! )

Logo ! = !! + !!

Soluo do ajuste exponencial : = 0.12349 !.!"#"!



O grfico 2 apresenta o ajuste exponencial com os pontos da tabela 6.

Ajuste potencial, funo na forma = ! !! , precisa ser linearizada.


Linearizao y = ln(y) ; x = ln(x).

ln = ln ! + ! ln ()
logo ! = !! + ! !

soluo do ajuste potencial : = 0.47227 !.!"#$

O grfico 3 apresenta o ajuste potencial com os pontos da tabela 6.

O grfico 4 apresenta todos os ajustes com os pontos da tabela 6.


Utilizando se conceitos de estatstica, regra de Pearson obtemos que o melhor
ajuste e o exponencial. Visualmente nota se tambm que o ajuste exponencial
aproxima se melhor dos pontos do que os outros ajustes.

5. Interpolao

O problema de interpolao consiste em, dado um conjunto de pares


ordenados (x0, y0), (x1, y1), . . . , (xn, yn), determinar uma funo g, designada
funo interpoladora, tal que :
g xi = yi , i = 0,1, . . . , n.

Os valores x0,x1,...,xn designam-se por ns de interpolao e devem
satisfazer a condio i j xi xj, ou seja, serem todos diferentes. Os
correspondentes valores y0, y1, . . . , yn designam-se por valores nodais.
Perante um dado problema de interpolao ser necessrio ter em
considerao diversas questes, das quais se destacam a escolha da classe de
funes interpoladoras a utilizar e a forma de determinar concretamente a
funo interpoladora.

O problema de interpolao tem aplicaes em diversas situaes como:
- O clculo de funes fornecidas por tabelas quando se pretende avaliar
funo em pontos no tabelados.
- Quando apenas se conhecem os valores de uma funo em certos pontos,
por exemplo resultantes de medidas experimentais, e se pretende avaliar a
funo em novos pontos.
- Aproximao de funes cujo clculo seja complexo ou exija grande
esforo.

A base de muitos mtodos numricos.

Dentre os tipos de interpolao se destacam interpolao linear,


interpolao polinomial e interpolao trigonomtrica. Neste trabalho iremos
apresentar a interpolao polinomial pela forma de Lagrange que ser definido
mas adiante. Mas muitas vezes porem ocorre o inconveniente de uma funo g
qualquer apresentar um valor muito discrepante em relao a um dado valor de
f, valor real, ai que surge a necessidade de se utilizar um outro tipo de
interpolao o Spline, que interpola f em grupos de poucos pontos. Nesse
trabalho usaremos o Spline Cbico que tambm ser definido mais adiante.



Forma Lagrange

Num conjunto de pontos distintos (! )!!!! . Os polinmios (de grau n)
definidos pela expresso:

! () =
!!!,!!!

!
= 0,1
! !



designam-se por polinmios de Lagrange, relativos aos pontos x0, x1, . . . , xn.
O polinmio interpolador na forma de Lagrange obtido como uma
combinao linear dos polinmios de Lagrange relativos aos pontos em questo.
Os coeficientes desta combinao linear sero os valores de y a interpolar.
O polinmio p, de grau menor ou igual a n, que interpola o conjunto de
valores y0, y1, ... , yn ns pontos distintos x0, x1, ... , xn dado por: [3]


!

! =

! ! () = !
!!!



Seja a funo = sen conhecida nos pontos da tabela 7.


x
y
0
0,031570
2
1.278745
4
-1.521074
6
-0.591799
8
2.793026
Tabela 7

Temos no grfico 5 a curva gerada pela interpolao de Lagrange,
comparado com a curva exata.




Fortran 7 (implementao)

program Lagrange
implicit none
real a, h, x(100), f(100), Paux(100), P
integer i, j, entrada, saida, n
entrada = 40
saida = 20
h = 0.1
!intervalo com o qual os pontos sero imprimidos na
sada
open (unit=entrada,file='lagrangeentrada.txt')
open (unit=saida,file='lagrangesaida.txt')
read (entrada,*) n

!nmero de pontos

do i=1,n,1
read(entrada,*) x(i), f(i)
end do
a = x(1)
do while (a < x(n))
do i=1,n,1
Paux(i) = 1
end do
do j=1,n,1

do i=1,j-1,1
Paux(j) = Paux(j)*(a - x(i))/(x(j) - x(i))
end do
do i=j+1,n,1
Paux(j) = Paux(j)*(a - x(i))/(x(j) - x(i))
end do
Paux(j) = Paux(j)*f(j)
end do
P=0
do i=1,n,1
P = P + Paux(i)
end do
write(saida,*) a,P
a = a + h
end do
close (entrada)
close (saida)
end



Forma Spline Cbica
Suponha que f(x) esteja tabelada nos pontos ! , = 0,1,2, , a funo
! () chamada spline cbica interpolante de f(x) nos ns ! , = 0,1,2, , se
existem n polinmios de grau 3, ! (), = 1, , tal que:

! = ! ( ! )! + ! ( ! )! + ! ( ! )! + !, = 1,2, , .

! () Tem derivadas de primeira e segunda ordem contnuas, o que faz
com que a curva ! () no tenha picos e nem troque abruptamente de curvatura
nos ns. [6]

Seja a mesma funo = sen do exemplo anterior, conhecida nos
pontos da tabela 7. Temos o grfico da curva gerada pela interpolao de Spline
Cbica.


Temos no grfico 6 a curva gerada por Spline Cbica, comparado com a
curva da soluo exata.



Fortran 8 (implementao)
program splinecubico
implicit none
real X(0:100), Y(0:100), A(100,100), B(100), G(0:100), h, t, z
real ak, bk, ck, dk, s
integer n, i, j, k, entrada, saida
entrada = 100
saida = 200
open (unit=entrada,file='splineentrada.txt')
open (unit=saida,file='splinesaida.txt')
read(entrada,*) n
read(entrada,*) h

!numero de pontos
!intervalo entre os pontos

!pontos
do i=0,n-1,1
read(entrada,*) X(i), Y(i)
end do
close (entrada)
do i=1, n-2, 1
do j=1, n-2,1
A(i,j) = 0
end do
end do

do i=1, n-2,1
A(i,i) = 4*h
end do
do i=1,n-3,1
A(i,i+1)=h
A(i+1,i)=h
end do
!imprimindo matriz
!do i=1, n-2, 1
! write(saida,*) (A(i,j), j=1, n-2, 1)
!end do
do i=1,n-2,1
B(i) = (6/h)*(Y(i+1) -2*Y(i) + Y(i-1))
end do
!encontrando os gi com gausseidel
do i=0,n-1,1
G(i) = 0
end do
do k=1,100,1
do i=1,n-2,1
G(i) = B(i)
do j=1,i-1,1
G(i) = G(i) - A(i,j)*G(j)
end do
do j=i+1,n,1
G(i) = G(i) - A(i,j)*G(j)
end do
G(i) = G(i)/A(i,i)
end do
end do
!encontrando coeficientes para cada Si e imprimindo os pontos
z = x(0)
t = 0.1 !intervalo com o qual os pontos serao mostrados na
saida
do k=1, n-1,1
ak = (G(k) - G(k-1))/(6*h)
bk = G(k)/2
ck = (Y(k) - Y(k-1))/h + (2*h*G(k) + G(k-1)*h)/6

dk = Y(k)
do while (z <= x(k))
s = ak*(z - x(k))**3 + bk*(z - x(k))**2 + ck*(z - x(k)) + dk
write (saida,*) z,s
z = z + t
end do
end do
close (saida)
end

No grfico 7 foi exposto as curvas de Lagrange, Spline cbica e a curva da


soluo exata.


Pode-se observar visualmente que o mtodo Spline cubica se aproximou
melhor da curva exata. Sendo assim e o melhor mtodo para interpolar os pontos
da tabela 7.



6. Integrao numrica

A integrao numrica uma tcnica comumente empregada na


determinao de uma integral definida, cuja funo ou no disponvel ou no

possui uma soluo analtica. Ela consiste na aproximao de uma integral


definida do tipo:

!

por uma soma do tipo:

()
!

! (! )
!!!


na qual ! so os valores da funo (), = !!! ! e ! um valor
numrico de ponderao que tambm conhecido por funo peso.
Nesse trabalho, nos restringiremos aos mtodos de integrao numrica
para intervalo constante. A determinao desses mtodos consiste
basicamente em avaliar o valor da funo peso ! . So os mtodos do Trapzio e
Simpson.

Regra do Trapzio, consiste em se aproximar o valor da funo contnua
de () no intervalo [a,b] por uma funo de primeira ordem; isto,
geometricamente, equivalente a aproximar uma curva qualquer por uma reta.
Desta forma, a rea sob a funo (), que equivalente integral dessa funo,
aproximada pela rea do trapzio cuja largura igual a (b a) e a altura mdia
igual a [() + ()]/. Fazendo-se = , a frmula para a integral pode
ser escrita como: [5]
!

[ + ]
2
!

Calcular

! !
empregando a regra do trapzios.
!

Soluo Exata
1.71828
Tabela 8

Soluo pelo mtodo do trapzio


172722

Erro gerado
0.0089
!

Como ilustrado na tabela 8 a soluo exata da equao ! ! 1.71828.


Utilizando n=4 obtemos com o mtodo do trapzio uma soluo para a mesma de
1.72722. Calculamos o erro pelo modulo da diferena entre as solues
!"#$# !"#$%&'( , tivemos um erro de 0.0089.
Fortran 9 (implementao)
program trapzio
implicit none
real h,s,a,b,f ! a e b sao limite de integrcao
integer n,solucao
solucao=21
open(unit=solucao,file='solucao.txt')
a=0.
b=1.

n=4
h=(b-a)/n
s=(h/2)*(f(0*h)+(2*f(1*h))+(2*f(2*h))+(2*f(3*h))+f(4*h))
write(solucao,*)'regra trapezio' ,s
end
function f(x)
real f,x
f = exp(x)
return
end


Regra de Simpson consiste na aproximao da funo contnua f(x) no
intervalo [a,b] por uma funo de segunda ordem, ou seja, na aproximao de
uma curva por uma parbola. A frmula para a integral tem a forma:

!

[ ! + 4 ! + (! )
3
!

Esta frmula tambm conhecida como regra de Simpson 1/3 por causa do fator
que multiplica h. Observar que so necessrios, no mnimo, trs valores de f(! )
para se calcular a integral pela regra de Simpson. Na notao usada aqui, ! = a,
! = b e ! um ponto equidistante de ! e ! . Para n intervalos , a frmula
pode ser escrita como:

!

[ ! + 4 ! + 2 ! + + 2 !!! + 4 !!! + (! )
3
!

na qual n par (correspondendo a um nmero par de intervalos de integrao)
ou, equivalentemente, a regra de Simpson 1/3 s pode ser aplicada para um
nmero mpar de pontos ! , f(! ). [6]

!
Calcular ! ! empregando a regra de Simpson 1/3.
Soluo Exata
Soluo pelo mtodo do Simpson
Erro gerado
1.71828
1.71832
0.00004
Tabela 9

Como ilustrado na tabela 9, temos uma soluo exata para a equao
! !
de 1.71828. Utilizando n=4 pela regra do Simpson obtivemos uma
!
soluo de 1.7832. Calculamos o erro pelo modulo da diferena entre as
solues !"#$# !"#$!%& , tivemos um erro de 0.00004.

Fortran 10 (implementao)

program simpson
implicit none
real h,s,a,b,f ! a e b sao limite de integrcao
integer n,solucao

solucao=21
open(unit=solucao,file='solucao.txt')
a=0.
b=1.
n=4
h=(b-a)/n
s=(h/2)*(f(0*h)+(4*f(1*h))+(2*f(2*h))+(4*f(3*h))+f(4*h))
write(solucao,*)'regra simpson' ,s
end
function f(x)
real f,x
f = exp(x)
return
end

7. Resoluo de EDO


Muitos problemas encontrados em engenharia e outras cincias podem
ser formulados em termos de equaes diferenciais. Por exemplo, trajetrias
balsticas, teoria dos satlites artificiais, estudo de redes eltricas, curvaturas de
vigas, estabilidade de avies, teoria das vibraes, reaes qumicas e entre
outras. Esse capitulo 7 tem como objetivo apresentar mtodos numericos que
resolvam equaes diferenciais ordinrias, vamos abordar nesse trabalho o
mtodo de Euler e mtodos de Runge Kutta.

O mtodo de Euler, consiste em tomar a aproximao de primeira ordem
de ( + ):

+ = + ! + ()


O resto o(h) indica que o erro em tomar essa aproximao ser, em geral
da ordem de ! ou mais. Como ! = , o mtodo sugere que, na pratica,
obtenhamos !!! = !!! = (! + ) como:


!!! = ! + ! , !


A interao a partir do ! acumular um erro da ordem de ! em cada
!!!
etapa podendo acumular ao final um erro de ! . Como = ! , ento o erro
acumulado ser da ordem de . [3]

Considerando , ! ! igual a zero. Calcule a distancia x percorrida em


10s, estabelecendo uma acelerao a constante de valor 5 !! . Sendo a funo
() =2,5.
Atravs do mtodo de Euler, encontramos a soluo aproximada da
equao Diferencial Ordinria do problema acima.
! = !!! + ()
Fortran 11 (implementao)

Program mruv"
implicit none"
real xo,vo,h,t,to,x,tf,v,ex
integer i,n,dado"
dado=20
open(unit=dado,file='exct.txt')
tf= 10"
xo=0"
vo=0"
to=0
h=0.1"
i=0
n=(tfto)/h
x=xo
t=to
write(dado,*)i,t,x,ex(t)
doi=1,n,1"
x=x+h*v(t)"
t=t+h
write(dado,*)i,t,x,ex(t)
end do"
call system('pause')
end"
!.............."
function v(t)"
real v,t,vo"
v=vo+5*t"
return"
end"
!......................"
function ex(t)"
real ex,t"
ex=2.5*t**2"
return"
end



Utilizado varios valores para h , observamos no grfico abaixo visualmente que
o h=1 e o que se aproxima mais da soluo exata.




Mtodos de Runge-Kutta, so mtodos de passo simples requerem
apenas derivadas de primeira ordem e pode fornecer aproximaes precisas com
erros de truncamento da ordem de ! , ! , ! , etc.
Todas os mtodos de Runge-Kutta tm a seguinte forma geral:

!!! = ! + (! , ! , )

onde , chamado de funo incremento, uma aproximao conveniente para
f(x,y) no intervalo ! !!! .[5]

O mtodo de Runge-Kutta de 4 ordem o mais usado na soluo
numrica de problemas com equaes diferenciais ordinrias. Nesse trabalho
ser apresentado um algoritmo para Runge Kutta de 4 ordem.

Algoritmo

Incio Se n = 0 Ento
Escreva(Diviso imprpria)
Seno Se n < 0 Ento
Escreva(Intervalo invlido) Seno
Incio
h (xn x0)/n
y y0
x x0
Para i = 1 at n faa
Incio
K1 f(x,y)
K2 f(x + h / 2, y + h / 2 * K1)

K3 f(x + h / 2, y + h / 2 * K2)
K4 f(x + h, y + h * K3)
yy+h / 6*(K1+2*K2+2*K3+K4)
xx+h
Fim-Para
Escreva(Valor da funo f no ponto k : , y)
Fim
Fim

Variveis utilizadas no algoritmo:

Reais: h, y, x, y0, x0, K1, K2, K3, K4
Inteiras: i, n

8. Concluso
Foi demostrado com esse trabalho que calculo numrico, usado para
resolver qualquer tipo de problema matemtico complexo.
No captulo 2 o trabalho apresenta resoluo de raizes atravs de
mtodos, entre os trs mtodos apresentado Bisseo, Newton e Secante, nota
se que a melhor aproximao feita pelos mtodos foi a Secante e Newton, sendo
que o mtodo da secante e menos complexo para se feito do que Newton, pois
no precisamos da derivada da funo.
No captulo 3 o trabalho apresento resoluo para sistemas lineares onde
trabalhamos com os mtodos de Eliminao Gaussiana e o de Gauss Seidel,
podemos observar com as tabelas 4 e 5 que os dois mtodo so eficientes.
No captulo 4 foi apresentado ajuste de curvas pelo mtodo dos mnimos
quadrados, em geral todo ajuste fundamenta-se nesse mtodo, o Fortran 6
apresentado faz qualquer ajuste; linear, parablico entre outros, s depende de
seus dados de entrado para a leitura do programa.
No captulo 5 foi apresentado dois mtodos para interpolao, Lagrange e
Spline cubica bastantes eficientes, no exemplo apresentado o mtodo Spline
cubica foi mas eficiente, mostrado no grfico 7.
No captulo 6 foi apresentado dois mtodos para se fazer integraes,
Trapzio e Simpson. Olhando se as tabelas 8 e 9 tem se que para o exemplo
apresentado o mtodo de Simpson teve melhor soluo por apresentar menor
erro.
No captulo 7 apresentamos mtodos para resoluo de EDO, observa se
com o grfico 8 que quanto menor o valor h escolhido melhor aproximao
pelo mtodo de Euler. Conceituo se o mtodo de Runge Kutta e foi apresentado
um algoritmo para resolues de 4 ordem.
Enfim calculo numrico facilita a resoluo de problemas fsicos
matemticos, com solues prximas da realidade que em geral seria infinito os
clculos na mo .

9. Referncias


[1] Brito, N. S. D. Calculo Numrico
[2] Pilling, S. Calculo Numrico
[3] Matos, A. C. C. de. Apontamentos de Anlise Numrica
[4] A.L. de Bortoli, C. Cardoso, M.P.G. Fachin & R.D. da Cunha. Calculo numrico
com aplicaes.
[5] Lira, W. W. M. L. Apostila de Calculo Numrico
[6] Ruggiero, M. A. G. & Lopes, V. L. da R. Calculo numrico aspectos tericos e
computacionais

Вам также может понравиться