Текст подпрограммы и версий ( Фортран )
de12d.zip
Тексты тестовых примеров ( Фортран )
tde12d1.zip , tde12d2.zip
Текст подпрограммы и версий ( Паскаль )
de12e_p.zip
Тексты тестовых примеров ( Паскаль )
tde12e1_p.zip , tde12e2_p.zip

Подпрограмма:  DE12D

Назначение

Подпрограмма DE12D является комплексом программ для вычисления решения задачи Коши в конце интервала интегрирования методом рядов Чебышёва с контролем точности или без контроля точности.

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

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

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

 с начальными условиями, заданными в точке XN :

          Y(XN) = YN ,     YN = ( y10, ... , yM0 ) , 

методом рядов Чебышёва. Решение вычисляется в одной точке XK, которая является концом интервала интегрирования [XN, XK]. Предполагается, что правая часть системы имеет непрерывные ограниченные частные производные по переменным X, Y. Тогда решение системы разлагается на промежутке интегрирования в равномерно сходящийся ряд по смещенным многочленам Чебышёва первого рода.

Приводимое здесь описание метода решения преследует две цели. Во-первых, дать пользователю общее представление об используемом подходе к интегрированию обыкновенных дифференциальных уравнений. Во-вторых, на основе данного знания помочь пользователю яснее усвоить смысл и назначение формальных параметров. С более подробным изложением различных аспектов математического метода решения можно ознакомиться по приводимому в конце данного раздела списку литературы.

Интервал интегрирования автоматически разбивается на элементарные сегменты переменной длины H:  [xs, xs + H],  x0 = XN,  s = 0, 1, ... . На каждом элементарном сегменте решение исходной задачи Коши приближенно представляется в виде (K + 1) - й частичной суммы смещенного ряда Чебышёва

                                       K+1
           Y(xs + αH)  ≈  UK+1(xs+αH) = ∑ ai*[UK+1] Ti*(α) ,  0 ≤ α ≤ 1 ,
                                       i=0 

здесь ai*[UK+1] - коэффициенты ряда, Ti*(α) - смещенные многочлены Чебышёва первого рода на  [0, 1]. Значение K задается пользователем при обращении к подпрограмме. Решение в конце каждого сегмента вычисляется по формуле

                                          K+1
        Y(xs + H) = Y(xs+1) ≈ UK+1(xs+1) =  ∑ ai*[UK+1] .
                                          i=0

Коэффициенты ai*[UK+1] ряда Чебышёва для решения UK+1(xs+αH) на s - м сегменте [xs, xs + H] выражаются через коэффициенты ai*[Φ] ряда Чебышёва его производной Φ(α) = F(xs + αH, UK+1(xs + αH)),  0 ≤ α ≤ 1, на  [xs, xs + H], которые, в свою очередь, вычисляются приближенно итерационным способом, исходя из некоторого начального приближения, с помощью квадратурной формулы Маркова на [xs, xs + H] с K + 1 узлом. При этом один из узлов квадратурной формулы совпадает с xs, а остальные K узлов лежат внутри интервала (xs, xs + H). Количество итераций, которое предписывается выполнить в этом итерационном процессе, одинаково для всех сегментов и задается при обращении к подпрограмме. Если при выбранном H ряды Чебышёва для Y(X) = Y(xs + αH),  0 ≤ α ≤ 1  , и его производной на элементарном сегменте [xs, xs + H] быстро сходятся, то для того чтобы приближенное решение в конце одного такого сегмента имело максимальный порядок точности относительно H, необходимо выполнить не менее K итераций; при этом погрешность приближенного решения в конце элементарного сегмента является величиной порядка O(HK + 2)  при  H --> 0. Если H подобрано достаточно малым, то хорошая точность приближенного решения может быть получена и при меньшем числе итераций.

