|
Текст подпрограммы и версий ( Фортран ) asp1r.zip , asp1d.zip , asp1c.zip |
Тексты тестовых примеров ( Фортран ) tasp1r.zip , tasp1d.zip , tasp1c.zip |
|
Текст подпрограммы и версий ( Си ) asp1r_c.zip , asp1d_c.zip , asp1c_c.zip |
Тексты тестовых примеров ( Си ) tasp1r_c.zip , tasp1d_c.zip , tasp1c_c.zip |
|
Текст подпрограммы и версий ( Паскаль ) asp1r_p.zip , asp1e_p.zip , asp1c_p.zip |
Тексты тестовых примеров ( Паскаль ) tasp1r_p.zip , tasp1e_p.zip , tasp1c_p.zip |
Нахождение нормального решения неопределенной системы линейных алгебраических уравнений полного ранга методом отражений.
Находится нормальное решение системы АХ = В, где А - матрица полного ранга размера N на М (N ≤ М), В - заданный вектор длины N. Для решения используется нормализованное приведение матрицы системы к нижней треугольной форме L с помощью последовательности преобразований отражения
(1) SAQ1Q2...QN = L ,
где Qi - соответствующие матрицы отражения, 1 ≤ i ≤ N , S - результирующая матрица перестановок, L - нижняя треугольная матрица размера N на М.
Из полученной треугольной системы
LY = SB
находится нормальное решение Y, по которому затем определяется искомое решение Х = Q1Q2 ... QNY .
Д.К.Фадеев, В.Н.Кублановская, В.Н.Фадеева, О решении линейных алгебраических систем с прямоугольными матрицами. Тp. Мат. ин-та АН СССР, 1968, 96.
SUBROUTINE ASP1R (A, B, X, T, IS, N, M, L)
Параметры
| A - | вещественный двумерный массив размера N на М (N ≤ М), в котором задается исходная матрица А; в результате работы подпрограммы в массиве А на соответствуюших местах запоминаются поддиагональные элементы вычисленной нижней треугольной матрицы L; в остальной части массива в последовательных строках запоминаются векторы, порождающие соответствующие матрицы отражения; |
| B - | вещественный вектор длины N, в котором задается правая часть системы; |
| X - | вещественный вектор длины М , в котором запоминается найденное решение системы; |
| T - | вещественный вектор длины М, используемый подпрограммой как рабочий; в результате работы подпрограммы в первых N компонентах массива Т запоминаются диагональные элементы нижней треугольной матрицы L; |
| IS - | целый вектор длины N, в котором запоминаются перестановки строк при проведении нормализованного процесса (1); в IS (k) запоминается номер строки, переставленной с k - ой строкой на k - ом шаге преобразования; |
| N, M - | число строк и столбцов исходной матрицы А, N ≤ М (тип: целый); |
| L - | задает режим работы подпрограммы (тип: целый); при этом: |
| L = 1 - | если система с данной матрицей А решается в первый раз; |
| L ≠ 1 - | если система решается повторно с той же матрицей А, но с другой правой частью; в этом случае разложение (1) матрицы А не выполняется. |
Версии
| ASP1D - | нахождение нормального решения недоопределенной системы линейных алгебраических уравнений полного ранга, заданной с удвоенной точностью, методом отражений. |
| ASP1C - | нахождение нормального решения комплексной недоопределенной системы линейных алгебраических уравнений полного ранга методом отражений. |
Вызываемые подпрограммы: нет
Замечания по использованию
| 1. |
В подпрограмме АSР1С параметры А, В, Х, Т имеют тип СОМРLЕХ. | |
| 2. |
В подпрограмме АSР1D параметры А, В, Х, Т имеют тип DОUВLЕ РRЕСISIОN. | |
| 3. | При повторном решении системы с той же матрицей информация, полученная ранее в массивах А, Т, IS не должна портиться. |
DOUBLE PRECISION A, B, X, T
DIMENSION A(5, 6), B(5), X(6), T(6), IS(5)
INTEGER P
DATA A /36.D0, -630.D0, 3360.D0, -7560.D0, 7560.D0, -630.D0, 14700.D0,
* -88200.D0, 211680.D0, -220500.D0, 3360.D0, -88200.D0, 564480.D0,
* -1411200.D0, 1512000.D0, -7560.D0, 211680.D0, -1411200.D0,
* 3628800.D0, -3969000.D0, 7560.D0, -220500.D0, 1512000.D0,
* -3969000.D0, 4410000.D0, -2772.D0, 83160.D0, -582120.D0,
* 1552320.D0, -1746360.D0/
DATA B /53872.98D0, -1542941.4D0, 10456462.8D0, -27223610.4D0,
* 30065729.4D0/
N = 5
M = 6
P = 1
CALL ASP1D (A, B, X, T, IS, N, M, P)
Результат:
X = ( 0.00000000044, -0.069999999928, 0.799999999989, -2.7000000002,
3.4999999997, -1.5400000002 )