numeric::factorQR

QR-факторизация матрицы

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.

Синтаксис

numeric::factorQR(A, options)

Описание

numeric::factorQR(A) возвращает факторизацию QR A = QR матричного A.

Факторизацией QR действительного/комплексного m ×n матрица является A = QR, где m ×m матричный Q является ортогональным/унитарным, и m ×n матричный R верхний треугольный (т.е. R ij = 0 для j <i).

По умолчанию числовая факторизация вычисляется. Матрица не должна содержать символьные объекты, которые не могут быть преобразованы в плавания. Числовые символьные выражения, такие как π, и т.д. приняты. Они будут преобразованы в плавания, если опция Symbolic используется.

Фактор R нормирован таким образом, что его диагональные элементы R ii с i = 1, …, min (m, n) являются действительными и неотрицательными.

Если никакие не возвращаются, тип задан с помощью опции ReturnType = d, доменный тип факторов Q и R зависит от типа входной матрицы A:

  • Факторы массива возвращены как массивы.

  • Факторы hfarray возвращены как hfarrays.

  • Факторы плотной матрицы типа Dom::DenseMatrix() плотные матрицы типа Dom::DenseMatrix() по звонку выражений.

  • Для всех других матриц categoryCat::Matrix, факторы возвращены как матрицы типа Dom::Matrix() по звонку выражений MuPAD®. Это включает входные матрицы A из типа Dom::Matrix(...), Dom::SquareMatrix(...), Dom::MatrixGroup(...), и т.д.

Взаимодействия среды

Без опции Symbolic, функция чувствительна к переменной окружения DIGITS, который определяет числовую рабочую точность.

Примеры

Пример 1

Мы рассматриваем квадратичную матрицу:

A := array(1..2, 1..2, [[1, 0] , [1, PI]]):

Во-первых, мы вычисляем числовую факторизацию:

[Q1, R1] := numeric::factorQR(A)

Затем символьная факторизация вычисляется:

[Q2, R2] := numeric::factorQR(A, Symbolic)

Для последующей обработки, факторы (доменного типа DOM_ARRAY) преобразованы в элементы матричного доменного Dom::Matrix():

Q1 := matrix(Q1): R1 := matrix(R1):
Q2 := matrix(Q2): R2 := matrix(R2):

Теперь перегруженные арифметические операторы +, *, ^ и т.д. может использоваться в дальнейших расчетах:

Q1*R1, Q2*R2

Мы наконец проверяем othogonality факторов Q1 и Q2:

Q1 * linalg::transpose(Q1), Q2 * linalg::transpose(Q2)

delete A, Q1, R1, Q2, R2:

Пример 2

Мы рассматриваем неквадратную матрицу ранга 1:

A := array(1..3, 1..2, [[0, 0], [I, 1], [I, 1]]):
numeric::factorQR(A, Symbolic)

В этом случае факторизация QR не уникальна. Обратите внимание на то, что числовая факторизация дает к различным факторам:

numeric::factorQR(A)

delete A:

Пример 3

Мы демонстрируем различие между аппаратными плаваниями и плаваниями программного обеспечения. Для матриц неполного ранга факторизация QR не уникальна. В зависимости от опций различные результаты возвращены для следующей матрицы ранга 1:

A := matrix([[1, 1], [10^4, 10^4], [10^8, 10^8]]):
[Q1, R1] := float(numeric::factorQR(A, Symbolic))

[Q2, R2] := numeric::factorQR(A, SoftwareFloats)

[Q3, R3] := numeric::factorQR(A, HardwareFloats)

Однако все факторизации удовлетворяют A = QR численно:

norm(A - Q1*R1), norm(A - Q2*R2), norm(A - Q3*R3)

delete A, Q1, R1, Q2, R2, Q3, R3:

Параметры

A

m ×n матрица доменный тип DOM_ARRAY, DOM_HFARRAY, или категории Cat::Matrix

Опции

Hard, HardwareFloats, Soft, SoftwareFloats

С Hard (или HardwareFloats), расчеты сделаны с помощью быстрой аппаратной плавающей арифметики из сеанса MuPAD. Hard и HardwareFloats эквивалентны. При использовании этой опции входные данные преобразованы в аппаратные плавания и обработаны скомпилированным кодом С. Результат повторно преобразован в плавания MuPAD и возвращен в сеанс MuPAD.