Начальное приближение коэффициентов ai*[Φ] ряда Чебышёва для производной на сегменте [xs, xs + H] может вычисляться двумя способами. В первом способе начальное приближение определяется только с использованием значения решения UK+1(X) в узле xs. При этом погрешность начального приближения для всех коэффициентов a0*[Φ], a1*[Φ], ... , aK*[Φ] является величиной O(H2) при H --> 0. Во втором способе начальное приближение определяется через коэффициенты ряда Чебышёва производной Φ(α) на предыдущем элементарном сегменте [xs - 1, xs]. В этом случае погрешности начального приближения для коэффициентов a0*[Φ], a1*[Φ], ... , aK*[Φ] имеют, соответственно, порядки O(H), O(H2), ... , O(HK + 1). Второй способ определения начального приближения в некоторых случаях может привести к более быстрой сходимости итерационного процесса и, тем самым, к меньшему числу выполняемых итераций. Второй способ может быть применен только начиная со второго элементарного сегмента [x1, x2]. На начальном элементарном сегменте [x0, x1] всегда применяется исключительно первый способ. Способ выбора начального приближения задается пользователем при обращении к подпрограмме.

Если решение задачи Коши нужно вычислять с контролем точности, то на каждом частичном сегменте [xs, xs + H] = [xs, xs+1] для оценки погрешности решения UK+1(xs + αH), полученного при некотором заданном значении K = K1, вычисляется на этом же сегменте специальным образом второе приближенное решение при K = K2 > K1, которое также представляется указанными выше частичными суммами при K = K2. Значение K2 задается пользователем при обращении к подпрограмме. Второе решение UK2+1, как имеющее более высокий порядок точности O(HK2 + 2), используется для оценки погрешности первого решения UK1+1 на каждом элементарном сегменте. Заданные значения K1 и K2 используются для всех сегментов, на которые автоматически разбивается интервал интегрирования [XN, XK]. Второе приближенное решение на сегменте [xs, xs+1] вычисляется аналогично первому решению итерационным способом. Единственным отличием при этом является то, что начальным приближением в этом дополнителном итерационном процессе служит уже вычисленное на отрезке [xs, xs+1] первое решение UK1+1(xs + αH). Количество итераций, которое потребуется выполнить в этом дополнительном итерационном процессе, одинаково для всех сегментов и задается при обращении к подпрограмме.

Если решение задачи Коши нужно вычислять с контролем точности, то длина элементарного сегмента H выбирается в подпрограмме из условия, чтобы на каждый элементарный сегмент [xs, xs + H] приходилась приблизительно одинаковая погрешность. Поэтому длина элементерного сегмента H - величина переменная, определяемая автоматически подпрограммой. Она изменяется от одного элементарного сегмента к другому элементарному сегменту. При обращении к подпрограмме задается только начальное значение длины первого элементерного сегмента [XN, XN + H] = [x0, x0 + H] которое может быть уменьшено подпрограммой, если на нем не будет достигнута заданная точность.

Если решение задачи Коши нужно вычислять с контролем точности, то в качестве решения Y(xs+1) задачи на сегменте [xs, xs+1] выбирается второе приближенное решение UK2+1(xs+1), поскольку оно имеет более высокий порядок точности O(HK2 + 2). В качестве решения исходной задачи Коши в конце интервала интегрирования XK принимается значение решения UK2+1(XK) в конце последнего элементарного сегмента. Если контроль точности выполнять не нужно, то в качестве решения исходной задачи Коши в конце интервала интегрирования XK принимается значение решения YK+1(XK) в конце последнего элементарного сегмента.

Для системы уравнений (M > 1) с проверкой на точность могут вычисляться либо все компоненты решения, либо некоторые из них (в частности, одна компонента). В последнем случае номера проверяемых на точность компонент задаются при обращении к подпрограмме.

Если интегрирование нужно выполнять с контролем точности, то для оценки уклонения приближенного решения от точного (т.е. для оценки абсолютной погрешности приближенного решения) в подпрограмме используются два способа, или две формулы. Первый способ опирается на первую формулу для абсолютной погрешности приближенного решения. Она является асимптотической (т.е. справедливой при H --> 0) и представляет собою разность двух частичных сумм смещенного ряда Чебышёва на сегменте [xs, xs + H] с приближенными коэффициентами, а именно разность приближенных частичных сумм (K2+1)-го и (K1+1)-го порядков в точке xs + H. Второй способ опирается на несколько завышенную оценку абсолютной погрешности, которая представляет сумму абсолютных величин (модулей) разностей приближенных коэффициентов этих частичных сумм и поэтому несколько завышена по сравнению с первой. Назовем эту формулу второй. Более того, при использовании этой, второй, формулы в том случае, когда точность решения оценивается по относительной погрешности или по мере погрешности, то дополнительно используется также завышенная оценка сверху для относительной погрешности и завышенная оценка сверху для меры погрешности. Второй способ оценки погрешности, хотя и является более точным, накладывает более сильное ограничение на размер элементарного сегмента и приводит к меньшей длине сегментов. Используемый способ оценки абсолютной погрешности задается при обращении к подпрограмме.

