Текст подпрограммы и версий (Паскаль) de53e_p.zip |
Тексты тестовых примеров (Паскаль) tde53e1_p.zip , tde53e2_p.zip , tde53e3_p.zip |
Вычисление коэффициентов разложения решения задачи Коши для обыкновенных дифференциальных уравнений первого порядка и его производной в ряд по смещенным многочленам Чебышёва первого рода с встроенной пошаговой обработкой результатов (получение аналитического выражения для приближенного решения задачи Коши и его производной в виде частичной суммы смещенного ряда Чебышёва).
Решается задача Коши для системы M обыкновенных дифференциальных уравнений первого порядка
(1) Y ' = F (X, Y) , Y = ( y1, ... , yM ) , F = ( f1 (X, y1, ... , yM), ... , fM (X, y1, ... , yM) ) , XN ≤ X ≤ XKс начальными условиями, заданными в точке XN :
(2) Y(XN) = YN , YN = ( y10, ... , yM0 ) ,
при условии, что правая часть системы (1) имеет непрерывные ограниченные частные производные по переменным X, Y. Предполагается, что на отрезке [XN, XK] задача (1),(2) имеет единственное решение. Тогда решение задачи Коши и его производная Y'(XN + αΔ) = F(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) Φ(α) = ∑ ' 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)) является быстросходящимся, то его сумма на [XN, XK] (и сумма ряда (4)) хорошо приближается частичной суммой некоторого порядка. Эта частичная сумма принимается в качестве приближенного аналитического решения задачи (1), (2) на промежутке [XN, XK]. В противном случае, т.е. при медленной сходимости ряда (3) на интервале [XN, XK], получение аналитического решения в виде одной частичной суммы на всем отрезке интегрирования [XN, XK] может быть затруднено. Поэтому целесообразно использовать разбиение промежутка интегрирования [XN, XK] на такие элементарные сегменты некоторой длины H: [xs, xs+H], x0 = XN, s = 0, 1, ... , на каждом из которых ряды Чебышёва для решения Y(X) и его производной Y'(X) будут сходиться значительно быстрее. На каждом подобном сегменте решение исходной задачи Коши приближенно представляется в виде (K + 1) - й частичной суммы смещенного ряда Чебышёва
K+1 1 (5) Y (xs + αH) ≈ ∑ ' ai*[Y] Ti*(α) , 0 ≤ α ≤ 1 , ai*[Y] = 2/π ∫ Y(xs + αH) Ti* (α) / √ (α (1 - α) ) dα , i=0 0 а его производная - в виде частичной суммы K-го порядка K 1 (6) Y' (xs + αH) ≈ ∑ ' ai*[Y ' ] Ti*(α) , 0 ≤ α ≤ 1 , ai*[Y ' ] = 2/π ∫ Y ' (xs + αH) Ti* (α) / √ (α (1 - α) ) dα . i=0 0
В этом случае аналитическое решение задачи (1),(2) состоит из совокупности частичных сумм рядов Чебышёва, построенных на этих элементарных сегментах. Порядок этих частичных сумм и длина элементарных сегментов задаются пользователем при обращении к подпрограмме. Число NX элементарных сегментов, на которые разбивается промежуток интегрирования, равно [(XK-XN) / H], если длина промежутка интегрирования является целым кратным H. Если длина интервала интегрирования не является целым кратным H, то число элементарных сегментов NX равно [(XK-XN) / H] + 1; в этом случае последний элементарный сегмент считается нестандартным (квадратные скобки означают целую часть числа).
После вычисления коэффициентов Чебышёва для решения задачи Коши и его производной на каждом отдельном элементарном сегменте [xs, xs+H] подпрограмма DE53E передает управление специальной подпрограмме обработки результатов для дальнейшей работы с полученными на этом сегменте коэффициентами Чебышёва ai*[Y], ai*[Y']. Характер и цель этой обработки определяет сам пользователь и выполняет ее с помощью составленной им же подпрограммы, имя которой задается при обращении к подпрограмме DE53E. Например, он может использовать их для каких-то необходимых ему на данном элементарном сегменте вычислений, или запомнить вычисленные коэффициенты в удобном для себя виде, или просто их проигнорировать, если эти коэффициенты на данном элементарном сегменте ему не нужны. Таким образом, в подпрограмме обработки результатов можно, в частности, непосредственно приступить к применению полученных на элементарном сегменте [xs, xs+H] коэффициентов Чебышёва (или, по-другому, немедленно начать использование построенных на сегменте [xs, xs+H] частичных сумм (5), (6) рядов Чебышёва) решения и его производной, не дожидаясь окончания процедуры интегрирования системы дифференциальных уравнений (1) на всем промежутке [XN, XK]. Иными словами, подпрограмма DE53E после вычисления коэффициентов Чебышёва на элементарном сегменте [xs, xs+H]=[xs, xs+1] предоставляет возможность приостановить процедуру интегрирования системы (1) на время обработки относящихся к этому сегменту результатов, а затем (после завершения такой обработки) продолжить дальнейшее интегрирование, т.е. перейти к вычислению коэффициентов на следующем элементарном сегменте [xs+1, xs+2] и т.д.
При разбиении промежутка интегрирования на элементарные сегменты решение задачи сводится к определению нескольких наборов коэффициентов ai*[Y], i = 0, 1, ... , K + 1. Коэффициенты ai*[Y] ряда Чебышёва для решения на сегменте [xs, xs + H] выражаются через коэффициенты ai*[Φ] ряда Чебышёва его производной Φ(α) = F(xs + αH, Y(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 подобрано достаточно малым, то хорошая точность приближенного решения может быть получена и при меньшем числе итераций. Вообще, число итераций зависит от K и H. С увеличением H число итераций может также возрастать.
Начальное приближение коэффициентов ai*[Φ] ряда Чебышёва для производной на сегменте [xs, xs + H] может вычисляться двумя способами. В первом способе начальное приближение определяется только с использованием значения решения Y(X) в узле xs. При этом погрешность начального приближения для всех коэффициентов a0*[Φ], a1*[Φ], ... , aK*[Φ] является величиной O(H2) при H --> 0. Во втором способе начальное приближение определяется через коэффициенты ряда Чебышёва производной Φ(α) на предыдущем элементарном сегменте [xs - 1, xs]. В этом случае погрешности начального приближения для коэффициентов a0*[Φ], a1*[Φ], ... , aK*[Φ] имеют, соответственно, порядки O(H), O(H2), ... , O(HK + 1). Второй способ определения начального приближения в некоторых случаях может привести к более быстрой сходимости итерационного процесса и, тем самым, к меньшему числу выполняемых итераций. Второй способ может быть применен только начиная со второго элементарного сегмента [x0 + H, x0 + 2H]. На начальном элементарном сегменте [x0, x0 + H] всегда применяется исключительно первый способ. Способ выбора начального приближения задается пользователем при обращении к подпрограмме.
В дальнейшем при описании параметров подпрограммы коэффициенты ряда Чебышёва будем называть коэффициентами Чебышёва.
О.Б.Арушанян, С.Ф.Залеткин. Приближенное решение задачи Коши для обыкновенных дифференциальных уравнений методом рядов Чебышёва. Вычислительные методы и программирование: Новые вычислительные технологии (Электронный научный журнал) (17), 121 - 131, 2016.
О.Б.Арушанян, С.Ф.Залеткин. Использование рядов Чебышёва для приближенного аналитического решения обыкновенных дифференциальных уравнений. Вестник Московского университета. Серия 1: Математика. Механика. 5, 52 - 56, 2016.
О.Б.Арушанян, Н.И.Волченскова, С.Ф.Залеткин. Вычисление коэффициентов разложения решения задачи Коши в ряд по многочленам Чебышёва. Вестник Московского университета. Серия 1: Математика. Механика. 5, 24 - 30, 2012.
procedure DE53E (F :Proc_F70E; FTREAT :Proc_FTREAT; var M :Integer; XN :Extended; var YN :Array of Extended; XK :Extended; var K :Integer; var INIAPR :Integer; IMAX :Integer; var H :Extended; var Y :Array of Extended; var RAB :Array of Extended);
Параметры
F - | имя подпрограммы вычисления значений правой части дифференциального уравнения. Первый оператор подпрограммы должен соответствовать процедурному типу: |
Procedure (X :Extended; var Y :Array of Extended; var Z :Array of Extended; M :Integer); Здесь: X, Y - значения независимой и зависимой переменных, соответственно. Вычисленное значение правой части должно быть помещено в Z. Для скалярного случая при M = 1 параметры Y и Z представляют собой массивы длины 1. В случае системы уравнений, т.е. когда M ≠ 1 , параметры Y и Z представляют массивы длины M (тип параметров X, Y и Z: Extended); |
FTREAT - |
имя подпрограммы обработки результатов. Первый оператор подпрограммы
должен соответствовать процедурному типу: |
Procedure FTREAT(S :Integer; XI :Extended; XE :Extended; var Y :Array of Extended; var AY :Array of Extended; var ADY :Array of Extended; M :Integer; KP1 :Integer; KP2 :Integer);Здесь: |
S - | номер элементарного сегмента, S=1, 2, ... , NX (тип: целый); |
XI, XE - | начало и конец элементарного сегмента с данным номером S: [xs-1, xs-1+H], x0=XN, т.е. XI=xs-1, XE=xs-1+H (тип: с расширенной (Extended) точностью); |
Y - | значение решения задачи Коши, вычисленное подпрограммой DE53E в конце XE элементарного сегмента [xs-1, xs-1+H], т.е. в точке xs= xs-1+H (тип: с расширенной (Extended) точностью); |
AY - | двумерный массив с измерениями M, KP2 (KP2 = K+2). Переменная с индексом AY (N, I+1) содержит вычисленный подпрограммой DE53E I-й коэффициент Чебышёва для N-й компоненты решения yN(X) на элементарном сегменте [XI, XE], I = 0, 1, ... , K+1; N = 1, ... , M (тип: с расширенной (Extended) точностью); |
ADY - | двумерный массив с измерениями M, KP1 (KP1 = K+1). Переменная с индексом ADY (N, I+1) содержит вычисленный подпрограммой DE53E I-й коэффициент Чебышёва для N-й компоненты производной решения y'N(X) на элементарном сегменте [XI, XE], I = 0, 1, ... , K; N = 1, ... , M (тип: с расширенной (Extended) точностью); |
M - | количество уравнений в системе (1) (тип: целый); |
KP1 - | целый параметр, имеющий значение K+1; |
KP2 - | целый параметр, имеющий значение K+2. |
Таким образом, для системы уравнений (т.е. когда M ≠ 1) параметры Y, AY, ADY представляют массивы с регулируемыми измерениями, описатели которых имеют вид Y(M), AY(M, KP2), ADY(M, KP1). В случае, когда интегрируется одно скалярное уравнение (т.е. при M = 1), параметры AY, ADY представляют массивы с регулируемыми измерениями, описатели которых могут иметь вид AY(KP2), ADY(KP1), а параметр Y может быть переменной (простой переменной). Данная подпрограмма FTREAT составляется пользователем и выполняет нужную ему обработку содержащихся в AY, ADY коэффициентов (см. "Математическое описание"). Обработка результатов на каждом элементарном сегменте в подпрограмме FTREAT должна заканчиваться оператором exit . При работе подпрограммы FTREAT значения всех ее параметров не должны изменяться. |
M - | количество уравнений в системе (тип: целый); |
XN, YN - | начальные значения аргумента и решения; в случае системы уравнений (т.е. когда M ≠ 1) YN представляет массив длины M (тип: с расширенной (Extended) точностью); |
XK - | конец интервала интегрирования. На отрезке [XN, XK] вычисляется приближенное аналитическое решение задачи Коши в виде одной частичной суммы ряда Чебышёва либо в виде совокупности частичных сумм. XK может быть больше, меньше или равно XN (тип: с расширенной (Extended) точностью); |
K - | порядок частичной суммы смещенного ряда Чебышёва, с помощью которой аппроксимируется производная решения задачи Коши на каждом элементарном сегменте разбиения интервала интегрирования; при этом само решение задачи Коши приближается на каждом элементарном сегменте частичной суммой (K + 1) - го порядка; K≥2 (см. "Математическое описание" и "Замечания по использованию"; тип: целый); |
INIAZR - |
целый указатель способа выбора начального
приближения коэффициентов Чебышёва для производной
решения на каждом элементарном сегменте: |
INIAZR=1 - |
для первого способа, когда начальное
приближение определяется только с
использованием значения решения в
начале каждого элементарного сегмента; |
INIAZR=2 - | для второго способа, когда начальное приближение коэффициентов Чебышёва на текущем элементарном сегменте (начиная со второго) определяется через коэффициенты Чебышёва, вычисленные на предыдущем элементарном сегменте, т.е. путем экстраполяции коэффициентов с предыдущего сегмента на следующий (см. "Математическое описание"); |
IMAX - | целая переменная, задающая количество итераций, которое предполагается выполнить в итерационном процессе вычисления коэффициентов Чебышёва для производной решения задачи Коши на каждом элементарном сегменте, исходя из некоторого начального приближения, способ определения которого задается параметром INIAZR; IMAX≥1. Для получения максимального порядка точности приближенного решения необходимо выполнить не менее K итераций (см. "Математическое описание" и "Замечания по использованию"); |
H - | переменная с расширенной (Extended) точностью, содержащая значение длины элементарных сегментов, на которые разбивается интервал интегрирования (диаметр разбиения промежутка интегрирования или аналог шага интегрирования для одношаговых методов). Предполагается, что на каждом элементарном сегменте ряды Чебышёва для решения и его производной являются быстросходящимися рядами. Может задаваться с учетом направления интегрирования, т.е. положительным, если XK > XN, отрицательным, если XK < XN , или без такого учета в виде абсолютной величины; |
Y - | на выходе из подпрограммы содержит значение решения задачи Коши, вычисленное подпрограммой при значении аргумента XK. Для системы уравнений (когда M ≠ 1) задается массивом длины M. В случае совпадения значений параметров XN и XK значение Y полагается равным начальному значению YN (тип: с расширенной (Extended) точностью); |
RAB - | одномерный рабочий массив длины 2 * K2 + 7 * K + 5 * M * K + 8 * М + 1. (тип: с расширенной (Extended) точностью). |
Версии: нет
Вызываемые подпрограммы
DE44E - | выполнение одного шага приближенного интегрирования системы обыкновенных дифференциальных уравнений первого порядка методом рядов Чебышёва |
Кроме того, используются рабочие подпрограммы DE70EK, DE70EH, DE70E0, DE70EI, DE70EF, DE70EQ, DE71EE, DE70EP, DE71ET, DE71EP, DE71EI, DE71EF, DE71ES, DE70EA, DE70EC. |
Замечания по использованию
Разбиение промежутка интегрирования на элементарные сегменты (шаги) выполняется для того, чтобы на каждом таком сегменте ряды Чебышёва для решения и его производной были быстросходящимися рядами. Другими словами, длина элементарных сегментов, задаваемая параметром H, подбирается таким образом, чтобы убывание коэффициентов этих рядов Чебышёва на элементарном сегменте происходило достаточно быстро, вследствие чего можно было бы считать частичные суммы этих рядов близкими к многочленам наилучшего равномерного приближения на элементарном сегменте для решения и его производной. Порядок этих частичных сумм задается параметром K. Если начальное приближение для коэффициентов Чебышёва функции Φ(α) определяется первым способом (т.е. при INIAZR = 1), то для получения максимального порядка точности приближенного решения в конце элементарного сегмента необходимо выполнить в итерационном процессе не менее K итераций; тогда IMAX≥K. Если начальное приближение коэффициентов Чебышёва функции Φ(α) определяется вторым способом (т.е. при INIAZR = 2), то для получения максимального порядка точности приближенного решения необходимо выполнить в итерационном процессе не менее K + 1 итераций; в этом случае IMAX≥K + 1. Однако в некоторых случаях при втором способе определения начального приближения итерационный процесс может сойтись за значительно меньшее число итераций. Если диаметр разбиения H подобран достаточно малым, то хорошая точность приближенного решения может быть получена и с существенно меньшим числом итераций при любом способе выбора начального приближения. Вообще, число итераций зависит от K и H. С увеличением H число итераций может также возрастать. Если правая часть дифференциального уравнения не зависит от переменной Y, т.е. дифференциальное уравнение имеет вид Y'= F(X), то число итераций можно положить равным 1 при любых H и K, удовлетворяющих описанным выше условиям. В этом случае параметр IMAX = 1. Как следует из вышеописанного, управлять точностью приближенного решения задачи Коши можно с помощью четырех параметров H, K, IMAX, INIAZR, подбирая для каждой конкретной задачи наиболее подходящий набор их значений. При работе подпрограммы значения параметров M, XN, YN, XK, K, INIAZR, IMAX, сохраняются. Значение параметра H сохраняется, если он задан с учетом направления интегрирования, иначе его знак меняется на противоположный. Если после работы подпрограммы нет необходимости иметь начальное значение решения, то параметры YN и Y при обращении к ней можно совместить. Так как при интегрировании системы уравнений с помощью подпрограммы DE53E используется глобальная запись (структура данных) с именем _COM70D для хранения промежуточных значений, пользователь не должен портить элементы этой структуры. Структура определена в модуле Lstruct и является объектом типа: type COM70D = record elm1: Extended; // WC1 elm2: Extended; // WC2 elm3: Extended; // WC3 elm4: Integer; // LASN elm5: Extended; // HD2 elm6: Extended; // HD4 elm7: Extended; // HOLD end; var _COM70D : COM70D; |
Вычисления в трех примерах на Паскале проводились с 19-20 значащими цифрами.
1) Решается задача Коши для системы уравнений
y'1 = -2q (y2-1) + (1 -e1-y1+cos q(2x-1) ) / (x+1), y1(0) = 1+ cos q, 0 ≤ x ≤ xf, xf = 1,
y'2 = 2q (y1-1) + ( 1 -e1-y2+sin q(2x-1) ) / (x+1), y2(0) = 1- sin q, q = 0,5.
Точное решение системы
y1(x) = 1 + cos q(2x - 1), y2(x) = 1 + sin q(2x - 1).
Функции y1(x), y2(x) разлагаются на отрезке [0, 1] в смещенные ряды Чебышёва, коэффициенты которых выражаются через цилиндрические функции:
∞ (7) y1(x) = 1 + J0 (q) + 2 ∑ (-1)i J2i (q) T2i* (x), i=1
∞ (8) y2(x) = 1 + 2 ∑ (-1)i J2i+1 (q) T2i+1* (x). i=0
Интервал интегрирования [0, 1] разбивается на два элементарных сегмента длиной H = 0,5.
Unit Fsc_p; interface uses SysUtils, Math, { Delphi } Lstruct, Lfunc; procedure Fsc(X :Extended; var Y :Array of Extended; var Z :Array of Extended; M :Integer); implementation procedure Fsc(X :Extended; var Y :Array of Extended; var Z :Array of Extended; M :Integer); var R,Q :Extended; begin Q := 0.5e0; R := 2.e0*X-1.e0; Z[0] := -2.e0*Q*(Y[1]-1.e0)+(1.e0-Exp(1.e0-Y[0]+Cos(Q*R)))/(1.e0+X); Z[1] := 2.e0*Q*(Y[0]-1.e0)+(1.e0-Exp(1.e0-Y[1]+Sin(Q*R)))/(1.e0+X); end; end. procedure FTREAT1(S :Integer; XI :Extended; XE :Extended; var Y :Array of Extended; var AY :Array of Extended; var ADY :Array of Extended; M :Integer; KP1 :Integer; KP2 :Integer); begin // SOLUTION Y AT THE END OF THE SEGMENT [XI,XE],i.e. Y(XE)] // Операторы вывода на печать : Y, AY, ADY,M . . . . . . . . . . . . . . . . . . . . . . . . . end; function tde53e1: String; var M,K,IMAX,INIAP0,INIAPR,_i :Integer; XN,H,XK,H0,Q :Extended; DELY :Array [0..1] of Extended; YN :Array [0..1] of Extended; Y :Array [0..1] of Extended; RАВ :Array [0..445] of Extended; YT :Array [0..1] of Extended; label _42; begin M := 2; Q := 0.5e0; XN := 0.0; YN[0] := Cos(Q)+1.e0; YN[1] := -Sin(Q)+1.e0; ХК := 1.e0; H0 := 0.5e0; YT[0] := Cos(Q*(2.e0*XK-1.e0))+1.e0; YT[1] := Sin(Q*(2.e0*XK-1.e0))+1.e0; K := 11; IМАХ := 13; for INIAP0:=1 to 2 do begin Result := ''; { результат функции } INIAPR := INIAP0; H := H0; DE53E(Fsc,FTREAT1,M,XN,YN,XK,K,INIAPR,IMAX,H,Y, RAB); DELY[0] := YT[0]-Y[0]; DELY[1] := YT[1]-Y[1]; // Операторы вывода на печать: NX, XS, H0, K, INIAPR, Y, YT, DELY . . . . . . . . . . . . . . . . . . . . . . . . . end; Результаты: ---------------------------------------------------------------- COEFFICIENTS AY AND ADY ON 1 SEGMENT: XI= 0,00000000000000000E+000 XE= 5,00000000000000000E-001 SOLUTION Y AT THE END OF THE SEGMENT [XI,XE],i.e. Y(XE) Y= 2,00000000000000002E+000 9,99999999999999991E-001 Number of Chebyshev coefficients for 1 component ----------------------------------------------------------------------- coefficient for Y for Y' -------------------------------------------------------------------------------- 0 3,90766440054602746E+000 4,87106693080399297E-001 1 6,13690356801086382E-002 -2,40340620085585541E-001 2 -1,50605601386582180E-002 -3,84559236046980881E-003 3 -1,60442087410513588E-004 6,28342132945947442E-004 4 1,96510520421478261E-005 5,01773738251730305E-006 5 1,25508828078587283E-007 -4,91532402782992055E-007 6 -1,02440704934431840E-008 -2,61574062618828186E-009 7 -4,67226933663339647E-011 1,82980902280779727E-010 8 2,85969729345183802E-012 7,30202326420159240E-013 9 1,01434582654892144E-014 -3,97245001379064461E-014 10 -4,96626470755157957E-016 -1,26668695064197090E-016 11 -1,43941698936587602E-018 5,61752250619051985E-018 12 5,85158594394845818E-020 Number of Chebyshev coefficients for 2 component ----------------------------------------------------------------------- coefficient for Y for Y' -------------------------------------------------------------------------------- 0 1,51289330691960088E+000 1,90766440054602739E+000 1 2,40340620085585707E-001 6,13690356801085685E-002 2 3,84559236046994481E-003 -1,50605601386582723E-002 3 -6,28342132945850062E-004 -1,60442087410548505E-004 4 -5,01773738245686937E-006 1,96510520421292243E-005 5 4,91532402815628573E-007 1,25508828071314404E-007 6 2,61574064092538459E-009 -1,02440704959186378E-008 7 -1,82980896307503383E-010 -4,67226931040562628E-011 8 -7,30200571897288121E-013 2,85969730155159058E-012 9 3,97249117959188117E-014 1,01434973701769460E-014 10 1,26810657786156911E-016 -4,96347754563863930E-016 11 -5,64031539277118102E-018 -1,35525271560688054E-018 12 -1,41172157875716723E-020 COEFFICIENTS AY AND ADY ON 2 SEGMENT: XI= 5,00000000000000000E-001 XE= 1,00000000000000000E+000 SOLUTION Y AT THE END OF THE SEGMENT [XI,XE],i.e. Y(XE)] Y= 1,87758256189037274E+000 1,47942553860420301E+000 Number of Chebyshev coefficients for 1 component ----------------------------------------------------------------------- coefficient for Y for Y' -------------------------------------------------------------------------------- 0 3,90766440054602750E+000 -4,87106693080399111E-001 1 -6,13690356801086292E-002 -2,40340620085585743E-001 2 -1,50605601386582234E-002 3,84559236046992270E-003 3 1,60442087410516240E-004 6,28342132945831570E-004 4 1,96510520421454309E-005 -5,01773738246705214E-006 5 -1,25508828077628389E-007 -4,91532402822218384E-007 6 -1,02440704941078701E-008 2,61574063808339878E-009 7 4,67226935551683859E-011 1,82980894959382930E-010 8 2,85969718665145619E-012 -7,30201006030828708E-013 9 -1,01434408419805699E-014 -3,97249863102664904E-014 10 -4,96631976469315110E-016 1,26734591772325511E-016 11 1,44016581559460808E-018 5,57180727871841819E-018 12 5,80396591533168561E-020 Number of Chebyshev coefficients for 2 component ----------------------------------------------------------------------- coefficient for Y for Y' -------------------------------------------------------------------------------- 0 2,48710669308039911E+000 1,90766440054602754E+000 1 2,40340620085585716E-001 -6,13690356801085922E-002 2 -3,84559236046994547E-003 -1,50605601386581965E-002 3 -6,28342132945848056E-004 1,60442087410535353E-004 4 5,01773738245645644E-006 1,96510520421568443E-005 5 4,91532402816219802E-007 -1,25508828071253418E-007 6 -2,61574064096321873E-009 -1,02440704919477474E-008 7 -1,82980896236352615E-010 4,67226949810812739E-011 8 7,30200601861078630E-013 2,85969728799906342E-012 9 3,97249121723778993E-014 -1,01435380277584142E-014 10 -1,26812775368525046E-016 -4,96388412145332136E-016 11 -5,64077741074241064E-018 1,48400172358953419E-018 12 1,54583512873909812E-020 ---------------------------------------------------------------- H0= 0,5000000000000000 K=11 INIAPR=1 IMAX=13 Y = 1,87758256189037274E+000 1,47942553860420301E+000 YT= 1,87758256189037272E+000 1,47942553860420300E+000 DELTA Y = -2,53703308361608038E-017 -6,28837260041592572E-018 **************************************************************** COEFFICIENTS AY AND ADY ON 1 SEGMENT: XI= 0,00000000000000000E+000 XE= 5,00000000000000000E-001 SOLUTION Y AT THE END OF THE SEGMENT [XI,XE],i.e. Y(XE)] Y= 2,00000000000000002E+000 9,99999999999999991E-001 Number of Chebyshev coefficients for 1 component ----------------------------------------------------------------------- coefficient for Y for Y' -------------------------------------------------------------------------------- 0 3,90766440054602746E+000 4,87106693080399297E-001 1 6,13690356801086382E-002 -2,40340620085585541E-001 2 -1,50605601386582180E-002 -3,84559236046980881E-003 3 -1,60442087410513588E-004 6,28342132945947442E-004 4 1,96510520421478261E-005 5,01773738251730305E-006 5 1,25508828078587283E-007 -4,91532402782992055E-007 6 -1,02440704934431840E-008 -2,61574062618828186E-009 7 -4,67226933663339647E-011 1,82980902280779727E-010 8 2,85969729345183802E-012 7,30202326420159240E-013 9 1,01434582654892144E-014 -3,97245001379064461E-014 10 -4,96626470755157957E-016 -1,26668695064197090E-016 11 -1,43941698936587602E-018 5,61752250619051985E-018 12 5,85158594394845818E-020 Number of Chebyshev coefficients for 2 component ----------------------------------------------------------------------- coefficient for Y for Y' -------------------------------------------------------------------------------- 0 1,51289330691960088E+000 1,90766440054602739E+000 1 2,40340620085585707E-001 6,13690356801085685E-002 2 3,84559236046994481E-003 -1,50605601386582723E-002 3 -6,28342132945850062E-004 -1,60442087410548505E-004 4 -5,01773738245686937E-006 1,96510520421292243E-005 5 4,91532402815628573E-007 1,25508828071314404E-007 6 2,61574064092538459E-009 -1,02440704959186378E-008 7 -1,82980896307503383E-010 -4,67226931040562628E-011 8 -7,30200571897288121E-013 2,85969730155159058E-012 9 3,97249117959188117E-014 1,01434973701769460E-014 10 1,26810657786156911E-016 -4,96347754563863930E-016 11 -5,64031539277118102E-018 -1,35525271560688054E-018 12 -1,41172157875716723E-020 COEFFICIENTS AY AND ADY ON 2 SEGMENT: XI= 5,00000000000000000E-001 XE= 1,00000000000000000E+000 SOLUTION Y AT THE END OF THE SEGMENT [XI,XE],i.e. Y(XE)] Y= 1,87758256189037274E+000 1,47942553860420300E+000 Number of Chebyshev coefficients for 1 component ----------------------------------------------------------------------- coefficient for Y for Y' -------------------------------------------------------------------------------- 0 3,90766440054602750E+000 -4,87106693080399082E-001 1 -6,13690356801086285E-002 -2,40340620085585715E-001 2 -1,50605601386582227E-002 3,84559236046994615E-003 3 1,60442087410516760E-004 6,28342132945848712E-004 4 1,96510520421457733E-005 -5,01773738245607872E-006 5 -1,25508828077429693E-007 -4,91532402816033607E-007 6 -1,02440704940061556E-008 2,61574064110899126E-009 7 4,67226936003134992E-011 1,82980896261861810E-010 8 2,85969720487014515E-012 -7,30200508564696034E-013 9 -1,01434345362908515E-014 -3,97248498274794241E-014 10 -4,96630399330794842E-016 1,26778048245271602E-016 11 1,44065963915081366E-018 5,58211898416325315E-018 12 5,81470727517005536E-020 Number of Chebyshev coefficients for 2 component ----------------------------------------------------------------------- coefficient for Y for Y' -------------------------------------------------------------------------------- 0 2,48710669308039911E+000 1,90766440054602750E+000 1 2,40340620085585715E-001 -6,13690356801086248E-002 2 -3,84559236046994635E-003 -1,50605601386582229E-002 3 -6,28342132945848687E-004 1,60442087410516806E-004 4 5,01773738245605960E-006 1,96510520421456364E-005 5 4,91532402816002453E-007 -1,25508828077101333E-007 6 -2,61574064106641558E-009 -1,02440704944617412E-008 7 -1,82980896276042159E-010 4,67226940866144816E-011 8 7,30200588308551474E-013 2,85969699661972956E-012 9 3,97249087842461103E-014 -1,01435651328127263E-014 10 -1,26813452994882850E-016 -4,96435845990378377E-016 11 -5,64131643170884520E-018 1,51110677790167180E-018 12 1,57406956031424146E-020 ---------------------------------------------------------------- H0= 0,5000000000000000 K=11 INIAPR=2 IMAX=13 Y = 1,87758256189037274E+000 1,47942553860420300E+000 YT= 1,87758256189037272E+000 1,47942553860420300E+000 DELTA Y = -2,85145171363687666E-017 -2,49366499671666020E-018 ****************************************************************
2) Решается задача Коши из примера 1 также с разбиением интервала интегрирования [0, 1] на два элементарных сегмента длиной H = 0,5. В этом примере компоненты решения y1(x) и y2(x) рассматриваются как координаты, а компоненты производной решения y'1(x) и y'2(x) отождествляются с компонентами скорости. Для данного примера подпрограмма обработки результатов FTREAT2 устроена следующим образом. Коэффициенты Чебышёва для каждой координаты запоминаются (сохраняются) в отдельном массиве. Всего таких массивов четыре (по два массива на каждом сегменте). Коэффициенты Чебышёва для каждой компоненты скорости также запоминаются в отдельных массивах и таких массивов тоже четыре (по два массива на каждом сегменте). Эти массивы помещаются в глобальную структуру _ FIRST для первого сегмента и в глобальную структуру _ SECOND для второго сегмента. В этих же структурах размещаются значения координат в конце каждого сегмента (интервала) и границы каждого сегмента. Поскольку глобальные структуры _FIRST и _SECOND описаны в модуле Lstruct, то вычисленные коэффициенты Чебышёва будут доступны в главной программе. Приводятся фрагмент вызывающей программы, подпрограмма FSC вычисления значений правой части системы, подпрограмма FTREAT2 обработки результатов. Далее представлены значения параметров H, K, INIAPR, IMAX, приближенное решение Y, вычисленное в конце интервала XK = xf, точное решение YT (в точке xf) и абсолютная погрешность приближенного значения Y. Затем даются те же результаты, что и в примере 1, а именно: границы элементарных сегментов, значения координат в конце каждого сегмента, коэффициенты Чебышёва для координат и компонент скорости на каждом сегменте при значении параметра INIAPR = 1.
type FIRST = record elm1: Array [0..12] of Extended; // AY1 elm2: Array [0..12] of Extended; // AY2 elm3: Array [0..11] of Extended; // AV1 elm4: Array [0..11] of Extended; // AV2 elm5: Array [0..1] of Extended; // YA elm6: Array [0..1] of Extended; // INA end; type SECOND = record elm1: Array [0..12] of Extended; // BY1 elm2: Array [0..12] of Extended; // BY2 elm3: Array [0..11] of Extended; // BV1 elm4: Array [0..11] of Extended; // BV2 elm5: Array [0..1] of Extended; // YB elm6: Array [0..1] of Extended; // INB end; var _FIRST: FIRST; _SECOND: SECOND; Unit Fsc_p; interface uses SysUtils, Math, { Delphi } Lstruct, Lfunc; procedure Fsc(X :Extended; var Y :Array of Extended; var Z :Array of Extended; M :Integer); implementation procedure Fsc(X :Extended; var Y :Array of Extended; var Z :Array of Extended; M :Integer); var R,Q :Extended; begin Q := 0.5e0; R := 2.e0*X-1.e0; Z[0] := -2.e0*Q*(Y[1]-1.e0)+(1.e0-Exp(1.e0-Y[0]+Cos(Q*R)))/(1.e0+X); Z[1] := 2.e0*Q*(Y[0]-1.e0)+(1.e0-Exp(1.e0-Y[1]+Sin(Q*R)))/(1.e0+X); end; end. procedure FTREAT2(S :Integer; XI :Extended; XE :Extended; var Y :Array of Extended; var AY :Array of Extended; var ADY :Array of Extended; M :Integer; KP1 :Integer; KP2 :Integer); var I :Integer; label _10,_15,_20,_30,_35,_40; begin { } { AY1 - CHEBYSHEV COEFFICIENTS FOR 1 COORDINATE AT 1 INTERVAL } { AY2 - CHEBYSHEV COEFFICIENTS FOR 2 COORDINATE AT 1 INTERVAL } { } { AV1 - CHEBYSHEV COEFFICIENTS FOR 1 VELOCITY COMPONENT AT 1 INTERVAL } { AV2 - CHEBYSHEV COEFFICIENTS FOR 2 VELOCITY COMPONENT AT 1 INTERVAL } { } { BY1 - CHEBYSHEV COEFFICIENTS FOR 1 COORDINATE AT 2 INTERVAL } { BY2 - CHEBYSHEV COEFFICIENTS FOR 2 COORDINATE AT 2 INTERVAL } { } { BV1 - CHEBYSHEV COEFFICIENTS FOR 1 VELOCITY COMPONENT AT 2 INTERVAL } { BV2 - CHEBYSHEV COEFFICIENTS FOR 2 VELOCITY COMPONENT AT 2 INTERVAL } { } { YA - COORDINATES AT THE END OF 1 INTERVAL } { YB - COORDINATES AT THE END OF 2 INTERVAL } { } { INA - BOUNDARIES OF 1 INTERVAL } { INB - BOUNDARIES OF 2 INTERVAL } { } case S of 1: goto _10; 2: goto _30; end; { } { --------SAVING CHEBYSHEV COEFFICIENTS FOR COORDINATES AND } { -------- VELOCITY COMPONENTS AT THE FIRST INTERVAL } { }; _10: for I:=1 to KP2 do begin _FIRST.elm1[I-1] := AY[(I-1)*M]; _15: _FIRST.elm2[I-1] := AY[1+(I-1)*M]; end; { } for I:=1 to KP1 do begin _FIRST.elm3[I-1] := ADY[(I-1)*M]; _20: _FIRST.elm4[I-1] := ADY[1+(I-1)*M]; end; { } { --------SAVING COORDINATES AT THE END OF 1 INTERVAL } _FIRST.elm5[0] := Y[0]; _FIRST.elm5[1] := Y[1]; { } { --------SAVING BOUNDARIES OF 1 INTERVAL } _FIRST.elm6[0] := XI; _FIRST.elm6[1] := XE; exit; { } { --------SAVING CHEBYSHEV COEFFICIENTS FOR COORDINATES AND } { -------- VELOCITY COMPONENTS AT THE SECOND INTERVAL } { }; _30: for I:=1 to KP2 do begin _SECOND.elm1[I-1] := AY[(I-1)*M]; _35: _SECOND.elm2[I-1] := AY[1+(I-1)*M]; end; { } for I:=1 to KP1 do begin _SECOND.elm3[I-1] := ADY[(I-1)*M]; _40: _SECOND.elm4[I-1] := ADY[1+(I-1)*M]; end; { } { --------SAVING COORDINATES AT THE END OF 2 INTERVAL } _SECOND.elm5[0] := Y[0]; _SECOND.elm5[1] := Y[1]; { } { --------SAVING BOUNDARIES OF 2 INTERVAL } _SECOND.elm6[0] := XI; _SECOND.elm6[1] := XE; end; function TDE53E2: String; var M,K,IMAX,INIAPR,_i,KP1,KP2,J :Integer; XN,H,XK,H0,Q :Extended; DELY :Array [0..1] of Extended; YN :Array [0..1] of Extended; Y :Array [0..1] of Extended; RAB :Array [0..445] of Extended; YT :Array [0..1] of Extended; begin Result := ''; { результат функции } { } { AY1 - CHEBYSHEV COEFFICIENTS FOR 1 COORDINATE AT 1 INTERVAL } { AY2 - CHEBYSHEV COEFFICIENTS FOR 2 COORDINATE AT 1 INTERVAL } { } { AV1 - CHEBYSHEV COEFFICIENTS FOR 1 VELOCITY COMPONENT AT 1 INTERVAL } { AV2 - CHEBYSHEV COEFFICIENTS FOR 2 VELOCITY COMPONENT AT 1 INTERVAL } { } { BY1 - CHEBYSHEV COEFFICIENTS FOR 1 COORDINATE AT 2 INTERVAL } { BY2 - CHEBYSHEV COEFFICIENTS FOR 2 COORDINATE AT 2 INTERVAL } { } { BV1 - CHEBYSHEV COEFFICIENTS FOR 1 VELOCITY COMPONENT AT 2 INTERVAL } { BV2 - CHEBYSHEV COEFFICIENTS FOR 2 VELOCITY COMPONENT AT 2 INTERVAL } { } { YA - COORDINATES AT THE END OF 1 INTERVAL } { YB - COORDINATES AT THE END OF 2 INTERVAL } { } { INA - BOUNDARIES OF 1 INTERVAL } { INB - BOUNDARIES OF 2 INTERVAL } { } M := 2; Q := 0.5e0; XN := 0.0; YN[0] := Cos(Q)+1.e0; YN[1] := -Sin(Q)+1.e0; XK := 1.e0; H0 := 0.5e0; YT[0] := Cos(Q*(2.e0*XK-1.e0))+1.e0; YT[1] := Sin(Q*(2.e0*XK-1.e0))+1.e0; K := 11; IMAX := 13; { DO 42 INIAP0=1,2 } INIAPR := 1; H := H0; DE53E(Fsc,FTREAT2,M,XN,YN,XK,K,INIAPR,IMAX,H,Y, RAB); DELY[0] := YT[0]-Y[0]; DELY[1] := YT[1]-Y[1]; // Операторы вывода на печать: H0, K, INIAPR, Y, YT, DELY; // коэффициенты: AY1,AY2, AV1,AV2, BY1,BY2, BV1,BV2 . . . . . . . . . . . . . . . . . . . . . . . . . end; Результаты: --------------------------------------------------------- H0= 0,5000000000000000 K=11 INIAPR=1 IMAX=13 Y = 1,87758256189037274E+000 1,47942553860420301E+000 YT= 1,87758256189037272E+000 1,47942553860420300E+000 DELTA Y = -2,53703308361608038E-017 -6,28837260041592572E-018 **************************************************************** CHEBYSHEV COEFFICIENTS AT 1 SEGMENT INA[0]= 0,0000000000000000 COORDINATES AT THE END OF 1 SEGMENT: YA= 2,00000000000000002E+000 Number of Coefficients for 1 coordinate and 1 velocity component ----------------------------------------------------------------------- coefficient coordinate velocity -------------------------------------------------------------------------------- 0 3,90766440054602746E+000 4,87106693080399297E-001 1 6,13690356801086382E-002 -2,40340620085585541E-001 2 -1,50605601386582180E-002 -3,84559236046980881E-003 3 -1,60442087410513588E-004 6,28342132945947442E-004 4 1,96510520421478261E-005 5,01773738251730305E-006 5 1,25508828078587283E-007 -4,91532402782992055E-007 6 -1,02440704934431840E-008 -2,61574062618828186E-009 7 -4,67226933663339647E-011 1,82980902280779727E-010 8 2,85969729345183802E-012 7,30202326420159240E-013 9 1,01434582654892144E-014 -3,97245001379064461E-014 10 -4,96626470755157957E-016 -1,26668695064197090E-016 11 -1,43941698936587602E-018 5,61752250619051985E-018 12 5,85158594394845818E-020 Number of Coefficients for 2 coordinate and 2 velocity component ----------------------------------------------------------------------- coefficient coordinate velocity -------------------------------------------------------------------------------- 0 1,51289330691960088E+000 1,90766440054602739E+000 1 2,40340620085585707E-001 6,13690356801085685E-002 2 3,84559236046994481E-003 -1,50605601386582723E-002 3 -6,28342132945850062E-004 -1,60442087410548505E-004 4 -5,01773738245686937E-006 1,96510520421292243E-005 5 4,91532402815628573E-007 1,25508828071314404E-007 6 2,61574064092538459E-009 -1,02440704959186378E-008 7 -1,82980896307503383E-010 -4,67226931040562628E-011 8 -7,30200571897288121E-013 2,85969730155159058E-012 9 3,97249117959188117E-014 1,01434973701769460E-014 10 1,26810657786156911E-016 -4,96347754563863930E-016 11 -5,64031539277118102E-018 -1,35525271560688054E-018 12 -1,41172157875716723E-020 CHEBYSHEV COEFFICIENTS AT 2 SEGMENT INB[0]= 0,5000000000000000 COORDINATES AT THE END OF 2 SEGMENT: YB= 1,87758256189037274E+000 Number of Coefficients for 1 coordinate and 1 velocity component ----------------------------------------------------------------------- coefficient coordinate velocity -------------------------------------------------------------------------------- 0 3,90766440054602750E+000 -4,87106693080399111E-001 1 -6,13690356801086292E-002 -2,40340620085585743E-001 2 -1,50605601386582234E-002 3,84559236046992270E-003 3 1,60442087410516240E-004 6,28342132945831570E-004 4 1,96510520421454309E-005 -5,01773738246705214E-006 5 -1,25508828077628389E-007 -4,91532402822218384E-007 6 -1,02440704941078701E-008 2,61574063808339878E-009 7 4,67226935551683859E-011 1,82980894959382930E-010 8 2,85969718665145619E-012 -7,30201006030828708E-013 9 -1,01434408419805699E-014 -3,97249863102664904E-014 10 -4,96631976469315110E-016 1,26734591772325511E-016 11 1,44016581559460808E-018 5,57180727871841819E-018 12 5,80396591533168561E-020 Number of Coefficients for 2 coordinate and 2 velocity component ----------------------------------------------------------------------- coefficient coordinate velocity -------------------------------------------------------------------------------- 0 2,48710669308039911E+000 1,90766440054602754E+000 1 2,40340620085585716E-001 -6,13690356801085922E-002 2 -3,84559236046994547E-003 -1,50605601386581965E-002 3 -6,28342132945848056E-004 1,60442087410535353E-004 4 5,01773738245645644E-006 1,96510520421568443E-005 5 4,91532402816219802E-007 -1,25508828071253418E-007 6 -2,61574064096321873E-009 -1,02440704919477474E-008 7 -1,82980896236352615E-010 4,67226949810812739E-011 8 7,30200601861078630E-013 2,85969728799906342E-012 9 3,97249121723778993E-014 -1,01435380277584142E-014 10 -1,26812775368525046E-016 -4,96388412145332136E-016 11 -5,64077741074241064E-018 1,48400172358953419E-018 12 1,54583512873909812E-020 ****************************************************************
3) Решается задача Коши из примера 1 также с разбиением интервала интегрирования [0, 1] на два элементарных
сегмента длиной H = 0,5. Система уравнений в примере 1 описывает в трехмерном пространстве переменных
x, y1, y2 движение точки по цилиндрической поверхности. Ось кругового цилиндра параллельна
оси x и проходит через точку (0, 1, 1). Фазовая траектория этой системы на плоскости
y1, y2 -- окружность с центром в точке (1, 1) радиуса 1. При изменении x
точка (y1(x), y2(x)) совершает движение по дуге окружности. В примере 3
подпрограмма обработки результатов выполняет следующие действия.
а) По вычисленным подпрограммой DE53E коэффициентам Чебышёва AY находится решение
системы y1(x), y2(x) для нескольких равноотстоящих значений аргумента x, принадлежащих
элементарному сегменту [XI, XE] (число этих значений задается переменной NI).
б) Определяется расстояние от точки (y1(x), y2(x)) до точки (1, 1); все расстояния
запоминаются в массиве R.
в) Вычисляется возможное отклонение этого расстояния от постоянного значения (равного 1). Это отклонение может
быть следствием приближенного интегрирования системы уравнений из-за замены точного решения задачи частичной суммой
ряда с приближенными коэффициентами. Все отклонения запоминаются в массиве DELTR.
Массивы R и DELTR помещаются в глобальную структуру _ DELTR (описана в модуле Lstruct) вместе с переменной NI, представляющей число точек x,
взятых на элементарном сегменте. Поскольку глобальная структура _DELTR используется в подпрограмме обработки результатов FTREAT3
и в головной (вызывающей) программе, то на выходе из подпрограммы DE53E вычисленные в подпрограмме FTREAT3 массивы R и DELTR
будут доступны также и в главной программе. Приводятся фрагмент вызывающей программы, подпрограмма FSC вычисления
значений правой части системы, подпрограмма FTREAT3 обработки результатов. Далее представлены значения параметров
H, K, INIAPR, IMAX, приближенное решение Y, вычисленное в конце интервала XK = xf, точное
решение YT (в точке xf) и абсолютная погрешность приближенного значения Y. Затем даются расстояния от
точек (y1(x), y2(x)) до точки (1, 1) на фазовой плоскости и отклонения этих расстояний
от постоянного значения, равного 1, для каждого элементарного сегмента. Эти данные приводятся для двух значений параметра
INIAPR (1 и 2).
type DELTR = record elm1: Array [0..31] of Extended; // R elm2: Array [0..31] of Extended; // DELTR elm3: Integer; // NI end; var _DELTR : DELTR; Unit FSC_p; interface uses SysUtils, Math, { Delphi } Lstruct, Lfunc; procedure FSC(X :Extended; var Y :Array of Extended; var Z :Array of Extended; M :Integer); implementation procedure FSC(X :Extended; var Y :Array of Extended; var Z :Array of Extended; M :Integer); var R,Q :Extended; begin Q := 0.5e0; R := 2.e0*X-1.e0; Z[0] := -2.e0*Q*(Y[1]-1.e0)+(1.e0-Exp(1.e0-Y[0]+Cos(Q*R)))/(1.e0+X); Z[1] := 2.e0*Q*(Y[0]-1.e0)+(1.e0-Exp(1.e0-Y[1]+Sin(Q*R)))/(1.e0+X); end; end. procedure FTREAT3(S :Integer; XI :Extended; XE :Extended; var Y :Array of Extended; var AY :Array of Extended; var ADY :Array of Extended; M :Integer; KP1 :Integer; KP2 :Integer); var J :Integer; HI,X :Extended; YI :Array [0..1] of Extended; BK :Array [0..3] of Extended; label _10; begin HI := (XE-XI)/(_DELTR.elm3); X := XI; for J:=1 to _DELTR.elm3 do begin X := X+HI; { } { ------CALCULATION OF SOLUTION YI AT POINT X (BY ALGORITHM CLENSHAW) } { } DE70EC(M,KP1,X,AY,YI,BK); { } _DELTR.elm1[(J-1)+(S-1)*16] := Sqrt(IntPower(YI[0]-1.e0,2)+IntPower(YI[1]-1.e0,2)); _DELTR.elm2[(J-1)+(S-1)*16] := 1.e0-_DELTR.elm1[(J-1)+(S-1)*16]; _10: end; end; function tde53e3: String; var S,M,K,IMAX,INIAP0,INIAPR,_i,J :Integer; XN,H,XK,H0,Q :Extended; DELY :Array [0..1] of Extended; YN :Array [0..1] of Extended; Y :Array [0..1] of Extended; RAB :Array [0..445] of Extended; YT :Array [0..1] of Extended; label _10,_42; begin Result := ''; { результат функции } _DELTR.elm3 := 16; M := 2; Q := 0.5e0; XN := 0.0; YN[0] := Cos(Q)+1.e0; YN[1] := -Sin(Q)+1.e0; XK := 1.e0; H0 := 0.5e0; YT[0] := Cos(Q*(2.e0*XK-1.e0))+1.e0; YT[1] := Sin(Q*(2.e0*XK-1.e0))+1.e0; K := 11; IMAX := 13; for INIAP0:=1 to 2 do begin INIAPR := INIAP0; H := H0; DE53E(FSC,FTREAT3,M,XN,YN,XK,K,INIAPR,IMAX,H,Y, RAB); DELY[0] := YT[0]-Y[0]; DELY[1] := YT[1]-Y[1]; // Операторы вывода на печать: H0, K, INIAPR, IMAX,Y,YT, DELY; // коэффициенты фазового движения . . . . . . . . . . . . . . . . . . . . . . . . . end; Результаты: --------------------------------------------------------- H0= 0,5000000000000000 K=11 INIAPR=1 IMAX=13 Y = 1,87758256189037274E+000 1,47942553860420301E+000 YT= 1,87758256189037272E+000 1,47942553860420300E+000 DELTA Y = -2,53703308361608038E-017 -6,28837260041592572E-018 ---------------------------------------------------------------- Number of Phase motion for 1 segment ----------------------------------------------------------------------- point distance error -------------------------------------------------------------------------------- 1 1,00000000000000000E+000 1,62630325872825665E-019 2 1,00000000000000000E+000 1,08420217248550443E-019 3 1,00000000000000000E+000 5,42101086242752217E-020 4 1,00000000000000000E+000 5,42101086242752217E-020 5 1,00000000000000000E+000 0,00000000000000000E+000 6 1,00000000000000000E+000 0,00000000000000000E+000 7 1,00000000000000000E+000 1,08420217248550443E-019 8 1,00000000000000000E+000 5,42101086242752217E-020 9 1,00000000000000000E+000 5,42101086242752217E-020 10 1,00000000000000000E+000 0,00000000000000000E+000 11 1,00000000000000000E+000 0,00000000000000000E+000 12 1,00000000000000000E+000 0,00000000000000000E+000 13 1,00000000000000000E+000 5,42101086242752217E-020 14 1,00000000000000000E+000 -1,08420217248550443E-019 15 1,00000000000000000E+000 -1,08420217248550443E-019 16 1,00000000000000000E+000 -1,08420217248550443E-019 Number of Phase motion for 2 segment ----------------------------------------------------------------------- point distance error -------------------------------------------------------------------------------- 1 1,00000000000000002E+000 -2,46113893154209507E-017 2 1,00000000000000002E+000 -2,48282297499180515E-017 3 1,00000000000000002E+000 -2,49366499671666020E-017 4 1,00000000000000003E+000 -2,50450701844151524E-017 5 1,00000000000000003E+000 -2,50450701844151524E-017 6 1,00000000000000003E+000 -2,51534904016637029E-017 7 1,00000000000000003E+000 -2,52619106189122533E-017 8 1,00000000000000003E+000 -2,53703308361608038E-017 9 1,00000000000000003E+000 -2,53703308361608038E-017 10 1,00000000000000003E+000 -2,54787510534093542E-017 11 1,00000000000000003E+000 -2,54787510534093542E-017 12 1,00000000000000003E+000 -2,54787510534093542E-017 13 1,00000000000000003E+000 -2,55871712706579046E-017 14 1,00000000000000003E+000 -2,54787510534093542E-017 15 1,00000000000000003E+000 -2,53703308361608038E-017 16 1,00000000000000003E+000 -2,52619106189122533E-017 **************************************************************** H0= 0,5000000000000000 K=11 INIAPR=2 IMAX=13 Y = 1,87758256189037274E+000 1,47942553860420300E+000 YT= 1,87758256189037272E+000 1,47942553860420300E+000 DELTA Y = -2,85145171363687666E-017 -2,49366499671666020E-018 ---------------------------------------------------------------- Number of Phase motion for 1 segment ----------------------------------------------------------------------- point distance error -------------------------------------------------------------------------------- 1 1,00000000000000000E+000 1,62630325872825665E-019 2 1,00000000000000000E+000 1,08420217248550443E-019 3 1,00000000000000000E+000 5,42101086242752217E-020 4 1,00000000000000000E+000 5,42101086242752217E-020 5 1,00000000000000000E+000 0,00000000000000000E+000 6 1,00000000000000000E+000 0,00000000000000000E+000 7 1,00000000000000000E+000 1,08420217248550443E-019 8 1,00000000000000000E+000 5,42101086242752217E-020 9 1,00000000000000000E+000 5,42101086242752217E-020 10 1,00000000000000000E+000 0,00000000000000000E+000 11 1,00000000000000000E+000 0,00000000000000000E+000 12 1,00000000000000000E+000 0,00000000000000000E+000 13 1,00000000000000000E+000 5,42101086242752217E-020 14 1,00000000000000000E+000 -1,08420217248550443E-019 15 1,00000000000000000E+000 -1,08420217248550443E-019 16 1,00000000000000000E+000 -1,08420217248550443E-019 Number of Phase motion for 2 segment ----------------------------------------------------------------------- point distance error -------------------------------------------------------------------------------- 1 1,00000000000000002E+000 -2,47198095326695011E-017 2 1,00000000000000002E+000 -2,48282297499180515E-017 3 1,00000000000000002E+000 -2,49366499671666020E-017 4 1,00000000000000003E+000 -2,50450701844151524E-017 5 1,00000000000000003E+000 -2,50450701844151524E-017 6 1,00000000000000003E+000 -2,51534904016637029E-017 7 1,00000000000000003E+000 -2,53703308361608038E-017 8 1,00000000000000003E+000 -2,53703308361608038E-017 9 1,00000000000000003E+000 -2,54787510534093542E-017 10 1,00000000000000003E+000 -2,56955914879064551E-017 11 1,00000000000000003E+000 -2,58040117051550055E-017 12 1,00000000000000003E+000 -2,58040117051550055E-017 13 1,00000000000000003E+000 -2,59124319224035560E-017 14 1,00000000000000003E+000 -2,60208521396521064E-017 15 1,00000000000000003E+000 -2,61292723569006569E-017 16 1,00000000000000003E+000 -2,62376925741492073E-017 ****************************************************************