Текст подпрограммы и версий ( Фортран ) asp0r.zip , asp0d.zip , asp0c.zip |
Тексты тестовых примеров ( Фортран ) tasp0r.zip , tasp0d.zip , tasp0c.zip |
Текст подпрограммы и версий ( Си ) asp0r_c.zip , asp0d_c.zip , asp0c_c.zip |
Тексты тестовых примеров ( Си ) tasp0r_c.zip , tasp0d_c.zip , tasp0c_c.zip |
Текст подпрограммы и версий ( Паскаль ) asp0r_p.zip , asp0e_p.zip , asp0c_p.zip |
Тексты тестовых примеров ( Паскаль ) tasp0r_p.zip , tasp0e_p.zip , tasp0c_p.zip |
Нахождение нормального псевдорешения переопределенной системы линейных алгебраических уравнений полного ранга методом отражений.
Находится нормальное псевдорешение системы АX = B, где А - матрица полного ранга размера N на М (N ≥ М), В - заданный вектор длины N. Для решения используется нормализованное приведение матрицы системы к верхней треугольной форме R с помощью последовательности преобразований отражения
(1) QMQM-1...Q1AS = R ,
где Qi - соответствующие матрицы отражения, S - результирующая матрица перестановок, R - верхняя треугольная матрица размера N на М.
Из полученной треугольной системы
RY = QMQM-1...Q1B
находится нормальное псевдорешение Y, по которому затем определяется искомое решение Х = SY.
Д.К.Фадеев, В.Н.Фадеева, В.Н.Кублановская, О решении линейных алгебраических систем с прямоугольными матрицами. Тp. Мат. ин-та АН СССР, 1968, 96.
SUBROUTINE ASP0R (A, B, X, T, IS, N, M, L)
Параметры
A - | вещественный двумерный массив размера N на М (N ≥ М), в котором задается исходная матрица А; в результате работы подпрограммы в массиве А на соответствующих местах запоминаются наддиагональные элементы вычисленной верхней треугольной матрицы R; в остальной части массива А в последовательных столбцах запоминаются векторы, порождающие соответствующие матрицы отражения; |
B - | вещественный вектор длины N, в котором задается правая часть системы; |
X - | вещественный вектор длины М, в котором запоминается найденное псевдорешение системы; |
T - | вещественный вектор длины N, используемый подпрограммой как рабочий; в результате работы подпрограммы в первых М компонентах массива Т запоминаются диагональные элементы верхней треугольной матрицы R; |
IS - | целый вектор длины М, в котором запоминаются перестановки столбцов при проведении нормализованного процесса (1); в IS (k) запоминается номер столбца переставленного с k - ым столбцом на k - ом шаге преобразования; |
N, M - | число строк и столбцов исходной матрицы А, N ≥ М (тип: целый); |
L - | задает режим работы подпрограммы (тип: целый); при этом: |
L = 1 - | если система с данной матрицей А решается в первый раз; |
L ≠ 1 - | если система решается повторно с той же матрицей А, но с другой правой частью; в этом случае разложение (1) матрицы А не выполняется. |
Версии
ASP0D - | нахождение нормального псевдорешения переопределенной системы линейных алгебраических уравнений полного ранга, заданной с удвоенной точностью, методом отражений. |
ASP0C - | нахождение нормального псевдорешения комплексной переопределенной системы линейных алгебраических уравнений полного ранга методом отражений. |
Вызываемые подпрограммы: нет
Замечания по использованию
1. |
В подпрограмме АSР0С параметры А, В, Х, Т имеют тип СОМРLЕХ. | |
2. |
В подпрограмме АSР0D параметры А, В, Х, Т имеют тип DОUВLЕ РRЕСISIОN. | |
3. | При повторном решении системы с той же матрицей, информация, полученная ранее в массивах А, Т, IS, не должна портиться. |
DOUBLE PRECISION A, B, X, T DIMENSION A(6, 5), B(6), X(5), T(6), S(5) INTEGER S, P DATA A /36.D0, -630.D0 , 3360.D0 , -7560.D0 , 7560.D0, -2772.D0, -630.D0, 14700.D0, * -88200.D0, 211680.D0, -220500.D0, 83160.D0, 3360.D0, -88200.D0, * 564480.D0, -1411200.D0, 1512000.D0, -582120.D0, -7560.D0, * 211680.D0, -1411200.D0, 3628800.D0, -3969000.D0, 1552320.D0, * 7560.D0, -220500.D0, 1512000.D0, -3969000.D0, 4410000.D0, * -1746360.D0/ DATA B /463.D0, -13860.D0, 97020.D0, -258720.D0, 291060.D0, -116424.D0/ N = 6 M = 5 P = 1 CALL ASP0D (A, B, X, T, S, N, M, P) Результат: X = (1.00000000005, 0.500000000016, 0.3333333334, 0.25000000003, 0.20000000001)