Текст подпрограммы и версий ( Фортран ) ask2c.zip |
Тексты тестовых примеров ( Фортран ) task2c.zip |
Текст подпрограммы и версий ( Си ) ask2c_c.zip |
Тексты тестовых примеров ( Си ) task2c_c.zip |
Текст подпрограммы и версий ( Паскаль ) ask2c_p.zip |
Тексты тестовых примеров ( Паскаль ) task2c_p.zip |
Решение комплексной системы линейных алгебраических уравнений А*x = b с клеточно - теплицевой матрицей А специального вида.
Матрица А состоит из Р на Р клеток размера М на М. Обозначим SK, RK, 1 ≤ К ≤ Р, соответственно К - ю клетку первой клеточной строки и К - ю клетку первого клеточного столбца матрицы А. В данном случае под специальным видом клеточно - теплицевой матрицы А понимается выполнение соотношений
RK = ( LSKN )* , 1 ≤ K ≤ P ,
где L и N - фиксированные симметрические матрицы престановок (" * " означает комплексное сопряжение).
В подпрограмме реализован алгорифм, который является видоизменением вычислительной схемы алгорифма для решения системы уравнений с клеточно - теплицевой матрицей общего вида. Это видоизменение обеспечивает значительную экономию памяти ЭВМ.
С.Н.Воеводина, Решение системы уравнений с клеточно - теплицевыми матрицами. Сб. "Вычислительные методы и программирование", вып.24, Изд-во МГУ, 1975.
SUBROUTINE ASK2C (A1, B, Y, B3, L, N, C, Q, M, P)
Параметры
A1 - | трехмерный М на М на Р массив, в котором задается первая клеточная строка матрицы системы (тип: комплексный); |
B - | двумерный М на Р массив, в котором задается вектор правой части (тип: комплексный); |
Y - | двумерный М на Р массив, в котором запоминается вектор вычисленного решения (тип: комплексный); |
L, N - | векторы длины М, в которых задаются матрицы перестановок (тип: целый); |
B3 - | трехмерный М на М на Р массив, используемый подпрограммой как рабочий (тип: комплексный); |
C - | трехмерный М на М на 3 массив, используемый подпрограммой как рабочий (тип: комплексный); |
Q - | вектор длины М, используемый как рабочий (тип: целый); |
M - | заданный порядок клетки (тип: целый); |
P - | заданное число клеток в клеточной строке или столбце (тип: целый). |
Версии: нет
Вызываемые подпрограммы: нет
Замечания по использованию
1. |
В массиве В3 по окончании работы подпрограммы запоминается последний клеточный столбец матрицы, являющейся обратной для матрицы исходной системы. | |
2. | Вектор L определяет симметрическую матрицу перестановок следующим образом: К - я компонента вектора L есть номер строки, которая переставляется с К - й. Аналогично, К - я компонента вектора N есть номер столбца переставляемого с К - м столбцом. |
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 / (1., 0.), (0., 0.), (0., 0.), (1., 0.), (0., 0.), (0., 0.), * (0., 0.), (0., 0.), (1., 0.), (0., 0.), (0., 1.), (1., 0.) / DATA B / (2., 1.), (2., 0.), (1., 0.), (1., 0.), (2., 0.), (2., -1.) / DATA L /2, 1/ DATA N /2, 1/ P = 3 M = 2 CALL ASK2C (A1, B, Y, B3, L, N, C, Q, M, P) Результат: Y = ( (1., 0.), (1., 0.), (1., 0.), (1., 0.), (1., 0.), (1., 0.) )