В дальнейшем при описании параметров подпрограммы коэффициенты ряда Чебышёва будем называть коэффициентами Чебышёва.

О.Б.Арушанян, С.Ф.Залеткин. Приближенное решение задачи Коши для обыкновенных дифференциальных уравнений методом рядов Чебышёва. Вычислительные методы и программирование: Новые вычислительные технологии (Электронный научный журнал) (17), 121 - 131, 2016.

О.Б.Арушанян, Н.И.Волченскова, С.Ф.Залеткин. Вычисление коэффициентов разложения решения задачи Коши в ряд по многочленам Чебышёва. Вестник Московского университета. Серия 1: Математика. Механика. 5, 24 - 30, 2012.

О.Б.Арушанян, С.Ф.Залеткин. Об оценке погрешности приближенного решения обыкновенных дифференциальных уравнений, определенного с помощью рядов Чебышёва// Вычислительные методы и программирование, 2020, т. 21, с. 241 - 250.

О.Б.Арушанян, С.Ф.Залеткин. О вычислении приближенного решения обыкновенных дифференциальных уравнений методом рядов Чебышёва и оценка его погрешности// Вестн. Моск. ун-та. Сер. 1, Математика. Механика. 2020, № 5 с. 22 - 26.

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

    SUBROUTINE  DE12D(F, M, XN, YN, XK, K, INIAPR, IMAX, H, Y, MEXACT, IU, EPS, THRESH, NUMBES, MESTER, K2, IMAX2, NATTEM, HMIN, RAB, IERR) 

Параметры

