Подпрограммы DINT_BODE и QINT_BODE вычисляют интегралы от функции одной
независимой переменной по квадратурной формуле Боде заданного (от 2 до 12)
порядка точности по шагу на равномерной сетке.
Структура:
Тип: |
- |
FUNCTION |
Имена входа для пользователя: |
- |
DINT_BODE, QINT_BODE |
Используемые внешние программы: |
- |
FUNC - п/п-функция пользователя |
Обращение:
S=DINT_BODE(FUNC,A,B,NN,IPOINTS) двойная точность
S=QINT_BODE(FUNC,A,B,NN,IPOINTS) четверная точность, где:
A,B |
- |
границы области интегрирования; |
NN |
- |
число вспомогательных подинтервалов; |
IPOINTS |
- |
количество узлов квадратурной формулы Боде;
IPOINTS может принимать значения от 2 до 11,
для вычислений с двойной точностью - до 6; |
FUNC |
- |
имя пoдпpoгpaммы-функции, cocтaвляемoй пoльзoвaтелем
для вычиcления знaчений пoдинтегpaльнoй функции.
Имя FUNC должно быть описано оператором EXTERNAL
в вызывающей подпрограмме. |
NN,IPOINTS имеют тип INTEGER;
A,B,FUNC,S для DINT_BODE - REAL*8, для QINT_BODE - REAL*16.
Метод:
Используются квадратурные формулы Боде. Точность вычислений по шагу h
до O(h^(2[(IPOINTS+1)/2]).
Замечание:
Вариант программы с четверной точностью QINT_BODE существует только
для ОС UNIX.
Литература:
- М. Абрамовиц, И. Стиган, Справочник по специальным функциям.
М., Наука, 1979, стр. 682-683.
Пример:
. . .
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION DINTVAL(3)
EXTERNAL FUNC
A=1.D0
B=3.D0
NN=2
IPOINTS=6
WRITE(*,*) 'INTERVAL',' ','[',A,B,']'
WRITE(*,*) 'NUMBER OF POINTS QUADRATURE RULE OF BODE=',IPOINTS
DO I=1,3
DINTVAL(I)=DINT_BODE(FUNC,A,B,NN,IPOINTS)
WRITE(*,*) 'NN=',NN,' ','INTVAL=',DINTVAL(I)
NN=NN*2
ENDDO
SIGMA=(DINTVAL(1)-DINTVAL(2))/(DINTVAL(2)-DINTVAL(3))
EXVAL=(DINTVAL(1)-SIGMA*DINTVAL(2))/(1.D0-SIGMA)
WRITE(*,*) 'RUNGE COEFFICIENT=',SIGMA
WRITE(*,*) 'EXTRAPOLATION OF INTEGRAL=',EXVAL
EXACT=DEXP(-A)-DEXP(-B)
WRITE(*,*) 'EXACT OF INTEGRAL= ',EXACT
WRITE(*,*) 'ERROR= ',EXACT-EXVAL
. . .
FUNCTION FUNC(X)
IMPLICIT REAL*8 (A-H,O-Z)
FUNC=DEXP(-X)
RETURN
END
Результат:
INTERVAL [ 1.000000000000000 3.000000000000000]
NUMBER OF POINTS QUADRATURE RULE OF BODE = 6
NN = 2 INTVAL = 3.180924625011772E-001
NN = 4 INTVAL = 3.180923742385016E-001
NN = 8 INTVAL = 3.180923728261328E-001
RUNGE COEFFICIENT = 62.492653158681330
EXTRAPOLATION OF INTEGRAL = 3.180923728031647E-001
EXACT OF INTEGRA = 3.180923728035784E-001
ERROR = 4.136690989753333E-013