Текст подпрограммы и версий (Паскаль) de78e_p.zip |
Тексты тестовых примеров (Паскаль) tde78e1_p.zip , tde78e2_p.zip , tde78e3_p.zip , tde78e4_p.zip |
Выполнение одного шага приближенного интегрирования канонической системы обыкновенных дифференциальных уравнений второго порядка методом рядов Чебышёва.
Решается задача Коши для канонической системы M обыкновенных дифференциальных уравнений второго порядка с правой частью, зависящей от производной,
(1) Y '' = F (X, Y, Y'), Y = ( y1, ... , yM), Y' = ( y'1, ... , y'M), F = ( f1 (X, y1, ... , yM, y'1, ... , y'M), ... , fM (X, y1, ... , yM, y'1, ... , y'M)), XN ≤ X ≤ XK, с начальными условиями, заданными в точке XN : (2) Y(XN) = YN , YN = (y10, ... , yM0), Y'(XN)=DYN, DYN=(y'10, ... , y'M0),
при условии, что правая часть системы (1) имеет непрерывные ограниченные частные производные по переменным X, Y, Y'. Предполагается, что на отрезке [XN, XK] задача (1),(2) имеет единственное решение. Тогда решение задачи Коши Y(XN + αΔ) и его производные Y'(XN + αΔ), Y''(XN + αΔ) = F(XN + αΔ, Y(XN + αΔ),Y'(XN + αΔ)) = Φ(α) разлагаются на промежутке интегрирования [XN, XK] в равномерно сходящиеся ряды по смещенным многочленам Чебышёва первого рода
∞ 1 (3) Y(XN + αΔ) = ∑ ' ai*[Y] Ti* (α), 0 ≤ α ≤ 1, ai*[Y] = 2/π ∫ Y(XN + αΔ) Ti* (α) / √ (α (1 - α)) dα , i=0 0 ∞ 1 (4) Y'(XN + αΔ) = ∑ ' ai*[Y'] Ti* (α), 0 ≤ α ≤ 1, ai*[Y'] = 2/π ∫ Y'(XN + αΔ) Ti* (α) / √ (α (1 - α)) dα , i=0 0 ∞ 1 (5) Φ(α) = ∑ ' ai*[Φ] Ti* (α), 0 ≤ α ≤ 1, ai*[Φ] = 2/π ∫ Φ(α) Ti* (α) / √ (α (1 - α)) dα . i=0 0
Здесь: штрих у знака суммы означает, что слагаемое с индексом 0 берется с дополнительным множителем 1/2; Ti* (α) - смещенный многочлен Чебышёва первого рода на [0, 1]: Ti* (α) = Ti (2α-1) ; Ti (t) - многочлен Чебышёва первого рода i-го порядка на [-1, 1]; Δ = XK - XN. Если ряд Чебышёва (3) (и ряды (4), (5)) является быстросходящимся, то его сумма на [XN, XK] (и суммы рядов (4), (5)) хорошо приближается частичной суммой некоторого порядка. Эта частичная сумма принимается в качестве приближенного аналитического решения задачи (1), (2) на промежутке [XN, XK]. В противном случае, т.е. при медленной сходимости ряда (3) на интервале [XN, XK], получение аналитического решения в виде одной частичной суммы на всем отрезке интегрирования [XN, XK] может быть затруднено. Поэтому целесообразно использовать разбиение промежутка интегрирования [XN, XK] на такие элементарные сегменты некоторой длины H: [xs, xs+H], x0 = XN, s = 0, 1, ... , на каждом из которых ряды Чебышёва для решения Y(X) и его производных Y'(X), Y''(X) будут сходиться значительно быстрее. На каждом подобном сегменте решение исходной задачи Коши приближенно представляется в виде (K + 2) - й частичной суммы смещенного ряда Чебышёва
K+2 1 (6) Y (xs + αH) ≈ ∑ ' ai*[Y] Ti*(α), 0 ≤ α ≤ 1, ai*[Y] = 2/π ∫ Y(xs + αH) Ti* (α) / √ (α (1 - α)) dα , i=0 0 а его производные - в виде частичных сумм (K + 1)-го и К-го порядков K+1 1 (7) Y' (xs + αH) ≈ ∑ ' ai*[Y'] Ti*(α), 0 ≤ α ≤ 1, ai*[Y ' ] = 2/π ∫ Y ' (xs + αH) Ti* (α) / √ (α (1 - α)) dα , i=0 0 K 1 (8) Y'' (xs + αH) ≈ ∑ ' ai*[Y''] Ti*(α), 0 ≤ α ≤ 1, ai*[Y''] = 2/π ∫ Y''(xs + αH) Ti* (α) / √ (α (1 - α)) dα . i=0 0
В этом случае аналитическое решение задачи (1), (2) состоит из совокупности частичных сумм рядов Чебышёва, построенных на этих элементарных сегментах. Порядок этих частичных сумм и элементарные сегменты задаются пользователем при обращении к подпрограмме.
При обращении к подпрограмме DE78E задаются начало элементарного сегмента и его длина. По заданным значениям решения и первой производной в начале X = xs элементарного сегмента [xs, xs + H] подпрограмма DE78E вычисляет значения решения и первой производной в конце элементарного сегмента, т.е. в узле X + H = xs + H. Одновременно вычисляются коэффициенты Чебышёва ai*[Y] (i = 0, 1, ... , K + 2) на элементарном сегменте [X, X + H] = [xs, xs + H] для решения задачи Коши Y(X + αH), 0 ≤ α ≤ 1, коэффициенты Чебышёва ai*[Y'] (i = 0, 1, ... , K + 1) его первой производной Y'(X + αH) и коэффициерты Чебышёва ai*[Y''] (i = 0, 1, ... , K) второй производной Y''(X + αH) = Φ(α). Значение H может изменяться от сегмента к сегменту, в общем случае H = Hs.
При разбиении промежутка интегрирования на элементарные сегменты решение задачи сводится к определению нескольких наборов коэффициентов ai*[Y], i = 0, 1, ... , K + 2. Коэффициенты ai*[Y] ряда Чебышёва для решения и коэффициенты ряда Чебышёва для Y'(xs + αH) на сегменте [xs, xs + H] выражаются через коэффициенты ai*[Φ] ряда Чебышёва второй производной Φ(α) = F(xs + αH, Y(xs + αH), Y'(xs + αH)), 0 ≤ α ≤ 1, на [xs, xs + H], которые, в свою очередь, вычисляются приближенно итерационным способом, исходя из некоторого начального приближения. Вычисления выполняются с помощью квадратурной формулы Маркова на [xs, xs + H] с K + 1 узлом. При этом один из узлов квадратурной формулы совпадает с xs, а остальные K узлов лежат внутри интервала (xs, xs + H). Количество итераций, которое предписывается выполнить в этом итерационном процессе, задается при обращении к подпрограмме и может меняться от сегмента к сегменту. Если при выбранном H ряды Чебышёва для Y(xs + αH), 0 ≤ α ≤ 1 , и его производных на элементарном сегменте [xs, xs + H] быстро сходятся, то для того, чтобы приближенное решение в конце одного такого сегмента имело максимальный порядок точности относительно H, необходимо выполнить не менее K итераций; при этом погрешность приближенного решения в конце элементарного сегмента является величиной порядка O(HK + 3) при H --> 0, а погрешность приближенного значения производной Y' - величиной порядка O(HK + 2) при H --> 0. Если H подобрано достаточно малым (или, вернее сказать, выбрано довольно удачным), то хорошая точность приближенного решения может быть получена и при меньшем числе итераций. Вообще, число итераций зависит от K и H. С увеличением H или К число итераций может также возрастать.
Начальное приближение коэффициентов ai*[Φ] ряда Чебышёва для второй производной на сегменте [xs, xs + H] может вычисляться двумя способами. В первом способе начальное приближение определяется только с использованием значения решения Y(X) и его первой производной Y'(X) в узле xs. При этом погрешность начального приближения для всех коэффициентов a0*[Φ], a1*[Φ], ..., aK*[Φ] является величиной O(H2) при H --> 0. Во втором способе начальное приближение определяется через коэффициенты ряда Чебышёва производной Φ(α) на предыдущем элементарном сегменте [xs - 1, xs] = [X - H', X], где H' - длина предыдущего элементарного сегмента. В этом случае погрешности начального приближения для коэффициентов a0*[Φ], a1*[Φ], ... , aK*[Φ] имеют, соответственно, порядки O(H), O(H2), ..., O(HK + 1). Заметим, что длина H текущего элементарного сегмента [X, X + H] может быть больше или меньше длины H' предыдущего элементарного сегмента [X - H', X] или равна ей. Второй способ определения начального приближения в некоторых случаях может привести к более быстрой сходимости итерационного процесса и, тем самым, к меньшему числу выполняемых итераций. Второй способ может быть применен только начиная со второго элементарного сегмента [x0 + H0, x1 + H], H0 - длина начального (первого) элементарного сегмента, x1 = x0 + H0. На начальном элементарном сегменте [x0, x0 + H] всегда применяется исключительно первый способ. Способ выбора начального приближения задается пользователем при обращении к подпрограмме.
В дальнейшем при описании параметров подпрограммы коэффициенты ряда Чебышёва будем называть коэффициентами Чебышёва.
Залеткин С.Ф. Численное интегрирование обыкновенных дифференциальных уравнений с использованием ортогональных разложений // Математическое моделирование. 2010. 22. № 1. 69 - 85.
Арушанян О.Б., Волченскова Н.И., Залеткин С.Ф. О применении ортогональных разложений для приближенного интегрирования обыкновенных дифференциальных уравнений // Вестник Московского университета. Серия 1. Математика. Механика. 2010. № 4. 40 - 43.
Арушанян О.Б., Волченскова Н.И., Залеткин С.Ф. Вычисление коэффициентов разложения решения задачи Коши в ряд по многочленам Чебышёва. Вестник Московского университета. Серия 1. Математика. Механика. 2012. № 5, 24 - 30.
Арушанян О.Б., Залеткин С.Ф. Обоснование одного подхода к применению ортогональных разложений для приближенного интегрирования канонических систем обыкновенных дифференциальных уравнений второго порядка // Вестник Московского университета. Серия 1. Математика. Механика. 2018. № 3. 29 - 33.
Арушанян О.Б., Залеткин С.Ф. К теории вычисления ортогонального разложения решения задачи Коши для обыкновенных дифференциальных уравнений второго порядка // Вычислительные методы и программирование. 2018. 19. 178 - 184.
procedure DE78E(F :Proc_F80E; var M :Integer; var K :Integer; INIAPR :Integer; IMAX :Integer; var JSTART :Integer; var YX :Array of Extended; var DYX :Array of Extended; var X :Extended; var XJ0 :Array of Extended; var AU :Array of Extended; var ADU :Array of Extended; var AJK :Array of Extended; var H :Extended; var HD4I :Array of Extended; var RABC :Array of Extended; var RABC1 :Array of Extended; var RABC2 :Array of Extended; var RABC3 :Array of Extended; var ALP :Array of Extended; var ALPN :Array of Extended; var CMAR :Array of Extended; var P :Array of Extended; var S :Array of Extended; var XP :Extended; var YP :Array of Extended; var DYP :Array of Extended; var AJKP :Array of Extended; var U :Array of Extended; var DU :Array of Extended; var ZFI :Array of Extended);
Параметры
F - | имя подпрограммы вычисления значений правой части дифференциального уравнения. Первый оператор подпрограммы должен соответствовать процедурному типу: |
Procedure (X :Extended; var Y :Array of Extended; var DY :Array of Extended; var Z :Array of Extended; M :Integer); Здесь: X, Y, DY - значения независимой, зависимой переменных и производной решения соответственно. Вычисленное значение правой части должно быть помещено в Z. B случае системы уравнений, т.е. когда M ≠ 1 , параметры Y, DY, Z представляют одномерные массивы длины M (тип параметров X, Y, DY и Z: с расширенной (Extended) точностью); |
M - | количество уравнений в системе (тип: целый); |
K - | порядок частичной суммы смещенного ряда Чебышёва, с помощью которой аппроксимируется вторая производная решения задачи Коши на элементарном сегменте [X, X + H] разбиения интервала интегрирования; при этом само решение задачи Коши приближается на элементарном сегменте [X, X + H] частичной суммой (K + 2) - го порядка, а его первая производная - частичной суммой (K + 1) - го порядка; K≥2. Если обращение к подпрограмме DE78E осуществляется со значением параметра JSTART = 1 (см. ниже), то значение параметра K должно совпадать с его значением при предыдущем обращении к подпрограмме. Если же при очередном обращении к подпрограмме DE78E значение параметра K необходимо изменить, то это обращение должно выполняться при нулевом значении параметра JSTART (JSTART = 0) (см. "Математическое описание", "Замечания по использованию" и "Примеры использования"; тип: целый); |
INIAPR - |
целый указатель способа выбора начального
приближения коэффициентов Чебышёва для второй производной
решения на элементарном сегменте [X, X + H]: |
INIAPR=1 - |
для первого способа, когда начальное
приближение определяется только с
использованием значения решения и его первой производной в
начале X элементарного сегмента; |
INIAPR=2 - | для второго способа, когда начальное приближение коэффициентов Чебышёва на текущем элементарном сегменте [X, X + H] (начиная со второго) определяется через коэффициенты Чебышёва, вычисленные на предыдущем элементарном сегменте, т.е. путем экстраполяции коэффициентов с предыдущего сегмента на следующий (см. "Математическое описание"). |
Значение этого параметра может меняться от сегмента к сегменту. | |
IMAX - | целая переменная, задающая количество итераций, которое предполагается выполнить в итерационном процессе вычисления коэффициентов Чебышёва для второй производной решения задачи Коши на элементарном сегменте [X, X + H], исходя из некоторого начального приближения, способ определения которого задается параметром INIAPR; IMAX ≥ 1. Для получения максимального порядка точности приближенного решения необходимо выполнить не менее K итераций. Значение IMAX может изменяться от сегмента к сегменту (см. "Математическое описание", "Замечания по использованию" и "Примеры использования"); |
JSTART - |
целый указатель режима использования подпрограммы, имеющий следующие значения: |
0 - |
первое обращение к подпрограмме должно быть исполнено с нулевым значением JSTART;
выполнить первый (начальный) шаг интегрирования для значений независимой переменной X, зависимой переменной YX,
производной DYX и шага интегрирования (длины элементарного сегмента) H.
При данном значении параметра JSTART будет применен исключительно первый способ определения
начального приближения для коэффициентов Чебышёва второй производной решения независимо от значения параметра INIAPR.
Нулевое значение параметра JSTART также может означать, что необходимо выполнить очередной шаг
интегрирования с измененным значением параметра K; |
1 - | выполнить следующий (очередной) шаг интегрирования системы дифференциальных уравнений для значений независимой перемннной X, зависимой переменной YX, производной DYX и шага интегрирования (длины элементарного сегмента) H. При данном значении параметра JSTART способ определения начального приближения для коэффициентов Чебышёва второй производной решения определяется параметром INIAPR. При обращении к подпрограмме DE78E со значением JSTART = 1 значение параметра K (см. выше) должно совпадать с его значением при предыдущем обращении к подпрограмме. |
На выходе из подпрограммы DE78E параметр JSTART всегда принимает значение, равное 1 (см. "Примеры использования"); | |
X, YX, DYX - | начальное значение аргумента, решения и первой производной (начало элементарного сегмента X, решение YX и производная DYX в нем); в результате работы подпрограммы в X получается новое значение аргумента, равное X + H (конец элементарного сегмента), а в YX и DYX - соответствующие значения решения и производной. В случае системы уравнений, т.е. когда M ≠ 1, YX и DYX задаются одномерными массивами длины M (тип параметров X, YX, DYX: с расширенной (Extended) точностью); |
XJ0 - | одномерный рабочий массив длины K (тип: с расширенной (Extended) точностью); |
AU - | двумерный массив размера M * (K + 3). На выходе из подпрограммы содержит коэффициенты Чебышёва ai*[Y] для решения Y(X + αH), 0 ≤ α ≤ 1, на элементарном сегменте [X, X + H]. При этом переменная с индексом AU(N, I + 1) представляет I-й коэффициент Чебышёва N-й компоненты решения yN(x) (I = 0, 1, ... , K + 2) (тип: с расширенной (Extended) точностью); |
ADU - | двумерный массив размера M * (K + 2). На выходе из подпрограммы содержит коэффициенты Чебышёва ai*[Y'] для первой производной решения Y'(X + αH), 0 ≤ α ≤ 1, на элементарном сегменте [X, X + H]. При этом переменная с индексом ADU (N, I + 1) представляей I-й коэффициент Чебышёва N-й компоненты первой производной решения y'N(x) (I = 0, 1, ... , K + 1) (тип: с расширенной (Extended) точностью); |
AJK - | двумерный массив размера M * (K + 1). На выходе из подпрограммы содержит коэффициенты Чебышёва ai*[Y''] второй производной решения Y''(X + αH), 0 ≤ α ≤ 1, на элементарном сегменте [X, X + H]. При этом переменная с индексом AJK(N, I + 1) представляет I-й коэффициент Чебышёва N-й компоненты второй производной решения y''N(x) (I = 0, 1, ... , K). Если при JSTART = 1 (т.е. при повторных обращениях к подпрограмме) параметр INIAPR = 2, то содержащиеся в массиве AJK при входе в подпрограмму коэффициенты Чебышёва второй производной решения, вычисленные на предыдущем элементарном сегменте [X - H', X] во время предыдущего обращения к подпрограмме DE78E, используются в подпрограмме при вычислении коэффициентов Чебышёва второй производной решения на текущем элементарном сегменте [X, X + H]. Заметим, что длина H текущего элементарного сегмента может быть больше или меньше длины H' предыдущего сегмента [X - H', X] или равна ей. Независимо от значения параметра INIAPR при повторных обращениях к подпрограмме значения массива AJK при входе в подпрограмму обязательно запоминаются в массиве AJKP и могут быть снова доступны на выходе из подпрограммы (тип: с расширенной (Extended) точностью); |
H - | длина текущего элементарного сегмента [X, X + H]. Значение H может быть переменной величиной и изменяться от сегмента к сегменту (тип: с расширенной (Extended) точностью); |
HD4I - | одномерный рабочий массив длины K + 1 (тип: с расширенной (Extended) точностью); |
RABC, RABC1, - ALP, ALPN | одномерные рабочие массивы длины K (тип: с расширенной (Extended) точностью); |
RABC2, RABC3 - | одномерные рабочие массивы длины K + 2 (тип: с расширенной (Extended) точностью); |
CMAR - | двумерный рабочий массив размера K * K (тип: с расширенной (Extended) точностью); |
P - | одномерный рабочий массив размера (K + 2) * (K - 1) / 2 (тип: с расширенной (Extended) точностью); |
S - | одномерный рабочий массив размера (K + 3) * K / 2 (тип: с расширенной (Extended) точностью); |
XP, YP, DYP - | переменная XP и одномерные массивы YP, DYP длины M. На выходе из подпрограммы содержат начальные значения аргумента, решения и производной, т.е. те значения, которые имели параметры X, YX, DYX на входе в подпрограмму. Таким образом, на выходе из подпрограммы DE78E границы элементарного сегмента, к которому относятся вычисленные подпрограммой коэффициенты Чебышёва решения и коэффициенты Чебышёва его производных и содержащиеся в массивах AU, ADU и AJK, показываются параметрами XP и X, а именно: параметр XP содержит начало сегмента, а параметр X содержит конец этого сегмента (тип: с расширенной (Extended) точностью); |
AJKP - | двумерный массив размера M * (K + 1). Если обращение к подпрограмме было выполнено со значением JSTART = 1 (т.е. при повторных обращениях к подпрограмме), то на выходе из подпрограммы содержит коэффициенты Чебышёва второй производной решения, относящиеся к предыдущему элементарному сегменту [X - H', X]; тем самым значение этого параметра определено только при повторных обращениях к подпрограмме (тип: с расширенной (Extended) точностью); |
U, DU - | двумерные рабочие массивы размера M * K (тип: с расширенной (Extended) точностью); |
ZFI - | двумерный рабочий массив размера M * (K + 3) (тип: с расширенной (Extended) точностью). |
Версии: нет
Вызываемые подпрограммы: нет
DE78E использует рабочие подпрограммы DE70EK, DE70EH, DE80EK, DE80EH, DE80E0, DE80EI, DE70EF, DE70EQ, DE71EE, DE70EP, DE71ET, DE71EP, DE71EI, DE71EF, DE71ES, DE70EA, DE70EC. |
Замечания по использованию
Разбиение промежутка интегрирования на элементарные сегменты (шаги) выполняется для того, чтобы на каждом таком сегменте ряды Чебышёва для решения и его первой и второй производных были быстросходящимися рядами. Другими словами, длина элементарных сегментов, задаваемая параметром H, подбирается таким образом, чтобы убывание коэффициентов этих рядов Чебышёва на элементарном сегменте [X, X + H] происходило достаточно быстро, вследствие чего можно было бы считать частичные суммы этих рядов близкими к многочленам наилучшего равномерного приближения на элементарном сегменте [X, X + H] для решения и его производных. Порядок этих частичных сумм задается параметром K. Если начальное приближение для коэффициентов Чебышёва функции Φ(α) определяется первым способом (т.е. при INIAPR = 1), то для получения максимального порядка точности приближенного решения в конце элементарного сегмента [X, X + H] необходимо выполнить в итерационном процессе не менее K итераций; тогда IMAX≥K. Если начальное приближение коэффициентов Чебышёва функции Φ(α) определяется вторым способом (т.е. при INIAPR = 2), то для получения максимального порядка точности приближенного решения необходимо выполнить в итерационном процессе не менее K + 1 итераций; в этом случае IMAX ≥ K + 1. Однако в некоторых случаях при втором способе определения начального приближения итерационный процесс может сойтись за значительно меньшее число итераций. Если длина H элементарного сегмента [X, X + H] подобрана достаточно малой (или, вернее сказать, выбрана довольно удачной), то хорошая точность приближенного решения может быть получена и с существенно меньшим числом итераций при любом способе выбора начального приближения. Вообще, число итераций зависит от K и H. С увеличением H или K число итераций может также возрастать. Если правая часть дифференциального уравнения не зависит от переменных Y и Y', т.е. дифференциальное уравнение имеет вид Y''= F(X), то число итераций можно положить равным 1 при любых H и K, удовлетворяющих описанным выше условиям. В этом случае параметр IMAX = 1. Как следует из вышеописанного, управлять точностью приближенного решения задачи Коши можно с помощью четырех параметров H, K, IMAX, INIAPR, подбирая для любой конкретной задачи и для каждого элементарного сегмента наиболее подходящий набор их значений. При работе подпрограммы значения параметров M, K, INIAPR, IMAX, H сохраняются. При многократном использовании подпрограммы DE78E для вычисления коэффициентов Чебышёва решения задачи Коши (1), (2) и его производных на последовательности элементарных сегментов, образующей промежуток интегрирования [XN, XK] системы дифференциальных уравнений, значения параметров M, K, YX, DYX, X, AU, ADU, AJK, HD4I, RABC, RABC1, RABC2, RABC3, ALP, ALPN, CMAR, P, S не должны изменяться в вызывающей программе между последовательными обращениями к подпрограмме. Так как при интегрировании системы уравнений с помощью подпрограммы DE78E используются глобальные записи (структуры данных) с именами _COM70D и _COM80D для хранения промежуточных значений, пользователь не должен портить элементы этих структур. Структуры определены в модуле Lstruct и являются объектами типа: type type COM70D = record COM80D = record elm1: Extended; // WC1 elm1: Integer; //JLAS elm2: Extended; // WC2 elm2: Integer; //JLAS1 elm3: Extended; // WC3 elm3: Integer; //JLAS2 elm4: Integer; // LASN elm4: Integer; //JLAS3 elm5: Extended; // HD2 elm5: Extended; //H2D4 elm6: Extended; // HD4 elm6: Extended; //H2D8 elm7: Extended; // HOLD elm7: Extended; //H2D16 end; elm8: Extended; //H2D32 elm9: Extended; //H2D96 end; var var _COM70D : COM70D; _COM80D : COM80D; Eсли вызывающая (главная) программа содержит хотя бы одно обращение к подпрограмме DE78E со значением параметра JSTART = 1 (и, следовательно, число обращений к DE78E более одного), то вызывающая (главная) программа также должна использовать эти глобальные записи (структуры данных) . Если вызывающая программа содержит одно обращение к подпрограмме DE78E со значением параметра JSTART = 0 и при этом других обращений к DE78E нет (как в первом примере), или если вызывающая программа содержит несколько обращений к DE78E и при этом все обращения осуществляются с нулевым значением параметра JSTART (как в четвертом примере), то указанные глобальные записи (структуры данных) в вызывающей программе не используются (см. "Примеры использования"). |
Использование подпрограммы DE78E иллюстрируется на четырех примерах. Во всех примерах решаются задачи Коши для одной и той же системы обыкновенных дифференциальных уравнений второго порядка.
(9) y''1 = -2qy'2 - ((1 -e3-y1 + y'2/(2q)) / (x+1))2 ,
y''2 = 2qy'1 - (y'2 - 2q (y1 - 3))2 , q = 1/2 , 0 ≤ x ≤ xf , xf = 1 .
Частное решение системы (9) имеет вид
y1(x) = 3 + cos q(2x - 1) , y2(x) = 2 + sin q(2x - 1) .
Функции y1(x), y2(x) разлагаются на отрезке [0, 1] в смещенные ряды Чебышёва, коэффициенты которых выражаются через цилиндрические функции:
∞ (10) y1(x) = 3 + J0 (q) + 2 ∑ (-1)i J2i (q) T2i* (x) , i=1 ∞ (11) y2(x) = 2 + 2 ∑ (-1)i J2i+1 (q) T2i+1* (x) . i=0
Задачи Коши отличаются начальными условиями. Вычисления во всех четырех примерах на Паскале проводились с 19-20 значащими цифрами.
1) Начальное условие задачи Коши для системы (9)
XN = 0 , y1(0) = 3 + cos q , y2(0) = 2 - sin q , y'1(0) = 2q sin q , y'2(0) = 2q cos q .
Рассматривается один элементарный сегмент [0, 1]. Выполняется одно обращение к подпрограмме DE78E из начальной точки X = 0 с шагом H = 1. Вычисляются решение YX и производная DYX в конце данного сегмента, т.е. при X = 1, коэффициенты Чебышёва AU решения на данном сегменте, коэффициенты Чебышёва первой производной решения ADU на этом же сегменте и коэффициенты Чебышёва AJK его второй производной. Приводятся подпрограмма вычисления правой части системы (9), фрагмент вызывающей программы, результаты счета, включая точные значения решения YT и производной DYT в точке X = 1, абсолютную погрешность DELY приближенного решения YX и абсолютную погрешность DELDY приближенного значения производной DYX, вычисленных в точке X = 1. Кроме вышеперечисленного приводятся: значения параметров XP, X на выходе из подпрограммы, которые представляют элементарный сегмент [0, 1]; значения параметров H, K, INIAPR, IMAX, при которых были вычислены приближенное решение YX и коэффициенты Чебышёва. Даются также точные значения коэффициентов Чебышёва на данном сегменте для компонент решения y1(x), y2(x) в (10), (11) и абсолютные погрешности их приближенных значений, вычисленных подпрограммой DE78E.
Unit f88ex2_p; interface uses SysUtils, Math, { Delphi } Lstruct, Lfunc; procedure F88EX2(X :Extended; var Y :Array of Extended; var DY :Array of Extended; var Z :Array of Extended; M :Integer); implementation procedure F88EX2(X :Extended; var Y :Array of Extended; var DY :Array of Extended; var Z :Array of Extended; M :Integer); var Q :Real; begin Q := 0.5e0; Z[0] := -2.e0*Q*DY[1]-IntPower((1.e0-Exp(3.e0-Y[0]+0.5e0*DY[1]/Q))/(X+1.e0),2); Z[1] := 2.e0*Q*DY[0]-IntPower(DY[1]-2.e0*Q*(Y[0]-3.e0),2); end; end. . . . . . . . . . . . . . . . . . . . . . . . . . . function tde78e1: String; var M,IMAX,JSTART,INIAPR,_i,NX,KP3,KP2,KP1,L,J,_K :Integer; H,XK,Q,X,XP,X1 :Extended; DELY :Array [0..1] of Extended; DELDY :Array [0..1] of Extended; YT :Array [0..1] of Extended; DYT :Array [0..1] of Extended; YX :Array [0..1] of Extended; DYX :Array [0..1] of Extended; XJ0 :Array [0..10] of Extended; AU :Array [0..27] of Extended; ADU :Array [0..25] of Extended; AJK :Array [0..23] of Extended; ALP :Array [0..10] of Extended; ALPN :Array [0..10] of Extended; CMAR :Array [0..120] of Extended; P :Array [0..64] of Extended; S :Array [0..76] of Extended; YP :Array [0..1] of Extended; DYP :Array [0..1] of Extended; AJКР :Array [0..23] of Extended; U :Array [0..21] of Extended; DU :Array [0..21] of Extended; ZFI :Array [0..27] of Extended; HD4I :Array [0..11] of Extended; RАВС :Array [0..10] of Extended; RABC1 :Array [0..10] of Extended; RABC2 :Array [0..12] of Extended; RABC3 :Array [0..12] of Extended; const K :Integer = 11; label _20; begin _K := K; //переменная для параметра DE78E Result := ''; { результат функции } M := 2; Q := 0.5e0; X := 0.0; YX[0] := Cos(Q)+3.e0; YX[1] := -Sin(Q)+2.e0; DYX[0] := 2.e0*Q*Sin(Q); DYX[1] := 2.e0*Q*Cos(Q); H := 1.0e0; ХК := X+H; X1 := (2)*XK-1.e0; YT[0] := Cos(Q*X1)+3.e0; YT[1] := Sin(Q*X1)+2.e0; DYT[0] := -2.e0*Q*Sin(Q*X1); DYT[1] := 2.e0*Q*Cos(Q*X1); IМАХ := 16; JSTART := 0; INIAPR := 1; DE78E(F88EX2,M,_K,INIAPR,IMAX,JSTART,YX,DYX,X,XJ0,AU,ADU,AJK,H, HD4I,RABC,RABC1,RABC2,RABC3,ALP,ALPN,CMAR,P,S,XP,YP, DYP,AJKP,U,DU,ZFI); DELY[0] := YT[0]-YX[0]; DELY[1] := YT[1]-YX[1]; DELDY[0] := DYT[0]-DYX[0]; DELDY[1] := DYT[1]-DYX[1]; // Операторы вывода на печать: H, K, INIAPR, IMAX, YX, YT, DELY, DYX, DYT, DELDY, AU, ADU, AJK . . . . . . . . . . . . . . . . . . . . . . . . . . end; Результаты: ------------------------------------------------------------------------ XP= 0,00000000000000000E+000 X= 1,00000000000000000E+000 H= 1,0000000000000000 K=11 INIAPR=1 IMAX=16 JSTART=1 YX = 3,87758256189037272E+000 2,47942553860420300E+000 YT = 3,87758256189037272E+000 2,47942553860420300E+000 DELY = 4,33680868994201774E-019 -4,33680868994201774E-019 DYX= -4,79425538604203010E-001 8,77582561890372720E-001 DYT= -4,79425538604203000E-001 8,77582561890372716E-001 DELDY= 9,26992857475106291E-018 -3,68628738645071508E-018 COEFFICIENTS AU,ADU AND AJK ON 1 SEGMENT ------------------------------------------------------------------------------------- Number of Chebyshev coefficients for 1 component ---------------------------------------------------------------------------------------------- coefficient for Y for Y' for Y'' --------------------------------------------------------------------------------------------------------------------- 0 7,87693961448162581E+000 -1,62969139051727385E-018 -1,87693961448162585E+000 1 -1,43995601033231058E-020 -4,84536915349747775E-001 -3,57041327926632679E-017 2 -6,12080469173652827E-002 -1,57971644662927013E-018 6,12080469173652526E-002 3 -6,29274893731007294E-020 5,12745998917448695E-003 -2,30664012196291068E-017 4 3,21472952728575153E-004 -8,24586574152061380E-019 -3,21472952728590798E-004 5 -2,66744792306166748E-020 -1,61072544827154893E-005 -9,87301603319612475E-018 6 -6,72136925723786440E-007 -2,91096989539727883E-019 6,72136925718989410E-007 7 -7,68127794727337242E-021 2,40317346553852059E-008 -2,88668828424265556E-018 8 7,51644630955338995E-010 -7,60212070160734554E-020 -7,51644631796354479E-010 9 1,69977160255607756E-019 -2,08935351856419877E-011 -4,54009659728304982E-019 10 -5,22635331281252579E-013 -6,19519897621795268E-018 5,22634886757078476E-013 11 -2,57918323980800914E-019 1,18780656081154199E-014 2,47353949388989802E-016 12 2,47459700169071248E-016 5,15320727893728755E-018 13 9,91001399795632220E-020 ------------------------------------------------------------------------------------- Number of Chebyshev coefficients for 2 component ---------------------------------------------------------------------------------------------- coefficient for Y for Y' for Y'' --------------------------------------------------------------------------------------------------------------------- 0 4,00000000000000000E+000 1,87693961448162581E+000 1,76216734346784643E-017 1 4,84536915349747773E-001 9,29195143137967472E-019 -4,84536915349747756E-001 2 4,61280025858904393E-020 -6,12080469173652819E-002 1,39048928621265944E-017 3 -5,12745998917448812E-003 5,60171122450843958E-019 5,12745998917449884E-003 4 1,95735196894681237E-020 3,21472952728575581E-004 7,18283939271646688E-018 5 1,61072544827149609E-005 2,46994807419353979E-019 -1,61072544827104512E-005 6 7,57388627003220220E-021 -6,72136925723637221E-007 2,24294324432938730E-018 7 -2,40317346555225512E-008 6,52215369385811261E-020 2,40317346568421025E-008 8 -3,58518459271872262E-021 7,51644630994214278E-010 4,16740210049115767E-019 9 2,08935351719506413E-011 1,79947443905580250E-019 -2,08935349727543736E-011 10 7,94264505818028649E-021 -5,22635196008807519E-013 -6,06136777055177323E-018 11 -1,18836942594794924E-014 -1,37758358421631210E-019 1,18728675979271059E-014 12 -2,86996580045065020E-021 2,47351408290148039E-016 13 4,75675785173361614E-018 ************************************************************************************** Number of Chebyshev coefficients for 1 component ---------------------------------------------------------------------------------------------- coefficient approximate exact absolute error ------------------------------------------------------------------------------------------------------------------ 0 7,87693961448162581E+000 7,87693961448162581E+000 4,33680868994201774E-019 1 -1,43995601033231058E-020 0,00000000000000000E+000 1,43995601033231058E-020 2 -6,12080469173652827E-002 -6,12080469173652826E-002 8,13151629364128326E-020 3 -6,29274893731007294E-020 0,00000000000000000E+000 6,29274893731007294E-020 4 3,21472952728575153E-004 3,21472952728575194E-004 4,11340375010369602E-020 5 -2,66744792306166748E-020 0,00000000000000000E+000 2,66744792306166748E-020 6 -6,72136925723786440E-007 -6,72136925723769759E-007 1,66806140400146487E-020 7 -7,68127794727337242E-021 0,00000000000000000E+000 7,68127794727337242E-021 8 7,51644630955338995E-010 7,51644630959521991E-010 4,18299571115677884E-021 9 1,69977160255607756E-019 0,00000000000000000E+000 -1,69977160255607756E-019 10 -5,22635331281252579E-013 -5,22635472164560617E-013 -1,40883308038781575E-019 11 -2,57918323980800914E-019 0,00000000000000000E+000 2,57918323980800914E-019 12 2,47459700169071248E-016 2,47676511895986538E-016 2,16811726915289745E-019 13 9,91001399795632220E-020 0,00000000000000000E+000 -9,91001399795632220E-020 ----------------------------------------------------------------------------------------- Number of Chebyshev coefficients for 2 component ---------------------------------------------------------------------------------------------- coefficient approximate exact absolute error ------------------------------------------------------------------------------------------------------------------ 0 4,00000000000000000E+000 4,00000000000000000E+000 0,00000000000000000E+000 1 4,84536915349747773E-001 4,84536915349747773E-001 -8,13151629364128326E-020 2 4,61280025858904393E-020 0,00000000000000000E+000 -4,61280025858904393E-020 3 -5,12745998917448812E-003 -5,12745998917448815E-003 -2,83756037330190614E-020 4 1,95735196894681237E-020 0,00000000000000000E+000 -1,95735196894681237E-020 5 1,61072544827149609E-005 1,61072544827149482E-005 -1,27369270720915201E-020 6 7,57388627003220220E-021 0,00000000000000000E+000 -7,57388627003220220E-021 7 -2,40317346555225512E-008 -2,40317346555260458E-008 -3,49450527708696004E-021 8 -3,58518459271872262E-021 0,00000000000000000E+000 3,58518459271872262E-021 9 2,08935351719506413E-011 2,08935351786579598E-011 6,70731849333656507E-021 10 7,94264505818028649E-021 0,00000000000000000E+000 -7,94264505818028649E-021 11 -1,18836942594794924E-014 -1,18837079244649228E-014 -1,36649854303880382E-020 12 -2,86996580045065020E-021 0,00000000000000000E+000 2,86996580045065020E-021 13 4,75675785173361614E-018 4,76464654243100702E-018 7,88869069739088286E-021 -----------------------------------------------------------------------
2) Начальное условие задачи Коши для системы (9)
XN = - 0,5 , y1(XN) = 3 + cos q (2 * XN - 1) , y2(XN) = 2 + sin q (2 * XN - 1) , y'1(XN) = - 2q sin q (2 * XN - 1) , y'2(XN) = 2q cos q (2*XN-1) .
Рассматриваются два элементарных сегмента: [- 0,5, 0] и [0, 1]. Выполняются два обращения к подпрограмме DE78E. Первое обращение осуществляется из начальной точки X = - 0,5 с шагом H = 0,5. Второе обращение осуществляется из точки X = 0 с шагом H = 1. Приводятся фрагмент вызывающей программы и результаты счета. В качестве выходных данных, полученных после каждого обращения к подпрограмме DE78E, приводятся: значения параметров XP, X (которые последовательно представляют границы каждого из двух элементарных сегментов); значения параметров H, K, INIAPR, IMAX, при которых было вычислено приближенное значение решения YX в конце каждого элементарного сегмента; приближенные значения решения YX и производной DYX в конце каждого элементарного сегмента; точные значения решения YT и производной DYT в конце каждого элементарного сегмента; абсолютные погрешности DELY и DELDY приближенных значений YX и DYX. После этого для каждого элементарного сегмента приводятся приближенные значения коэффициентов Чебышёва AU для компонент решения y1(x), y2(x), приближенные значения коэффициентов Чебышёва ADU их первых производных y'1(x), y'2(x) и приближенные значения коэффициентов Чебышёва AJK их вторых производных y''1(x), y''2(x). Даются также точные значения коэффициентов Чебышёва решения в (10), (11) и абсолютные погрешности приближенных значений AU, вычисленных за два обращения к подпрограмме DE78E.
Unit f88ex2_p; interface uses SysUtils, Math, { Delphi } Lstruct, Lfunc; procedure F88EX2(X :Extended; var Y :Array of Extended; var DY :Array of Extended; var Z :Array of Extended; M :Integer); implementation procedure F88EX2(X :Extended; var Y :Array of Extended; var DY :Array of Extended; var Z :Array of Extended; M :Integer); var Q :Real; begin Q := 0.5e0; Z[0] := -2.e0*Q*DY[1]-IntPower((1.e0-Exp(3.e0-Y[0]+0.5e0*DY[1]/Q))/(X+1.e0),2); Z[1] := 2.e0*Q*DY[0]-IntPower(DY[1]-2.e0*Q*(Y[0]-3.e0),2); end; end. . . . . . . . . . . . . . . . . . . . . . . . . . . function tde78e2: String; var M,IMAX,JSTART,INIAPR,_i,NX,KP3,KP2,KP1,L,J,_K :Integer; H,XK,Q,X1,X,XP :Extended; DELY :Array [0..1] of Extended; DELDY :Array [0..1] of Extended; YT :Array [0..1] of Extended; DYT :Array [0..1] of Extended; YX :Array [0..1] of Extended; DYX :Array [0..1] of Extended; XJ0 :Array [0..10] of Extended; AU :Array [0..27] of Extended; ADU :Array [0..25] of Extended; AJK :Array [0..23] of Extended; ALP :Array [0..10] of Extended; ALPN :Array [0..10] of Extended; CMAR :Array [0..120] of Extended; P :Array [0..64] of Extended; S :Array [0..76] of Extended; YP :Array [0..1] of Extended; DYP :Array [0..1] of Extended; AJKP :Array [0..23] of Extended; U :Array [0..21] of Extended; DU :Array [0..21] of Extended; ZFI :Array [0..27] of Extended; HD4I :Array [0..11] of Extended; RABC :Array [0..10] of Extended; RABC1 :Array [0..10] of Extended; RABC2 :Array [0..12] of Extended; RABC3 :Array [0..12] of Extended; const K :Integer = 11; label _1,_15,_20,_2; begin _K := K; //переменная для параметра DE78E Result := ''; { результат функции } M := 2; Q := 0.5e0; X := -0.5e0; X1 := (2)*X-1.e0; YX[0] := Cos(Q*X1)+3.e0; YX[1] := Sin(Q*X1)+2.e0; DYX[0] := -2.e0*Q*Sin(Q*X1); DYX[1] := 2.e0*Q*Cos(Q*X1); H := 0.5e0; XK := X+H; X1 := (2)*XK-1.e0; YT[0] := Cos(Q*X1)+3.e0; YT[1] := Sin(Q*X1)+2.e0; DYT[0] := -2.e0*Q*Sin(Q*X1); DYT[1] := 2.e0*Q*Cos(Q*X1); IMAX := 14; JSTART := 0; INIAPR := 1; DE78E(F88EX2,M,_K,INIAPR,IMAX,JSTART,YX,DYX,X,XJ0,AU,ADU,AJK,H, HD4I,RABC,RABC1,RABC2,RABC3,ALP,ALPN,CMAR,P,S,XP,YP, DYP,AJKP,U,DU,ZFI); DELY[0] := YT[0]-YX[0]; DELY[1] := YT[1]-YX[1]; DELDY[0] := DYT[0]-DYX[0]; DELDY[1] := DYT[1]-DYX[1]; // Операторы вывода на печать: H, K, INIAPR, IMAX, YX, YT, DELY, DYX, DYT, DELDY, AU, ADU, AJK . . . . . . . . . . . . . . . . . . . . . . . . . . end; Результаты: ------------------------------------------------------------------------ RESULTS AFTER THE FIRST CALL SUBROUTINE DE78E XP= -5,00000000000000000E-001 X= 0,00000000000000000E+000 H= 0,5000000000000000 K=11 INIAPR=1 IMAX=14 JSTART=1 YX = 3,87758256189037272E+000 1,52057446139579700E+000 YT = 3,87758256189037272E+000 1,52057446139579700E+000 DELY = 2,16840434497100887E-019 -1,08420217248550443E-019 DYX= 4,79425538604203000E-001 8,77582561890372716E-001 DYT= 4,79425538604203000E-001 8,77582561890372716E-001 DELDY= 0,00000000000000000E+000 0,00000000000000000E+000 COEFFICIENTS AU,ADU AND AJK ON 1 SEGMENT ------------------------------------------------------------------------------------- Number of Chebyshev coefficients for 1 component ---------------------------------------------------------------------------------------------- coefficient for Y for Y' for Y'' --------------------------------------------------------------------------------------------------------------------- 0 7,44060162317046236E+000 1,34205937233528741E+000 -1,44060162317046236E+000 1 1,69081826785891485E-001 -1,81496854116472444E-001 -1,69081826785891485E-001 2 -1,13732097613171971E-002 -1,05952419518444701E-002 1,13732097613171973E-002 3 -4,42044443620037666E-004 4,74502064602709420E-004 4,42044443620037675E-004 4 1,48397891478288816E-005 1,38246950364338549E-005 -1,48397891478287704E-005 5 3,45797545845524160E-007 -3,71188127814792164E-007 -3,45797545845681110E-007 6 -7,73596476262452226E-009 -7,20679738711152472E-009 7,73596476291618217E-009 7 -1,28728735897756867E-010 1,38180791184904005E-010 1,28728735672076471E-010 8 2,15954359454761674E-012 2,01182316285981712E-012 -2,15954343844209154E-012 9 2,79468409224580209E-014 -2,99988661434666751E-014 -2,79467509518242091E-014 10 -3,75039083027354612E-016 -3,49383557160390726E-016 3,74923887509065468E-016 11 -3,97073332249106992E-018 4,26049872169392577E-018 3,93362100704897077E-018 12 4,43801950176450601E-020 4,09752188234267789E-020 13 3,93992488686795951E-022 ------------------------------------------------------------------------------------- Number of Chebyshev coefficients for 2 component ---------------------------------------------------------------------------------------------- coefficient for Y for Y' for Y'' --------------------------------------------------------------------------------------------------------------------- 0 2,65794062766471259E+000 1,44060162317046236E+000 1,34205937233528741E+000 1 1,81496854116472444E-001 1,69081826785891485E-001 -1,81496854116472444E-001 2 1,05952419518444701E-002 -1,13732097613171971E-002 -1,05952419518444704E-002 3 -4,74502064602709416E-004 -4,42044443620037672E-004 4,74502064602709417E-004 4 -1,38246950364338500E-005 1,48397891478288750E-005 1,38246950364337022E-005 5 3,71188127814787548E-007 3,45797545845528644E-007 -3,71188127814582863E-007 6 7,20679738711310283E-009 -7,73596476262692042E-009 -7,20679738744356164E-009 7 -1,38180791182638948E-010 -1,28728735900291348E-010 1,38180791509317624E-010 8 -2,01182316774769301E-012 2,15954360086065918E-012 2,01182297275386002E-012 9 2,99988700133484528E-014 2,79468355610041626E-014 -2,99989457645637170E-014 10 3,49385045029375852E-016 -3,75040100429428758E-016 -3,49187638439690806E-016 11 -4,26232385310318944E-018 -3,96804134590557734E-018 4,26226979058363931E-018 12 -4,13337640198497640E-020 4,43986436519129094E-020 13 4,26910035114547206E-022 ------------------------------------------------------------------------------------- RESULTS AFTER THE SECOND CALL SUBROUTINE DE78E XP= 0,00000000000000000E+000 X= 1,00000000000000000E+000 H= 1,0000000000000000 K=11 INIAPR=2 IMAX=16 JSTART=1 YX = 3,87758256189037272E+000 2,47942553860420300E+000 YT = 3,87758256189037272E+000 2,47942553860420300E+000 DELY = -2,16840434497100887E-019 -4,33680868994201774E-019 DYX= -4,79425538604203002E-001 8,77582561890372716E-001 DYT= -4,79425538604203000E-001 8,77582561890372716E-001 DELDY= 1,78893358460108232E-018 -2,16840434497100887E-019 ------------------------------------------------------------------------------------- COEFFICIENTS AU,ADU AND AJK ON 2 SEGMENT ------------------------------------------------------------------------------------- Number of Chebyshev coefficients for 1 component ---------------------------------------------------------------------------------------------- coefficient for Y for Y' for Y'' --------------------------------------------------------------------------------------------------------------------- 0 7,87693961448162581E+000 3,08319992800565323E-019 -1,87693961448162581E+000 1 9,06325253562101363E-020 -4,84536915349747773E-001 -2,57498015965307303E-019 2 -6,12080469173652826E-002 -2,45639554703747098E-020 6,12080469173652828E-002 3 -3,35283874954827218E-021 5,12745998917448816E-003 -6,09863722023096244E-020 4 3,21472952728575195E-004 1,56701095242045563E-020 -3,21472952728575097E-004 5 5,57630023609081057E-022 -1,61072544827149645E-005 -3,11708124589582525E-019 6 -6,72136925723770743E-007 4,51750905202293514E-021 6,72136925724193580E-007 7 5,92418876799882678E-022 2,40317346555333156E-008 -4,20128341838132968E-019 8 7,51644630959149803E-010 -1,20702194983737798E-020 -7,51644630739257361E-010 9 1,71461820782600710E-019 -2,08935351594780811E-011 -3,38813178901720136E-020 10 -5,22635330692607460E-013 -6,18469576767199936E-018 5,22635001953559303E-013 11 -2,57679614695665611E-019 1,18780682262172569E-014 2,47353949388989802E-016 12 2,47459754712859518E-016 5,15320727893728755E-018 13 9,91001399795632220E-020 ------------------------------------------------------------------------------------- Number of Chebyshev coefficients for 2 component ---------------------------------------------------------------------------------------------- coefficient for Y for Y' for Y'' --------------------------------------------------------------------------------------------------------------------- 0 4,00000000000000000E+000 1,87693961448162581E+000 2,20228566286118088E-019 1 4,84536915349747773E-001 7,96210970419042319E-020 -4,84536915349747773E-001 2 1,03055675249273208E-020 -6,12080469173652826E-002 -9,82558218814988393E-020 3 -5,12745998917448815E-003 -2,82344315751433446E-021 5,12745998917448819E-003 4 -3,56459698636184726E-022 3,21472952728575189E-004 -6,43745039913268258E-020 5 1,61072544827149481E-005 2,87991202066462115E-021 -1,61072544827148287E-005 6 2,15791727038595563E-022 -6,72136925723772464E-007 -1,21972744404619249E-019 7 -2,40317346555262999E-008 -2,29908942826167235E-021 2,40317346557104665E-008 8 -5,33345051212603596E-021 7,51644630963932851E-010 -5,75982404132924231E-020 9 2,08935351712224282E-011 1,68371326959771478E-019 -2,08935351353846995E-011 10 7,68596840749716517E-021 -5,22635200074565666E-013 -6,11896601096506565E-018 11 -1,18836943518830867E-014 -1,39067409340115128E-019 1,18728675979271059E-014 12 -2,89723769458573184E-021 2,47351408290148039E-016 13 4,75675785173361614E-018 ************************************************************************************** Number of Chebyshev coefficients for 1 component ---------------------------------------------------------------------------------------------- coefficient approximate exact absolute error ------------------------------------------------------------------------------------------------------------------ 0 7,87693961448162581E+000 7,87693961448162581E+000 0,00000000000000000E+000 1 9,06325253562101363E-020 0,00000000000000000E+000 -9,06325253562101363E-020 2 -6,12080469173652826E-002 -6,12080469173652826E-002 6,77626357803440271E-021 3 -3,35283874954827218E-021 0,00000000000000000E+000 3,35283874954827218E-021 4 3,21472952728575195E-004 3,21472952728575194E-004 -1,24407964127975362E-021 5 5,57630023609081057E-022 0,00000000000000000E+000 -5,57630023609081057E-022 6 -6,72136925723770743E-007 -6,72136925723769759E-007 9,84241531361533805E-022 7 5,92418876799882678E-022 0,00000000000000000E+000 -5,92418876799882678E-022 8 7,51644630959149803E-010 7,51644630959521991E-010 3,72187705283345287E-022 9 1,71461820782600710E-019 0,00000000000000000E+000 -1,71461820782600710E-019 10 -5,22635330692607460E-013 -5,22635472164560617E-013 -1,41471953157695378E-019 11 -2,57679614695665611E-019 0,00000000000000000E+000 2,57679614695665611E-019 12 2,47459754712859518E-016 2,47676511895986538E-016 2,16757183127019583E-019 13 9,91001399795632220E-020 0,00000000000000000E+000 -9,91001399795632220E-020 ----------------------------------------------------------------------------------------- Number of Chebyshev coefficients for 2 component ---------------------------------------------------------------------------------------------- coefficient approximate exact absolute error ------------------------------------------------------------------------------------------------------------------ 0 4,00000000000000000E+000 4,00000000000000000E+000 -4,33680868994201774E-019 1 4,84536915349747773E-001 4,84536915349747773E-001 -5,42101086242752217E-020 2 1,03055675249273208E-020 0,00000000000000000E+000 -1,03055675249273208E-020 3 -5,12745998917448815E-003 -5,12745998917448815E-003 4,23516473627150170E-022 4 -3,56459698636184726E-022 0,00000000000000000E+000 3,56459698636184726E-022 5 1,61072544827149481E-005 1,61072544827149482E-005 1,09187840856999653E-022 6 2,15791727038595563E-022 0,00000000000000000E+000 -2,15791727038595563E-022 7 -2,40317346555262999E-008 -2,40317346555260458E-008 2,54118931464239900E-022 8 -5,33345051212603596E-021 0,00000000000000000E+000 5,33345051212603596E-021 9 2,08935351712224282E-011 2,08935351786579598E-011 7,43553154181680116E-021 10 7,68596840749716517E-021 0,00000000000000000E+000 -7,68596840749716517E-021 11 -1,18836943518830867E-014 -1,18837079244649228E-014 -1,35725818361421985E-020 12 -2,89723769458573184E-021 0,00000000000000000E+000 2,89723769458573184E-021 13 4,75675785173361614E-018 4,76464654243100702E-018 7,88869069739088286E-021 -----------------------------------------------------------------------
3) Начальное условие задачи Коши для системы (9)
XN = - 4/9 , y1(XN) = 3 + cos q (2 * XN - 1) , y2(XN) = 2 + sin q (2 * XN - 1) , y'1(XN) = - 2q sin q (2 * XN - 1) , y'2(XN) = 2q cos q (2*XN-1) .
Рассматриваются три элементарных сегмента: [- 4/9, - 1/3], [- 1/3, 0] и [0, 1]. Выполняются три обращения к подпрограмме DE78E. Первое обращение осуществляется из начальной точки X = - 4/9 с шагом H = 1/9. Второе обращение осуществляется из точки X = - 1/3 с шагом H = 1/3. Третье обращение осуществляется из точки X = 0 с шагом H = 1. Приводятся фрагмент вызывающей программы и результаты счета, аналогичные результатам из примера 2. А именно, после каждого обращения к подпрограмме DE78E приводятся: значения параметров XP, X (которые последовательно представляют границы каждого из трех элементарных сегментов); значения параметров H, K, INIAPR, IMAX, при которых было вычислено приближенное значение решения YX в конце каждого элементарного сегмента; приближенные значения решения YX и производной DYX в конце каждого элементарного сегмента; точные значения решения YT и производной DYT в конце каждого элементарного сегмента; абсолютные погрешности DELY и DELDY приближенных значений YX и DYX. После этого для каждого элементарного сегмента приводятся приближенные значения коэффициентов Чебышёва AU для компонент решения y1(x) и y2(x), приближенные значения коэффициентов Чебышёва ADU их первых производных y'1(x), y'2(x) и приближенные значения коэффициентов Чебышёва AJK их вторых производных y''1(x), y''2(x). Даются также, как и в примерах 1 и 2, точные значения коэффициентов Чебышёва для компонент решения y1(x), y2(x) в (10), (11) и абсолютные погрешности приближенных значений AU, вычисленных за три обращения к подпрограмме DE78E.
Unit f88ex2_p; interface uses SysUtils, Math, { Delphi } Lstruct, Lfunc; procedure F88EX2(X :Extended; var Y :Array of Extended; var DY :Array of Extended; var Z :Array of Extended; M :Integer); implementation procedure F88EX2(X :Extended; var Y :Array of Extended; var DY :Array of Extended; var Z :Array of Extended; M :Integer); var Q :Real; begin Q := 0.5e0; Z[0] := -2.e0*Q*DY[1]-IntPower((1.e0-Exp(3.e0-Y[0]+0.5e0*DY[1]/Q))/(X+1.e0),2); Z[1] := 2.e0*Q*DY[0]-IntPower(DY[1]-2.e0*Q*(Y[0]-3.e0),2); end; end. . . . . . . . . . . . . . . . . . . . . . . . . . . function tde78e3: String; var M,IMAX,JSTART,INIAPR,_i,NX,KP3,KP2,KP1,L,J,_K :Integer; H,XK,Q,X1,X,XP :Extended; DELY :Array [0..1] of Extended; DELDY :Array [0..1] of Extended; YT :Array [0..1] of Extended; DYT :Array [0..1] of Extended; YX :Array [0..1] of Extended; DYX :Array [0..1] of Extended; XJ0 :Array [0..10] of Extended; AU :Array [0..27] of Extended; ADU :Array [0..25] of Extended; AJK :Array [0..23] of Extended; ALP :Array [0..10] of Extended; ALPN :Array [0..10] of Extended; CMAR :Array [0..120] of Extended; P :Array [0..64] of Extended; S :Array [0..76] of Extended; YP :Array [0..1] of Extended; DYP :Array [0..1] of Extended; AJKP :Array [0..23] of Extended; U :Array [0..21] of Extended; DU :Array [0..21] of Extended; ZFI :Array [0..27] of Extended; HD4I :Array [0..11] of Extended; RABC :Array [0..10] of Extended; RABC1 :Array [0..10] of Extended; RABC2 :Array [0..12] of Extended; RABC3 :Array [0..12] of Extended; const K :Integer = 11; label _1,_2,_15,_20,_7; begin _K := K; //переменная для параметра DE78E Result := ''; { результат функции } M := 2; Q := 0.5e0; X := -4.e0/9.e0; X1 := (2)*X-1.e0; YX[0] := Cos(Q*X1)+3.e0; YX[1] := Sin(Q*X1)+2.e0; DYX[0] := -2.e0*Q*Sin(Q*X1); DYX[1] := 2.e0*Q*Cos(Q*X1); H := 1.e0/9.e0; XK := X+H; X1 := (2)*XK-1.e0; YT[0] := Cos(Q*X1)+3.e0; YT[1] := Sin(Q*X1)+2.e0; DYT[0] := -2.e0*Q*Sin(Q*X1); DYT[1] := 2.e0*Q*Cos(Q*X1); IMAX := 12; JSTART := 0; INIAPR := 1; DE78E(F88EX2,M,_K,INIAPR,IMAX,JSTART,YX,DYX,X,XJ0,AU,ADU,AJK,H, HD4I,RABC,RABC1,RABC2,RABC3,ALP,ALPN,CMAR,P,S,XP,YP, DYP,AJKP,U,DU,ZFI); DELY[0] := YT[0]-YX[0]; DELY[1] := YT[1]-YX[1]; DELDY[0] := DYT[0]-DYX[0]; DELDY[1] := DYT[1]-DYX[1]; // Операторы вывода на печать: H, K, INIAPR, IMAX, YX, YT, DELY, DYX, DYT, DELDY, AU, ADU, AJK . . . . . . . . . . . . . . . . . . . . . . . . . . end; Результаты: ------------------------------------------------------------------------ RESULTS AFTER THE FIRST CALL SUBROUTINE DE78E XP= -4,44444444444444444E-001 X= -3,33333333333333333E-001 H= 0,1111111111111111 K=11 INIAPR=1 IMAX=12 JSTART=1 YX = 3,67241224408305669E+000 1,25982314680396294E+000 YT= 3,67241224408305669E+000 1,25982314680396294E+000 DELY = 0,00000000000000000E+000 0,00000000000000000E+000 DYX = 7,40176853196037056E-001 6,72412244083056691E-001 DYT= 7,40176853196037056E-001 6,72412244083056691E-001 DELDY= 0,00000000000000000E+000 5,42101086242752217E-020 ------------------------------------------------------------------------------------- COEFFICIENTS AU,ADU AND AJK ON 1 SEGMENT ------------------------------------------------------------------------------------- Number of Chebyshev coefficients for 1 component ---------------------------------------------------------------------------------------------- coefficient for Y for Y' for Y'' --------------------------------------------------------------------------------------------------------------------- 0 7,25957764277102818E+000 1,55154596888058375E+000 -1,25957764277102818E+000 1 4,31151352007385917E-002 -3,50017733622691502E-002 -4,31151352007385918E-002 2 -4,86198270661226213E-004 -5,98898346005548596E-004 4,86198270661226307E-004 3 -5,54571166090718806E-006 4,50212533913708807E-006 5,54571166090712364E-006 4 3,12659655792614416E-008 3,85133724277144286E-008 -3,12659655792046388E-008 5 2,13968683564837610E-010 -1,73704276559525422E-010 -2,13968683754079542E-010 6 -8,04201240179376922E-013 -9,90613956341266062E-013 8,04201509937074385E-013 7 -3,93106192406940272E-015 3,19131921999348232E-015 3,93081563392766453E-015 8 1,10810852692261623E-017 1,36485242234242928E-017 -1,09335012831585088E-017 9 4,21241742828128076E-020 -3,33375436524285121E-020 4,06575814682064163E-020 10 -9,16774000181679289E-023 2,91755792943147895E-022 -1,32137139771670853E-019 11 1,11305769817835015E-024 -3,33679645888057709E-022 -6,43745039913268258E-020 12 -7,72406587703837290E-025 -1,49015055535478763E-022 13 -3,18408238323672571E-025 ------------------------------------------------------------------------------------- Number of Chebyshev coefficients for 2 component ---------------------------------------------------------------------------------------------- coefficient for Y for Y' for Y'' --------------------------------------------------------------------------------------------------------------------- 0 2,44845403111941625E+000 1,25957764277102818E+000 1,55154596888058375E+000 1 3,50017733622691502E-002 4,31151352007385917E-002 -3,50017733622691500E-002 2 5,98898346005548595E-004 -4,86198270661226211E-004 -5,98898346005548727E-004 3 -4,50212533913708770E-006 -5,54571166090718852E-006 4,50212533913716615E-006 4 -3,85133724277135743E-008 3,12659655792601195E-008 3,85133724276325723E-008 5 1,73704276558336700E-010 2,13968683566188811E-010 -1,73704276291053623E-010 6 9,90613956614597270E-013 -8,04201240486482386E-013 -9,90614281413688264E-013 7 -3,19131874195019639E-015 -3,93106256419924029E-015 3,19165402657209385E-015 8 -1,36496654169048044E-017 1,10824849671033485E-017 1,34847645202884614E-017 9 3,42069433818976894E-020 4,10758693433937251E-020 -1,01643953670516041E-019 10 1,12863786524656430E-022 -5,64688631502866893E-022 1,76182853028894471E-019 11 -2,02014030630234368E-024 4,44906194517410279E-022 1,01643953670516041E-019 12 1,02987545027178305E-024 2,35286929792861205E-022 13 5,02749849984746165E-025 ------------------------------------------------------------------------------------- RESULTS AFTER THE SECOND CALL SUBROUTINE DE78E XP= -3,33333333333333333E-001 X= 2,71050543121376108E-020 H= 0,3333333333333333 K=11 INIAPR=1 IMAX=14 JSTART=1 YX = 3,87758256189037272E+000 1,52057446139579700E+000 YT= 3,87758256189037272E+000 1,52057446139579700E+000 DELY= 0,00000000000000000E+000 -1,08420217248550443E-019 DYX= 4,79425538604203000E-001 8,77582561890372716E-001 DYT= 4,79425538604203000E-001 8,77582561890372716E-001 DELDY= -2,71050543121376108E-020 5,42101086242752217E-020 ------------------------------------------------------------------------------------- COEFFICIENTS AU,ADU AND AJK ON 2 SEGMENT ------------------------------------------------------------------------------------- Number of Chebyshev coefficients for 1 component ---------------------------------------------------------------------------------------------- coefficient for Y for Y' for Y'' --------------------------------------------------------------------------------------------------------------------- 0 7,56087835592218985E+000 1,22816603568964620E+000 -1,56087835592218985E+000 1 1,02704194891647743E-001 -1,30526940340578536E-001 -1,02704194891647743E-001 2 -5,44492816475257603E-003 -4,28430301012671249E-003 5,44492816475257612E-003 3 -1,19077351393356957E-004 1,51335613483289220E-004 1,19077351393356912E-004 4 3,15392064583585238E-006 2,48164003413796456E-006 -3,15392064583580026E-006 5 4,13702452651612949E-008 -5,25775168316942329E-008 -4,13702452653869578E-008 6 -7,30364065561988331E-010 -5,74681771713128335E-010 7,30364065853718802E-010 7 -6,84229824434350415E-012 8,69588876892687532E-012 6,84229795828235517E-012 8 9,05909128691797458E-014 7,12808117260132734E-014 -9,05907361387243981E-014 9 6,60058435994660389E-016 -8,38866514380277795E-016 -6,59967414919082618E-016 10 -6,99098657276150712E-018 -5,49936141004854495E-018 6,84741434560376394E-018 11 -4,16595116442410169E-020 5,18743511030588177E-020 -4,40457132572236176E-020 12 3,60238549326797345E-022 -3,05873008730719567E-022 13 -1,96072441494051004E-024 ------------------------------------------------------------------------------------- Number of Chebyshev coefficients for 2 component ---------------------------------------------------------------------------------------------- coefficient for Y for Y' for Y'' --------------------------------------------------------------------------------------------------------------------- 0 2,77183396431035380E+000 1,56087835592218985E+000 1,22816603568964620E+000 1 1,30526940340578536E-001 1,02704194891647743E-001 -1,30526940340578535E-001 2 4,28430301012671248E-003 -5,44492816475257603E-003 -4,28430301012671261E-003 3 -1,51335613483289219E-004 -1,19077351393356958E-004 1,51335613483289282E-004 4 -2,48164003413796089E-006 3,15392064583584896E-006 2,48164003413787690E-006 5 5,25775168316902009E-008 4,13702452651649222E-008 -5,25775168314681881E-008 6 5,74681771714039904E-010 -7,30364065563092386E-010 -5,74681772018436655E-010 7 -8,69588876761655120E-012 -6,84229824595087802E-012 8,69588907446375986E-012 8 -7,12808156395258378E-014 9,05909166979143212E-014 7,12806414370978358E-014 9 8,38869523177250002E-016 6,60055443602415787E-016 -8,38928536014971193E-016 10 5,50079955981577986E-018 -6,99180522867904701E-018 -5,34647196306914374E-018 11 -5,29728558689129428E-020 -4,05035754777965435E-020 8,80914265144472353E-020 12 -2,81274829706920441E-022 6,11746017461439134E-022 13 3,92144882988102009E-024 ------------------------------------------------------------------------------------- RESULTS AFTER THE THIRD CALL SUBROUTINE DE78E XP= 2,71050543121376108E-020 X= 1,00000000000000000E+000 H= 1,0000000000000000 K=11 INIAPR=2 IMAX=14 JSTART=1 YX = 3,87758256189037272E+000 2,47942553860420300E+000 YT = 3,87758256189037272E+000 2,47942553860420300E+000 DELY= -2,16840434497100887E-019 -2,16840434497100887E-019 DYX= -4,79425538604203002E-001 8,77582561890372716E-001 DYT= -4,79425538604203000E-001 8,77582561890372716E-001 DELDY= 1,73472347597680709E-018 -1,62630325872825665E-019 ------------------------------------------------------------------------------------- COEFFICIENTS AU,ADU AND AJK ON 3 SEGMENT ------------------------------------------------------------------------------------- Number of Chebyshev coefficients for 1 component ---------------------------------------------------------------------------------------------- coefficient for Y for Y' for Y'' --------------------------------------------------------------------------------------------------------------------- 0 7,87693961448162581E+000 3,62530101424840545E-019 -1,87693961448162581E+000 1 1,04185052512278942E-019 -4,84536915349747773E-001 -3,11708124589582525E-019 2 -6,12080469173652826E-002 -3,04931861011548122E-020 6,12080469173652828E-002 3 -3,77635522317542235E-021 5,12745998917448816E-003 -6,77626357803440271E-020 4 3,21472952728575195E-004 1,48230765769502559E-020 -3,21472952728575097E-004 5 5,57630023609081057E-022 -1,61072544827149642E-005 -3,04931861011548122E-019 6 -6,72136925723770729E-007 3,67047610476863480E-021 6,72136925724186804E-007 7 5,16790935080748719E-022 2,40317346555333156E-008 -3,93023287525995357E-019 8 7,51644630959138039E-010 -1,07996700774923293E-020 -7,51644630746033625E-010 9 1,71548876946624069E-019 -2,08935351591016220E-011 -4,74338450462408190E-020 10 -5,22635330671645533E-013 -6,18655924015595882E-018 5,22634981624768569E-013 11 -2,57750842466230178E-019 1,18780677641992856E-014 2,47414935761192112E-016 12 2,47459745087485118E-016 5,15447782835816900E-018 13 9,91245736222724807E-020 ------------------------------------------------------------------------------------- Number of Chebyshev coefficients for 2 component ---------------------------------------------------------------------------------------------- coefficient for Y for Y' for Y'' --------------------------------------------------------------------------------------------------------------------- 0 4,00000000000000000E+000 1,87693961448162581E+000 2,54109884176290102E-019 1 4,84536915349747773E-001 9,40206571452273376E-020 -4,84536915349747773E-001 2 1,24231498930630716E-020 -6,12080469173652826E-002 -1,21972744404619249E-019 3 -5,12745998917448815E-003 -5,36454199927723548E-021 5,12745998917448819E-003 4 -5,36454199927723548E-022 3,21472952728575189E-004 -5,75982404132924231E-020 5 1,61072544827149481E-005 3,21872519956634129E-021 -1,61072544827148354E-005 6 2,29908942826167235E-022 -6,72136925723772464E-007 -1,21972744404619249E-019 7 -2,40317346555262923E-008 -2,29908942826167235E-021 2,40317346557036903E-008 8 -5,33050942550362520E-021 7,51644630963721092E-010 -5,75982404132924231E-020 9 2,08935351712118403E-011 1,68277212187854334E-019 -2,08935351353846995E-011 10 7,68169046331911315E-021 -5,22635199905159076E-013 -6,11557787917604845E-018 11 -1,18836943448244788E-014 -1,38990406344910192E-019 1,18728608216635278E-014 12 -2,89563346551896233E-021 2,47351267117990164E-016 13 4,75675513688442622E-018 ************************************************************************************** Number of Chebyshev coefficients for 1 component ---------------------------------------------------------------------------------------------- coefficient approximate exact absolute error ------------------------------------------------------------------------------------------------------------------ 0 7,87693961448162581E+000 7,87693961448162581E+000 0,00000000000000000E+000 1 1,04185052512278942E-019 0,00000000000000000E+000 -1,04185052512278942E-019 2 -6,12080469173652826E-002 -6,12080469173652826E-002 0,00000000000000000E+000 3 -3,77635522317542235E-021 0,00000000000000000E+000 3,77635522317542235E-021 4 3,21472952728575195E-004 3,21472952728575194E-004 -1,24407964127975362E-021 5 5,57630023609081057E-022 0,00000000000000000E+000 -5,57630023609081057E-022 6 -6,72136925723770729E-007 -6,72136925723769759E-007 9,70179460948132334E-022 7 5,16790935080748719E-022 0,00000000000000000E+000 -5,16790935080748719E-022 8 7,51644630959138039E-010 7,51644630959521991E-010 3,83952107869763829E-022 9 1,71548876946624069E-019 0,00000000000000000E+000 -1,71548876946624069E-019 10 -5,22635330671645533E-013 -5,22635472164560617E-013 -1,41492915084177893E-019 11 -2,57750842466230178E-019 0,00000000000000000E+000 2,57750842466230178E-019 12 2,47459745087485118E-016 2,47676511895986538E-016 2,16766808501420191E-019 13 9,91245736222724807E-020 0,00000000000000000E+000 -9,91245736222724807E-020 ----------------------------------------------------------------------------------------- Number of Chebyshev coefficients for 2 component ---------------------------------------------------------------------------------------------- coefficient approximate exact absolute error ------------------------------------------------------------------------------------------------------------------ 0 4,00000000000000000E+000 4,00000000000000000E+000 0,00000000000000000E+000 1 4,84536915349747773E-001 4,84536915349747773E-001 0,00000000000000000E+000 2 1,24231498930630716E-020 0,00000000000000000E+000 -1,24231498930630716E-020 3 -5,12745998917448815E-003 -5,12745998917448815E-003 -4,23516473627150170E-022 4 -5,36454199927723548E-022 0,00000000000000000E+000 5,36454199927723548E-022 5 1,61072544827149481E-005 1,61072544827149482E-005 8,76811449306209335E-023 6 2,29908942826167235E-022 0,00000000000000000E+000 -2,29908942826167235E-022 7 -2,40317346555262923E-008 -2,40317346555260458E-008 2,46557983677622382E-022 8 -5,33050942550362520E-021 0,00000000000000000E+000 5,33050942550362520E-021 9 2,08935351712118403E-011 2,08935351786579598E-011 7,44611945302639120E-021 10 7,68169046331911315E-021 0,00000000000000000E+000 -7,68169046331911315E-021 11 -1,18836943448244788E-014 -1,18837079244649228E-014 -1,35796404440358816E-020 12 -2,89563346551896233E-021 0,00000000000000000E+000 2,89563346551896233E-021 13 4,75675513688442622E-018 4,76464654243100702E-018 7,89140554658080048E-021 -----------------------------------------------------------------------
Заметим, что во втором и третьем примерах последовательные обращения к подпрограмме DE78E выполнялись при одном и том же значении K (K = 11). При этом изменялись только параметры H, IMAX, INIAPR.
4) Четвертый пример служит иллюстрацией того, как последовательные обращения к подпрограмме DE78E можно выполнять не только с разными значениями параметров H, INIAPR, IMAX, но и с разными значениями параметра K.
Рассматриваются начальные условия и элементарные сегменты из примера 3. Выполняются также, как и в примере 3, три обращения к подпрограмме. Первое обращение осуществляется из начальной точки X = - 4/9 с шагом H = 1/9 со значением параметра K = 6. Второе обращение осуществляется из точки X = - 1/3 с шагом H = 1/3 и со значением параметра K = 8. Третье обращение осуществляется из точки X = 0 с шагом H = 1 и со значением K = 11. Дополнительным и существенным отличием является только то, что каждое последующее обращение к подпрограмме DE78E с новым значением параметра K (отличным от значения K при предыдущем обращении) выполняется с нулевым значением параметра JSTART. Приводится фрагмент вызывающей программы и результаты счета, полностью аналогичные результатам из примера 3. Обратим внимание на то, что в примере 4 дается значение параметра JSTART на входе в подпрограмму DE78E после каждого обращения к ней, в то время как в первых трех примерах приведено значение параметра JSTART на выходе из подпрограммы DE78E, которое всегда полагается равным 1.
Unit f88ex2_p; interface uses SysUtils, Math, { Delphi } Lstruct, Lfunc; procedure F88EX2(X :Extended; var Y :Array of Extended; var DY :Array of Extended; var Z :Array of Extended; M :Integer); implementation procedure F88EX2(X :Extended; var Y :Array of Extended; var DY :Array of Extended; var Z :Array of Extended; M :Integer); var Q :Real; begin Q := 0.5e0; Z[0] := -2.e0*Q*DY[1]-IntPower((1.e0-Exp(3.e0-Y[0]+0.5e0*DY[1]/Q))/(X+1.e0),2); Z[1] := 2.e0*Q*DY[0]-IntPower(DY[1]-2.e0*Q*(Y[0]-3.e0),2); end; end. . . . . . . . . . . . . . . . . . . . . . . . . . . function tde78e4: String; var M,IMAX,JSTARN,JSTART,INIAPR,K0,_i,NX,KP3,KP2,KP1,L,J :Integer; H,XK,Q,X1,X,XP :Extended; DELY :Array [0..1] of Extended; DELDY :Array [0..1] of Extended; YT :Array [0..1] of Extended; DYT :Array [0..1] of Extended; YX :Array [0..1] of Extended; DYX :Array [0..1] of Extended; XJ0 :Array [0..10] of Extended; AU :Array [0..27] of Extended; ADU :Array [0..25] of Extended; AJK :Array [0..23] of Extended; ALP :Array [0..10] of Extended; ALPN :Array [0..10] of Extended; CMAR :Array [0..120] of Extended; P :Array [0..64] of Extended; S :Array [0..76] of Extended; YP :Array [0..1] of Extended; DYP :Array [0..1] of Extended; AJKP :Array [0..23] of Extended; U :Array [0..21] of Extended; DU :Array [0..21] of Extended; ZFI :Array [0..27] of Extended; HD4I :Array [0..11] of Extended; RABC :Array [0..10] of Extended; RABC1 :Array [0..10] of Extended; RABC2 :Array [0..12] of Extended; RABC3 :Array [0..12] of Extended; const K :Integer = 11; label _1,_2,_15,_20,_7; begin Result := ''; { результат функции } { } { take into consideraitoin: all arraies depending on K } { must be described for maximal value K } { } M := 2; Q := 0.5e0; X := -4.e0/9.e0; X1 := (2)*X-1.e0; YX[0] := Cos(Q*X1)+3.e0; YX[1] := Sin(Q*X1)+2.e0; DYX[0] := -2.e0*Q*Sin(Q*X1); DYX[1] := 2.e0*Q*Cos(Q*X1); H := 1.e0/9.e0; XK := X+H; X1 := (2)*XK-1.e0; YT[0] := Cos(Q*X1)+3.e0; YT[1] := Sin(Q*X1)+2.e0; DYT[0] := -2.e0*Q*Sin(Q*X1); DYT[1] := 2.e0*Q*Cos(Q*X1); IMAX := 12; JSTARN := 0; JSTART := JSTARN; INIAPR := 1; K0 := 6; DE78E(F88EX2,M,K0,INIAPR,IMAX,JSTART,YX,DYX,X,XJ0,AU,ADU,AJK,H, HD4I,RABC,RABC1,RABC2,RABC3,ALP,ALPN,CMAR,P,S,XP,YP, DYP,AJKP,U,DU,ZFI); DELY[0] := YT[0]-YX[0]; DELY[1] := YT[1]-YX[1]; DELDY[0] := DYT[0]-DYX[0]; DELDY[1] := DYT[1]-DYX[1]; // Операторы вывода на печать: H, K, INIAPR, IMAX, YX, YT, DELY, DYX, DYT, DELDY, AU, ADU, AJK . . . . . . . . . . . . . . . . . . . . . . . . . . end; Результаты: ------------------------------------------------------------------------ RESULTS AFTER THE FIRST CALL SUBROUTINE DE78E XP= -4,44444444444444444E-001 X= -3,33333333333333333E-001 H= 0,1111111111111111 K0= 6 INIAPR=1 IMAX=12 JSTART(INITIAL)=0 YX = 3,67241224408305669E+000 1,25982314680396294E+000 YT = 3,67241224408305669E+000 1,25982314680396294E+000 DELY= -2,16840434497100887E-019 -2,16840434497100887E-019 DYX= 7,40176853196037069E-001 6,72412244083056701E-001 DYT= 7,40176853196037056E-001 6,72412244083056691E-001 DELDY= -1,23599047663347506E-017 -1,01915004213637417E-017 ------------------------------------------------------------------------------------- COEFFICIENTS AU,ADU AND AJK ON 1 SEGMENT ------------------------------------------------------------------------------------- Number of Chebyshev coefficients for 1 component ---------------------------------------------------------------------------------------------- coefficient for Y for Y' for Y'' --------------------------------------------------------------------------------------------------------------------- 0 7,25957764277102818E+000 1,55154596888058376E+000 -1,25957764277102819E+000 1 4,31151352007385918E-002 -3,50017733622691503E-002 -4,31151352007385918E-002 2 -4,86198270661226214E-004 -5,98898346005548595E-004 4,86198270661226243E-004 3 -5,54571166090718916E-006 4,50212533913708578E-006 5,54571166090709992E-006 4 3,12659655791086904E-008 3,85133724278343544E-008 -3,12659655790216797E-008 5 2,13968683464847419E-010 -1,73704254565637320E-010 -2,13968701047104193E-010 6 -8,04201065427205366E-013 -9,90595838181037930E-013 8,00242793037864164E-013 7 -3,93093586579776956E-015 3,17556663903914351E-015 8 1,10262730522192483E-017 ------------------------------------------------------------------------------------- Number of Chebyshev coefficients for 2 component ---------------------------------------------------------------------------------------------- coefficient for Y for Y' for Y'' --------------------------------------------------------------------------------------------------------------------- 0 2,44845403111941625E+000 1,25957764277102818E+000 1,55154596888058376E+000 1 3,50017733622691503E-002 4,31151352007385918E-002 -3,50017733622691502E-002 2 5,98898346005548597E-004 -4,86198270661226215E-004 -5,98898346005548605E-004 3 -4,50212533913708634E-006 -5,54571166090718808E-006 4,50212533913720004E-006 4 -3,85133724278353762E-008 3,12659655791103358E-008 3,85133724277071112E-008 5 1,73704276474859076E-010 2,13968701106095332E-010 -1,73704254688325337E-010 6 9,90614095571099209E-013 -8,04186364297802484E-013 -9,93771390048539538E-013 7 -3,19121573134048605E-015 -3,94353726209737912E-015 8 -1,36928377156158997E-017 ------------------------------------------------------------------------------------- RESULTS AFTER THE SECOND CALL SUBROUTINE DE78E XP= -3,33333333333333333E-001 X= 2,71050543121376108E-020 H= 0,3333333333333333 K0= 8 INIAPR=1 IMAX=14 JSTART(INITIAL)=0 YX = 3,87758256189037272E+000 1,52057446139579700E+000 YT= 3,87758256189037272E+000 1,52057446139579700E+000 DELY= -3,25260651745651330E-018 -4,22838847269346729E-018 DYX= 4,79425538604203005E-001 8,77582561890372725E-001 DYT= 4,79425538604203000E-001 8,77582561890372716E-001 DELDY= -4,90601483049690756E-018 -9,21571846612678769E-018 ------------------------------------------------------------------------------------- COEFFICIENTS AU,ADU AND AJK ON 2 SEGMENT ------------------------------------------------------------------------------------- Number of Chebyshev coefficients for 1 component ---------------------------------------------------------------------------------------------- coefficient for Y for Y' for Y'' --------------------------------------------------------------------------------------------------------------------- 0 7,56087835592218985E+000 1,22816603568964622E+000 -1,56087835592218987E+000 1 1,02704194891647744E-001 -1,30526940340578538E-001 -1,02704194891647744E-001 2 -5,44492816475257611E-003 -4,28430301012671255E-003 5,44492816475257625E-003 3 -1,19077351393356959E-004 1,51335613483289222E-004 1,19077351393356794E-004 4 3,15392064583585237E-006 2,48164003413795708E-006 -3,15392064583572572E-006 5 4,13702452651634415E-008 -5,25775168316921436E-008 -4,13702452651464004E-008 6 -7,30364065450134717E-010 -5,74681771849406525E-010 7,30364065802896825E-010 7 -6,84229816537126684E-012 8,69588071755603245E-012 6,84230801086937318E-012 8 9,05907631141841632E-014 7,12740417798893040E-014 -8,99144718099001428E-014 9 6,59944831295271333E-016 -8,32541405647223544E-016 10 -6,93784504706019620E-018 ------------------------------------------------------------------------------------- Number of Chebyshev coefficients for 2 component ---------------------------------------------------------------------------------------------- coefficient for Y for Y' for Y'' --------------------------------------------------------------------------------------------------------------------- 0 2,77183396431035381E+000 1,56087835592218987E+000 1,22816603568964622E+000 1 1,30526940340578538E-001 1,02704194891647744E-001 -1,30526940340578537E-001 2 4,28430301012671255E-003 -5,44492816475257612E-003 -4,28430301012671268E-003 3 -1,51335613483289222E-004 -1,19077351393356959E-004 1,51335613483289397E-004 4 -2,48164003413796096E-006 3,15392064583585616E-006 2,48164003413782946E-006 5 5,25775168316884621E-008 4,13702452651672939E-008 -5,25775168316985810E-008 6 5,74681771850670352E-010 -7,30364065451566382E-010 -5,74681772208172036E-010 7 -8,69588866123072558E-012 -6,84230808097143329E-012 8,69588081419845824E-012 8 -7,12809972355655050E-014 9,05820918145672733E-014 7,21065934283608712E-014 9 8,38723072357104382E-016 6,67653642855193251E-016 10 5,56378035712661043E-018 ------------------------------------------------------------------------------------- RESULTS AFTER THE THIRD CALL SUBROUTINE DE78E XP= 2,71050543121376108E-020 X= 1,00000000000000000E+000 H= 1,0000000000000000 K0=11 INIAPR=1 IMAX=17 JSTART(INITIAL)=0 YX = 3,87758256189037272E+000 2,47942553860420301E+000 YT= 3,87758256189037272E+000 2,47942553860420300E+000 DELY= -3,03576608295941242E-018 -1,45283091113057594E-017 DYX= -4,79425538604203008E-001 8,77582561890372725E-001 DYT= -4,79425538604203000E-001 8,77582561890372716E-001 DELDY= 7,20994444702860449E-018 -8,89045781438113636E-018 ------------------------------------------------------------------------------------- COEFFICIENTS AU,ADU AND AJK ON 3 SEGMENT ------------------------------------------------------------------------------------- Number of Chebyshev coefficients for 1 component ---------------------------------------------------------------------------------------------- coefficient for Y for Y' for Y'' --------------------------------------------------------------------------------------------------------------------- 0 7,87693961448162582E+000 -9,65617559869902387E-020 -1,87693961448162583E+000 1 -1,05879118406787542E-020 -4,84536915349747778E-001 -1,03676832743926362E-018 2 -6,12080469173652833E-002 -5,59041745187838224E-020 6,12080469173652827E-002 3 -4,51750905202293514E-021 5,12745998917448818E-003 -5,89534931288993036E-019 4 3,21472952728575197E-004 -1,69406589450860068E-021 -3,21472952728575470E-004 5 1,55289373663288396E-022 -1,61072544827149750E-005 -5,62429876976855425E-019 6 -6,72136925723770989E-007 -4,79985336777436859E-021 6,72136925724030950E-007 7 2,67218727407606655E-022 2,40317346555287174E-008 -4,47233396150270579E-019 8 7,51644630959047286E-010 -1,22819777351873549E-020 -7,51644630773138679E-010 9 1,71493584518122747E-019 -2,08935351607956879E-011 -5,42101086242752217E-020 10 -5,22635330733247929E-013 -6,18605102038760624E-018 5,22635015506086459E-013 11 -2,57726458184415281E-019 1,18780685342292377E-014 2,47387830706879974E-016 12 2,47459761129775785E-016 5,15391313972666613E-018 13 9,91137142255128102E-020 ------------------------------------------------------------------------------------- Number of Chebyshev coefficients for 2 component ---------------------------------------------------------------------------------------------- coefficient for Y for Y' for Y'' --------------------------------------------------------------------------------------------------------------------- 0 4,00000000000000002E+000 1,87693961448162583E+000 -2,04643160056638962E-018 1 4,84536915349747778E-001 -1,05032085459533242E-019 -4,84536915349747780E-001 2 -5,64688631502866893E-021 -6,12080469173652833E-002 -1,62630325872825665E-018 3 -5,12745998917448821E-003 -5,98569949393038906E-020 5,12745998917448705E-003 4 -2,18463914312671629E-021 3,21472952728575151E-004 -9,08019319456609964E-019 5 1,61072544827149470E-005 -2,49027686492764300E-020 -1,61072544827153640E-005 6 -6,19140749540643343E-022 -6,72136925723788557E-007 -4,09963946471081364E-019 7 -2,40317346555267536E-008 -1,00433906603009897E-020 2,40317346555613887E-008 8 -5,52840253966869239E-021 7,51644630960544719E-010 -1,28749007982653652E-019 9 2,08935351711541950E-011 1,66865490609097167E-019 -2,08935351760422810E-011 10 7,65794787313092443E-021 -5,22635201006301908E-013 -6,13590666991015166E-018 11 -1,18836943714546813E-014 -1,39452424316139810E-019 1,18728642097953169E-014 12 -2,90525883991957938E-021 2,47351337704069101E-016 13 4,75675649430902118E-018 ************************************************************************************** Number of Chebyshev coefficients for 1 component ---------------------------------------------------------------------------- coefficient approximate exact absolute error ------------------------------------------------------------------------------------------------------------------ 0 7,87693961448162582E+000 7,87693961448162581E+000 -7,37257477290143015E-018 1 -1,05879118406787542E-020 0,00000000000000000E+000 1,05879118406787542E-020 2 -6,12080469173652833E-002 -6,12080469173652826E-002 6,50521303491302660E-019 3 -4,51750905202293514E-021 0,00000000000000000E+000 4,51750905202293514E-021 4 3,21472952728575197E-004 3,21472952728575194E-004 -3,52048068702568578E-021 5 1,55289373663288396E-022 0,00000000000000000E+000 -1,55289373663288396E-022 6 -6,72136925723770989E-007 -6,72136925723769759E-007 1,23032776359605954E-021 7 2,67218727407606655E-022 0,00000000000000000E+000 -2,67218727407606655E-022 8 7,51644630959047286E-010 7,51644630959521991E-010 4,74705594658069208E-022 9 1,71493584518122747E-019 0,00000000000000000E+000 -1,71493584518122747E-019 10 -5,22635330733247929E-013 -5,22635472164560617E-013 -1,41431312687992430E-019 11 -2,57726458184415281E-019 0,00000000000000000E+000 2,57726458184415281E-019 12 2,47459761129775785E-016 2,47676511895986538E-016 2,16750766210752487E-019 13 9,91137142255128102E-020 0,00000000000000000E+000 -9,91137142255128102E-020 ----------------------------------------------------------------------------------------- Number of Chebyshev coefficients for 2 component ---------------------------------------------------------------------------- coefficient approximate exact absolute error ------------------------------------------------------------------------------------------------------------------ 0 4,00000000000000002E+000 4,00000000000000000E+000 -1,86482773667506763E-017 1 4,84536915349747778E-001 4,84536915349747773E-001 -5,06864515636973323E-018 2 -5,64688631502866893E-021 0,00000000000000000E+000 5,64688631502866893E-021 3 -5,12745998917448821E-003 -5,12745998917448815E-003 5,59041745187838224E-020 4 -2,18463914312671629E-021 0,00000000000000000E+000 2,18463914312671629E-021 5 1,61072544827149470E-005 1,61072544827149482E-005 1,21099241677763252E-021 6 -6,19140749540643343E-022 0,00000000000000000E+000 6,19140749540643343E-022 7 -2,40317346555267536E-008 -2,40317346555260458E-008 7,07888889760663500E-022 8 -5,52840253966869239E-021 0,00000000000000000E+000 5,52840253966869239E-021 9 2,08935351711541950E-011 2,08935351786579598E-011 7,50376475054515831E-021 10 7,65794787313092443E-021 0,00000000000000000E+000 -7,65794787313092443E-021 11 -1,18836943714546813E-014 -1,18837079244649228E-014 -1,35530102415271950E-020 12 -2,90525883991957938E-021 0,00000000000000000E+000 2,90525883991957938E-021 13 4,75675649430902118E-018 4,76464654243100702E-018 7,89004812198584148E-021 -----------------------------------------------------------------------
В процессе интегрирования дифференциальных уравнений (1), (2) с помощью подпрограммы DE78E нужно следить за тем, чтобы параметры H, K, INIAPR, IMAX удовлетворяли приведенным выше условиям, сформулированным в "Математическом описании" и в "Замечаниях по использованию". Особенно это относится к длине элементарного сегмента H и параметру K, определяющему порядок используемых частичных сумм рядов Чебышёва для решения и его производных. Необходимо заботиться о том, чтобы указанные ряды Чебышёва на каждом сегменте [X, X + H] длиной H быстро сходились, при этом сумма ряда Чебышёва для решения должна хорошо приближаться частичной суммой порядка K + 2, сумма ряда Чебышёва для первой производной должна хорошо приближаться частичной суммой (K+1)-го порядка, а сумма ряда Чебышёва для второй производной должна хорошо приближаться частичной суммой K-го порядка.