! Metodos Numericos y Simulaciones en Astrofisica ! FCEFN - UNSJ, 2010 ! ! ejemplo 5 ! ! Metodo de Euler para problemas de valor inicial ! ! Calculo de la Ec. diferencial ordinaria: ! ! dy/dt = - y + sen (t) para y(0) = 1 ! ! cuya solucion exacta es: ! ! y = [3 e^(-t)]/2 + 0.5 [sen (t) - cos(t)] ! ! program eje5 implicit none integer, parameter ::p=selected_real_kind(18,200) real(p) :: hh,time,yy,yytrue ! ingrese el paso ! write(*,*)'Ingrese h: ' read(*,*)hh ! valor inicial para y y t ! yy=1._p yytrue=1._P time=0._p open(7,file='eje5.out') write(*,'(f8.3,2f23.18,g17.7)')time,yy,yytrue,0. write(7,*)time,yy,yytrue,0. ! inicia bucle de calculo ! do while(time < 10._p) time=time+hh ! calcula valor real de y ! yytrue=3._p/2._p*exp(-time)+0.5_p*(sin(time)-cos(time)) ! calcula aproximacion por euler ! yy=yy+hh*(-yy+sin(time)) write(*,'(f8.3,2f23.18,g17.7)')time,yy,yytrue,abs(yytrue-yy) write(7,'(f8.3,2f23.18,g17.7)')time,yy,yytrue,abs(yytrue-yy) enddo close(7) end program eje5