exponenta event banner

qr

Описание

пример

X = qr(A) возвращает верхнетреугольный R коэффициент QR-разложения A = Q*R. Если A заполнен, то R = triu(X). Если A разрежен, то R = X.

пример

[Q,R] = qr(A) выполняет декомпозицию QR для mоколо-n матрица A такой, что A = Q*R. Фактор R является mоколо-n верхнетреугольной матрицы и множителя Q является mоколо-m ортогональная матрица.

пример

[Q,R,P] = qr(A) дополнительно возвращает матрицу перестановки P такой, что A*P = Q*R.

пример

[___] = qr(A,0) создает декомпозицию экономного размера с использованием любой из предыдущих комбинаций выходных аргументов. Размер выходных данных зависит от размера mоколо-n матрица A:

  • Если m > n, то qr вычисляет только первый n столбцы Q и первый n строки R.

  • Если m <= n, тогда разложение по размеру экономии является тем же самым, что и регулярное разложение.

  • Если указать третий выход с разложением по размеру экономии, то он возвращается в виде вектора перестановки, такого, что A(:,P) = Q*R.

пример

[Q,R,P] = qr(A,outputForm) указывает, следует ли возвращать информацию о перестановке P в виде матрицы или вектора. Например, если outputForm является 'vector', то A(:,P) = Q*R. Значение по умолчанию outputForm является 'matrix' такой, что A*P = Q*R.

пример

[C,R] = qr(S,B) вычисляет C = Q'*B и верхний треугольный коэффициент R. Вы можете использовать C и R для вычисления решения методом наименьших квадратов для разреженной линейной системы S*X = B с X = R\C.

пример

[C,R,P] = qr(S,B) дополнительно возвращает матрицу перестановки P. Вы можете использовать C, R, и P для вычисления решения методом наименьших квадратов для разреженной линейной системы S*X = B с X = P*(R\C).

пример

[___] = qr(S,B,0) создает декомпозицию экономного размера с использованием любой из предыдущих комбинаций выходных аргументов. Размер выходных данных зависит от размера mоколо-n разреженная матрица S:

  • Если m > n, то qr вычисляет только первый n строки C и R.

  • Если m <= n, тогда разложение по размеру экономии является тем же самым, что и регулярное разложение.

  • Если вы указываете третий выход с разложением экономного размера, то он возвращается в виде вектора перестановки, так что решение наименьших квадратов S*X = B является X(P,:) = R\C.

пример

[C,R,P] = qr(S,B,outputForm) указывает, следует ли возвращать информацию о перестановке P в виде матрицы или вектора. Например, если outputForm является 'vector', то решение методом наименьших квадратов S*X = B является X(P,:) = R\C. Значение по умолчанию outputForm является 'matrix' такое, что решение методом наименьших квадратов S*X = B является X = P*(R\C).

Примеры

свернуть все

Найдите QR-разложение матрицы Паскаля 5 на 5. Укажите один выходной аргумент, возвращающий только верхний треугольный коэффициент.

A = pascal(5);
X = qr(A)
X = 5×5

   -2.2361   -6.7082  -15.6525  -31.3050  -56.3489
    0.3090    3.1623   11.0680   26.5631   53.1263
    0.3090   -0.1744    1.8708    7.4833   19.2428
    0.3090   -0.4565    0.3548    0.6325    2.8460
    0.3090   -0.7387   -0.0281   -0.7490   -0.1195

Извлечь верхний треугольный коэффициент R от X.

R = triu(X)
R = 5×5

   -2.2361   -6.7082  -15.6525  -31.3050  -56.3489
         0    3.1623   11.0680   26.5631   53.1263
         0         0    1.8708    7.4833   19.2428
         0         0         0    0.6325    2.8460
         0         0         0         0   -0.1195

Сравните R в QR-разложении без Q к R коэффициент в полной QR-декомпозиции.

[Q1,R1] = qr(A)
Q1 = 5×5

   -0.4472   -0.6325    0.5345   -0.3162   -0.1195
   -0.4472   -0.3162   -0.2673    0.6325    0.4781
   -0.4472    0.0000   -0.5345    0.0000   -0.7171
   -0.4472    0.3162   -0.2673   -0.6325    0.4781
   -0.4472    0.6325    0.5345    0.3162   -0.1195

R1 = 5×5

   -2.2361   -6.7082  -15.6525  -31.3050  -56.3489
         0    3.1623   11.0680   26.5631   53.1263
         0         0    1.8708    7.4833   19.2428
         0         0         0    0.6325    2.8460
         0         0         0         0   -0.1195

Вычислите полную QR-декомпозицию магической квадратной тестовой матрицы, указав два выходных аргумента.

A = magic(5);
[Q,R] = qr(A)
Q = 5×5

   -0.5234    0.5058    0.6735   -0.1215   -0.0441
   -0.7081   -0.6966   -0.0177    0.0815   -0.0800
   -0.1231    0.1367   -0.3558   -0.6307   -0.6646
   -0.3079    0.1911   -0.4122   -0.4247    0.7200
   -0.3387    0.4514   -0.4996    0.6328   -0.1774

