program daikeisoku
! 台形則練習
! int^1_0 3x^2 dx の計算
! 分割数は100

! 2010/07/22 takayasu 作成
!      07/26 takayasu 更新
!

!!!!!!!!!!! 定義 !!!!!!!!!!!

implicit none

real(8) :: int , int_p , fa , fb , x , h , a , b
integer :: i , N

! 最終的な積分値
 int = 0.0d0

! 途中項の和
 int_p = 0.0d0

! 積分区間
! 実数で与えないとおかしいよ!
 b = 1.0d0
 a = 0.0d0

! 分割数
 N = 100

! 初項と最終項
! 他の文字を使って定義される文字は最後に回す!
 fa = 3.0d0*a**2.0d0
 fb = 3.0d0*b**2.0d0

! 一つあたりの幅
! 他の文字を使って定義される文字は最後に回す!
 h = (b-a)/N

!!!!!!!!!!! 計算 !!!!!!!!!!!

! 途中項の和を取るよ!
do i= 1 , N-1
 x = a + (i*h)
 int_p = int_p + h*(3.0d0*x**2.0d0)
enddo

! 初項と最終項を足すよ!
int = int_p + (1.0d0/2.0d0)*fa*h + (1.0d0/2.0d0)*fb*h

! 結果を画面出力
write(*,*) int 

! 結果をファイルに出力
open(100,file='daikeisoku1.out', status='replace' )
write(100,*) int
close(100)

end program daikeisoku
