Текст подпрограммы и версий ( Фортран )
de95r.zip  de95d.zip  de91r.zip  de91d.zip  de93r.zip  de93d.zip  de97r.zip  de97d.zip
Тексты тестовых примеров ( Фортран )
tde95r.zip  tde95d.zip  tde91r.zip  tde91d.zip  tde93r.zip  tde93d.zip  tde97r.zip  tde97d.zip
Текст подпрограммы и версий ( Си )
de95r_c.zip  de95d_c.zip  de91r_c.zip  de91d_c.zip  de93r_c.zip  de93d_c.zip  de97r_c.zip  de97d_c.zip
Тексты тестовых примеров ( Си )
tde95r_c.zip  tde95d_c.zip  tde91r_c.zip  tde91d_c.zip  tde93r_c.zip  tde93d_c.zip  tde97r_c.zip  tde97d_c.zip
Текст подпрограммы и версий ( Паскаль )
de95r_p.zip  de95e_p.zip  de91r_p.zip  de91e_p.zip  de93r_p.zip  de93e_p.zip  de97r_p.zip  de97e_p.zip
Тексты тестовых примеров ( Паскаль )
tde95r_p.zip  tde95e_p.zip  tde91r_p.zip  tde91e_p.zip  tde93r_p.zip  tde93e_p.zip  tde97r_p.zip  tde97e_p.zip

Подпрограмма:  DE95R (версии: DE91R, DE93R, DE97R)

Назначение

Вычисление решения задачи Коши для жесткой системы обыкновенных дифференциальных уравнений первого порядка в конце интервала интегрирования методом типа Розенброка четвертого порядка.

Математическое описание

Решается задача Коши для системы M обыкновенных дифференциальных уравнений первого порядка

                             Y '   =   F(X,Y)  , 
       Y   =   ( y1,...,yM )  ,   F   =   ( f1( X, y1,..., yM ),..., fM( X, y1,..., yM ) ) 

методом типа Розенброка четвертого порядка.

Решение вычисляется в одной точке XK, которая является концом интервала интегрирования. Для всех компонент решения осуществляется контроль точности по мере погрешности, который заключается в следующем. Если некоторая компонента приближенного решения по абсолютной величине не меньше некоторой наперед заданной константы P (называемой границей перехода), то контроль точности для этой компоненты ведется по относительной погрешности, иначе - по абсолютной.

Артемьев С.С., Демидов Г.В. A - устойчивый метод типа Розенброка четвертого порядка точности решения задачи Коши для жестких систем обыкновенных дифференциальных уравнений// Некоторые проблемы вычислительной и прикладной математики. Новосибирск: "Наука", 1975.

Современные численные методы решения обыкновенных дифференциальных уравнений/ Под ред. Дж.Холла и Дж.Уатта. М.: "Мир", 1979.

Использование

    SUBROUTINE  DE95R (F, FJ, FX, M, XN, YN, XK, HMIN, EPS, P, H, Y,
                                             R, IERR) 

Параметры

F - имя подпрограммы вычисления значений правой части дифференциальных уравнений. Первый оператор подпрограммы должен иметь вид:
   SUBROUTINE  F (X, Y, DY, M).
Здесь X, Y - значения независимой и зависимой переменных, соответственно. Вычисленное значение правой части должно быть помещено в DY; в случае системы уравнений, т.е. когда M ≠ 1, параметры Y и DY представляют одномерные массивы длиной M (тип параметров X, Y и DY: вещественный);
FJ - имя подпрограммы вычисления значений элементов матрицы Якоби ∂f / ∂y правой части системы. Первый оператор подпрограммы должен иметь вид:
   SUBROUTINE  FJ (X, Y, Z, M).
Здесь X, Y - значения независимой и зависимой переменных, соответственно. В случае системы уравнений, т.е. когда M ≠ 1, параметр Y представляет собой одномерный массив длины M, а параметр Z - двумерный массив размера M*M. Значения элементов матрицы Якоби ∂f / ∂y правой части системы должны быть помещены в массив Z, при этом частная производная от правой части I - го уравнения по J - ой переменной Y (J) запоминается в элементе Z (I,J) (тип параметров X, Y и Z: вещественный);
FX - имя подпрограммы вычисления значений частных производных по X правой части системы ∂f / ∂x. Первый оператор подпрограммы должен иметь вид:
   SUBROUTINE  FX (X, Y, Z1, M).
