exponenta event banner

fixed.qrMatrixSolve

Решить систему линейных уравнений Ax = B для x с помощью QR разложения

Описание

пример

x = fixed.qrMatrixSolve(A, B) решает систему линейных уравнений Ax = B с помощью QR-разложения.

пример

x = fixed.qrMatrixSolve(A, B, outputType) возвращает решение системы линейных уравнений Ax = B в качестве переменной с типом вывода, указанным outputType.

пример

x = fixed.qrMatrixSolve(A, B, outputType, regularizationParameter) возвращает решение в систему линейных уравнений

[λ InA] x = [0n, pB]

где A - матрица m-на-n, Bis - матрица m-на-p, λ - параметр регуляризации.

Примеры

свернуть все

В этом примере показано, как решить простую систему линейных уравнений Ax = b, используя QR разложение.

В этом примере определите A как матрицу 5 на 3 с большим числом условий. Для решения системы линейных уравнений, включающих неупорядоченные (большое число условий) неквадратные матрицы, необходимо использовать QR-разложение.

rng default;
A = gallery('randsvd', [5,3], 1000000);
b = [1; 1; 1; 1; 1];
x = fixed.qrMatrixSolve(A,b)
x = 3×1
104 ×

   -2.3777
    7.0686
   -2.2703

Сравните результат fixed.qrMatrixSolve с результатом mldivide или \ функция.

x = A\b
x = 3×1
104 ×

   -2.3777
    7.0686
   -2.2703

В этом примере показан эффект параметра регуляризации при решении сверхопределённой системы. В этом примере количество y измеряется при нескольких различных значениях времени t для получения следующих замечаний.

t = [0 .3 .8 1.1 1.6 2.3]';
y = [.82 .72 .63 .60 .55 .50]';

Моделирование данных с помощью затухающей экспоненциальной функции

y (t) = c1 + c2e-t.

Предыдущее уравнение говорит, что вектор y должен быть аппроксимирован линейной комбинацией двух других векторов. Один - постоянный вектор, содержащий все, а другой - вектор с компонентами exp(-t). Неизвестные коэффициенты, c1 и c2, могут быть вычислены путем аппроксимации методом наименьших квадратов, что минимизирует сумму квадратов отклонений данных от модели. Существует шесть уравнений и два неизвестных, представленных матрицей 6 на 2.

E = [ones(size(t)) exp(-t)]
E = 6×2

    1.0000    1.0000
    1.0000    0.7408
    1.0000    0.4493
    1.0000    0.3329
    1.0000    0.2019
    1.0000    0.1003

Используйте fixed.qrMatrixSolve функция для получения решения методом наименьших квадратов.

c = fixed.qrMatrixSolve(E, y)
c = 2×1

    0.4760
    0.3413

Другими словами, наименьшие квадраты, соответствующие данным,

y (t) = 0,4760 + 0 .3413e-t.

Следующие инструкции оценивают модель с регулярно разнесенными приращениями в t, а затем постройте график результата вместе с исходными данными:

T = (0:0.1:2.5)';
Y = [ones(size(T)) exp(-T)]*c;
plot(T,Y,'-',t,y,'o')

Figure contains an axes. The axes contains 2 objects of type line.

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

figure;
lambda = [0:0.1:0.5];
plot(t,y,'o', 'DisplayName', 'Original Data');
for i = 1:length(lambda)
 c = fixed.qrMatrixSolve(E, y, numerictype('double'), lambda(i));
 Y = [ones(size(T)) exp(-T)]*c;
 hold on
 plot(T,Y,'-', 'DisplayName', ['lambda =', num2str(lambda(i))])
end
legend('Original Data', 'lambda = 0', 'lambda = 0.1', 'lambda = 0.2', 'lambda = 0.3', 'lambda = 0.4', 'lambda = 0.5')

Figure contains an axes. The axes contains 7 objects of type line. These objects represent Original Data, lambda = 0, lambda = 0.1, lambda = 0.2, lambda = 0.3, lambda = 0.4, lambda = 0.5.

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

свернуть все

Матрица коэффициентов в линейной системе уравнений Ax = B.

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

Входной вектор или матрица, представляющая B в линейной системе уравнений Ax = B.

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

Тип выходных данных, указанный как numerictype объект или числовая переменная. Если outputType указан как numerictype объект, вывод, x, будет иметь указанный тип данных. Если outputType указывается как числовая переменная, x будет иметь тот же тип данных, что и числовая переменная.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | fi | numerictype

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

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi

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

свернуть все

Решение, возвращаемое в виде вектора или матрицы. Если A является матрицей m-на-n и B является матрицей m-by-p, то x является nоколо-p матрица.

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

.
Представлен в R2020b