!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!  Program file name: millikan2.f90                                       !
!                                                                         !
!  © Tao Pang 2006                                                        !
!                                                                         !
!  Last modified: June 15, 2006                                           !
!                                                                         !
!  (1) This F90 program is created for the book, "An Introduction to      !
!      Computational Physics, 2nd Edition," written by Tao Pang and       !
!      published by Cambridge University Press on January 19, 2006.       !
!                                                                         !
!  (2) No warranties, express or implied, are made for this program.      !
!                                                                         !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
PROGRAM MILLIKAN2
!
! An example of applying the least-squares approximation
! to the Millikan data on a straight line q=k*e+dq. */
!
  IMPLICIT NONE
  INTEGER, PARAMETER :: N=14
  INTEGER :: I
  REAL :: C1, C2, C3, C4, G, A0, A1
  REAL, DIMENSION (N+1) :: X, F
  DATA X /4, 5, 6, 7, 8, 9, 10, 11.0, 12, 13, 14, &
          15, 16, 17, 18/
  DATA F /6.558, 8.206, 9.880, 11.50, 13.14, 14.81, &
          16.40, 18.04, 19.68, 21.32, 22.96, 24.60, &
          26.24, 27.88, 29.52/
!
  C1 = 0
  C2 = 0
  C3 = 0
  C4 = 0
  DO I = 1, N+1
    C1 = C1 + X(I)
    C2 = C2 + X(I)*X(I)
    C3 = C3 + F(I)
    C4 = C4 + F(I)*X(I)
  END DO
  G = C1*C1-C2*(N+1)
  A0 = (C1*C4-C2*C3)/G
  A1 = (C1*C3-C4*(N+1))/G
  WRITE (6, "('Fundamental charge: 'F6.4)") A1
  WRITE (6, "('Estimated error: 'F6.4)") A0
END PROGRAM MILLIKAN2
