Você está na página 1de 10

Universidade Federal de Ouro Preto

Departamento de Fsica ICEB

Relatrio de prtica de Fsica Computacional Mtodos numricos de aproximao de razes

Gilton Martins Lopes Junior Pedro Henrique Fernandes Lobo

Ouro Preto, 28 de outubro de 2013

It is impossible to reduce the temperature of a material body to the absolute zero of temperature in a finite number of operations. Nernst, 1905

UniversidadeFederaldeOuroPreto

1. Objetivo Esta pratica tem por objetivo resolver um problema de termodinmica atravs de clculos numricos assistidos por computador.

2. Introduo O livro Mtodos Numricos para Engenheiros e Cientistas em seu captulo 3 e pagina 109 prope o exerccio 32.2 que dever ser resolvido atravs mtodo numrico assistido por computador conforme ilustrado a seguir: Um cano de comprimento L=25m, dimetro d=10cm conduzindo vapor perde calor para o ar ambiente e para as superfcies em sua vizinhana por conveco e radiao. Se o fluxo total de calor por unidade de tempo Q emanando da superfcie do cano for medida, ento a temperatura superficial TS do cano pode ser determina pela seguinte equao:

Q = dL[h(TSTAR)+(SB(TS4 TVIZ4)]
Onde =0,8 e a emissividade da superfcie do cano, e SB = 5,67 x 10-8 W/m2/K4 a constante de Stefan-Boltzmann. Se Q = 18.405 W, h=10 W/m2/K e TAR = TVIZ = 298K determine a temperatura superficial do cano TS.

Figura1IlustraoadaptadadolivroMtodosNumricospara EngenheiroseCientistasnapagina109

UniversidadeFederaldeOuroPreto

Em posse da equao, o valor de TS a ser determinado pode se considerado como varivel dependente e os demais termos como variveis independentes. Desta forma a equao reescrita conforme equao a seguir:

Equao1 EquaoreescritaemfunodeTS

Como existe uma nica equao e uma incgnita, possvel determinar TS igualando G(TS) a zero. Assim, para melhor representar o comportamento da funo, segue a representao em grfico abaixo:

Figura2GrficodocomportamentodafunoG(TS)

A quarta potencia da varivel independente indica o numero de quatro razes da equao 1 das quais duas so reais, sendo uma prxima a 4,0 X 102 K e outra prxima a -7,0X102K. Entretanto esta ultima no dever ser considerada porque o fato de estar abaixo da temperatura do ar faria com que o calor flusse da vizinhana para o tubo, o que no ocorre. O outro motivo que o valor desta temperatura viola a terceira lei da

UniversidadeFederaldeOuroPreto

termodinmica. Logo a soluo real do problema a ser determinado est entre 3,0 10 K e 5,0 X 10 K.
2 2

Desta forma o problema poder ser resolvido pelos mtodos da bisseo, Newton e secante escritos em linguagem Fortran 95 e depois comparados entre si. A explicao detalhada do fundamento terico de cada mtodo extensa demais para ser apresentada neste relatrio (livros dedicam captulos inteiros a cada mtodo). Entretanto a leitura a atenta dos cdigos fonte j suficiente para entender na prtica o funcionamento de cada um. Assim sendo, por hora preciso esclarecer que todos os mtodos determinam razes de uma funo f(x) fornecendo-lhe uma preciso p, sendo que no caso dos mtodos de bisseo e secante, necessrio tambm fornecer dois pontos A e B que contenham a raiz, enquanto que para o mtodo de Newton necessrio um ponto A e a derivada da funo f(x). Dado as condies iniciais, os mtodos quando convergem determinam a cada passo as razes cada vez mais prximas da procurada de maneiras diferentes at que a preciso requerida seja alcanada.

3. Cdigo Fonte Mtodo da Bisseo:


01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 program bissecao implicit none integer :: i=-1 !incremento i inicial real :: x, a, b, p a=3.0e02 !valor x=A (editavel) b=5.0e02 !valor x=b (editavel) p=1.0e-03 !preciso p open(10,file="bissecao.txt")!abre arquivo saida ! !do resultados write(10,*) "# x & &f(x) i" do while (abs(a-b)>=p) !loop ate que |A-B|< ! !preciso P x=(a+b)/2 !ponto x mdio if (f(a)*f(x)<0) then !determina qual ! !intervalo para ! !o prximo passo b=x else a=x end if


22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

UniversidadeFederaldeOuroPreto

i= i+1 !atualizao do ! !incremento write(10,*) x,f(x),i !retorna o numero de ! !passos, a raiz e o ! !intervalo final end do close(10) contains function f(x) real :: f, x, Q, h, pi, d, L, & &T_ar, epsilon, sigma,T_viz, & &c1,c2,c3,c4,c5 Q=18405 pi=16*atan(1.0/5.0)-4*atan(1.0/239.01) h=10 d=0.1 L=25 T_ar=298 epsilon=0.8 sigma=5.67e-08 T_viz=298 c1=pi*d*L*h c2=c1*T_ar c3=pi*d*L*epsilon*sigma c4=c3*T_viz**4 c5=c2+c4+Q f=-c3*x**4-c1*x+c5 end function f end program bissecao

Mtodo de Newton:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 17 18 19 20 21 22 23 24 25 26 27 program newton implicit none integer :: i=1, conv=0, maximo !incremento i, parada ! ! do loop (conv =1) real :: x, p x=800.0 !x inicial (editavel) p=1.0e-03 !preciso (editavel) maximo=100000 !iterao maxima open(10,file="newton.txt") !abre arq. saida dos ! !resultados (edit.) write (10,*) "# x & & f(x) i" ! !escrita de x, f(x),i ! !no arquivo do while (conv == 0 .and. i <= maximo) !loop ate de i write(10,*) x,f(x), i !iterao ou converg. x = x - f(x)/df(x) if (abs(f(x)) <p)then conv=1 !saida do loop nao ! !convergir i end if write (*,*) i,x0,dx !retorna o numero de ! !Passos, x0 e A-B i=i+1 !atualizao do i end do if (conv==1) then !informa se converge ou


28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

UniversidadeFederaldeOuroPreto

write (10,*) "# converge" !no com i else write (10,*) "# no converge" end if close(10) !fecha arquivo contains function f(x) real :: f, x, Q, h, pi, d, L,& &T_ar, epsilon, sigma,T_viz,& & c1,c2,c3,c4,c5 Q=18405 pi=16*atan(1.0/5.0)-4*atan(1.0/239.01) h=10 d=0.1 L=25 T_ar=298 epsilon=0.8 sigma=5.67e-08 T_viz=298 c1=pi*d*L*h c2=c1*T_ar c3=pi*d*L*epsilon*sigma c4=c3*T_viz**4 c5=c2+c4+Q f=-c3*x**4-c1*x+c5 end function f function df(x) real :: df, x, h, pi, d, L,& &epsilon, sigma, c1,c3 pi=16*atan(1.0/5.0)-4*atan(1.0/239.01) h=10 d=0.1 L=25 epsilon=0.8 sigma=5.67e-08 c1=pi*d*L*h c3=pi*d*L*epsilon*sigma df=-4*c3*x**3-c1 end function df end program newton

Mtodo da secante:
01 02 03 04 05 06 07 08 09 10 11 12 14 15 16 17 program m_secante implicit none integer :: i !incremento real :: A,B,p,dx,x0 !variveis reais ! p = 1.0e-03 !preciso (editavel) A = 3.0e02 !ponto x=A (editavel) B = 5.0e02 !ponto x=B (editavel) dx = B-A !intervalo entre pontos x0 = A open(10,file="secante.txt") !abre arquivo call secante (p,x0,dx,i) !solicita a rotina ! !passos, a raiz e o ! !intervalo final close (10) end program m_secante


18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66

UniversidadeFederaldeOuroPreto

! subroutine secante (p,x0,dx,i) !subrotina com os ! !calculos iterativos implicit none integer, intent (inout) :: i ! !de entrada e sada real, intent (inout) :: x0,dx real :: x1,x2,D,fx real, intent (in) :: p ! i = -1 x1 = x0+dx do while (ABS(dx)> p) !loop ate que ! |A-B|< preciso P ! D = fx(x1)-fx(x0) !calculos iterativos x2 = x1-fx(x1)*(x1-x0)/D x0 = x1 x1 = x2 dx = x1-x0 i = i+1 !incremento saida dos ! !resultados (editavel) write (10,*) i,x0,dx !retorna o numero de ! !passos,a raiz e o intervalo ! !A-B final end do end subroutine secante !fim da subrotina function fx(x) result (f) !funo f(x) com raizes a ! !determinar a sada f implicit none real :: f, x, Q, h, pi, d, L,& &T_ar, epsilon, sigma,T_viz, c1,c2,c3,c4,c5 Q=18405 pi=16*atan(1.0/5.0)-4*atan(1.0/239.01) h=10 d=0.1 L=25 T_ar=298 epsilon=0.8 sigma=5.67e-08 T_viz=298 c1=pi*d*L*h c2=c1*T_ar c3=pi*d*L*epsilon*sigma c4=c3*T_viz**4 c5=c2+c4+Q f=-c3*x**4-c1*x+c5 end function fx !fim da funo

4. Resultados e discusses: Os trs mtodos foram executados com mesma preciso sendo que para os mtodos da bisseo e secante foi considerado mesmo intervalo A-B inicial. Para o mtodo de Newton o intervalo entre A e a raiz encontrada maior que o intervalo dos

UniversidadeFederaldeOuroPreto

outros mtodos. A diferena entre todos foi o numero de iteraes realizadas como visto na tabela a seguir:
A B inicial inicial Bisseo 300 500 Newton 800 Secante 300 500 Mtodo Preciso p 1,0X103 1,0X103 1,0X103 RaizX0 encontrada 422.953 422.953 422.952 Numerode Iteraes 17 5 4

Tabela1Resultadosobtidosemcadamtodo.

Embora o mtodo da secante tenha encontrado a raiz com um numero menor de iteraes, no significa que seja o mtodo mais eficaz do ponto de vista do esforo computacional porque no foi levado em considerao o tempo de execuo, a alocao da memria e a complexidade de cada operao processada. Como observado nos cdigos fonte, a equao 1 empregada nos clculos foi trabalhada para que algumas constantes fossem calculadas uma nica vez ao invs de forar a rotina a multiplica-las a cada iterao. Isto necessrio porque as rotinas ao serem processadas em compiladores com stack size baixo e limitado acusava stack overflow e no compilava. Quanto ao valor da raiz X0, todos os mtodos resultaram em 422,953 0,001, que corresponde temperatura em Kelvin da superfcie do tubo solicitada no problema.

UniversidadeFederaldeOuroPreto

5. Referncias Bibliogrficas Duarte, J.L., Appoloni, C.R., Toginho Filho, D.O.,Zapparoli, F.V.D.,Roteiros

de LaboratrioLaboratrio de Fsica Geral I 1a Parte, Londrina, 2002. Brito e Cavalcante, C. H, Guia para Fsica Experimental, Caderno de

Laboratrio, Grficos e Erros, Instituro de Fsica, Unicamp, IFGW, Unicamp 1997.

Bertoldi, N.M Franco, Clculo Nmerico, Pearson Brasil, 2006.

Você também pode gostar