F - имя подпрограммы вычисления значений правой части дифференциального уравнения. Первый оператор подпрограммы должен иметь вид:
SUBROUTINE  F (X, Y , DY, M).
Здесь: X, Y - значения независимой и зависимой переменных, соответственно. Вычисленное значение правой части должно быть помещено в DY. B случае системы уравнений, т.е. когда M ≠ 1 , параметры Y и DY представляют массивы длины M (тип параметров X, Y и DY: с двойной точностью);
M - количество уравнений в системе (тип: целый);
XN, YN - начальные значения аргумента и решения; в случае системы уравнений (т.е. когда M ≠ 1) YN представляет массив длины M (тип: с двойной точностью);
XK - значение аргумента, при котором требуется вычислить решение задачи Коши (конец интервала интегрирования); XK может быть больше, меньше или равно XN (тип: с двойной точностью);
K - порядок частичной суммы смещенного ряда Чебышёва, с помощью которой аппроксимируется производная первого приближенного решения задачи Коши на каждом элементарном сегменте разбиения интервала интегрирования; при этом само приближенное решение задачи Коши приближается на каждом элементарном сегменте частичной суммой (K + 1) - го порядка; K≥2. Этот параметр относится только к первому приближенному решению, имеющему меньший порядок точности O(HK + 2), и его производной (см. "Математическое описание" и "Замечания по использованию"; тип: целый);
INIAPR - целый указатель способа выбора начального приближения коэффициентов Чебышёва для производной первого приближенного решения на каждом элементарном сегменте:
INIAPR=1 - для первого способа, когда начальное приближение определяется только с использованием значения решения в начале каждого элементарного сегмента;
INIAPR=2 - для второго способа, когда начальное приближение коэффициентов Чебышёва на текущем элементарном сегменте (начиная со второго) определяется через коэффициенты Чебышёва, вычисленные на предыдущем элементарном сегменте, т.е. путем экстраполяции коэффициентов с предыдущего сегмента на следующий (см. "Математическое описание");
IMAX - целая переменная, задающая количество итераций, которое предполагается выполнить в итерационном процессе вычисления коэффициентов Чебышёва для производной первого приближенного решения задачи Коши на каждом элементарном сегменте, исходя из некоторого начального приближения, способ определения которого задается параметром INIAPR; IMAX≥1. Для получения максимального порядка точности первого приближенного решения необходимо выполнить не менее K итераций. Этот параметр относится только к первому приближенному решению, имеющему меньший порядок точности O(HK + 2), и его производной. Если правая часть дифференциального уравнения не зависит от переменной Y, т.е. дифференциальное уравнение имеет вид Y' = F(X), то число итераций при вычислении первого приближенного решения можно положить равным 1. В этом случае параметр IMAX=1 (см. "Математическое описание" и "Замечания по использованию");
H - переменная с двойной точностью, содержащая начальное значение длины первого элементарного сегмента (аналог шага интегрирования для разностных методов). Может задаваться с учетом направления интегрирования, т.е. положительным, если XK > XN, отрицательным, если XK < XN , или без такого учета в виде абсолютной величины;
Y - искомое решение задачи Коши, вычисленное подпрограммой при значении аргумента XK; если интегрирование нужно выполнять с контролем точности, то в качестве такого решения принимается значение второго, оценивающего, приближенного решения, поскольку оно имеет более высокий порядок точности по сравнению с первым приближенным решением. Для системы уравнений (когда M ≠ 1) задается массивом длины M. В случае совпадения значений параметров XN и XK значение Y полагается равным начальному значению YN (тип: с двойной точностью);
MEXACT - количество компонент численного решения, проверяемых на точность: 1 ≤ MEXACT ≤ M. Если решение вычисляется без контроля точности, то значение MEXACT полагается равным нулю. При этом значения нижеследующих параметров IU, EPS, THRESH, NUMBES, MESTER, K2, IMAX2, NATTEM, HMIN, IERR в комплексе (подпрограмме) DE12D не используются. В этом случае конкретные значения соответствующих им фактических параметров при обращении к DE12D можно не задавать, однако их типы, количество и порядок записи должны соответствовать указанным формальным параметрам (тип: целый);
IU - целый указатель типа погрешности численного решения:
IU=1 - компоненты решения проверяются на точность по абсолютной погрешности;
IU=2 - компоненты решения проверяются на точность по относительной погрешности;
IU=3 - компоненты решения проверяются на точность по мере погрешности.
Контроль точности по мере погрешности заключается в следующем. Если некоторая компонента приближенного решения по абсолютной величине не меньше определенной наперед заданной положительной константы THRESH (называемой границей перехода), то контроль точности для этой компоненты ведется по относительной погрешности, иначе - по абсолютной. Таким образом, контроль точности по мере погрешности состоит в том, что на тех участках интервала интегрирования, где абсолютная величина компоненты решения меньше значения THRESH, контроль точности ведется для нее по абсолютной погрешности, а там, где абсолютная величина этой компоненты решения равна значению THRESH или превосходит значение THRESH, контроль точности для нее ведется по относительной погрешности;
EPS - допустимая погрешность, с которой требуется вычислить проверяемые на точность компоненты решения; тип погрешности специфицируется с помощью параметра IU (тип: с двойной точностью);
THRESH - граница перехода, используемая при оценке меры погрешности решения (тип: с двойной точностью);
NUMBES - массив, содержащий номера проверяемых на точность компонент решения. Для скалярного дифференциального уравнения, а также для системы уравнений в том случае, если все компоненты решения проверяются на точность, значение этого массива в подпрограмме не используется. Таким образом, массив NUMBES используется в подпрограмме только в том случае, когда число проверяемых на точность компонент решения меньше числа уравнений; NUMBES представляет массив длины MEXACT (тип: целый);
MESTER - целый указатель способа оценки абсолютной погрешности компоненты приближенного решения:
MESTER=1 - для оценки абсолютной погрешности используется первая формула (асимптотическая);
MESTER=2 - для оценки абсолютной погрешности используется вторая формула (завышенная оценка);
(См. "Математическое описание");
K2 - порядок частичной суммы смещенного ряда Чебышёва производной решения, с помощью которой вычисляется частичная сумма порядка (K2+1) для оценивающего решения более высокого порядка точности на каждом элементарном сегменте разбиения области интегрирования. Этот параметр относится только ко второму приближенному решению более высокого порядка точности O(HK2 + 2), K2 > K (т.е. к оценивающему решению) и его производной (см. "Математическое описание" и "Замечания по пользованию"; тип: целый);
IMAX2 - целая переменная, задающая количество итераций, которое предполагается выполнить в дополнительном итерационном процессе для вычисления второго, оценивающего, решения более высокого порядка точности. Если правая часть дифференциального уравнения не зависит от переменной Y, т.е. дифференциальное уравнение имеет вид Y' = F(X), то число итераций при вычислении второго приближенного решения можно положить равным 1. В этом случае параметр IMAX2=1 (см. "Математическое описание" и "Замечания по использованию");
NATTEM - целая переменная, значение которой ограничивает число последовательных сокращенипй длины элементарного сегмента, совершаемых в одной точке, если приближенное решение на этом элементарном сегменте не достигает требуемой точности;
HMIN - минимальное значение длины элементарного сегмента, которое разрешается использовать при разбиении интервала интегрирования на элементарные (частичные) сегменты (тип: с двойной точностью);
RAB - одномерный рабочий массив. Длина массива равна 2 * K * K + 5 * K + 5 *K * M +  K2 * K2 +5 * K2 + 4 * K2 * M +  18 * М + 1, если интегрирование выполняется с контролем точности, и 2 * K * K + 7 * K + 5 * K * M + 8 * M + 1, если интегрирование выполняется без контроля точности (тип: с двойной точностью);
IERR - целая переменная, служащая для сообщения об ошибках, обнаруженных в процессе работы подпрограммы; при этом:
IERR=65 -
IEER=66   
когда какая-нибудь компонента решения не может быть вычислена с требуемой точностью EPS; при этом IERR=65 указывает, что требуемая точность не может быть достигнута при минимальной длине частичного сегмента, равной HMIN, а IERR=66 показывает, что требуемая точность не может быть достигнута, т.к. исчерпано заданное число сокращений NATTEM длины элементарного сегмента в одной и той же точке интервала интегрирования.

