Документ взят из кэша поисковой машины. Адрес оригинального документа : 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. Сингулярное разложение матриц общего вида
Текст подпрограммы и версий ( Фортран )
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

Подпрограмма:  ACP1R

Назначение

Сингулярное разложение прямоугольной матрицы размера 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 |