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.

В этом примере задайте как 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
Поддержка комплексного числа: Да

Выходные данные вводят в виде a 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- p матрица.

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

Введенный в R2020b