Версии: нет

Вызываемые подпрограммы: DE45D, DE76D

Кроме того, используются рабочие подпрограммы DE70DK, DE70DH, DE70D0, DE70DI, DE70DF, DE70DQ, DE71DE, DE70DP, DE71DT, DE71DP, DE71DI, DE71DF, DE71DS, DE70DA, DE70DC, DE75D0, DE75D1, DE75DE, DE75DK, DE75DN.

UTDE75 - подпрограмма выдачи диагностических сообщений.

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

 

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

Разбиение промежутка интегрирования на элементарные сегменты выполняется для того, чтобы на каждом таком сегменте ряды Чебышёва для решения и его производной были быстросходящимися рядами; другими словами, чтобы убывание коэффициентов этих рядов Чебышёва на элементарном сегменте происходило достаточно быстро, вследствие чего можно было бы считать частичные суммы этих рядов близкими к многочленам наилучшего равномерного приближения на элементарном сегменте для решения и его производной.

Если при вычислении первого приближенного решения начальное приближение для коэффициентов Чебышёва правой части системы (т.е. функции Φ(α)) определяется первым способом (т.е. при INIAPR = 1), то для получения максимального порядка точности первого приближенного решения в конце элементарного сегмента необходимо выполнить в итерационном процессе не менее K итераций; тогда IMAX ≥ K. Если начальное приближение коэффициентов Чебышёва функции Φ(α) определяется вторым способом (т.е. при INIAPR = 2), то для получения максимального порядка точности первого приближенного решения необходимо выполнить в итерационном процессе не менее K + 1 итераций; в этом случае IMAX≥K + 1. Однако в некоторых случаях при втором способе определения начального приближения итерационный процесс может сойтись за значительно меньшее число итераций.

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