Здесь: X, Y - значения независимой и зависимой переменных, соответственно. В случае системы уравнений, т.е. когда M ≠ 1, параметры Y и Z1 представляют собой одномерные массивы длиной M. Значения частных производных по X правой части системы ∂f / ∂x должны быть помещены в массив Z1; при этом частная производная от правой части I - го уравнения запоминается в элементе Z1 (I) (тип параметров X, Y и Z1: вещественный);
M - количество уравнений в системе (тип: целый);
XN, YN - начальные значения аргумента и решения; в случае системы уравнений (т.е. M ≠ 1) YN представляет одномерный массив длины M (тип: вещественный);
XK - значение аргумента, при котором требуется вычислить решение задачи Коши (конец интервала интегрирования); XK может быть больше, меньше или равно XN (тип: вещественный);
HMIN - минимальное значение абсолютной величины шага, которое разрешается использовать при интегрировании данной системы уравнений (тип: вещественный);
EPS - допустимая мера погрешности, с которой требуется вычислить все компоненты решения (тип: вещественный);
P - граница перехода, используемая при оценке меры погрешности решения (тип: вещественный);
H - вещественная переменная, содержащая начальное значение шага интегрирования; может задаваться с учетом направления интегрирования, т.е. положительным, если XN < XK, отрицательным, если XN > XK, или без всякого учета в виде абсолютной величины;
Y - искомое решение задачи Коши, вычисленное подпрограммой при значении аргумента XK; для системы уравнений (когда M ≠ 1) задается одномерным массивом длины M. В случае совпадения значений параметров XN и XK значение Y полагается равным начальному значению YN (тип: вещественный);
R - одномерный рабочий массив вещественного типа длины 3*M*M + 11*M + 1;
IERR - целая переменная, значение которой в результате работы подпрограммы полагается равным 65, если какая - нибудь компонента решения не может быть вычислена с требуемой точностью EPS; в этом случае интегрирование системы можно повторить обращением к подпрограмме с новыми значениями параметров H и HMIN.

Версии

DE97R -

вычисление решения задачи Коши для жесткой системы обыкновенных дифференциальных уравнений первого порядка в конце интервала интегрирования методом типа Розенброка четвертого порядка. Отличие подпрограммы DE97R от подпрограммы DE95R состоит в том, что при обращении к подпрограмме DE97R не требуется задавать подпрограмму вычисления матрицы Якоби системы и подпрограмму вычисления частных производных правой части системы по  x. Все частные производные от правой части вычисляются в подпрограмме DE97R с помощью разностных отношений. Первый оператор подпрограммы DE97R имеет вид:

   SUBROUTINE  DE97R (F, M, XN, YN, XK, HMIN, EPS,
                                            P, H, Y, R, IERR) 
Список формальных параметров подпрограммы DE97R отличается от списка параметров подпрограммы DE95R отсутствием параметров FJ и FX. Параметры подпрограммы DE97R имеют тот же смысл, что и одноименные параметры подпрограммы DE95R.
DE91R - вычисление решения задачи Коши для автономной жесткой системы обыкновенных дифференциальных уравнений первого порядка в конце интервала интегрирования методом типа Розенброка четвертого порядка. Данная подпрограмма предназначена для интегрирования систем уравнений, в правые части которых не входит независимая переменная  x, т.е. систем вида y ' = f (y). Первый оператор подпрограммы DE91R имеет вид:
   SUBROUTINE  DE91R (F, FJ, M, XN, YN, XK, HMIN, EPS,
                                            P, H, Y, R, IERR)

Список формальных параметров подпрограммы DE91R отличается от списка параметров DE95R отсутствием параметра FX. Параметры подпрограммы DE91R имеют тот же смысл, что и одноименные параметры подпрограммы DE95R, кроме параметра R. В подпрограмме DE91R параметр R представляет одномерный вещественный рабочий массив длины 3M2 + 8M + 1 .

DE93R - вычисление решения задачи Коши для автономной жесткой системы обыкновенных дифференциальных уравнений первого порядка в конце интервала интегрирования методом Розенброка четвертого порядка. Данная подпрограмма предназначена для интегрирования систем уравнений, в правые части которых не входит независимая переменная  x, т.е. систем вида y ' = f (y). Отличие подпрограммы DE93R от подпрограммы DE95R состоит в том, что при обращении к подпрограмме DE93R не требуется задавать подпрограмму вычисления матрицы Якоби системы ∂f / ∂y и подпрограмму вычисления частных производных ∂f / ∂x. Все частные производные от правой части вычисляются в подпрограмме DE93R с помощью разностных отношений. Первый оператор подпрограммы DE93R имеет вид:
   SUBROUTINE  DE93R (F, M, XN, YN, XK, HMIN, EPS,
                                            P, H, Y, R, IERR) 

Список формальных параметров подпрограммы DE93R отличается от списка параметров подпрограммы DE95R отсутствием параметров FJ и FX. Параметры подпрограммы DE93R имеют тот же смысл, что и одноименные параметры подпрограммы DE95R, кроме параметра R. В подпрограмме DE93R параметр R представляет одномерный вещественный рабочий массив длины 3M2 + 8M + 1 .

DE95D - вычисление решения задачи Коши для жесткой системы обыкновенных дифференциальных уравнений первого порядка в конце интервала интегрирования методом типа Розенброка четвертого порядка с повышенной точностью. Первый оператор подпрограммы имеет тот же вид, что и в подпрограмме DE95R; при этом параметры XN, YN, XK, HMIN, EPS, P, H, Y, R и параметры X, Y, DY, Z, Z1 в подпрограммах F, FJ и FX должны иметь тип DOUBLE PRECISION.
DE97D - вычисление решения задачи Коши для жесткой системы обыкновенных дифференциальных уравнений первого порядка в конце интервала интегрирования методом типа Розенброка четвертого порядка с повышенной точностью. Первый оператор подпрограммы имеет тот же вид, что и в подпрограмме DE97R; при этом параметры XN, YN, XK, HMIN, EPS, P, H, Y, R и параметры X, Y, DY в подпрограмме F должны иметь тип DOUBLE PRECISION.
DE91D - вычисление решения задачи Коши для автономной жесткой системы обыкновенных дифференциальных уравнений первого порядка в конце интервала интегрирования методом типа Розенброка четвертого порядка с повышенной точностью. Первый оператор подпрограммы имеет тот же вид, что и в подпрограмме DE91R; при этом параметры XN, YN, XK, HMIN, EPS, P, H, Y, R и параметры X, Y, DY, Z в подпрограммах F и FJ должны иметь тип DOUBLE PRECISION.
DE93D - вычисление решения задачи Коши для автономной жесткой системы обыкновенных дифференциальных уравнений первого порядка в конце интервала интергирования методом типа Розенброка четвертого порядка с повышенной точностью. Первый оператор подпрограммы имеет тот же вид, что и в подпрограмме DE93R; при этом параметры XN, YN, XK, HMIN, EPS, P, H, Y, R и параметры X, Y, DY в подпрограмме F должны иметь тип DOUBLE PRECISION.

