trabalho calculo numerico

15
UNIVERSIDADE FEDERAL DA BAHIA INSTITUTO DE CIÊNCIAS AMBIENTAIS E DESENVOLVIMENTO SUSTENTÁVEL- (ICADS) COLEGIADO DE FÍSICA DISCIPLINA: CÁLCULO NUMÉRICO Gustavo Xavier Antunes Petronilo Trabalho Cálculo Numérico: Método de Euler Professor: Kennedy Morais Fernandes

Upload: leandro-moraes

Post on 05-Dec-2014

15 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Trabalho Calculo Numerico

UNIVERSIDADE FEDERAL DA BAHIAINSTITUTO DE CIÊNCIAS AMBIENTAIS E DESENVOLVIMENTO

SUSTENTÁVEL- (ICADS)COLEGIADO DE FÍSICA

DISCIPLINA: CÁLCULO NUMÉRICO

Gustavo Xavier Antunes Petronilo

Trabalho Cálculo Numérico:

Método de Euler

Professor:

Kennedy Morais Fernandes

Barreiras-Ba, 14 de março de 2012.

Page 2: Trabalho Calculo Numerico

Sumário

Resolução por método analítico 1

Problema 1:Misturas. 1.1

Problema 2: Lançamento Vertical 1.2

Problema 3: Lei Stefan-Boltzmann 1.3

Aproximação por métodos numéricos 2

Implementação 3

Resultados, tabelas, gráficos 4

Conclusão 6

Page 3: Trabalho Calculo Numerico

Resolução por método analítico

Problema 1: MisturasConsidere um tanque, no instante t=0, contém Qo=50 lb de sal dissolvido em 100 gal

(cerca de 455 l). Suponha que água contendo ¼ lb (cerca de 113 g) de sal por galão entrando no tanque a uma taxa de de 3 galões por minuto e que o liquido, bem misturado, está saindo do a mesma taxa. Vamos supor que o sal não é criado nem destruído no tanque. Portanto, as variações na quantidade de sal devem-se ,apenas, ao fluxo de entrada e saída no tanque.Então temos que:

dQdt

= taxa de entrada – taxa de saída

A taxa de entrada é a concentração vezes a taxa de fluxo de entrada,

(¾)

A taxa de saída é a concentração de sal do tanque vezes o fluxo de saída,

3Q(t)/100

Assim a equação diferencial que governa esse processo é

dQdt

= 34 - 3Q

100

Logo, o fator integrante é e3t/100 e a solução geral é

Q(t) = 25+ce-3t/100

Onde c é uma constante arbitrária. Para satisfazer a condição inicial precisamos escolher c = Qo-25. Portanto a solução do problema de valor inicial é

Q(t) = 25+25e-0.03t

Problema 2: Lançamento Vertical

Page 4: Trabalho Calculo Numerico

Considere o movimento a uma dimensão que se obtém quando se arremessa um objeto na vertical para cima num instante inicial com uma velocidade v0. A força (aceleração) é constante (não depende da posição, velocidade ou tempo) e neste caso existe resolução analítica da 2ª Lei de Newton. A posição em função do tempo é dada por:

y(t) = y + vo t + 12at2

Consideraremos y0=0 e v0=25 m/s. A aceleração da gravidade é constante e igual a 9,8m/s2.

y(t) = 25t – 4,9t2

Problema 3: Lei Stefan-BoltzmannA transferência de calor de um corpo para um ambiente que o rodeia por radiação, segundo a lei de Stefan-Boltzmann, é descrita pela equação diferencial

dudt

= -a(u4-T4) (i)

Onde u(t) é a temperatura absoluta do corpo no instante t, T é a temperatura absoluta do ambiente e a é uma constante que depende dos parâmetros físicos do corpo. No entanto, se u é muito maior que T, então as soluções da EQ.(i) podem ser bem aproximadas pelas soluções da equação mais simples

dudt

= -au4 (ii)

Supondo que um corpo com a temperatura inicial de 2000K está imerso em um meio ambiente à temperatura de 300°K e que a= 2,0*10-12K-3s-1, a solução da equação é

u(t) = 2000/(1+0,048t)1/3

Aproximação por método numérico

Problema 1: Misturas

Sendo Q(t) = f(to,Qo) e Qo= 0, to =0 pelo método de Euler temos:

Qi= Qi-1 + h . f(to,Qo)

Problema 2: Lançamento Vertical.

Page 5: Trabalho Calculo Numerico

Sendo to e vo conhecidos podemos calcular:

dydt

= f(vo,to),

Passando para o método analítico temos:

yi = yi-1 + h . v(t)

Problema 3: Lei Stefan-Boltzmann

Sendo u(t) = f(to,uo) e uo= 0, to =0 pelo método de Euler temos:

ui= ui-1 + h . f(to,uo)

Implementação

Problema 1: Misturas

Algoritmo 1:

função dq(t)real t

dq = ¾ - 3Q/100

Retorna dq(t)fim função Algoritmo 2: programa principalReal qo,h,t,to,q,tf,dq,q_exatoInteiro i,nLeia tfto←0qo←50n←(tf-to)/ht←toq ←qo

Imprima i,t,q

Page 6: Trabalho Calculo Numerico

Para(i←1, i≤n,i=i+1) façaq←q+h*dq(t)t←t+hImprima i,t,qFim

Fortran:

program misturas implicit none

real qo,h,t,to,q,tf,dq,q_exato integer i,n,resultados resultados = 200 open(unit = resultados, file ='resultados_misturas.txt') print*,"Digite a diferen‡a em minutos" read*, tf qo=50 to=0 h=0.001

