rref

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

Синтаксис

R = rref(A)
R = rref(A,tol)
[R,p] = rref(A)

Описание

пример

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

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

свернуть все

Ненулевые столбцы центра, возвращенные как вектор. Каждый элемент в 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

Для просмотра документации необходимо авторизоваться на сайте