Вызываемые подпрограммы

       DE94R -
       DE94D  
выполнение одного шага численного интегрирования жесткой системы обыкновенных дифференциальных уравнений первого порядка методом типа Розенброка с обыкновенной и повышенной точностью. Вызываются при работе подпрограмм DE95R и DE95D соответственно.
       DE96R -
       DE96D  
выполнение одного шага численного интегрирования жесткой системы обыкновенных дифференциальных уравнений первого порядка методом типа Розенброка с обыкновенной и повышенной точностью. Вызываются при работе подпрограмм DE97R и DE97D соответственно.
       DE90R -
       DE90D  
выполнение одного шага численного интегрирования автономной жесткой системы обыкновенных дифференциальных уравнений первого порядка методом типа Розенброка с обыкновенной и повышенной точностью. Вызываются при работе подпрограмм DE91R и DE91D соответственно.
       DE92R -
       DE92D  
выполнение одного шага численного интегрирования автономной жесткой системы обыкновенных дифференциальных уравнений первого порядка методом типа Розенброка с обыкновенной и повышенной точностью. Вызываются при работе подпрограмм DE93R и DE93D соответственно.
      UTDE20 -
      UTDE21  
подпрограммы выдачи диагностических сообщений. Подпрограмма UTDE20 вызывается при работе подпрограмм DE91R, DE93R, DE95R, DE97R; подпрограмма UTDE21 вызывается при работе подпрограмм DE91D, DE93D, DE95D, DE97D.

Замечания по использованию

 

В общем случае заданная точность не гарантируется.

При работе подпрограммы и ее версий значения параметров M, XN, YN, XK, HMIN, EPS, P сохраняются. При работе подпрограмм F, FJ и FX значения параметров M, X, Y не должны изменяться.

Если после работы подпрограммы нет необходимости иметь начальное значение решения YN, то параметры YN и Y при обращении к ней можно совместить. При этом следует иметь в виду, что в случае аварийного выхода из подпрограммы, т.е. со значением IERR = 65, значение параметра YN будет испорчено.

В подпрограмме DE95R и ее версиях используется одношаговый метод типа Розенброка четвертого порядка точности. На каждом шаге h интегрирования, выполняемом из текущего узла интегрирования xn, вычисляются четыре значения правой части системы дифференциальных уравнений. Среди этих значений есть одно, которое должно вычисляться при значении независимой переменной  x, равном  xn - h. Это значение аргумента находится слева от точки  xn при  h > 0 и справа от точки  xn при  h < 0.

В частности, при выполнении первого шага  h из начальной точки  xN (напомним, что абсолютная величина первого шаг  h берется равной абсолютной величине значения, заданного параметром H при обращении к подпрограмме, а знак первого шага определяется соотношением значений параметров XN и XK) значение  xN - h не будет принадлежать интервалу интегрирования, ограниченному значениями, заданными параметрами XN и XK при обращении к подпрограмме DE95R (или ее версиями). Это следует учитывать при составлении подпрограммы F вычисления правой части системы. Если правая часть системы не определена для  x, не принадлежащих интервалу интегрирования, то попытка вычислить правую часть для указанного значения аргумента  x может привести к аварийному прерыванию.

Если при решении системы диффиренциальных уравнений не задаются подпрограммы FJ вычисления матрицы Якоби и FX вычисления частных производных по  x правой части системы (т.е. производится обращение к подпрограммам DE93R, DE97R, DE93D, DE97D), то все частные производные по  y  и по  x  в этих подпрограммах аппроксимируются центральными разностными отношениями. Замена точных значений производных разностными аппроксимациями может привести к росту погрешности приближенного решения системы дифференциальных уравнений по сравнению с тем, что было бы, если бы все частные производные вычислялись точно с помощью подпрограмм FJ и FX. Даже если будет мала погрешность аппроксимации частных производных (например, если правая часть системы является линейной функцией своих аргументов, то погрешность аппроксимации частных производных равна нулю), может оказаться значительной вычислительная погрешность, особенно, когда вычисления выполняются с одинарной точностью. При этом вычислительная погрешность может даже превосходить верхний предел погрешности приближенного решения, заданный при обращении к подпрограмме параметром EPS. В этом случае целесообразно использовать не подпрограммы DE93R, DE97R, а их версии, выполняющие вычисления с удвоенным числом значащих цифр, т.е. подпрограммы DE93D, DE97D.