R = 5×5

  -32.4808  -26.6311  -21.3973  -23.7063  -25.8615
         0   19.8943   12.3234    1.9439    4.0856
         0         0  -24.3985  -11.6316   -3.7415
         0         0         0  -20.0982   -9.9739
         0         0         0         0  -16.0005

Убедитесь, что A = QR, в пределах точности машины.

norm(A-Q*R)
ans = 1.2569e-14

Укажите три выходных аргумента для возврата матрицы перестановки или вектора, уменьшающего заполнение в R коэффициент QR разложения.

Вычислить QR-разложение west0479 разреженная матрица. Укажите три выхода для возврата матрицы перестановок, удовлетворяющей AP = QR.

load west0479
A = west0479;
[Q,R,P] = qr(A);

Убедитесь, что A*P = Q*R для матрицы перестановок P, в пределах точности машины.

norm(A*P-Q*R,'fro')
ans = 3.3386e-10

Теперь укажите 'vector' возможность возврата p в качестве вектора перестановки.

[Q,R,p] = qr(A,'vector');

Убедитесь, что A(:,p) = Q*R для вектора перестановки p, в пределах точности машины.

norm(A(:,p) - Q*R,'fro')
ans = 3.3386e-10

Убедитесь, что использование матрицы перестановок или вектора перестановок в разложении приводит к R коэффициент с меньшим числом ненулей для разреженных входных данных по сравнению с неразрушенным разложением.

[Q1,R1] = qr(A);
spy(R1)

Figure contains an axes. The axes contains an object of type line.

spy(R)

Figure contains an axes. The axes contains an object of type line.

Результаты показывают, что переставленное разложение создает R коэффициент со значительно меньшим количеством ненулей.

Используйте разложение QR размера экономии матрицы коэффициентов для решения линейной системы Ax = b.

Создайте матрицу коэффициентов 10 на 5, используя первые пять столбцов magic(10). Для правой стороны линейного уравнения Ax = b используйте суммы строк матрицы. При такой настройке решение уравнения x должно быть вектором единиц.

A = magic(10);
A = A(:,1:5)
A = 10×5

    92    99     1     8    15
    98    80     7    14    16
     4    81    88    20    22
    85    87    19    21     3
    86    93    25     2     9
    17    24    76    83    90
    23     5    82    89    91
    79     6    13    95    97
    10    12    94    96    78
    11    18   100    77    84

b = sum(A,2)
b = 10×1

   215
   215
   215
   215
   215
   290
   290
   290
   290
   290

