bubanoid
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Модуль: Код: module mod implicit none real(8), parameter :: Pi = 3.1415926535897932384d0 interface real(8) function myFunc(x) real(8), intent (in) :: x end function myFunc end interface pointer (ptrF, myFunc) contains real(8) function f1(x) real(8), intent (in) :: x f1 = dsin(x) end function f1 real(8) function f2(x) real(8), intent (in) :: x f2 = dcos(x) end function f2 real(8) function f0(x) real(8), intent (in) :: x f0 = dexp(-x**2)*myFunc(x) end function f0 real(8) function integration(f, x1, x2) real(8), intent (in) :: x1, x2 real(8), external :: f real(8) d, s integer i integer, parameter :: n = 100000 d = (x2 - x1)/dfloat(n) s = 0.0d0 do i = 1, n s = s + f(x1 + d*dfloat(i) - d*0.5d0) enddo integration = s*d end function integration end module mod | Программа: Код: program AkaGM use mod implicit none real(8) x1, x2, z x1 = -Pi x2 = Pi ptrF = LOC(f1) z = integration(f0, x1, x2) write (*, '("z = ", ES14.4 )') z ptrF = LOC(f2) z = integration(f0, x1, x2) write (*, '("z = ", ES14.4 )') z pause end program AkaGM | Результат: z=-9.8941E-18 z= 1.3804E+00 Как и должно быть. | Всего записей: 101 | Зарегистр. 22-11-2007 | Отправлено: 21:33 10-12-2012 | Исправлено: bubanoid, 22:06 11-12-2012 |
|