Примеры использования

   Пример 1.
   Решается задача Коши

      y1'  =  -100 y1 
      y2'  =  -100 y1  - 2 y2  + 20 e - 100 x + 2 e - x cos x 
      y3'  =  -100 y1  + 9998 y2 - 9990 y3 - 10 y4  + 20 e - 100 x + 2 e - x cos x 
      y4'  =  -100 y1  + 9988 y2  + 20 y3 - 10010 y4  + 20 e - 100 x + 2 e - x cos x  

      0 ≤ x ≤ 10 ,  y1(0) = 10 ,  y2(0) = 11 ,  y3(0) = 111 ,  y4(0) = 111. 

   Точное решение задачи имеет вид:

      y1  =  10 e -100 x 
      y2  =  10 e - 100 x + e - x cos x + e - x sin x 
      y3  =  y2  + 100 e - 10000 x cos 10x 
      y4  =  y3  + 100 e - 10000 x sin 10x 

   Матрица Якоби правой части системы имеет вид:

        |   -100       0            0             0      
        |   -100      -2            0             0      
        |   -100       9998     -9990     -10     
        |   -100       9988      20          -10010   

   Частные производные по  x правой части системы имеют вид:

        |                            0                 
        |   -2000 e - 100 x - 2 e - x (cos x + sin x)
        |   -2000 e - 100 x - 2 e - x (cos x + sin x)
        |   -2000 e - 100 x - 2 e - x (cos x + sin x)

Ниже приводятся фрагмент вызывающей программы для DE95R, подпрограммы F, FJ, FX и результаты счета, полученные после нескольких обращений к подпрограмме DE95R.

       DIMENSION YN(4), Y(4), R(93) 
       EXTERNAL F, FJ, FX 
       M = 4 
       XN = 0. 
       YN(1) = 10. 
       YN(2) = 11. 
       YN(3) = 111. 
       YN(4) = 111. 
       HMIN = 1.E-10 
       EPS = 1.E-2 
       P = 1.E3 
       XK = 10. 
C     BЫЧИCЛEHИE TOЧHOГO PEШEHИЯ CИCTEMЫ: 
       Y1 = 10.*EXP(-100.*XK) 
       Y2 = Y1 + EXP(-XK)*(COS(XK) + SIN(XK)) 
       Y3 = Y2 + 100.*EXP(-1.E4*XK)*COS(10.*XK) 
       Y4 = Y3 + 100.*EXP(-1.E4*XK)*SIN(10.*XK) 
       IH = 0 
 10  IH = IH + 1 
       H = 0.01 
       CALL  DE95R (F, FJ, FX, M, XN, YN, XK, HMIN, EPS, P, H, Y, R,
      *                        IERR)
       EPS = EPS*1.E-2 
       IF (IH .LT. 4) GO TO 10 
                
       SUBROUTINE  F (X, Y, DY, M) 
       DIMENSION Y(4), DY(4) 
       DY(1) = -100.*Y(1) 
       T1 = 20.*EXP(-100.*X) + 2.*EXP(-X)*COS(X) 
       DY(2) = DY(1) - 2.*Y(2) + T1 
       DY(3) = DY(1) + 9998.*Y(2) - 9990.*Y(3) - 10.*Y(4) + T1 
       DY(4) = DY(1) + 9988.*Y(2) + 20.*Y(3) - 10010.*Y(4) + T1 
       RETURN 
       END 

       SUBROUTINE  FJ (X, Y, DF, M) 
       DIMENSION Y(4), DF(4, 4) 
       DF(1, 1) = -100. 
       DF(1, 2) = 0. 
       DF(1, 3) = 0. 
       DF(1, 4) = 0. 
       DF(2, 1) = -100. 
       DF(2, 2) = -2. 
       DF(2, 3) = 0. 
       DF(2, 4) = 0. 
       DF(3, 1) = -100. 
       DF(3, 2) = 9998. 
       DF(3, 3) = -9990. 
       DF(3, 4) = -10. 
       DF(4, 1) = -100. 
       DF(4, 2) = 9988. 
       DF(4, 3) = 20. 
       DF(4, 4) = -10010. 
       RETURN 
       END 

       SUBROUTINE  FX (X, Y, DX, M) 
       DIMENSION Y(4), DX(4) 
       DX(1) = 0. 
       DX(2) = -2.E3*EXP(-1.E2*X) - 2.*EXP(-X)*(COS(X) + SIN(X)) 
       DX(3) = DX(2) 
       DX(4) = DX(2) 
       RETURN 
       END 

 Результаты: 

              Y1                                   Y2 
      0.000000000000+00    -6.279230870976-05 
              Y3                                   Y4 
     -6.279230870976-05    -6.279230870976-05 

      после первого обращения к подпрограмме -
      EPS = 1.0-02 
              Y(1)                                 Y(2) 
      7.146873880164-13    -6.764660892966-05 
              Y(3)                                 Y(4) 
     -6.764660892122-05    -6.764660892966-05 
      H = 2.560000000001+00 
   
      после второго обращения к подпрограмме -
      EPS = 1.0-04 
              Y(1)                                 Y(2) 
      6.621227792960-20    -6.330159900469-05 
              Y(3)                                 Y(4) 
     -6.330159900392-05    -6.330159900414-05 
      H = 2.560000000001+00 

      после третьего обращения к подпрограмме -
      EPS = 1.0-06
              Y(1)                                 Y(2) 
      0.000000000000+00    -6.286382905407-05 
              Y(3)                                 Y(4) 
     -6.286382905418-05    -6.286382905407-05 
      H = 1.280000000001+00 
   
      после четвертого обращения к подпрограмме -
      EPS = 1.0-08 
              Y(1)                                 Y(2) 
      0.000000000000+00    -6.279451115976-05 
              Y(3)                                 Y(4) 
     -6.279451115976-05    -6.279451116020-05 
      H = 3.200000000002-01 

   Пример 2.

