Ортогонально-треугольное разложение
[Q,R] = qr(A)
[Q,R] = qr(A,0)
[Q,R,E] = qr(A)
[Q,R,E] =
qr(A,'matrix')
[Q,R,e] = qr(A,'vector')
[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,'matrix')
[C,R,e] = qr(A,B,'vector')
[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;