Program Simpson implicit none Real(8) :: x,s,x_i,x_f,r,q Integer :: k,n,m Write(*,*)'Ingresa x_i y x_f' Read(*,*)x_i,x_f Write(*,*)'Ingresa n' Read(*,*)n Write(*,*)'Ingresa m' Read(*,*)m Call Simp(x_i,x_f,s,n) Write(*,*)'Cuando n=',n,' s vale',s Call Simp2(x_i,x_f,r,m) Write(*,*)'Cuando n=',m,' s vale',r Q=(s-(1-exp(-1._8)))/(r-(1-exp(-1._8))) Write(*,*)'El cociente de error es',Q Contains Subroutine Simp(x_i,x_f,s,n) implicit none Real(8), intent(in) :: x_i,x_f Real(8), Intent(out) :: s Real(8) :: dx Integer :: n dx=(x_f-x_i)/n s=f(x_i)+f(x_f) Do k=2,n-2,2 x=x_i+k*dx s=s+2*f(x) end do do k=1,n-1,2 x=x_i+k*dx s=s+4*f(x) end do s=(dx/3.)*s end subroutine Subroutine Simp2(x_i,x_f,r,m) implicit none Real(8), Intent(in) :: x_i,x_f Real(8), Intent(out) :: r Real(8) :: dx Integer :: m dx=(x_f-x_i)/m r=f(x_i)+f(x_f) Do k=2,m-2,2 x=x_i+k*dx r=r+2*f(x) end do do k=1,m-1,2 x=x_i+k*dx r=r+4*f(x) end do r=(dx/3.)*r end subroutine Real(8) Function f(x) Real(8), Intent(in) :: x f=exp(-x) end function end program