Вычислить QR-разложение экономичного размера A. Затем решите линейную систему QRx = b с помощьюx(p,:) = R\(Q\b). Поскольку Q ортогонально, это уравнение то же, что и x(p,:) = R\(Q'*b).

[Q,R,p] = qr(A,0)
Q = 10×5

   -0.0050   -0.4775   -0.0504    0.5193    0.0399
   -0.0349   -0.5001   -0.0990   -0.1954   -0.2006
   -0.4384    0.1059   -0.4660    0.4464    0.0628
   -0.0947   -0.4151   -0.2923   -0.2542    0.5274
   -0.1246   -0.4117   -0.2812   -0.1326   -0.4130
   -0.3787    0.0209    0.2702    0.4697    0.0390
   -0.4085   -0.0017    0.2217   -0.2450   -0.2015
   -0.0648   -0.3925    0.6939    0.0669    0.1225
   -0.4683    0.0833    0.0283   -0.3038    0.5265
   -0.4982    0.0867    0.0394   -0.1822   -0.4138

R = 5×5

 -200.7112  -55.5026 -167.6040  -84.7237 -168.7997
         0 -192.1053  -40.3557 -152.4040  -39.2814
         0         0  101.3180  -89.4254   96.0172
         0         0         0   41.0248  -14.9083
         0         0         0         0   24.6386

p = 1×5

     3     1     5     2     4

x(p,:) = R\(Q\b)
x = 5×1

    1.0000
    1.0000
    1.0000
    1.0000
    1.0000

Создание полулогого графика диагонали R для подтверждения того, что переставленное разложение создает коэффициент R с abs(diag(R)) уменьшение. Постройте график сингулярных значений A на том же графике для сравнения. На практике диагональные значения R вести себя аналогично сингулярным значениям A. Поэтому можно использовать диагональные значения R как мера того, насколько близка к сингулярной матрице A является.

semilogy(abs(diag(R)),'-o')
hold on
semilogy(svd(A),'r-o')
legend('Diagonal of R','Singular Values of A')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Diagonal of R, Singular Values of A.

Решите разреженную линейную систему и используйте результаты, чтобы увидеть, сколько вектора b находится в пространстве столбца S.

Создайте случайную разреженную матрицу 500 на 20 с плотностью 10% и вектором единиц. Использовать qr чтобы разложить матрицу на множители R и C = Q'*b.

S = sprand(500,20,0.1);
b = ones(500,1);
[C,R] = qr(S,b,0);

Используйте результаты для решения Sx = b с помощьюx = R\C.

x = R\C;

Рассмотрим identity‖b‖2=‖Sx-b‖2+‖C‖2.

Деление на норму b, вы получаете новую личность, которая показывает, сколько из b находится в пространстве столбца S:

Sx-b‖2‖b‖2+‖C‖2‖b‖2=1.

Первый термин говорит, сколько из b не лежит в пространстве столбцов S, в то время как второй термин говорит, сколько из b лежит в пространстве столбцов S.

t1 = norm(S*x-b)^2/norm(b)^2
t1 = 0.4000
t2 = norm(C)^2/norm(b)^2
t2 = 0.6000

Использовать qr для решения матричного уравнения Sx = B с прямоугольной матрицей разреженных коэффициентов S.

Загрузить west0479 разреженная матрица и использовать первые 200 столбцов в качестве прямоугольной матрицы коэффициентов в линейной системе. Для правой части уравнения используйте суммы строк S. При такой настройке решение Sx = B является вектором единиц.

load west0479
S = west0479(:,1:200);
B = sum(S,2);

Решить Sx = B с помощьюqr с двумя входами и тремя выходами. Решение линейной системы: x = P*(R\C).

[C,R,P] = qr(S,B);
x = P*(R\C);

Убедитесь, что Sx-B = 0, в пределах точности станка.

norm(S*x-B)
ans = 8.4349e-11

Примечание: Расчет верхнего треугольного коэффициента R и матрица перестановок P, но избегайте вычисления ортогональной матрицы Q (которая часто является наиболее затратной в вычислительном отношении частью вызова qr), можно указать B как пустая матрица:

emptyB = zeros(size(S,1),0);
[~,R,P] = qr(S,emptyB);

Входные аргументы

свернуть все

Входная матрица, заданная как полная или разреженная матрица.

Типы данных: single | double
Поддержка комплексного номера: Да

Матрица входных коэффициентов, заданная как разреженная матрица. С двумя входными матрицами, qr вычисляет решение методом наименьших квадратов для линейной системы S*X = B.

Типы данных: double
Поддержка комплексного номера: Да

Матрица правой стороны, заданная как полная или разреженная матрица. С двумя входными матрицами, qr вычисляет C = Q'*B, который можно использовать для решения линейной системы S*X = B.

Типы данных: single | double
Поддержка комплексного номера: Да

Форма выхода перестановки, указанная как 'matrix' или 'vector'. Этот флаг управляет выводом перестановки P возвращается в виде матрицы перестановок или вектора перестановок. Необходимо указать три выходных аргумента для qr для использования этой опции.

  • Если outputForm является 'vector', то P является вектором перестановки, который удовлетворяет A(:,P) = Q*R.

  • Значение по умолчанию outputForm является 'matrix' такой, что A*P = Q*R.

Пример: [Q,R,P] = qr(A,'vector')

Выходные аргументы

свернуть все

Выходная матрица. Содержание X зависит от того, A является полным или разреженным:

  • Если A заполнен, то верхнетреугольный коэффициент QR-разложения равен R = triu(X). (Нижнетреугольные элементы являются частью данных, используемых для расчета Q.)

  • Если A разрежен, тогда коэффициент равен R = X.

Ортогональный коэффициент, возвращаемый как матрица, удовлетворяющая A = Q*R для mоколо-n матрица A.

  • Для полных разложений, qr(A) прибыль Q как mоколо-m ортогональная матрица, удовлетворяющая QHQ = QQH = Im.

  • Для прямоугольных A с m > n, разложение по размеру экономики qr(A,0) вычисляет только первый n столбцы Q и сначала n строки R. Столбцы Q сформировать ортонормированный базис для пространства столбцов A.

Различные машины и версии MATLAB ® могут производить различные столбцы вQ которые все еще являются численно точными. Соответствующие строки и столбцы в Q и R могут перевернуть свои знаки, так как это не влияет на значение выражения A = Q*R.

Верхнетреугольный коэффициент, возвращаемый как матрица, удовлетворяющая A = Q*R.

Информация о перестановках, возвращаемая в виде матрицы или вектора. Форма P зависит от значения outputForm. Также, qr выбирает P для соответствия различным критериям в зависимости от того, является ли первая входная матрица полной или разреженной:

  • Полный - qr выбирает P чтобы abs(diag(R)) уменьшается.

  • Разреженный - qr выбирает P для уменьшения заполнения R.

Коэффициент линейной системы, возвращаемый как матрица, удовлетворяющая C = Q'*B. Решение для наименьших квадратов S*X = B является X = R\C. Если выход перестановки P указано, то решение либо X = P*(R\C) или X(P,:) = R\C, в зависимости от значения outputForm:

  • Если outputForm является 'vector', то решение методом наименьших квадратов S*X = B является X(P,:) = R\C.

  • Значение по умолчанию outputForm является 'matrix' такое, что решение методом наименьших квадратов S*X = B является X = P*(R\C).

Совет

  • Для решения нескольких линейных систем, включающих одну и ту же матрицу коэффициентов, используйте decomposition объекты.

  • Для синтаксиса [C,R] = qr(S,B), значение X = R\C является решением методом наименьших квадратов для S*X = B только когда S не имеет низкого ранга.

Расширенные возможности

..
Представлен до R2006a