|
Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.ru/lib_na/cat/ac/acp1r.htm
Дата изменения: Mon Sep 1 17:06:40 2014 Дата индексирования: Sun Apr 10 01:02:29 2016 Кодировка: Windows-1251 |
|
Текст подпрограммы и версий ( Фортран ) acp1r.zip , acp1d.zip |
Тексты тестовых примеров ( Фортран ) tacp1r.zip , tacp1d.zip |
|
Текст подпрограммы и версий ( Си ) acp1r_c.zip , acp1d_c.zip |
Тексты тестовых примеров ( Си ) tacp1r_c.zip , tacp1d_c.zip |
|
Текст подпрограммы и версий ( Паскаль ) acp1r_p.zip , acp1e_p.zip |
Тексты тестовых примеров ( Паскаль ) tacp1r_p.zip , tacp1e_p.zip |
Сингулярное разложение прямоугольной матрицы размера M на N (M ≥ N).
Подпрограмма ACP1R осуществляет разложение прямоугольной матрицы A размера M на N (M ≥ N) в произведение А = UDVT, где U, V - ортогональные матрицы порядка М и N соответственно, D - прямоугольная матрица размера M на N, у которой все элементы, кpоме диагональных элементов dk = dkk, k = 1, 2, ..., N, равны нулю.
Последние M - N столбцов матрицы U, соответствующие заведомо нулевым собственным значениям матрицы AAT, обычно не используются и потому в данной подпрограмме не вычисляются.
Forsythe G.E., Malcolm M.A., Moler C.B. Computer Methods for Mathematical Computation. Prentice-Hall, 1977.
SUBROUTINE ACP1R (NM, M, N, A, W, MATU, U, MATV, V, R, IERR)
Параметры
| NM - | число стpок в двумерных массивах A, U, V, причем NM ≥ M (тип: целый); |
| M - | число стpок матриц A и U (тип: целый); |
| N - | число столбцов матриц A и U и порядок матрицы V (тип: целый); |
| A - | вещественный двумерный массив размера NM на N, в первых M стpоках которого задается исходная матрица; |
| W - | вещественный вектоp длины N значений W(k) = dk вычисленных сингулярных чисел матрицы A; |
| MATU - | признак необходимости вычисления матрицы U: при MATU = .TRUE. матрица U вычисляется, при MATU = .FALSE. - нет (тип: логический); |
| U - | вещественный двумерный массив размера NM на N, в котоpом при MATU = .TRUE. содержатся вычисленные первые N столбцов матрицы U; при MATU = .FALSE. массив U используется как рабочий; |
| MATV - | признак необходимости вычисления матрицы V: при MATV = .TRUE. матрица V вычисляется, при MATV = .FALSE. - нет (тип: логический); |
| V - | вещественный двумерный массив размера NM на N, в котоpом при MATV = .TRUE. содержится вычисленная матрица V; при MATV = .FALSE. массив V не используется; |
| R - | вещественный рабочий вектоp длины N; |
| IERR - | целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы; при этом: |
|
IERR = K, если для вычисления К - го сингулярного числа потребовалось более 30 итераций; в этом случае правильно вычислены лишь сингулярные числа и сингулярные векторы с индексами K+1, K+2, ..., N. |
Версии
| ACP1D - | сингулярное разложение прямоугольной матрицы размера M на N (M ≥ N), заданной с удвоенной точностью. |
Вызываемые подпрограммы
| UTAC10 - | подпрограмма выдачи диагностических сообщений при работе подпрограмм ACP1R и ACP1D. |
Замечания по использованию
| 1. |
При обращении к подпрограмме ACP1D параметры A, W, U, V, R должны иметь тип DOUBLE PRECISION. | |
| 2. |
B результате работы подпрограммы массив A сохраняется. | |
| 3. |
Допустимо совпадение параметров U или V с параметром A. |
DIMENSION A(5, 3), U (5, 3), V (5, 3), W (5), R (5)
NM = 5
M = 5
N = 3
DO 1 I = 1, M
DO 1 J = 1, N
A(I, J) = I + (J-1)*M
1 CONTINUE
CALL ACP1R (NM, M, N, A, W, .TRUE., U, .TRUE., V, R, IERR)
Результаты:
IERR = 0,
| 35.127 |
W = | 2.465 | ,
| 1.587E-11 |
| -0.202 0.890 0.408 |
V = | -0.517 0.257 -0.816 | ,
| -0.832 -0.376 0.408 |
| -0.355 -0.689 0.602 |
| -0.399 -0.376 -0.517 |
U = | -0.443 -0.062 -0.306 |
| -0.487 0.251 -0.244 |
| -0.531 0.564 0.466 |