Для получения максимального порядка точности второго приближенного (оценивающего) решения необходимо выполнить в дополнительном итерационном процессе не менее (K2 - K) итераций. Указанное в данном разделе число итераций IMAX и IMAX2 носит асимптотический характер (когда все наши оценки справедливы при H --> 0). На практике же количество итераций в каждом из двух итерационных процессов зависит от длины сегмента, от заданной точности, от используемых порядков частичных сумм и от конкретной системы дифференциальных уравнений. Поэтому число итераций в обоих итерационных процессах, т.е. значения параметров IMAX и IMAX2, могут быть как меньше, так и больше рекомендуемых здесь значений.

При работе подпрограммы значения параметров M, XN, YN, XK, K, INIAPR, IMAX, IU, EPS, THRESH, MEXACT, NUMBES, MESTER, HMIN, K2, IMAX2, NATTEM сохраняются. Если после работы подпрограммы нет необходимости иметь начальное значение решения, то параметры YN и Y при обращении к ней можно совместить.

При работе комплекса (подпрограммы) DE12D используется общий блок

COMMON/STAT76/NACCEP, NREJEC

для сбора полезной статистической информации, если интегрирование выполняется с контролем точности. Целая переменная NACCEP после выхода из подпрограммы DE12D содержит число элементарных сегментов, на которые автоматически разбивался весь промежуток интегрирования [XN, XK], а целая переменная NREJEC содержит число отклоненных элементарных сегментов, а именно тех сегментов, на которых вычисленная оценка погрешности превышает заданное значение EPS, т.е. число таких сегментов, на которых не достигается заданная точность и длины которых подвергались сокращению. Когда приближенное решение задачи Коши не может быть вычислено в конце интервала интегрирования XK и работа подпрограммы DE12D прерывается в некоторой точке интервала интегрирования при значении параметра IERR=65 или IERR=66, то значение переменной NACCEP содержит число элементарных сегментов, считая от начала промежутка интегрирования XN до этой точки прерывания, на которых приближенное решение вычислено с требуемой точностью. Значение переменной NREJEC содержит в этом случае число отклоненных сегментов, считая от начала промежутка интегрирования и включая число отклоненных сегментов с началом в этой точке прерывания.

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

Вычисления во всех примерах на Фортране проводились с 15-16 значащими цифрами.

 1)         y1'  =   x/y2 ,    y1(0)  =  3  ,
            y2'  =  -x/y1 ,     y(0)  =  1/6,          0 ≤ x ≤ 3√2 .
 

Точное решение системы:

                 y1(x)  =  3*ex*x  ,     y2(x)  =  (1/6)*e-x*x .

Решение вычисляется в точке XK = 3√2 без контроля точности. Приводятся подпрограмма вычисления значений правой части и вызывающая программа, а также результаты счета, включая абсолютную DELY и относительную RELERR погрешности приближенного решения,точные значения решения YT, значения параметров H, K, IMAX, INIAPR при двух способах определения начального приближения коэффициентов Чебышёва производной решения.

      DIMENSION YN(2),Y(2),
     1          YT(2),DELY(2),RELERR(2)
      DOUBLE PRECISION YN,Y,RAB,YT,DELY,XN,H,XK,H0,RELERR
C
      PARAMETER (K=25, M=2)
      DIMENSION RAB(2*K*K+7*K+5*K*M+8*M+1)
C
      EXTERNAL F
      XN=0.
      YN(1)=3.D0
      YN(2)=1.D0/6.D0
      XK=3.D0*SQRT(2.D0)
      YT(1)=3.D0*EXP(XK*XK)
      YT(2)=1.D0/6.D0*EXP(-XK*XK)
      H0=0.1D0
      IMAX=31
      DO 42 INIAPR=1,2
      H=H0
C
      CALL DE12D(F,M,XN,YN,XK,K,INIAPR,IMAX,H,Y,0,1,1.D0,1.D0,I,1,1,1,
     1           1,H,RAB,I)
