- DynamicModeDecomposition
- DynamicModeDecompositionQR
DynamicModeDecompositionQR
Вычисляет разложение по динамическим модам (DMD) для пары матриц срезов данных с использованием QR-факторизации для сжатия данных. Функция LAPACK GEDMDQ. Для входных матриц X и Y, таких что Y = A*X, где матрица A недоступна, функция вычисляет определенное число пар Ритца матрицы A, используя стандартное извлечение Рэлея-Ритца из подпространства range(X), которое определяется с использованием ведущих левых сингулярных векторов матрицы X. Дополнительно функция может возвращать остатки вычисленных пар Ритца, информацию для уточнения векторов Ритца, или собственные векторы точного DMD (Exact DMD).
На вход подается матрица F размером M×N. Столбцы матрицы F представляют собой последовательность срезов данных (snapshots) с одной траектории, снятых через равные дискретные интервалы времени. Предполагается, что нормы столбцов матрицы F находятся в диапазоне нормализованных чисел с плавающей запятой.
Вычисления для типа matrix<double>
bool matrix::DynamicModeDecompositionQR(
|
Вычисления для типа matrix<float>
bool matrixf::DynamicModeDecompositionQR(
|
Вычисления для типа matrix<complex>
bool matrixc::DynamicModeDecompositionQR(
|
Вычисления для типа matrix<complexf>
bool matrixcf::DynamicModeDecompositionQR(
|
Параметры
jobs
[in] Значение из перечисления ENUM_DMD_SCALE, которое определяет необходимость масштабирования исходных срезов с использованием диагональной матрицы. Срезы данных — это столбцы матрицы F. Первые N-1 столбцов матрицы F обозначаются как X, а последние N-1 — как Y.
jobz
[in] Значение из перечисления ENUM_DMDQ_EIGV, которое определяет необходимость вычисления собственных векторов (мод Купмана).
jobr
[in] Значение из перечисления ENUM_DMD_RESIDUALS, которое определяет, будут ли вычисляться остатки.
jobq
[in] Значение из перечисления ENUM_DMDQ_Q, которое определяет, нужно ли явно вычислять и возвращать унитарную матрицу из QR-разложения матрицы срезов данных.
jobt
[in] Значение из перечисления ENUM_DMDQ_R, которое определяет нужно ли возвращать верхнетреугольную матрицу из QR-разложения матрицы срезов данных.
jobf
[in] Значение из перечисления ENUM_DMD_REFINE, которое определяет, следует ли сохранять информацию, необходимую для постобработки (например, вычисления уточненных векторов Ритца).
whtsvd
[in] Значение из перечисления ENUM_SVD_ALG, которое позволяет выбрать алгоритм SVD из библиотеки LAPACK.
nrnk
[in] Значение определяет способ вычисления числового ранга, т.е. способ усечения малых сингулярных значений входной матрицы X. При
NRNK = -1 :: i-е сингулярное значение sigma(i) усекается, если sigma(i) <= TOL*sigma(1). Рекомендуемый вариант.
При NRNK = -2 :: i-е сингулярное значение sigma(i) усекается, если sigma(i) <= TOL*sigma(i-1). Эта опция включена для исследований и разработок. Требует высокой точности SVD, что не всегда достигаемо.
Числовой ранг может быть задан с помощью положительного значения NRNK следующим образом: 0 < NRNK <= N-1 :: будут использоваться не более NRNK наибольших сингулярных значений. Если число вычисленных ненулевых сингулярных значений меньше NRNK, то будут использоваться только эти ненулевые значения, а фактически используемая размерность будет меньше NRNK.
tol
[in] Допустимая погрешность для усечения малых сингулярных значений. 0 <= TOL < 1
eigen_values
[out] Вектор собственных значений размера K. Ведущие K (K<N) элементов в EIGS содержат вычисленные собственные значения (значения Ритца).
кв.
[out] Ортогональная матрица (фактор Q) из QR-разложения исходной матрицы срезов F.
R
[out] Верхнетреугольная матрица размером N на N, фактор R из QR-разложения матрицы F.
left_vectors
[out] Матрица левых сингулярных векторов. Первые K столбцов матрицы X содержат K главных левых сингулярных векторов представлений первых N-1 срезов в ортонормированном базисе, полученном из QR-разложения F. Чтобы поднять их в пространство левых сингулярных векторов U(:,1:K) в исходном пространстве данных, нужно предварительно умножить их на фактор Q из исходного QR-разложения.
Z
[out] Матрица размером M на K
Если JOBZ =='V', то Z содержит векторы Ритца. Z(:,i) — собственный вектор i-го значения Ритца; ||Z(:,i)||_2=1.
Если JOBZ == 'F', тогда Z(:,i) задаются неявно как Z*V, где Z содержит ортонормированную матрицу (произведение фактора Q из исходного QR-разложения и SVD/POD_basis, возвращаемого функцией DynamicModeDecomposition в X), а второй фактор (собственные векторы отношения Рэлея) находится в матрице V, возвращаемой функцией DynamicModeDecomposition. Таким образом, X(:,1:K)*V(:,i) — это собственный вектор, соответствующий EIGS(i). Столбцы V(1:K,1:K) являются вычисленными собственными векторами отношения Рэлея размером K на K.
residuals
[out] Остатки для K вычисленных пар Ритца.
B
[out] Матрица размером N на K (K<N).
Если JOBF =='R', B(1:N,1:K) содержит A*U(:,1:K) и может использоваться для вычисления уточненных векторов.
Если JOBF == 'E', B(1:N,1;K) содержит A*U(:,1:K)*W(1:K,1:K), которые являются векторами из точного DMD (Exact), с точностью до масштабирования по обратным собственным значениям.
В обоих случаях содержимое B можно восстановить до исходного пространства домножением на фактор Q из исходного QR-разложения. Здесь A означает сжатие базового оператора.
Если JOBF =='N', то матрица B не используется.
V
[out] Матрица размером K на K (K<N). Содержит собственные векторы матрицы отношения Рэлея. Векторы, возвращаемые в Z, являются произведением Q из исходного QR-разложения.
S
[out] Матрица размером K на K (K<N). Массив S(1:K,1:K) используется для матричного отношения Рэлея. Содержимое перезаписывается во время разложения собственных значений с помощью GEEV.
Возвращаемое значение
Возвращает true в случае успеха или false, если произошла ошибка.
Примечание
Количество строк (M) матрицы не должно быть меньше количества столбцов (N).
ENUM_DMD_SCALE
Перечисление, которое определяет, масштабируются ли исходные срезы данных с помощью диагональной матрицы.
Идентификатор |
Описание |
---|---|
DMDSCALE_S |
'S' — матрицы срезов данных X и Y умножаются на диагональную матрицу D так, что X*D имеет единичные ненулевые столбцы. |
DMDSCALE_C |
'C' — срезы масштабируются так же, как и в варианте 'S'. Если обнаружено, что i-й столбец матрицы X является нулевым вектором, а соответствующий i-й столбец матрицы Y не равен нулю, то i-й столбец Y устанавливается равным нулю. |
DMDSCALE_Y |
'Y' — матрицы срезов данных X и Y умножаются на диагональную матрицу D так, что Y*D имеет единичные ненулевые столбцы. |
DMDSCALE_N |
'N' — масштабирование данных не предусмотрено. |
ENUM_DMDQ_EIGV
Перечисление, которое определяет, будут ли вычисляться собственные векторы (моды Купмана).
Идентификатор |
Описание |
---|---|
DMDQEIGV_V |
'V' — собственные векторы (моды Купмана) будут вычисляться. |
DMDQEIGV_F |
'F' — будут возвращены собственные векторы (моды Купмана) в факторизованной форме как произведение Z*V |
DMDQEIGV_Q |
'Q' — будут возвращены собственные векторы (моды Купмана) в факторизованной форме как произведение Q*Z |
DMDQEIGV_N |
'N' — собственные векторы не вычисляются |
ENUM_DMD_RESIDUALS
Перечисление, которое определяет необходимость вычисления остатков.
Идентификатор |
Описание |
---|---|
DMDRESIDUALS_R |
'R' — вычислять остатки для собственных пар. |
DMDRESIDUALS_N |
'N' — не вычислять остатки. |
Перечисление, которое указывает, следует ли явно вычислять и возвращать унитарную матрицу из QR-разложения.
Идентификатор |
Описание |
---|---|
DMDQQ_Q |
'Q' — вычисляется матрица Q из QR-разложения исходной матрицы срезов |
DMDQQ_N |
'N' — матрица Q явно не вычисляется |
Перечисление, которое указывает, следует ли возвращать верхнетреугольную матрицу из QR-разложения.
Идентификатор |
Описание |
---|---|
DMDQR_R |
'R' — вычисляется матрица R из QR-разложения исходной матрицы срезов |
DMDQR_N |
'N' — матрица R явно не вычисляется |
ENUM_DMD_REFINE
Перечисление, которое определяет, следует ли хранить информацию, необходимую для постобработки.
Идентификатор |
Описание |
---|---|
DMDREFINE_R |
'R' — матрица, необходимая для уточнения векторов Ритца, вычисляется и сохраняется в массиве B. |
DMDREFINE_E |
'E' — немасштабированные собственные векторы точного DMD вычисляются и возвращаются в массиве B. |
DMDREFINE_N |
'N' — данные для уточнения собственных векторов не вычисляются. |
ENUM_SVD_ALG
Перечисление для выбора алгоритма SVD.
Идентификатор |
Описание |
---|---|
SVDALG_1 |
1: GESVD (алгоритм QR SVD) |
SVDALG_2 |
2: GESDD (алгоритм Divide and Conquer) |
SVDALG_3 |
3: GESVDQ (предобусловленный алгоритм QR SVD; этот и следующий варианты самые точные) |
SVDALG_4 |
4: GEJSV (предобусловленный алгоритм Jacobi SVD; этот и предыдущий варианты самые точные) |