Решается система из примера 1. Приводятся фрагмент вызывающей программы для DE97R, подпрограмма F и результаты счета, полученные после нескольких обращений к подпрограмме DE97R.

       DIMENSION YN(4), Y(4), R(93)
       EXTERNAL F 
       M = 4 
       XN = 0. 
       YN(1) = 10. 
       YN(2) = 11. 
       YN(3) = 111. 
       YN(4) = 111. 
       HMIN = 1.E-10 
       EPS = 1.E-2 
       P = 1.E3 
       XK = 10. 
C     BЫЧИCЛEHИE TOЧHOГO PEШEHИЯ CИCTEMЫ: 
       Y1 = 10.*EXP(-100.*XK) 
       Y2 = Y1 + EXP(-XK)*(COS(XK) + SIN(XK)) 
       Y3 = Y2 + 100.*EXP(-1.E4*XK)*COS(10.*XK) 
       Y4 = Y3 + 100.*EXP(-1.E4*XK)*SIN(10.*XK) 
       IH = 0. 
 10  IH = IH + 1 
       H = 0.01 
       CALL  DE97R (F, M, XN, YN, XK, HMIN, EPS, P, H, Y, R, IERR) 
       EPS = EPS*1.E-2 
       IF (IH .LT. 3) GOTO 10
 
       SUBROUTINE F (X, Y, DY, M) 
       DIMENSION Y(4), DY(4) 
       DY(1) = -100.*Y(1) 
       T1 = 20.*EXP(-100.*X) + 2.*EXP(-X)*COS(X) 
       DY(2) = DY(1) - 2.*Y(2) + T1 
       DY(3) = DY(1) + 9998.*Y(2) - 9990.*Y(3) - 10.*Y(4) + T1 
       DY(4) = DY(1) + 9988.*Y(2) + 20.*Y(3) - 10010.*Y(4) + T1 
       RETURN 
       END 

      Результаты: 
              Y1                                   Y2 
      0.000000000000+00    -6.279230870976-05 
              Y3                                   Y4 
     -6.279230870976-05    -6.279230870976-05 

      после первого обращения к подпрограмме -
  
      EPS = 1.0-02 
              Y(1)                                 Y(2) 
      7.146874056701-13    -6.764660658287-05 
              Y(3)                                 Y(4) 
     -6.764662603498-05    -6.764660998348-05 
      H = 2.560000000001+00 

      после второго обращения к подпрограмме -
      EPS = 1.0-04 
              Y(1)                                 Y(2) 
      6.614556599143-02    -6.330157681200-05 
              Y(3)                                 Y(4) 
     -6.330157682632-05    -6.330157680712-05 
      H = 2.560000000001+00 
   
      после третьего обращения к подпрограмме -
      EPS = 1.0-06 
              Y(1)                                 Y(2) 
      2.733180996095-20    -6.286373127617-05 
              Y(3)                                 Y(4) 
     -6.286373127695-05    -6.286373127762-05 
      H = 1.280000000001+00

   Пример 3.
   Решается задача Коши
 
      y1'  =  - 10000 y1  + 100 y2 - 10 y3  + y4 
      y2'  =  - 1000 y2  + 10 y3 -10 y4 
      y3'  =  - y3  + 10 y4 
      y4'  =  - 0.1 y4 

      0 ≤ x ≤ 20 ,  y1(0) = 1 ,  y2(0) = 1 ,  y3(0) = 1 ,  y4(0) = 1 

   Точное решение задачи имеет вид:

      y1  = (1 - d - f - g) t3  + d t2  + f t1  + g y4 
      y2  = (1 - a - b) t2  + a t1  + b y4 
      y3  = (- 9.1 / 0.9) t1 + (10 / 0.9) y4
      y4  = e - 0.1 x 
 
 где   t1 = e - x  ,    t2 = e - 1000 x  ,     t3 = e - 10000 x   ,

  a = - 91 / (0.9*999) ,    b = 91 / (0.9*999.9)  ,    d =  ( 1 - a - b ) / 90  ,
              
  f = [ 100 a + (91 / 0.9) ] / 9999  ,    g = [ 100 b - (100 / 0.9)  + 1 ] / 9999.9  . 

   Матрица Якоби правой части системы имеет вид:

       -10000     100     -10      1     
         0           -1000    10    -10    
         0             0         -1      10    
         0             0          0      -0.1   

Ниже приводятся фрагмент вызывающей программы для DE91R, подпрограммы F и FJ и результаты счета, полученные после нескольких обращений к подпрограмме DE91R.

       DIMENSION YN(4), Y(4), R(81) 
       EXTERNAL F, FJ 
       M = 4 
       XN = 0. 
       YN(1) = 1. 
       YN(2) = 1. 
       YN(3) = 1. 
       YN(4) = 1. 
       HMIN = 1.E-10 
       EPS = 1.E-2 
       P = 100. 
       XK = 20. 
