Текст подпрограммы и версий ( Фортран ) ask1r.zip , ask1d.zip , ask1c.zip |
Тексты тестовых примеров ( Фортран ) task1r.zip , task1d.zip , task1c.zip |
Текст подпрограммы и версий ( Си ) ask1r_c.zip , ask1d_c.zip , ask1c_c.zip |
Тексты тестовых примеров ( Си ) task1r_c.zip , task1d_c.zip , task1c_c.zip |
Текст подпрограммы и версий ( Паскаль ) ask1r_p.zip , ask1e_p.zip , ask1c_p.zip |
Тексты тестовых примеров ( Паскаль ) task1r_p.zip , task1e_p.zip , task1c_p.zip |
Решение вещественной системы линейных алгебраических уравненений Аx = b с клеточно - теплицевой матрицей А специального вида.
Матрица А состоит из Р на Р клеток размера М на М. В силу клеточно - теплицевости А полностью определяется своими первой клеточной строкой и первым клеточным столбцом.
Обозначим SK, RK, 1 ≤ К ≤ Р соответственно К - ю клетку первой клеточной строки и К - ю клетку первого клеточного столбца матрицы А. В данном случае под специальным видом матрицы А понимается выполнение соотношений
RK = L SK N , 1 ≤ K ≤ P ,
где L и N - некоторые фиксированные симметричные матрицы перестановок.
В подпрограмме реализован алгорифм, который является видоизменением вычислительной схемы алгорифма для решения системы уравнений с клеточно - теплицевой матрицей общего вида. Это видоизменение обеспечивает значительную экономию памяти ЭВМ.
С.Н.Воеводина, Решение системы уравнений с клеточно-теплицевыми матрицами. Сб. "Вычислительные методы и программирование", вып.24, Изд-во МГУ, 1975.
SUBROUTINE ASK1R (A1, B, Y, B3, L, N, C, Q, M, P)
Параметры
A1 - | трехмерный М на М на Р массив, в котором задается первая клеточная строка матрицы системы (тип: вещественный); |
B - | двумерный М на Р массив, в котором задается вектор правой части исходной системы (тип: вещественный); |
Y - | двумерный М на Р массив, в котором запоминается вектор вычисленного решения (тип: вещественный); |
B3 - | трехмерный М на М на Р массив, используемый подпрограммой как рабочий (тип: вещественный); |
L, N - | векторы длины М, в которых задаются две матрицы перестановок (тип: целый); |
C - | трехмерный М на М на 3 массив, используемый подпрограммой как рабочий (тип: вещественный); |
Q - | вектор длины М, используемый как рабочий (тип: целый); |
M - | заданный порядок клетки (тип: целый); |
P - | заданное число клеток в клеточной строке или столбце (тип: целый). |
Версии
ASK1D - | решение системы линейных алгебраических уравнений А*x = b с клеточно - теплицевой матрицей специального вида для вещественных А, b, заданных с двойной точностью. |
ASK1C - | решение системы линейных алгебраических уравнений А*x = b с клеточно - теплицевой матрицей специального вида для комплексных А, b. |
Вызываемые подпрограммы: нет
Замечания по использованию
1. |
В массиве В3 по окончании работы подпрограммы запоминается последний клеточный столбец матрицы, являющейся обратной для матрицы исходной системы. | |
2. |
Вектор L определяет симметричную матрицу перестановок следующим образом: K - я компонента вектора L есть номер строки, которая переставляется с К - ой. Аналогично, К - я компонента вектора N есть номер столбца, переставляемого с К - м столбцом. | |
3. |
В подпрограмме АSК1D массивы А1, В, Y, В3, С имеют тип DОUВLЕ РRЕСISIОN. | |
4. | В подпрограмме АSК1С массивы А1, В, Y, В3, С имеют тип СОМРLЕХ. |
1. DIMENSION A1(3, 3, 3), B(3, 3), Y(3, 3), B3(3, 3, 3), L(3), N(3), * C(3, 3, 3), Q(3) INTEGER M, P, Q, L, N DATA A1 /1., 1., 0., 0., 1., 1., 1., 0., 1., 0., 0., 0., 0., 0., 0., * 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0./ DATA B /3., 2., 2., 2., 2., 2., 3., 2., 2./ DATA L /1, 3, 2/ DATA N /3, 2, 1/ M = 3 P = 3 CALL ASK1R (A1, B, Y, B3, L, N, C, Q, M, P) Результат: Y = (1., 1., 1., 1., 1., 1., 1., 1., 1.) 2. DIMENSION A1(2, 2, 3), B(2, 3), Y(2, 3), B3(2, 2, 3), L(2), N(2), * C(2, 2, 3), Q(2) INTEGER M, P, Q, L, N DOUBLE PRECISION A1, B3, C, B, Y DATA A1 /2.0D0, 1.0D0, 3.0D0, 2.0D0, 4.0D0, 2.0D0, 6.0D0, * 4.0D0, -2.0D0, -1.0D0, -3.0D0, -2.0D0/ DATA B /10.0D0, 6.0D0, 25.0D0, 15.0D0, 10.0D0, 6.0D0/ DATA L /1, 2/ DATA N /1, 2/ M = 2 P = 3 CALL ASK1D (A1, B, Y, B3, L, N, C, Q, M, P) Результат: Y = (1., 1., 1., 1., 1., 1.) 3. DIMENSION A1(2, 2, 3), B(2, 3), Y(2, 3), B3(2, 2, 3), L(2), N(2), * C(2, 2, 3), Q(2) INTEGER M, P, Q, L, N COMPLEX A1, B3, C, B, Y DATA A1 / (2., 0.), (1., 0.), (3., 0.), (2., 0.), (4., 0.), * (2., 0.), (6., 0.), (4., 0.), (-2., 0.), (-1., 0.), * (-3., 0.), (-2., 0.) / DATA B / (10., 0.), (6., 0.), (25., 0.), (15., 0.), (10., 0.), * (6., 0.) / DATA L /1, 2/ DATA N /1, 2/ P = 3 M = 2 CALL ASK1C (A1, B, Y, B3, L, N, C, Q, M, P) Результат: Y = ( (1., 0.), (1., 0.), (1., 0.), (1., 0.), (1., 0.), (1., 0.) )