С Soft (или SoftwareFloats) расчеты являются плавающей арифметикой программного обеспечения использования купола, обеспеченной ядром MuPAD. Soft и SoftwareFloats эквивалентны. SoftwareFloats используется по умолчанию если текущее значение DIGITS больше, чем 15 и входная матрица A не имеет доменного типа DOM_HFARRAY.

По сравнению с SoftwareFloats используемый ядром MuPAD, расчетом с HardwareFloats может быть много раз быстрее. Обратите внимание, однако, что точность аппаратной арифметики ограничивается приблизительно 15 цифрами. Далее, размер чисел с плавающей запятой не может быть больше, чем приблизительно 10 308 и не меньшим, чем приблизительно 10 - 308.

Если никакой HardwareFloats или SoftwareFloats требуются явным образом, следующая стратегия используется: Если текущее значение DIGITS меньше, чем 16 или если матричный A аппаратный плавающий массив доменного типа DOM_HFARRAY, затем аппаратную арифметику пробуют. Если это успешно, результат возвращен.

Если результат не может быть вычислен с аппаратными плаваниями, арифметику программного обеспечения ядром MuPAD пробуют.

Если текущее значение DIGITS больше, чем 15 и входная матрица A не имеет доменного типа DOM_HFARRAY, или если одна из опций Soft, SoftwareFloats или Symbolic задан, MuPAD вычисляет результат со своей арифметикой программного обеспечения, не пытаясь использовать аппаратные плавания сначала.

Может быть несколько причин аппаратной арифметики, чтобы перестать работать:

  • Текущее значение DIGITS больше, чем 15.

  • Данные содержат символьные объекты.

  • Данные содержат числа, больше, чем 10 308 или меньший, чем 10 - 308, который не может быть представлен аппаратными плаваниями.

Если никакой HardwareFloats ни SoftwareFloats задан, пользователю не сообщают, используются ли аппаратные плавания или плавания программного обеспечения.

Если HardwareFloats заданы, но перестали работать из-за одной из причин выше, предупреждение выдано, что (намного более медленное) программное обеспечение арифметика с плавающей точкой ядра MuPAD используется.

Обратите внимание на то, что HardwareFloats может только использоваться, если все входные данные могут быть преобразованы в числа с плавающей запятой.

Запаздывающие цифры в результатах с плавающей точкой вычисляются с HardwareFloats и SoftwareFloats может отличаться.

Примечание

Для плохих обусловленных матриц результаты, возвращенные с HardwareFloats и SoftwareFloats может значительно отличаться! Смотрите Пример 3.

Symbolic

Предотвращает преобразование входных данных к числам с плавающей запятой. Точная арифметика используется. Эта опция заменяет HardwareFloats и SoftwareFloats.

Обычная арифметика для выражений MuPAD используется. При использовании этой опции матричный A может содержать символьные объекты.

NoWarning

Отключает предупреждения

Если символьные коэффициенты найдены, numeric::factorQR автоматически переключатели к Symbolic режим с предупреждением. При использовании этой опции подавлено это предупреждение; стандартная программа все еще использует символьный режим в символьных коэффициентах, т.е. точная арифметика без преобразований с плавающей точкой используется.

ReturnType

Опция, заданная как ReturnType = d

Возвратите Фактор Холесского как матрицу доменного типа d. Следующее возвращается, типы доступны: DOM_ARRAY, DOM_HFARRAY, Dom::Matrix(), или Dom::DenseMatrix().

Возвращаемые значения

Перечислите [Q, R] с матрицами Q и R возвращен. Доменный тип ортогонального/унитарного m ×m матричный Q и верхний треугольный m ×n матричный R зависит от типа входной матрицы A. Компоненты Q и R действительные или комплексные плавания, если опция Symbolic используется.

Алгоритмы

Преобразования домовладельца используются для расчета числовая факторизация. С опцией Symbolic, Ортонормализация грамма-Schmidt столбцов A используется.

Для обратимой квадратной матрицы A факторизация QR уникальна до масштабных коэффициентов модуля 1. Нормализация R к действительным положительным диагональным элементам определяет факторизацию исключительно. Следовательно, результаты получили с/без опцией Symbolic совпадите для обратимых квадратных матриц.

Для сингулярных или неквадратных матриц факторизация не уникальна и результаты, полученные с/без опцией Symbolic может отличаться. См. Пример 2.