C     BЫЧИCЛEHИE TOЧHOГO PEШEHИЯ CИCTEMЫ 
       Y4 = EXP(-0.1*XK) 
       T1 = EXP(-XK) 
       Y3 = -(9.1/0.9)*T1 + (10./0.9)*Y4 
       T2 = EXP(-1.E3*XK) 
       A = -91./(0.9*999.) 
       B = 91./(0.9*999.9) 
       C = 1. - A - B 
       Y2 = C*T2 + A*T1 + B*Y4 
       T3 = EXP(-1.E4*XK) 
       DD = C/90. 
       FF = (100.*A + 91./0.9)/9999. 
       GG = (100.*B - 100./0.9 + 1.)/9999.9 
       QQ = 1. - DD - FF- GG 
       Y1 = QQ*T3 + DD*T2 + FF*T1 + GG*Y4 
       IH = 0 
 10  IH = IH + 1 
       H = 0.01 
       CALL  DE91R (F, FJ, M, XN, YN, XK, HMIN, EPS, P, H, Y, R, IERR) 
       EPS = EPS*1.E-2 
       IF (IH .LT. 4) GOTO 10 

       SUBROUTINE F (X, Y, DY, M) 
       DIMENSION Y(4), DY(4) 
       DY(1) = -1.E4*Y(1) + 1.E2*Y(2) - 10.*Y(3) + Y(4) 
       DY(2) = -1.E3*Y(2) + 10.*Y(3) - 10.*Y(4) 
       DY(3) = -Y(3) + 10.*Y(4) 
       DY(4) = -0.1*Y(4) 
       RETURN 
       END 

       SUBROUTINE FJ (X, Y, DF, M) 
       DIMENSION Y(4), DF(4, 4) 
       DF(1, 1) = -1.E4 
       DF(1, 2) = 1.E2 
       DF(1, 3) = -10. 
       DF(1, 4) = 1. 
       DF(2, 1) = 0. 
       DF(2, 2) = -1.E3 
       DF(2, 3) = 10. 
       DF(2, 4) = -10. 
       DF(3, 1) = 0. 
       DF(3, 2) = 0. 
       DF(3, 3) = -1. 
       DF(3, 4) = 10. 
       DF(4, 1) = 0. 
       DF(4, 2) = 0. 
       DF(4, 3) = 0. 
       DF(4, 4) = -0.1 
       RETURN 
       END 

      Результаты: 

             Y1                                    Y2 
     -1.353352661869-03     1.368526917891-02 
             Y3                                    Y4 
      1.503725348452+00     1.353352832364-01 

      после первого обращения к подпрограмме -
      EPS = 1.0-02 
             Y(1)                                  Y(2) 
     -1.352902557240-03     1.368071768447-02 
             Y(3)                                  Y(4) 
      1.503225232165+00     1.352902708961-01 
      H = 1.024000000001+01 

      после второго обращения к подпрограмме -
      EPS = 1.0-04 
             Y(1)                                  Y(2) 
     -1.353311838306-03     1.368485637501-02 
             Y(3)                                  Y(4) 
      1.503679988920+00     1.353311999785-01 
      H = 2.560000000001+00 
   
      после третьего обращения к подпрограмме -
      EPS = 1.0-06 
             Y(1)                                  Y(2) 
     -1.353350127546-03     1.368524355264-02 
             Y(3)                                  Y(4) 
      1.503722532527+00     1.353350296827-01 
      H = 1.280000000001+00 

      после четвертого обращения к подпрограмме -
      EPS = 1.0-08 
             Y(1)                                  Y(2) 
     -1.353352646026-03     1.368526901869-02 
             Y(3)                                  Y(4) 
      1.503725330851+00     1.353352816498-01 
      H = 3.200000000002-01 

   Пример 4.

Решается задача Коши из примера 3. Приводятся фрагмент вызывающей программы для DE93R, подпрограмма F и результаты счета, полученные после нескольких обращений к подпрограмме DE93R.

       DIMENSION YN(4), Y(4), R(81) 
       EXTERNAL F 
       M = 4 
       XN = 0. 
       YN(1) = 1. 
       YN(2) = 1. 
       YN(3) = 1. 
       YN(4) = 1. 
       HMIN = 1.E-10 
       EPS = 1.E-8 
       P = 100 
       XK = 20. 
