qr

Ортогонально-треугольное разложение

Синтаксис

[Q, R] = qr (A)
[Q, R] = qr (A, 0)
[Q, R, E] = qr (A)
[Q, R, E] = qr (A, 'матрица')
[Q, R, e] = qr (A, 'вектор')
[Q, R, e] = qr (A, 0)
X = qr (A)
X = qr (A, 0)
R = qr (A)
R = qr (A, 0)
[C, R] = qr (A, B)
[C, R, E] = qr (A, B)
[C, R, E] = qr (A, B, 'матрица')
[C, R, e] = qr (A, B, 'вектор')
[C, R] = qr (A, B, 0)
[C, R, e] = qr (A, B, 0)

Описание

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

[Q,R] = qr(A,0) производит разложение размера экономики. Если m > n, только первые столбцы n Q и первые строки n R вычисляется. Если m<=n, это совпадает с [Q,R] = qr(A).

Если A полон:

[Q,R,E] = qr(A) или [Q,R,E] = qr(A,'matrix') производят унитарный Q, верхний треугольный R и матрицу перестановок E так, чтобы A*E = Q*R. E перестановки столбца выбран так, чтобы abs(diag(R)) уменьшился.

[Q,R,e] = qr(A,'vector') возвращает информацию о перестановке как вектор вместо матрицы. Таким образом, e является вектором - строкой, таким образом что A(:,e) = Q*R.

[Q,R,e] = qr(A,0) производит разложение размера экономики, в котором e является вектором перестановки, так, чтобы A(:,e) = Q*R.

X = qr(A) и X = qr(A,0) возвращают матричный X, таким образом, что triu(X) является верхний треугольный факторный R.

Если A разрежен:

R = qr(A) вычисляет Q - меньше разложения QR и возвращает верхний треугольный факторный R. Обратите внимание на то, что R = chol(A'*A). Поскольку Q часто почти полон, это предпочтено [Q,R] = QR(A).

R = qr(A,0) производит размер экономики R. Если m>n, R имеет только строки n. Если m<=n, это совпадает с R = qr(A).

[Q,R,E] = qr(A) или [Q,R,E] = qr(A,'matrix') производят унитарный Q, верхний треугольный R и матрицу перестановок E так, чтобы A*E = Q*R. Перестановка столбца E выбрана, чтобы уменьшить временную замену в R.

[Q,R,e] = qr(A,'vector') возвращает информацию о перестановке как вектор вместо матрицы. Таким образом, e является вектором - строкой, таким образом что A(:,e) = Q*R.

[Q,R,e] = qr(A,0) производит разложение размера экономики, в котором e является вектором перестановки, так, чтобы A(:,e) = Q*R.

[C,R] = qr(A,B), где B имеет столько же строк сколько A, возвращает C = Q'*B. Решением методом наименьших квадратов к A*X = B является X = R\C.

[C,R,E] = qr(A,B) или [C,R,E] = qr(A,B,'matrix'), также возвращает уменьшающее заливку упорядоченное расположение. Решением методом наименьших квадратов к A*X = B является X = E*(R\C).

[C,R,e] = qr(A,B,'vector') возвращает информацию о перестановке как вектор вместо матрицы. Таким образом, решением методом наименьших квадратов к A*X = B является X(e,:) = R\C.

[C,R] = qr(A,B,0) приводит к результатам размера экономики. Если m>n, C и R имеют только строки n. Если m<=n, это совпадает с [C,R] = qr(A,B).

[C,R,e] = qr(A,B,0) дополнительно производит уменьшающий заливку вектор перестановки e. В этом случае решением методом наименьших квадратов к A*X = B является X(e,:) = R\C.

Примеры

Найдите приближенное решение наименьших квадратов A*x = b с Q - меньше разложения QR и один шаг итеративного улучшения:

if issparse(A), R = qr(A); 
else R = triu(qr(A)); end
x = R\(R'\(A'*b));
r = b - A*x;
err = R\(R'\(A'*r));
x = x + err;

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

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

Была ли эта тема полезной?