rref

Приведенный ступенчатый по строкам вид матрицы (Исключение по Гауссу-Жордану)

Описание

пример

R = rref(A) возвращает приведенный ступенчатый по строкам вид матрицы A использование исключения по Гауссу-Жордану с частичным поворотом.

R = rref(A,tol) задает допуск поворота, который алгоритм использует для определения незначительных столбцов.

пример

[R,p] = rref(A) также возвращает ненулевые повороты p.

Примеры

свернуть все

Создайте матрицу и вычислите приведенный ступенчатый по строкам вид матрицы. В этой форме матрица имеет начальное значение 1с в положении поворота каждого столбца.

A = magic(3)
A = 3×3

     8     1     6
     3     5     7
     4     9     2

RA = rref(A)
RA = 3×3

     1     0     0
     0     1     0
     0     0     1

Матрица магического квадрата 3 на 3 является полной рангом, поэтому приведенный ступенчатый по строкам вид матрицы является матрицей тождеств.

Теперь вычислите приведенный ступенчатый по строкам вид матрицы магической квадратной матрицы 4 на 4. Задайте два выхода, чтобы вернуть ненулевые сводные столбцы. Поскольку эта матрица неполного ранга, результат не является тождествами матрицей.

B = magic(4)
B = 4×4

    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1

[RB,p] = rref(B)
RB = 4×4

     1     0     0     1
     0     1     0     3
     0     0     1    -3
     0     0     0     0

p = 1×3

     1     2     3

Используйте исключение по Гауссу-Жордану на дополненных матрицах, чтобы решить линейную систему и вычислить обратную матрицу. Эти методы в основном представляют академический интерес, поскольку существуют более эффективные и численно стабильные способы вычисления этих значений.

Создайте магическую квадратную матрицу 3 на 3. Добавьте дополнительный столбец в конец матрицы. Эта дополненная матрица представляет линейную систему Ax=b, с дополнительным столбцом, соответствующим b.

A = magic(3);
A(:,4) = [1; 1; 1]
A = 3×4

     8     1     6     1
     3     5     7     1
     4     9     2     1

Вычислите приведенный ступенчатый по строкам вид матрицы A. Индексируйте в R для извлечения записей в дополнительном (дополненном) столбце, который содержит решение для линейной системы.

R = rref(A)
R = 3×4

    1.0000         0         0    0.0667
         0    1.0000         0    0.0667
         0         0    1.0000    0.0667

x = R(:,end)
x = 3×1

    0.0667
    0.0667
    0.0667

Более эффективный способ решения этой линейной системы - это оператор обратной косой черты, x = A\b.

Создайте аналогичную матрицу магического квадрата, но на этот раз прибавьте матрицу тождеств того же размера к конечным столбцам.

A = [magic(3) eye(3)]
A = 3×6

     8     1     6     1     0     0
     3     5     7     0     1     0
     4     9     2     0     0     1

Вычислите приведенный ступенчатый по строкам вид матрицы A. В этой форме дополнительные столбцы содержат обратную матрицу для магической квадратной матрицы 3 на 3.

R = rref(A)
R = 3×6

    1.0000         0         0    0.1472   -0.1444    0.0639
         0    1.0000         0   -0.0611    0.0222    0.1056
         0         0    1.0000   -0.0194    0.1889   -0.1028

inv_A = R(:,4:end)
inv_A = 3×3

    0.1472   -0.1444    0.0639
   -0.0611    0.0222    0.1056
   -0.0194    0.1889   -0.1028

Более эффективный способ вычисления обратной матрицы - это inv(A).

Рассмотрим линейную систему уравнений с четырьмя уравнениями и тремя неизвестными.

x1+x2+5x3=62x1+x2+8x3=8x1+2x2+7x3=10-x1+x2-x3=2.

Создайте дополненную матрицу, которая представляет систему уравнений.

A = [1  1  5;
     2  1  8;
     1  2  7;
    -1  1 -1];
b = [6 8 10 2]';
M = [A b];

Использование rref для выражения системы в приведенный ступенчатый по строкам вид матрицы.

R = rref(M)
R = 4×4

     1     0     3     2
     0     1     2     4
     0     0     0     0
     0     0     0     0

Первые две строки R содержат уравнения, которые выражают x1 и x2 с точки зрения x3. Вторые две строки подразумевают, что существует по крайней мере одно решение, которое подходит для правого вектора (в противном случае одно из уравнений считалось бы 1=0). Третий столбец не содержит центр, поэтому x3 является независимой переменной. Поэтому существует бесконечно много решений для x1 и x2, и x3 может быть выбран свободно.

x1=2-3x3x2=4-2x3.

Для примера, если x3=1, затем x1=-1 и x2=2.

С числовой точки зрения более эффективный способ решения этой системы уравнений - это x0 = A\b, который (для прямоугольной матрицы A) вычисляет решение методом наименьших квадратов. В этом случае можно проверить точность решения с помощью norm(A*x0-b)/norm(b) и уникальность решения путем проверки, если rank(A) равен количеству неизвестных. Если существует более одного решения, то все они имеют форму x=x0+nt, где n - ядро пространства null(A) и t может быть выбран свободно.

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

свернуть все

Входная матрица.

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

Допуск поворота, заданный как скаляр. Если самый большой элемент (по абсолютному значению) в сводном столбце ниже допуска, столбец обнуляется. Это предотвращает деление и умножение с ненулевыми элементами поворота, меньшими, чем допуск.

Типы данных: single | double

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

свернуть все

Приведенный ступенчатый по строкам вид матрицы из A, возвращается как матрица.

Ненулевые сводные столбцы, возвращенные как вектор. Каждый элемент в p - индекс столбца A. Можно использовать p для оценки нескольких величин:

  • length(p) - оценка ранга A.

  • x(p) содержит переменные поворота в линейной системе Ax = b.

  • A(:,p) является базисом для области значений A.

  • R(1:r,p) является r-by- r единичная матрица, где r = length(p).

Ограничения

  • rank, orth, и null обычно являются более быстрыми и точными для вычисления ранга и базисных векторов матрицы.

  • mldivide рекомендуется для решения линейных систем.

Подробнее о

свернуть все

Частичное вращение

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

Для примера в матрице под алгоритмом начинается с определения наибольшего значения в первом столбце (значение в позиции (2,1), равное 1.1), а затем меняет полные первую и вторую строки так, чтобы это значение появилось в (1,1) положении.

Использование частичного поворота в исключении Гауссова уменьшает (но не устраняет) ошибки округления в вычислении.

Приведенный ступенчатый по строкам вид матрицы

Матрица находится в форме эшелона строк, когда эти условия выполняются:

  • Все ненулевые строки находятся выше строк всех нулей.

  • Начальный коэффициент каждой строки находится строго справа от коэффициента в строке над ним.

Пример матрицы в форме эшелона строк

A=(123041002).

Дополнительные требования к приведенному ступенчатому по строкам виду матрицы:

  • Каждый начальный коэффициент должен быть 1 и должен быть единственным ненулевым в его столбце.

В то время как единичная матрица чаще всего связана с приведенным ступенчатым по строкам видом матрицы, другие формы возможны. Другой пример матрицы в приведенный ступенчатый по строкам вид матрицы

A=(1001010300130000).

Алгоритмы

rref реализует исключение по Гауссу-Жордану с частичным поворотом. Допуск по умолчанию max(size(A))*eps*norm(A,inf) тесты на незначительные элементы столбца, которые обнулены для уменьшения ошибки округления.

См. также

| | |

Представлено до R2006a