C     BЫЧИCЛEHИE TOЧHOГO PEШEHИЯ CИCTEMЫ: 
       Y4 = EXP(-0.1*XK) 
       T1 = EXP(-XK) 
       Y3 = -(9.1/0.9)*T1 + (10./0.9)*Y4 
       T2 = EXP(-1.E3*XK) 
       A = -91./(0.9*999.) 
       B = 91./(0.9*999.9) 
       C = 1. - A - B 
       Y2 = C*T2 + A*T1 + B*Y4 
       T3 = EXP(-1.E4*XK) 
       DD = C/90. 
       FF = (100.*A + 91./0.9)/9999. 
       GG = (100.*B - 100./0.9 + 1.)/9999.9 
       QQ = 1. - DD - FF - GG 
       Y1 = QQ*T3 + DD*T2 + FF*T1 + GG*Y4 
       IH = 0 
  10 IH = IH + 1 
       H = 0.01 
       CALL  DE93R (F, M, XN, YN, XK, HMIN, EPS, P, H, Y, R, IERR) 
       EPS = EPS*1.E-2 
       IF (IH .LT. 4) GO TO 10 
   
       SUBROUTINE F (X, Y, DY, M) 
       DIMENSION Y(4), DY(4) 
       DY(1) = -1.E4*Y(1) + 1.E2*Y(2) - 10.*Y(3) + Y(4) 
       DY(2) = -1.E3*Y(2) + 10.*Y(3) - 10.*Y(4) 
       DY(3) = -Y(3) + 10.*Y(4) 
       DY(4) = -0.1*Y(4) 
       RETURN 
       END 
  
   Результаты: 

             Y1                                   Y2 
     -1.353352661869-03     1.368526917891-02 
             Y3                                   Y4 
      1.503725348452+00     1.353352832364-01 

   после первого обращения к подпрограмме -
      EPS = 1.0-02 
             Y(1)                                 Y(2) 
     -1.352902572352-03     1.368071785960-02 
             Y(3)                                 Y(4) 
      1.503225234967+00     1.352902709414-01 
      H = 1.024000000001+01 

   после второго обращения к подпрограмме -
      EPS = 1.0-04 
             Y(1)                                 Y(2) 
     -1.353311843749-03     1.368485643758-02 
             Y(3)                                 Y(4) 
      1.503679988458+00     1.353311999721-01 
      H = 2.560000000001+00 

   после третьего обращения к подпрограмме -
      EPS = 1.0-06 
             Y(1)                                 Y(2) 
     -1.353350112996-03     1.368524337161-02 
             Y(3)                                 Y(4) 
      1.503722531763+00     1.353350295963-01 
      H = 1.280000000001+00 

   после четвертого обращения к подпрограмме -
      EPS = 1.0-08 
             Y(1)                                 Y(2) 
     -1.353351314448-03     1.368525627954-02 
             Y(3)                                 Y(4) 
      1.503725330012+00     1.353352828808-01 
      H = 3.200000000002-01 


   Пример 5.

   Решается задача Коши

      y1'  =  - a2 y1 y2 
      y2'  =  2 a1 y5 x92 - a2 y1 y2 - a5 x6 y2  + a6 x7 
      y3'  =  a3 x6 x8 - a7 y3 
      y4'  =  a6 x7  + a7 y3  + a4 x6 
      y5'  =  - a1 y5 x92

где
      x6  =  1 - a8 - 2 y1  + y2 - y3 - y4  + 2y5 
      x7  =  a8 + y1 - y2 - 2 y5 
      x8  =  a9 - y3 
      x9  =  - 0.8745 - a8  + y3  + y4  + 2 y5 

      a1  = 80,   a2  = 29,   a3  = 1,   a4  = 0.288*10-3  ,   a5  = 166 ,  
      a6  = 0.959 * 10-4  ,   a7  = 0.232 * 10-3  ,   a8  = 0.0477 ,   a9  = 0.602 , 
            
      0 ≤ x ≤ 3000 .

      y1(0)  =  1 ,   y2(0)  =  0.0477 ,   y3(0)  =  0 ,   y4(0)  =  0 ,   y5(0) = 0.5 

Этот пример взят из статьи С.С.Артемьева и Г.В.Демидова, которая приведена в списке литературы, данном в разделе "Математическое описание".

