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 |