Текст подпрограммы и версий ( Фортран ) de31r.zip , de31d.zip |
Тексты тестовых примеров ( Фортран ) tde31r.zip , tde31d.zip |
Текст подпрограммы и версий ( Си ) de31r_c.zip , de31d_c.zip |
Тексты тестовых примеров ( Си ) tde31r_c.zip , tde31d_c.zip |
Текст подпрограммы и версий ( Паскаль ) de31r_p.zip , de31e_p.zip |
Тексты тестовых примеров ( Паскаль ) tde31r_p.zip , tde31e_p.zip |
Вычисление решения задачи Коши для жестких линейных однородных систем обыкновенных дифференциальных уравнений первого порядка с переменными коэффициентами экспоненциальным методом.
Решается задача Коши для жесткой линейной однородной системы М обыкновенных дифференциальных уравнений первого порядка с переменными коэффициентами
(1) Y ' = A(x) Y
здесь Y = ( y1, ..., yM ), А(x) - квадратная вещественная матрица порядка M, элементами которой являются трижды непрерывно дифференцируемые функции. Начальные значения заданы в точке XN :
Y(XN) = YN , YN = ( y10,..., yM0 ) ,
Предполагается, что матрица A (x) имеет все собственные числа с отрицательными вещественными частями, среди которых встречаются большие по абсолютной величине. Решение вычисляется в одной точке XK (которая является концом интервала интегрирования).
Интервал интегрирования разбивается на NS равных частей длины T, на каждой из которых исходная система уравнений (1) аппроксимируется системой уравнений с постоянными коэффициентами
~ ~ ~ ~ (2) Y ' = A Y , A = CONST.
Решение системы (2) вычисляется с помощью матричной экспоненты
~ (3) EXP( A T ) = ~ N = [ EXP( A H ) ] , H = T/N , N > 0
Значения N и NS задаются пользователем при обращении к подпрограмме, причем значение N выбирается таким образом, чтобы выполнялось условие
(4) max || A(x) H || ≤ 1 XN ≤ x ≤ XK
(в качестве || A(x) H || можно взять максимальную сумму модулей элементов матрицы A (x) H по стpокам).
С.Ф.Залеткин, O численном решении задачи Коши для обыкновенных линейных однородных дифференциальных уравнений на больших отрезках интегрирования, "Вычислительные методы и программирование", вып.26, Изд-во МГУ, 1977.
SUBROUTINE DE31R (FA, M, XN, YN, XK, N, NS, Y, A, E, R, R1, R2, R3, IERR)
Параметры
FA - |
подпрограмма вычисления матрицы A(x) в
любой точке X интервала интегрирования.
Первый оператор подпрограммы должен иметь вид: SUBROUTINE FA(A, X, M). Здесь A - двумерный массив размера M*M, в который помещается матрица системы, вычисленная при значении аргумента X, т.е. A (x) (тип параметров A и X: вещественный); |
M - | количество уравнений в системе (тип: целый); |
XN, YN - | начальные значения аргумента и решения; YN представляет одномерный массив длины M (тип: вещественный); |
XK - | значение аргумента, при котоpом требуется вычислить решение задачи Коши (конец интервала интегрирования). XK может быть больше, меньше или pавно XN (тип: вещественный); |
N - |
целое число равных частей, на которые
делится отрезок интегрирования системы
линейных дифференциальных уравнений с
постоянными коэффициентами; при обращении к
подпрограмме параметр N выбирается таким образом, чтобы || A(x)*( ((XK - XN)/NS)/N )|| ≤ 1 для XN ≤ x ≤ XK (см. замечания по использованию); |
NS - | число равных частей ,на которые разбивается интервал интегрирования. NS должно быть таким, чтобы система уравнений (2) достаточно хорошо аппроксимировала исходную систему уравнений с переменными коэффициентами; NS > 0 (тип: целый); |
Y - | искомое решение задачи Коши, вычисленное подпрограммой при значении аргумента XK; Y представляет одномерный массив длины M. В случае совпадения значений параметров XN и XK значение Y полагается равным начальному значению YN (тип: вещественный); |
A, E - R1, R2 | вещественные двумерные рабочие массивы размеpа M*M; |
R, R3 - | вещественные одномерные рабочие массивы длины M; |
IERR - | целая переменная, служащая для сообщения об ошибках, обнаруженных в процессе работы подпрограммы; при этом: |
IERR=65 - | когда значение параметра N меньше 1; |
IERR=66 - | когда значение параметра NS меньше 1. |
В каждом из этих случаев интегрирование системы прекращается. |
Версии
DE31D - | вычисление решения задачи Коши для линейной однородной системы обыкновенных дифференциальных уравнений первого порядка с переменными коэффициентами экспоненциальным методом с повышенной точностью. При этом параметры XN, YN, XK, Y, A, E, R, R1, R2, R3, а также параметры A, X в подпрограмме FA должны иметь тип DOUBLE PRECISION. |
Вызываемые подпрограммы
UTDE10 - | подпрограмма выдачи диагностических сообщений при работе подпрограммы DE31R. |
UTDE11 - | подпрограмма выдачи диагностических сообщений при работе подпрограммы DE31D. |
Замечания по использованию
Значение параметра N, задаваемое при обращении к
подпрограмме таким образом, чтобы |
Использование подпрограммы иллюстрируется на примере:
y1' = - (2 + x) y1 / (1 + x) + 20 x y2 , y2' = -20 x y1 - (2 + x) y2 / (1 + x) , y1(0) = 0 , y2(0) = 1 , 0 ≤ x ≤ 6 .
Приводятся подпрограмма вычисления матрицы системы и фрагмент вызывающей программы, а также результаты счета.
SUBROUTINE FA (A, X, M) DIMENSION A(M, M) A(1, 1) = - (2. + X)/ (1. + X) A(M, M) = A(1, 1) A(M, 1) = X* (-20.0) A(1, M) = -A(M, 1) RETURN END REAL YN(2), Y(2), A(2, 2), E(2, 2), R(2), R1(2, 2), R2(2, 2), R3(2) EXTERNAL FA M = 2 XN = 0. YN(1) = 0. YN(2) = 1. XK = 6. N = 128 IS1 = 128 CALL DE31R (FA, M, XN, YN, XK, N, IS1, Y, A, E, R, R1, R2, R3, * IERR) Результаты: Y(1) = 0.3395896401 * 10-3 Y(2) = -0.1004661347 * 10-3 IERR = 0