Ниже приводятся фрагмент вызывающей программы для DE91R, подпрограммы F и FJ и результаты счета, полученные после двух обращений к подпрограмме DE91R со значениями параметра EPS, равными 10-6 и 10-7.

 
       DIMENSION YN(5), Y(5), R(116) 
       EXTERNAL F, FJ 
       M = 5 
       XN = 0. 
       YN(1) = 1. 
       YN(2) = 0.0477 
       YN(3) = 0. 
       YN(4) = 0. 
       YN(5) = 0.5 
       HMIN = 1.E-10 
       EPS = 1.E-6 
       P = 100. 
       XK = 3.E3 
       IH = 0 
 10  IH = IH + 1 
       H = 0.01 
       CALL  DE91R (F, FJ, M, XN, YN, XK, HMIN, EPS, P, H, Y, R, IERR) 
       EPS = EPS*1.E-1 
       IF (IH .LT. 2) GO TO 10 

       SUBROUTINE  F (X, Y, DY, M) 
       DIMENSION Y(5), DY(5) 
       A1 = 80. 
       A2 = 29. 
       A3 = 1. 
       A4 = 0.288E-3 
       A5 = 166. 
       A6 = 0.959E-4 
       A7 = 0.232E-3 
       A8 = 0.0477 
       A9 = 0.602 
       X6 = 1. - A8 - 2.*Y(1) + Y(2) - Y(3) - Y(4) + 2.*Y(5) 
       X7 = A8 + Y(1) - Y(2) - 2*Y(5) 
       X8 = A9 - Y(3) 
       X9 = -0.8745 - A8 + Y(3) + Y(4) + 2.*Y(5) 
       T1 = A1*Y(5)*X9*X9 
       T2 = A6*X7 
       T3 = A7*Y(3) 
       DY(1) = -A2*Y(1)*Y(2) 
       DY(2) = 2.*T1 + DY(1) - A5*X6*Y(2) + T2 
       DY(3) = A3*X6*X8 - T3 
       DY(4) = T2 + T3 + A4*X6 
       DY(5) = -T1 
       RETURN 
       END 

       SUBROUTINE  FJ (X, Y, DF, M) 
       DIMENSION Y(5), DF(5, 5) 
       A1 = 80. 
       A2 = 29. 
       A3 = 1. 
       A4 = 0.288E-3 
       A5 = 166. 
       A6 = 0.959E-4 
       A7 = 0.232E-3 
       A8 = 0.0477 
       A9 = 0.602 
       X6 = 1. - A8 - 2.*Y(1) + Y(2) - Y(3) - Y(4) + 2.*Y(5) 
       X8 = A9 - Y(3) 
       X9 = -0.8745 - A8 + Y(3) + Y(4) + 2.*Y(5) 
       T1 = 2.*A1*Y(5)*X9 
       T2 = A5*Y(2) 
       T3 = A1*X9*X9 
       DF(1, 1) = -A2*Y(2) 
       DF(1, 2) = -A2*Y(1) 
       DF(1, 3) = 0. 
       DF(1, 4) = 0. 
       DF(1, 5) = 0. 
       DF(2, 1) = 2.*T2 + DF(1, 1) + A6 
       DF(2, 2) = DF(1, 2) - A5*X6 - T2 - A6 
       DF(2, 3) = 2.*T1 + T2 
       DF(2, 4) = DF(2, 3) 
       DF(2, 5) = 2.*T3 + 4.*T1 - 2.*T2 - 2.*A6 
       DF(3, 2) = A3*X8 
       DF(3, 1) = -2.*DF(3, 2) 
       DF(3, 3) = -DF(3, 2) - A3*X6 - A7 
       DF(3, 4) = -DF(3, 2) 
       DF(3, 5) = 2.*DF(3, 2) 
       DF(4, 1) = A6 - 2.*A4 
       DF(4, 2) = -A6 + A4 
       DF(4, 3) = A7 - A4 
       DF(4, 4) = -A4 
       DF(4, 5) = 2.*(A4 - A6) 
       DF(5, 1) = 0. 
       DF(5, 2) = 0. 
       DF(5, 3) = -T1 
       DF(5, 4) = DF(5, 3) 
       DF(5, 5) = -T3 + 2.*DF(5, 3) 
       RETURN 
       END 
   
   Результаты: 

   после первого обращения к подпрограмме -
      EPS = 1.0-06 
             Y(1)                                 Y(2)                                Y(3) 
      7.743161591600-02     3.837857646993-05     5.035858808897-01 
             Y(4)                                 Y(5) 
      3.578708481186-01     3.240421442632-02 
      H = 1.638400000001+02 

   после второго обращения к подпрограмме -
      EPS = 1.0-07 
             Y(1)                                 Y(2)                                Y(3) 
      7.743302086658-02     3.837918184429-05     5.035845024640-01 
             Y(4)                                 Y(5) 
      3.578709420071-01     3.240497334838-02 
      H = 8.192000000004+01 

   Пример 6.

Решается задача Коши из примера 5. Приводятся фрагмент вызвающей программы для DE93R, подпрограмма F и результаты счета, полученные после двух обращений к подпрограмме DE93R со значениями параметра EPS, равными 10-6 и 10-7.

       DIMENSION YN(5), Y(5), R(116) 
       EXTERNAL F 
       M = 5 
       XN = 0. 
       YN(1) = 1. 
       YN(2) = 0.0477 
       YN(3) = 0. 
       YN(4) = 0. 
       YN(5) = 0.5 
       HMIN = 1.E-10 
       EPS = 1.E-6 
       P = 100. 
       XK = 3.E3 
       IH = 0 
 10  IH = IH + 1 
       H = 0.01 
       CALL  DE93R (F, M, XN, YN, XK, HMIN, EPS, P, H, Y, R, IERR) 
       EPS = EPS*1.E-1 
       IF (IH .LT. 2) GO TO 10 

       SUBROUTINE  F (X, Y, DY, M) 
       DIMENSION Y(5), DY(5) 
       A1 = 80. 
       A2 = 29. 
       A3 = 1. 
       A4 = 0.288E-3 
       A5 = 166. 
       A6 = 0.959E-4 
       A7 = 0.232E-3 
       A8 = 0.0477 
       A9 = 0.602 
       X6 = 1. - A8 - 2.*Y(1) + Y(2) - Y(3) - Y(4) + 2.*Y(5) 
       X7 = A8 + Y(1) - Y(2) - 2*Y(5) 
       X8 = A9 - Y(3) 
       X9 = -0.8745 - A8 + Y(3) + Y(4) + 2.*Y(5) 
       T1 = A1*Y(5)*X9*X9 
       T2 = A6*X7 
       T3 = A7*Y(3) 
       DY(1) = -A2*Y(1)*Y(2) 
       DY(2) = 2.*T1 + DY(1) - A5*X6*Y(2) + T2 
       DY(3) = A3*X6*X8 - T3 
       DY(4) = T2 + T3 + A4*X6 
       DY(5) = -T1 
       RETURN 
       END 
   
   Результаты: 

   после первого обращения к подпрограмме -
      EPS = 1.0-06 
             Y(1)                                 Y(2)                                 Y(3) 
      7.743161056910-02     3.837859005229-05     5.035858775518-01 
             Y(4)                                 Y(5) 
      3.578708481446-01     3.240421646177-02 
      H = 1.638400000001+02 

   после второго обращения к подпрограмме -
      EPS = 1.0-07 
             Y(1)                                 Y(2)                                 Y(3) 
      7.743301273331-02     3.837911001064-05     5.035844456870-01 
             Y(4)                                 Y(5) 
      3.578709422377-01     3.240497096766-02 
      H = 8.192000000004+01