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 isvector, затем A(:,P) = Q*R. Значение по умолчанию outputForm ismatrix таким образом, что 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. Можно использовать CR, и 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 isvector, затем решение методом наименьших квадратов к S*X = B X(P,:) = R\C. Значение по умолчанию outputForm ismatrix таким образом, что решение методом наименьших квадратов к 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 в разложении Q-less QR к 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

VerifyThat 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;

Рассмотрите идентичностьb2=Sx-b2+C2.

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

Sx-b2b2+C2b2=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);

VerifyThat 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 isvector, затем P вектор сочетания, который удовлетворяет A(:,P) = Q*R.

  • Значение по умолчанию outputForm ismatrix таким образом, что 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 isvector, затем решение методом наименьших квадратов к S*X = B X(P,:) = R\C.

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

Советы

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

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

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

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