n=(tf-to)/h t=to q=qo write(resultados,*)i,t,q,q_exato(t) write(*,*)i,t,q,q_exato(t)

do i=1,n,1

q=q+h*dq(t) t=t+h write(resultados,*)i,t,q,q_exato(t) write(*,*)i,t,q,q_exato(t) end do

close(resultados) call system('pause') end !!!!!!!!!!!!!!!!!!!!!!! function dq(t) real dq,t dq=(3/4.)-(50*3.)/100. return end !!!!!!!!!!!!!!!!!!!!!!! function q_exato(t) real q_exato,t q_exato= 25+(25*exp(-0.03*t)) return end

Problema 2: Lançamento Vertical

Algoritmo 1:

função v(t)real t

v←vo +9,8*t

Retorna v(t)

fim função

Page 7: Trabalho Calculo Numerico

Algoritmo 2: programa principalReal yo,vo,h,t,to,y,tf,v,y_exatoInteiro i,ntf ←5.1i←0n←(tf-to)/ht←toz ←zo

Imprima i,t,yPara(i←1, i≤ n, i=i+1) façay←y+h*v(t)t←t+hImprima i,t,yFim

Fortran:

program lancamento_vertical implicit none

real yo,vo,h,t,to,y,tf,v,y_exato integer i,n,resultados resultados = 100 open(unit = resultados, file ='resultados_lancamento.txt') tf=5.1 yo=0 vo=25 to=0 h=0.1

n=(tf-to)/h t=to y=yo write(resultados,*)i,t,y,y_exato(t) write(*,*)i,t,y,y_exato(t)

do i=1,n,1 y=y+h*v(t)

t=t+h write(resultados,*)i,t,y,y_exato(t) write(*,*)i,t,y,y_exato(t) end do

close(resultados) call system('pause') end !!!!!!!!!!!!!!!!!!!!!!! function v(t) real v,t,vo vo=25 v=vo-9.8*t return end !!!!!!!!!!!!!!!!!!!!!!! function y_exato(t) real y_exato,t y_exato=25*t-4.9*t**2 return end

Problema 3: Lei Stefan-Boltzmann

Algoritmo 1: Função du(t)real tdu= -a*u**(4)Retorna du(t)

Page 8: Trabalho Calculo Numerico

fim função

Algoritmo 2: programa principalreal a,uo,h,t,to,u,tf,du,u_exatoInteiro i,nLeia tfto←0uo←2000n←(tf-to)/ht←tou ←uo

Imprima i,t,qPara(i←1, i≤n,i=i+1) façau←u+h*du(t)t←t+hImprima i,t,uFim

Fortran:

program lei_de_stefan_boltzmann

implicit none

real a,uo,h,t,to,u,tf,du,u_exato

integer i,n,resultados

resultados = 200

open(unit = resultados, file ='resultados_rad.txt')

print*,"Digite a diferen‡a em minutos"

read*, tf

uo=2000.

to=0

h=0.1

a=2.0e-12

n=(tf-to)/h

t=to

u=uo

write(resultados,*)i,t,u,u_exato(t)

write(*,*)i,t,u,u_exato(t)

do i=1,n,1

u=u+h*du(t)

t=t+h

write(resultados,*)i,t,u,u_exato(t)

write(*,*)i,t,u,u_exato(t)

end do

Page 9: Trabalho Calculo Numerico

close(resultados)

call system('pause')

end

!!!!!!!!!!!!!!!!!!!!!!!

function du(t)

real du,t,a,u

a=2.0e-12

u=2000.

du= -a*u**(4)

return

end

!!!!!!!!!!!!!!!!!!!!!!!

function u_exato(t)

real u_exato,t

u_exato=2000./((1+0.048*t)**(1/3))

return

end

Resultados, tabelas e gráficos

Problema 1: Misturas

Page 10: Trabalho Calculo Numerico

ti h=0.1 h=0.01 h=0.001

exato

1.0 49.324993

49.250031

49.248505

49.334030

2.0 48.574986

48.500061

48.497761

49.261147

17.0 37.324871

37.258018

37.226833

40.057484

20.0 35.074848

35.000610

34.970844

38.761497

Problema 2: Lançamento Vertical

ti h=0.1 h=0.01 h=0.00 exato

Page 11: Trabalho Calculo Numerico

1

1.0 20.589998

20.149002

20.104942

20.100002

3.0 32.369995

31.047.029

30.923.361

30.900.002

4.0 23.560005

21.796059

21.620186

21.600021

5.0 4.9500227

2.9840016

2.5264883

2.5000548

Problema 3: Lei Stefan-Boltzmann

ti h=0.1 h=0.05 h=0.01 exato

Page 12: Trabalho Calculo Numerico

1.0 1968.0054

1967.9932

1968.0176

1968.9872

2.0 1936.0107

1935.9863

1936.0671

1939.8129

20.0 1360.4274

1359.8633

1360.3835

1598.2528

30.0 1040.1611

1039.7949

1040.5593

1485.5880

ConclusãoNeste trabalho usamos o método númerico de Euler para nos aproximarmos das soluções exatas das equações. Vimos que o método de Euler é bem estável, e quando fazemos o passo h tender a zero, seu valor se torna mais perto do exato. Muitas vezes precisamos de um h relativamente pequeno, como nos casos dos exemplos 1 e 3 que mesmo com o h= 0.01 ainda não se aproximaram o suficiente da solução exata, em outras como no caso 2 um h de apenas 0.01 já é o suficente para termos uma boas aproximação.