fixed.qrMatrixSolve

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

Описание

пример

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

пример

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

пример

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

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

где A - m -by- n матрица, B - m -by- 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.

Входные параметры

свернуть все

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

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

Вход вектор или матрица, представляющие B в линейной системе уравнений A x = 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 -by n матрицей и B является m -by- p матрицей, затем x является n-by- p матрица.

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

.
Введенный в R2020b