|
DINT_BODE Библиотека "JINRLIB" D112
QINT_BODE
Автор: О.Чулуунбаатар
Язык: Фортран
ИНТЕГРИРОВАНИЕ ФУНКЦИИ ОДНОЙ ПЕРЕМЕННОЙ ПО КВАДРАТУРНОЙ ФОРМУЛЕ БОДЕ
Подпрограммы 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.
Литepaтуpa:
-----------
1. М. Абрамовиц, И. Стиган, Справочник по специальным функциям.
М., Наука, 1979, стр. 682-683.
Пpимеp:
-------
. . .
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 INTEGRAL= 3.180923728035784E-001
ERROR= 4.136690989753333E-013
|