sample 4




      implicit none
      integer j,jmax
      parameter(jmax = 1000)
      real x0,v0,ah,vh,xh
      real x(0:jmax), v(0:jmax), a(0:jmax)
      real t(0:jmax), dt, tmax


      call getinit(x0,v0,dt,tmax)
      x(0) = x0; v(0) = v0;
      t(0) = 0.0
     

      do j=0, jmax-1
         a(j) = -sin(x(j))  
         xh=x(j)+v(j)*(dt/2)
         vh=v(j)+a(j)*(dt/2)
         ah=-sin(xh)
         x(j+1) = x(j) + vh*dt
         v(j+1) = v(j) + ah*dt
         t(j+1) = t(j) + dt
         if( t(j) .gt. tmax ) exit
      enddo
       open(1, file='rikigaku03a.dat')
      
      do J=0, jmax-1
         write(1,*) t(j), x(j)
         if( t(j) .gt. tmax ) exit
      enddo

      stop
      end
      
      subroutine getinit(xinit,vinit,dt,tmax)

      write(0,*) 'initial condition: ƒÆ,L ='
      read(*,*) xinit,vinit
      
       write(0,*) 'dt, tmax ='
      read(*,*) dt, tmax
      
      return
      end

[–ß‚é]