Sie sind auf Seite 1von 1

program getaran_teredam implicit real*8(a-h,o-z) integer, parameter ::ndim=2 real*8 :: y(ndim), dy(ndim), ytemp(ndim) external derivs write(*,*) 'masukkan

t0,tend dan dt' read(*,*)t0,tend,dt nt = (tend-t0)/dt y(1) = 2 y(2) = 0. open(1,file='redaman.dat') do it = 1,nt call rk2 (t,y, dy, ytemp,dt,ndim,derivs) write(1,*)t,y(1) end do end program getaran_teredamm subroutine derivs(x,y,dy,n) impolicit none integer :: n,1,nh real*8::x,y(n),dy(n),gamma, omega2 gamma = 0.01 omega2 = 1 dy(1)=y(2) dy(2)= -gamma*y(2)-omega2*y(1) end subroutine rk2

subroutine rk2(x,y,dy,ytemp,h,n,derivs) implicit none integer ::n real*8 ::x,h,y(n),dy(n,2) integer ::1 external derivs call derivs(x,y,dy,(1,1),n) do i=1,n ytemp(i =y(i)+0.5d0*h*dy(i,1) end do call derivs(x+0.5d0*h,y,dy(1,1),n) do i = 1,n y(i)=dy(i,2)+h*dy(i,1) end do end subroutine rk2

Das könnte Ihnen auch gefallen