fixed.qlessQRMatrixSolve

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

Описание

пример

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

Результат этого кода эквивалентен вычислениям

[~,R] = qr(A,0);
x = R\(R'\B)
или
x = (A'*A)\B

пример

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

x = fixed.qlessQRMatrixSolve(A, B, outputType, forgettingFactor) возвращает решение в систему линейных уравнений с forgettingFactor умноженный на R после каждой строки A обрабатывается.

Примеры

свернуть все

Этот пример показывает, как решить систему линейных уравнений (AA)x=b использование QR-разложения, без явного вычисления Q-фактора QR-разложения.

rng('default');
m = 6;
n = 3;
p = 1;
A = randn(m,n);
b = randn(n,p);
x = fixed.qlessQRMatrixSolve(A,b)
x = 3×1

    0.2991
    0.0523
    0.4182

The fixed.qlessQRMatrixSolve функция эквивалентна следующему коду, поднимает fixed.qlessQRMatrixSolve функция более эффективна и поддерживает типы данных с фиксированной точкой.

x = (A'*A)\b
x = 3×1

    0.2991
    0.0523
    0.4182

Этот пример показывает, как задать тип выходных данных, чтобы решить систему уравнений с данными с фиксированной точкой.

Задайте данные, представляющие систему уравнений. Задайте матрицу A как нулевое среднее, обычно распределенная случайная матрица со стандартным отклонением 1.

rng('default');
m = 6;
n = 3;
p = 1;
A0 = randn(m,n);
b0 = randn(n,p);

Задайте типы данных с фиксированной точкой для A и b чтобы избежать переполнения во время расчета QR.

T.A = fi([],1,22,16);
T.b = fi([],1,22,16);
A = cast(A0, 'like', T.A)
A=6×3 object
    0.5377   -0.4336    0.7254
    1.8339    0.3426   -0.0630
   -2.2589    3.5784    0.7147
    0.8622    2.7694   -0.2050
    0.3188   -1.3499   -0.1241
   -1.3077    3.0349    1.4897

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 22
        FractionLength: 16

b = cast(b0, 'like', T.b)
b=3×1 object
    1.4090
    1.4172
    0.6715

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 22
        FractionLength: 16

Задайте тип выходных данных, чтобы избежать переполнения при обратной подстановке.

T.x = fi([],1,29,12);

Используйте fixed.qlessQRMatrixSolve функция для вычисления решения, x.

x = fixed.qlessQRMatrixSolve(A,b,T.x)
x=3×1 object
    0.2988
    0.0522
    0.4180

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 29
        FractionLength: 12

        RoundingMethod: Floor
        OverflowAction: Wrap
           ProductMode: SpecifyPrecision
     ProductWordLength: 29
 ProductFractionLength: 12
               SumMode: SpecifyPrecision
         SumWordLength: 29
     SumFractionLength: 12
         CastBeforeSum: true

Сравните этот результат с результатом встроенных операций MATLAB ® с двойной точностью с плавающей точностью.

x0 = (A0'*A0)\b0
x0 = 3×1

    0.2991
    0.0523
    0.4182

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

свернуть все

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

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

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

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

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

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

Коэффициент забывания, заданный как неотрицательный скаляр между 0 и 1. Коэффициент забывания определяет, сколько веса дается за данные. The forgettingFactor значение умножается на выход QR-разложения, R после каждой строки A обрабатывается.

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

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

свернуть все

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

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

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