C
      DELY(1)=YT(1)-Y(1)
      DELY(2)=YT(2)-Y(2)
      RELERR(1)=DELY(1)/Y(1)
      RELERR(2)=DELY(2)/Y(2)
      PRINT 35, H0,K,INIAPR,IMAX
      PRINT 60, Y,YT,DELY,RELERR
      PRINT 70
   42 CONTINUE
      STOP
   35 FORMAT(1X,'H0=',D25.16,3X,'K=',I2,3X,'INIAPR=',I1,3X,'IMAX=',I3)
   60 FORMAT(1X,'Y= ',2D25.16/1X,'YT=',2D25.16/1X,'DELTA Y  =',2D25.16/
     1       1X,'RELERR   =',2D25.16)
   70 FORMAT(/1X,64(1H-))
      END      
     
      SUBROUTINE F(X,Y,Z,M)
      DOUBLE PRECISION X,Y,Z
      DIMENSION Y(2),Z(2)
      Z(1)= X/Y(2)
      Z(2)=-X/Y(1)
      RETURN
      END

Результаты:

H0=    .1000000000000000D+00   K=25   INIAPR=1   IMAX= 31
Y=     .1969799074119902D+09    .2538329957452123D-08
YT=    .1969799074119908D+09    .2538329957452114D-08
DELTA Y  =    .5960464477539062D-06   -.8685396431806791D-23
RELERR   =    .3025925108733322D-14   -.3421697169947463D-14

----------------------------------------------------------------
H0=    .1000000000000000D+00   K=25   INIAPR=2   IMAX= 31
Y=     .1969799074119910D+09    .2538329957452111D-08
YT=    .1969799074119908D+09    .2538329957452114D-08
DELTA Y  =   -.1788139343261719D-06    .2895132143935597D-23
RELERR   =   -.9077775326199930D-15    .1140565723315826D-14

----------------------------------------------------------------
 2)         y'  =  qy,    y(0)  =  eq,    q = 4,   0 ≤ x ≤ 7.

Точное решение задачи Коши y(x) = eq(1+x). Решение вычисляется в точке XK = 7 с контролем точности. Приводятся вызывающая программа, подпрограмма вычисления значений правой части, а также результаты счета, включая точное значение решения YT, относительную погрешность приближенного решения (YT - Y) / Y, значения переменных NACCEP и NREJEC из общего блока и число обращений к правой части N.

      DOUBLE PRECISION XN,YN,XK,EPS,THRESH,H,HMIN,Y,RAB,Q,YT
C
      PARAMETER (K=18,K2=25)
      DIMENSION RAB(2*K*K+5*K+5*K+K2*K2+5*K2+4*K2+18+1)
C
      EXTERNAL F
C
      COMMON/STAT76/NACCEP,NREJEC
C
      COMMON/BLOCK/N,Q
C
      M=1
      Q=4.0D0
      XN=0.
      YN=EXP(Q)
      XK=7.D0
      YT =EXP(Q*(XK+1.D0))
      INIAPR=1
      IMAX=28
      IU=2
      EPS=0.5D-11
      THRESH=1.D0
      MEXACT=1
      MESTER=1
      H=1.D0
      HMIN=1.D-3
      IMAX2=3
      NATTEM=3
      N=0  
C
      CALL DE12D(F,M,XN,YN,XK,K,INIAPR,IMAX,H,Y,MEXACT,
     1           IU,EPS,THRESH,NUMBES,MESTER,K2,IMAX2,NATTEM,
     2           HMIN,RAB,IERR)
C
      PRINT 50,IERR
      PRINT 49,N
      PRINT 52,NACCEP,NREJEC
      PRINT 51,Y,YT,(YT-Y)/Y
      STOP
   49 FORMAT(1X,'N=',I12)
   50 FORMAT(1X,'IERR=',I2)
   51 FORMAT(1X,'Y =',D25.16/1X,'YT=',D25.16/1X,'(YT-Y)/Y=',D25.16)
   52 FORMAT(1X, 'NACCEP=',I4,5X,'NREJEC=',I4)
      END
C
      SUBROUTINE F(X,Y,Z,M)
      DOUBLE PRECISION X,Y,Z,Q
      COMMON/BLOCK/N,Q
      Z=Q*Y
      N=N+1
      RETURN
      END

Результаты:

IERR= 0
N=        3330
NACCEP=   5     NREJEC=   0
Y =    .7896296018267691D+14
YT=    .7896296018268069D+14
(YT-Y)/Y=    .4788637598251465D-13