Как найти обратную матрицу методом гаусса жордана

Improve Article

Save Article

Like Article

  • Read
  • Discuss
  • Improve Article

    Save Article

    Like Article

    Given a Matrix, the task is to find the inverse of this Matrix using the Gauss-Jordan method.

    What is matrix?

    Matrix is an ordered rectangular array of numbers.  

    Operations that can be performed on a matrix are: Addition, Subtraction, Multiplication or Transpose of matrix etc.

    Inverse of a matrix:

    Given a square matrix A, which is non-singular (means the Determinant of A is nonzero); Then there exists a matrix 

    A^{-1}

    which is called inverse of matrix A.

    The inverse of a matrix is only possible when such properties hold: 

    1. The matrix must be a square matrix.
    2. The matrix must be a non-singular matrix and,
    3. There exist an Identity matrix I for which

    A A^{-1} = A^{-1} A = I
     In general, the inverse of n X n matrix A can be found using this simple formula:   

    where, Adj(A) denotes the adjoint of a matrix and, Det(A) is Determinant of matrix A.  

    Methods for finding Inverse of Matrix:

    Finding the inverse of a 2×2 matrix is a simple task, but for finding the inverse of larger matrix (like 3×3, 4×4, etc) is a tough task, So the following methods can be used: 

    1. Elementary Row Operation (Gauss-Jordan Method) (Efficient)
    2. Minors, Cofactors and Ad-jugate Method (Inefficient)

    Elementary Row Operation (Gauss – Jordan Method):

    Gauss-Jordan Method is a variant of Gaussian elimination in which row reduction operation is performed to find the inverse of a matrix.

    Steps to find the inverse of a matrix using Gauss-Jordan method:
    In order to find the inverse of the matrix following steps need to be followed:  

    1. Form the augmented matrix by the identity matrix.
    2. Perform the row reduction operation on this augmented matrix to generate a row reduced echelon form of the matrix.
    3. The following row operations are performed on augmented matrix when required: 
      • Interchange any two row.
      • Multiply each element of row by a non-zero integer.
      • Replace a row by the sum of itself and a constant multiple of another row of the matrix.

    Example: 

    • Augmented Matrix is formed as A:B

    • After applying the Gauss-Jordan elimination method:

    Below is the C++ program to find the inverse of a matrix using the Gauss-Jordan method:  

    C++

    #include <iostream>

    #include <vector>

    using namespace std;

    void PrintMatrix(float** ar, int n, int m)

    {

        for (int i = 0; i < n; i++) {

            for (int j = 0; j < m; j++) {

                cout << ar[i][j] << "  ";

            }

            printf("n");

        }

        return;

    }

    void PrintInverse(float** ar, int n, int m)

    {

        for (int i = 0; i < n; i++) {

            for (int j = n; j < m; j++) {

                printf("%.3f  ", ar[i][j]);

            }

            printf("n");

        }

        return;

    }

    void InverseOfMatrix(float** matrix, int order)

    {

        float temp;

        printf("=== Matrix ===n");

        PrintMatrix(matrix, order, order);

        for (int i = 0; i < order; i++) {

            for (int j = 0; j < 2 * order; j++) {

                if (j == (i + order))

                    matrix[i][j] = 1;

            }

        }

        for (int i = order - 1; i > 0; i--) {

            if (matrix[i - 1][0] < matrix[i][0]) {

                float* temp = matrix[i];

                matrix[i] = matrix[i - 1];

                matrix[i - 1] = temp;

            }

        }

        printf("n=== Augmented Matrix ===n");

        PrintMatrix(matrix, order, order * 2);

        for (int i = 0; i < order; i++) {

            for (int j = 0; j < order; j++) {

                if (j != i) {

                    temp = matrix[j][i] / matrix[i][i];

                    for (int k = 0; k < 2 * order; k++) {

                        matrix[j][k] -= matrix[i][k] * temp;

                    }

                }

            }

        }

        for (int i = 0; i < order; i++) {

            temp = matrix[i][i];

            for (int j = 0; j < 2 * order; j++) {

                matrix[i][j] = matrix[i][j] / temp;

            }

        }

        printf("n=== Inverse Matrix ===n");

        PrintInverse(matrix, order, 2 * order);

        return;

    }

    int main()

    {

        int order;

        order = 3;

        float** matrix = new float*[20];

        for (int i = 0; i < 20; i++)

            matrix[i] = new float[20];

        matrix[0][0] = 5;

        matrix[0][1] = 7;

        matrix[0][2] = 9;

        matrix[1][0] = 4;

        matrix[1][1] = 3;

        matrix[1][2] = 8;

        matrix[2][0] = 7;

        matrix[2][1] = 5;

        matrix[2][2] = 6;

        InverseOfMatrix(matrix, order);

        return 0;

    }

    Java

    import java.util.Arrays;

    public class Main {

        static void PrintMatrix(float[][] ar, int n, int m)

        {

            for (int i = 0; i < n; i++) {

                for (int j = 0; j < m; j++) {

                    System.out.print(ar[i][j] + "  ");

                }

                System.out.println();

            }

            return;

        }

        static void PrintInverse(float[][] ar, int n, int m)

        {

            for (int i = 0; i < n; i++) {

                for (int j = n; j < m; j++) {

                    System.out.printf("%.3f  ", ar[i][j]);

                }

                System.out.println();

            }

            return;

        }

        static void InverseOfMatrix(float[][] matrix, int order)

        {

            float temp;

            System.out.println("=== Matrix ===");

            PrintMatrix(matrix, order, order);

            for (int i = 0; i < order; i++) {

                for (int j = 0; j < 2 * order; j++) {

                    if (j == (i + order))

                        matrix[i][j] = 1;

                }

            }

            for (int i = order - 1; i > 0; i--) {

                if (matrix[i - 1][0] < matrix[i][0]) {

                    float[] tempArr = matrix[i];

                    matrix[i] = matrix[i - 1];

                    matrix[i - 1] = tempArr;

                }

            }

            System.out.println("n=== Augmented Matrix ===");

            PrintMatrix(matrix, order, order * 2);

            for (int i = 0; i < order; i++) {

                for (int j = 0; j < order; j++) {

                    if (j != i) {

                        temp = matrix[j][i] / matrix[i][i];

                        for (int k = 0; k < 2 * order; k++) {

                            matrix[j][k] -= matrix[i][k] * temp;

                        }

                    }

                }

            }

            for (int i = 0; i < order; i++) {

                temp = matrix[i][i];

                for (int j = 0; j < 2 * order; j++) {

                    matrix[i][j] = matrix[i][j] / temp;

                }

            }

            System.out.println("n=== Inverse Matrix ===");

            PrintInverse(matrix, order, 2 * order);

            return;

        }

        public static void main(String[] args)

        {

            int order;

            order = 3;

            float[][] matrix = new float[20][20];

            matrix[0][0] = 5;

            matrix[0][1] = 7;

            matrix[0][2] = 9;

            matrix[1][0] = 4;

            matrix[1][1] = 3;

            matrix[1][2] = 8;

            matrix[2][0] = 7;

            matrix[2][1] = 5;

            matrix[2][2] = 6;

            InverseOfMatrix(matrix, order);

        }

    }

    Python3

    def PrintMatrix(ar, n, m):

        for i in range(n):

            for j in range(m):

                print(ar[i][j], end="  ")

            print()

        return

    def PrintInverse(ar, n, m):

        for i in range(n):

            for j in range(n, m):

                print("%.3f  " % ar[i][j], end="")

            print()

        return

    def InverseOfMatrix(matrix, order):

        print("=== Matrix ===")

        PrintMatrix(matrix, order, order)

        for i in range(order):

            for j in range(2 * order):

                if j == (i + order):

                    matrix[i][j] = 1

        for i in range(order - 1, 0, -1):

            if matrix[i - 1][0] < matrix[i][0]:

                tempArr = matrix[i]

                matrix[i] = matrix[i - 1]

                matrix[i - 1] = tempArr

        print("n=== Augmented Matrix ===")

        PrintMatrix(matrix, order, order * 2)

        for i in range(order):

            for j in range(order):

                if j != i:

                    temp = matrix[j][i] / matrix[i][i]

                    for k in range(2 * order):

                        matrix[j][k] -= matrix[i][k] * temp

        for i in range(order):

            temp = matrix[i][i]

            for j in range(2 * order):

                matrix[i][j] = matrix[i][j] / temp

        print("n=== Inverse Matrix ===")

        PrintInverse(matrix, order, 2 * order)

        return

    def main():

        order = 3

        matrix = [[0 for i in range(20)] for j in range(20)]

        matrix[0][0] = 5

        matrix[0][1] = 7

        matrix[0][2] = 9

        matrix[1][0] = 4

        matrix[1][1] = 3

        matrix[1][2] = 8

        matrix[2][0] = 7

        matrix[2][1] = 5

        matrix[2][2] = 6

        InverseOfMatrix(matrix, order)

    if __name__ == '__main__':

        main()

    C#

    using System;

    public class GFG

    {

      static void PrintMatrix(float[][] ar, int n, int m)

      {

        for (int i = 0; i < n; i++) {

          for (int j = 0; j < m; j++) {

            Console.Write(ar[i][j] + "  ");

          }

          Console.WriteLine();

        }

        return;

      }

      static void PrintInverse(float[][] ar, int n, int m)

      {

        for (int i = 0; i < n; i++) {

          for (int j = n; j < m; j++) {

            Console.Write("{0:F3}  ", ar[i][j]);

          }

          Console.WriteLine();

        }

        return;

      }

      static void InverseOfMatrix(float[][] matrix, int order)

      {

        float temp;

        Console.WriteLine("=== Matrix ===");

        PrintMatrix(matrix, order, order);

        for (int i = 0; i < order; i++) {

          for (int j = 0; j < 2 * order; j++) {

            if (j == (i + order))

              matrix[i][j] = 1;

          }

        }

        for (int i = order - 1; i > 0; i--) {

          if (matrix[i - 1][0] < matrix[i][0]) {

            float[] tempArr = matrix[i];

            matrix[i] = matrix[i - 1];

            matrix[i - 1] = tempArr;

          }

        }

        Console.WriteLine("n=== Augmented Matrix ===");

        PrintMatrix(matrix, order, order * 2);

        for (int i = 0; i < order; i++) {

          for (int j = 0; j < order; j++) {

            if (j != i) {

              temp = matrix[j][i] / matrix[i][i];

              for (int k = 0; k < 2 * order; k++) {

                matrix[j][k] -= matrix[i][k] * temp;

              }

            }

          }

        }

        for (int i = 0; i < order; i++) {

          temp = matrix[i][i];

          for (int j = 0; j < 2 * order; j++) {

            matrix[i][j] = matrix[i][j] / temp;

          }

        }

        Console.WriteLine("n=== Inverse Matrix ===");

        PrintInverse(matrix, order, 2 * order);

        return;

      }

      public static void Main()

      {

        int order;

        order = 3;

        float[][] matrix = new float[20][];

        for (int i = 0; i < 20; i++) {

          matrix[i] = new float[20];

        }

        matrix[0][0] = 5;

        matrix[0][1] = 7;

        matrix[0][2] = 9;

        matrix[1][0] = 4;

        matrix[1][1] = 3;

        matrix[1][2] = 8;

        matrix[2][0] = 7;

        matrix[2][1] = 5;

        matrix[2][2] = 6;

        InverseOfMatrix(matrix, order);

      }

    }

    Javascript

    function printMatrix(matrix) {

      for (let i = 0; i < matrix.length; i++) {

        console.log(matrix[i].join(" "));

      }

    }

    function printInverse(matrix) {

      for (let i = 0; i < matrix.length; i++) {

        for (let j = matrix.length; j < 2 * matrix.length; j++) {

          console.log(matrix[i][j].toFixed(3) + " ");

        }

        console.log("n");

      }

    }

    function inverseOfMatrix(matrix) {

      let order = matrix.length;

      let temp;

      console.log("=== Matrix ===");

      printMatrix(matrix);

      for (let i = 0; i < order; i++) {

        for (let j = 0; j < 2 * order; j++) {

          if (j == i + order) {

            matrix[i][j] = 1;

          }

        }

      }

      for (let i = order - 1; i > 0; i--) {

        if (matrix[i - 1][0] < matrix[i][0]) {

          let tempArr = matrix[i];

          matrix[i] = matrix[i - 1];

          matrix[i - 1] = tempArr;

        }

      }

      console.log("n=== Augmented Matrix ===");

      printMatrix(matrix);

      for (let i = 0; i < order; i++) {

        for (let j = 0; j < order; j++) {

          if (j != i) {

            temp = matrix[j][i] / matrix[i][i];

            for (let k = 0; k < 2 * order; k++) {

              matrix[j][k] -= matrix[i][k] * temp;

            }

          }

        }

      }

      for (let i = 0; i < order; i++) {

        temp = matrix[i][i];

        for (let j = 0; j < 2 * order; j++) {

          matrix[i][j] = matrix[i][j] / temp;

        }

      }

      console.log("n=== Inverse Matrix ===");

      printInverse(matrix);

    }

    let matrix = [  [5, 7, 9],

      [4, 3, 8],

      [7, 5, 6],

    ];

    inverseOfMatrix(matrix);

    Output

    === Matrix ===
    5  7  9  
    4  3  8  
    7  5  6  
    
    === Augmented Matrix ===
    7  5  6  0  0  1  
    5  7  9  1  0  0  
    4  3  8  0  1  0  
    
    === Inverse Matrix ===
    -0.210  0.029  0.276  
    0.305  -0.314  -0.038  
    -0.010  0.229  -0.124  

    Last Updated :
    11 Apr, 2023

    Like Article

    Save Article

    Метод элементарных преобразований (методы Гаусса и Гаусса-Жордана для нахождения обратных матриц).

    В первой части был рассмотрен способ нахождения обратной матрицы с помощью алгебраических дополнений. Здесь же мы опишем иной метод нахождения обратных матриц: с использованием элементарных преобразований.

    Пусть нам задана квадратная матрица $A_{ntimes{n}}$. Допишем справа к матрице $A$ единичную матрицу $E$ n-го порядка. После такого дописывания мы получим матрицу $left(A|Eright)$. Со строками этой матрицы можно выполнять такие преобразования:

    1. Смена мест двух строк.
    2. Умножение всех элементов строки на некоторое число, не равное нулю.
    3. Прибавление к элементам одной строки соответствующих элементов другой строки, умноженных на любой множитель.

    Конечная цель указанных выше преобразований: привести матрицу $left(A|Eright)$ к такому виду: $left(E|A^{-1}right)$. Т.е. нужно сделать так, чтобы матрица до черты стала единичной, тогда после черты будет записана обратная матрица $A^{-1}$.

    Добиться этой цели можно, выполняя над исходной матрицей $left(A|Eright)$ преобразования метода Гаусса или Гаусса-Жордана. Перед тем, как перейти к описанию этих методов, оговорим, что изначально матрица $A_{ntimes{n}}$ не должна иметь нулевых строк или столбцов. Если в матрице $A$ есть хоть один нулевой столбец или нулевая строка, то обратная матрица $A^{-1}$ не существует.

    Строки матрицы станем обозначать буквами $r$ (от слова «row»): $r_1$ – первая строка, $r_2$ – вторая строка и так далее.

    Метод Гаусса

    Этот метод делят на два этапа, которые называют прямым ходом и обратным.

    Прямой ход метода Гаусса

    В процессе выполнения прямого хода мы последовательно используем строки матрицы. На первом шаге работаем с первой строкой, на втором шаге – со второй и так далее. Если в ходе решения в матрице до черты возникла нулевая строка, то прекращаем преобразования, так как обратная матрица $A^{-1}$ не существует.

    На первом шаге прямого хода обратимся к первой строке $r_1$. Если первый элемент $a_1$ первой строки не равен нулю, то выполняем обнуление всех ненулевых элементов первого столбца, лежащих под первой строкой. Если же $a_1=0$, то меняем местами первую строку с одной из тех нижележащих строк, у которых первый элемент отличен от нуля, а затем уже производим обнуление.

    На втором шаге прямого хода обратимся к второй строке $r_2$. Если второй элемент $a_2$ второй строки не равен нулю, то выполняем обнуление всех ненулевых элементов второго столбца, лежащих под второй строкой. Если же $a_2=0$, то меняем местами вторую строку с одной из тех нижележащих строк, у которых второй элемент отличен от нуля, а затем уже производим обнуление. В случае, когда второй элемент равен нулю как у второй строки, так и у всех нижележащих строк, прекращаем решение, так как обратная матрица $A^{-1}$ не существует.

    Полагаю, логика прямого хода ясна. На некоем k-м шаге мы работаем с строкой $r_k$. Если k-й элемент $a_k$ этой строки не равен нулю, то выполняем обнуление всех ненулевых элементов k-го столбца, лежащих под строкой $r_k$. Если же $a_k=0$, то меняем местами строку $r_k$ с одной из тех нижележащих строк, у которых k-й элемент отличен от нуля, а затем уже производим обнуление. В случае, когда k-й элемент равен нулю как у строки $r_k$, так и у всех нижележащих строк, прекращаем решение, так как обратная матрица $A^{-1}$ не существует.

    Когда мы придём к последней строке, матрица до черты станет верхней треугольной, т.е. все элементы под главной диагональю будут равны нулю. Это будет означать конец прямого хода метода Гаусса.

    Обратный ход метода Гаусса

    На этом этапе мы поднимаемся по матрице «снизу вверх». Сначала используем последнюю строку $r_n$, затем предпоследнюю $r_{n-1}$ и так далее, пока не дойдём до первой строки. С каждой строкой выполняем однотипные операции.

    Пусть, например, речь идёт о некоей k-й строке. Матрица, расположенная до черты, содержит в строке $r_k$ диагональный элемент $a_{kk}$. Если $a_{kk}=1$, то это нас вполне устраивает, а если $a_{kk}neq{1}$, то просто умножаем строку $r_k$ на коэффициент $frac{1}{a_{kk}}$, чтобы диагональный элемент стал равен 1. Затем с помощью строки $r_k$ обнуляем элементы k-го столбца, расположенные над строкой $r_k$.

    Как только мы дойдём до первой строки, матрица до черты станет единичной, и алгоритм завершится.

    Метод Гаусса-Жордана

    Последовательно используем строки матрицы. На первом шаге работаем с первой строкой, на втором шаге – со второй и так далее. Если в ходе решения в матрице до черты возникла нулевая строка, то прекращаем преобразования, так как обратная матрица $A^{-1}$ не существует.

    На первом шаге прямого хода обратимся к первой строке $r_1$. Первый элемент этой строки обозначим как $a_1$. Если $a_1=0$, то меняем местами первую строку с одной из тех нижележащих строк, у которых первый элемент отличен от нуля. Затем, если $a_1neq{1}$, умножаем строку $r_1$ на $frac{1}{a_1}$ (если $a_1=1$, то никакого домножения делать не надо). Далее с помощью строки $r_1$ производим обнуление всех остальных ненулевых элементов первого столбца, после чего переходим к следующему шагу.

    На втором шаге прямого хода работаем с второй строкой $r_2$. Второй элемент этой строки обозначим как $a_2$. Если $a_2=0$, то меняем местами вторую строку с одной из тех нижележащих строк, у которых второй элемент отличен от нуля. Если таких строк нет, т.е. у всех нижележащих строк второй элемент равен нулю, то прекращаем решение, так как обратная матрица $A^{-1}$ не существует. Затем, если $a_2neq{1}$, умножаем строку $r_2$ на $frac{1}{a_2}$ (если $a_2=1$, то никакого домножения делать не надо). Далее с помощью строки $r_2$ производим обнуление всех остальных ненулевых элементов второго столбца, после чего переходим к следующему шагу.

    Полагаю, логика данного метода ясна. На k-м шаге работаем с k-й строкой $r_k$, k-й элемент которой обозначим как $a_k$. Если $a_k=0$, то меняем местами строку $r_k$ с одной из тех нижележащих строк, у которых k-й элемент отличен от нуля. Если таких строк нет, т.е. у всех нижележащих строк k-й элемент равен нулю, то прекращаем решение, так как обратная матрица $A^{-1}$ не существует. Затем, если $a_kneq{1}$, умножаем строку $r_k$ на $frac{1}{a_k}$ (если $a_k=1$, то никакого домножения делать не надо). Далее с помощью строки $r_k$ производим обнуление всех остальных ненулевых элементов k-го столбца, после чего переходим к следующему шагу.

    Когда мы обработаем последнюю строку, матрица до черты станет единичной, и алгоритм завершится.

    Перед тем, как переходить к примерам, я введу один дополнительный термин: ведущий элемент. Ведущим элементом ненулевой строки называется её первый (считая слева направо) отличный от нуля элемент. Например, в строке $(0;0;5;-9;0)$ ведущим будет третий элемент (он равен 5).

    Пример №5

    Найти матрицу $A^{-1}$, если
    $A=left(begin{array}{ccc}
    -5 & 23 & -24\
    -1 & 4 & -5\
    9 & -40 & 43 end{array} right)$.

    Решение

    Заданная нам матрица не имеет нулевых строк или столбцов, поэтому можем приступать к нахождению $A^{-1}$. Поставленную задачу решим двумя способами: как преобразованиями метода Гаусса, так и метода Гаусса-Жордана. Для начала запишем матрицу $(A|E)$, которая в нашем случае будет иметь такой вид:

    $$
    left(begin{array}{ccc|ccc}
    -5 & 23 & -24 & 1 & 0 & 0\
    -1 & 4 & -5 & 0 & 1 & 0\
    9 & -40 & 43 & 0 & 0 & 1 end{array}right)
    $$

    Наша цель: привести матрицу $(A|E)$ к виду $left(E|A^{-1}right)$.

    Метод Гаусса

    Прямой ход метода Гаусса

    Первый шаг

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

    $$
    left(begin{array}{ccc|ccc}
    -5 & 23 & -24 & 1 & 0 & 0\
    -1 & 4 & -5 & 0 & 1 & 0\
    9 & -40 & 43 & 0 & 0 & 1 end{array}right)
    overset{r_1leftrightarrow{r_2}}{rightarrow}

    left(begin{array}{ccc|ccc}
    boldred{-1} & 4 & -5 & 0 & 1 & 0\
    normblue{-5} & 23 & -24 & 1 & 0 & 0\
    normblue{9} & -40 & 43 & 0 & 0 & 1 end{array}right)
    $$

    Теперь ведущий элемент первой строки стал равен -1 (я выделил этот элемент красным цветом). Приступим к обнулению ненулевых элементов первого столбца, лежащих под первой строкой (они выделены синим цветом). Для этого над строками матрицы нужно выполнить такие действия:

    $$
    begin{aligned}
    &r_2-frac{normblue{-5}}{boldred{-1}}cdot{r_1}=r_2-5r_1;\
    &r_3-frac{normblue{9}}{boldred{-1}}cdot{r_1}=r_3+9r_1.
    end{aligned}
    $$

    Запись $r_2-5r_1$ означает, что от элементов второй строки вычли соответствующие элементы первой строки, умноженные на пять. Результат записывают на место второй строки в новую матрицу. Если с устным выполнением такой операции возникают сложности, то это действие можно выполнить отдельно:

    $$
    r_2-5r_1
    =(-5;;23;;-24;;1;;0;;0)-5cdot(-1;;4;;-5;;0;;1;;0)=\

    =(-5;;23;;-24;;1;;0;;0)-(-5;;20;;-25;;0;;5;;0)
    =(0;;3;;1;;1;;-5;;0)
    $$

    Действие $r_3+9r_1$ выполняется аналогично. Первую строку мы не трогали, поэтому в новую матрицу она перейдёт без изменений:

    $$
    left(begin{array}{ccc|ccc}
    -1 & 4 & -5 & 0 & 1 & 0\
    -5 & 23 & -24 & 1 & 0 & 0\
    9 & -40 & 43 & 0 & 0 & 1 end{array}right)
    begin{array} {l} phantom{0}\ r_2-5r_1 \ r_3+9r_1 end{array} rightarrow

    left(begin{array}{ccc|ccc}
    -1 & 4 & -5 & 0 & 1 & 0\
    0 & 3 & 1 & 1 & -5 & 0\
    0 & -4 & -2 & 0 & 9 & 1 end{array}right)
    $$

    На этом первый шаг закончен. Нулевых строк в матрице до черты не возникло, поэтому продолжаем решение. Кстати, теперь, я полагаю, ясно, зачем надо было менять местами строки. Если бы не смена мест строк, нам пришлось бы выполнять действия $r_2-frac{1}{5}cdot{r_1}$ и $r_3+frac{9}{5}cdot{r_1}$, что привело бы к появлению дробей. А легче, разумеется, работать с целыми числами, чем с дробями.

    Второй шаг

    На втором шаге прямого хода мы работаем с второй строкой. Второй элемент этой строки (число 3) не равен нулю, поэтому можем приступать к обнулению ненулевых элементов второго столбца, расположенных под второй строкой:

    $$
    left(begin{array}{ccc|ccc}
    -1 & 4 & -5 & 0 & 1 & 0\
    0 & 3 & 1 & 1 & -5 & 0\
    0 & -4 & -2 & 0 & 9 & 1 end{array}right)
    begin{array} {l} phantom{0}\ phantom{0} \ r_3+4/3cdot{r_2} end{array} rightarrow

    left(begin{array}{ccc|ccc}
    -1 & 4 & -5 & 0 & 1 & 0\
    0 & 3 & 1 & 1 & -5 & 0\
    0 & 0 & -2/3 & 4/3 & 7/3 & 1 end{array}right)
    $$

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

    Пару слов насчёт действий со строками, которые мы выполняли на втором шаге. На первом шаге мы меняли местами строки, чтобы ведущий элемент первой строки стал равен -1. Здесь такая смена строк ничего не даст, так как доступна к обмену лишь третья строка, а у неё ведущий элемент тоже не равен ни 1, ни -1. В этом случае можно выполнить дополнительное преобразование со второй строкой: $r_2+r_3$:

    $$
    left(begin{array}{ccc|ccc}
    -1 & 4 & -5 & 0 & 1 & 0\
    0 & 3 & 1 & 1 & -5 & 0\
    0 & -4 & -2 & 0 & 9 & 1 end{array}right)
    begin{array} {l} phantom{0}\ r_2+r_3 \ phantom{0} end{array} rightarrow

    left(begin{array}{ccc|ccc}
    -1 & 4 & -5 & 0 & 1 & 0\
    0 & -1 & -1 & 1 & 4 & 1\
    0 & -4 & -2 & 0 & 9 & 1 end{array}right)
    $$

    После этого текущий шаг прямого хода будет продолжен без дробей. Можно было сделать и такое действие: $3r_3+4r_2$, тогда и необходимый элемент третьего столбца был бы обнулён, и дробей бы не появилось. Выполнять такие действия или нет – надо смотреть по ситуации. Если работы с дробями предвидится немного, то особого смысла в попытках их избежать нет. Если же нас ожидают ещё несколько шагов прямого хода, то, возможно, лучше упростить себе расчёты и выполнить вспомогательное действие, чтобы потом не работать с дробями. К слову, если есть необходимость избавиться от дробей в некоей строке, то можно просто домножить данную строку на соответствующий коэффициент. Например, строку $left(frac{1}{3};;-frac{4}{5};;2;0right)$ можно домножить на число 15, тогда дроби исчезнут, и строка станет такой: $left(5;;-12;;30;0right)$.

    Обратный ход метода Гаусса

    Первый шаг

    На первом шаге обратного хода мы работаем с последней, т.е. третьей строкой матрицы. Посмотрим на диагональный элемент в третьей строке: он равен $-frac{2}{3}$. Сделаем этот элемент единицей, домножив третью строку на $-frac{3}{2}$, а затем с помощью третьей строки обнулим ненулевые элементы третьего столбца, расположенные над третьей строкой:

    $$
    left(begin{array}{ccc|ccc}
    -1 & 4 & -5 & 0 & 1 & 0\
    0 & 3 & 1 & 1 & -5 & 0\
    0 & 0 & -2/3 & 4/3 & 7/3 & 1 end{array}right)
    begin{array} {l} phantom{0}\ phantom{0}\ -3/2cdot{r_3} end{array} rightarrow\

    left(begin{array}{ccc|ccc}
    -1 & 4 & -5 & 0 & 1 & 0\
    0 & 3 & 1 & 1 & -5 & 0\
    0 & 0 & 1 & -2 & -7/2 & -3/2 end{array}right)
    begin{array} {l} r_1+5r_3 phantom{0}\ r_2-r_3\ phantom{0} end{array} rightarrow

    left(begin{array}{ccc|ccc}
    -1 & 4 & 0 & -10 & -33/2 & -15/2\
    0 & 3 & 0 & 3 & -3/2 & 3/2\
    0 & 0 & 1 & -2 & -7/2 & -3/2 end{array}right)
    $$

    Второй шаг

    На втором шаге обратного хода мы работаем с предпоследней, т.е. второй строкой матрицы. Посмотрим на диагональный элемент во второй строке: он равен 3. Сделаем этот элемент единицей, домножив вторую строку на $frac{1}{3}$, а затем с помощью второй строки обнулим ненулевой элемент второго столбца, расположенный над второй строкой:

    $$
    left(begin{array}{ccc|ccc}
    -1 & 4 & 0 & -10 & -33/2 & -15/2\
    0 & 3 & 0 & 3 & -3/2 & 3/2\
    0 & 0 & 1 & -2 & -7/2 & -3/2 end{array}right)
    begin{array} {l} phantom{0}\ 1/3cdot{r_2} \ phantom{0} end{array} rightarrow\

    left(begin{array}{ccc|ccc}
    -1 & 4 & 0 & -10 & -33/2 & -15/2\
    0 & 1 & 0 & 1 & -1/2 & 1/2\
    0 & 0 & 1 & -2 & -7/2 & -3/2 end{array}right)
    begin{array} {l} r_1-4r_2\ phantom{0} \ phantom{0} end{array} rightarrow

    left(begin{array}{ccc|ccc}
    -1 & 0 & 0 & -14 & -29/2 & -19/2\
    0 & 1 & 0 & 1 & -1/2 & 1/2\
    0 & 0 & 1 & -2 & -7/2 & -3/2 end{array}right)
    $$

    Третий шаг

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

    $$
    left(begin{array}{ccc|ccc}
    -1 & 0 & 0 & -14 & -29/2 & -19/2\
    0 & 1 & 0 & 1 & -1/2 & 1/2\
    0 & 0 & 1 & -2 & -7/2 & -3/2 end{array}right)
    begin{array} {l} -1cdot{r_1}\ phantom{0} \ phantom{0} end{array} rightarrow

    left(begin{array}{ccc|ccc}
    1 & 0 & 0 & 14 & 29/2 & 19/2\
    0 & 1 & 0 & 1 & -1/2 & 1/2\
    0 & 0 & 1 & -2 & -7/2 & -3/2 end{array}right)
    $$

    Матрица до черты стала единичной, преобразования завершены. Обратная матрица будет такой:

    $$
    A^{-1}
    =left(begin{array}{ccc}
    14 & 29/2 & 19/2\
    1 & -1/2 & 1/2\
    -2 & -7/2 & -3/2 end{array}right)
    $$

    Если пропустить все пояснения, то решение будет таким:

    $$
    left(begin{array}{ccc|ccc}
    -5 & 23 & -24 & 1 & 0 & 0\
    -1 & 4 & -5 & 0 & 1 & 0\
    9 & -40 & 43 & 0 & 0 & 1 end{array}right)
    overset{r_1leftrightarrow{r_2}}{rightarrow}
    $$

    $$
    rightarrowleft(begin{array}{ccc|ccc}
    -1 & 4 & -5 & 0 & 1 & 0\
    -5 & 23 & -24 & 1 & 0 & 0\
    9 & -40 & 43 & 0 & 0 & 1 end{array}right)
    begin{array} {l} phantom{0}\ r_2-5r_1 \ r_3+9r_1 end{array} rightarrow

    left(begin{array}{ccc|ccc}
    -1 & 4 & -5 & 0 & 1 & 0\
    0 & 3 & 1 & 1 & -5 & 0\
    0 & -4 & -2 & 0 & 9 & 1 end{array}right)
    begin{array} {l} phantom{0}\ phantom{0} \ r_3+4/3cdot{r_2} end{array} rightarrow
    $$

    $$
    rightarrowleft(begin{array}{ccc|ccc}
    -1 & 4 & -5 & 0 & 1 & 0\
    0 & 3 & 1 & 1 & -5 & 0\
    0 & 0 & -2/3 & 4/3 & 7/3 & 1 end{array}right)
    begin{array} {l} phantom{0}\ phantom{0}\ -3/2cdot{r_3} end{array} rightarrow

    left(begin{array}{ccc|ccc}
    -1 & 4 & -5 & 0 & 1 & 0\
    0 & 3 & 1 & 1 & -5 & 0\
    0 & 0 & 1 & -2 & -7/2 & -3/2 end{array}right)
    begin{array} {l} r_1+5r_3 phantom{0}\ r_2-r_3\ phantom{0} end{array} rightarrow
    $$

    $$
    rightarrowleft(begin{array}{ccc|ccc}
    -1 & 4 & 0 & -10 & -33/2 & -15/2\
    0 & 3 & 0 & 3 & -3/2 & 3/2\
    0 & 0 & 1 & -2 & -7/2 & -3/2 end{array}right)
    begin{array} {l} phantom{0}\ 1/3cdot{r_2} \ phantom{0} end{array} rightarrow

    left(begin{array}{ccc|ccc}
    -1 & 4 & 0 & -10 & -33/2 & -15/2\
    0 & 1 & 0 & 1 & -1/2 & 1/2\
    0 & 0 & 1 & -2 & -7/2 & -3/2 end{array}right)
    begin{array} {l} r_1-4r_2\ phantom{0} \ phantom{0} end{array} rightarrow
    $$

    $$
    rightarrowleft(begin{array}{ccc|ccc}
    -1 & 0 & 0 & -14 & -29/2 & -19/2\
    0 & 1 & 0 & 1 & -1/2 & 1/2\
    0 & 0 & 1 & -2 & -7/2 & -3/2 end{array}right)
    begin{array} {l} -1cdot{r_1}\ phantom{0} \ phantom{0} end{array} rightarrow

    left(begin{array}{ccc|ccc}
    1 & 0 & 0 & 14 & 29/2 & 19/2\
    0 & 1 & 0 & 1 & -1/2 & 1/2\
    0 & 0 & 1 & -2 & -7/2 & -3/2 end{array}right)
    $$

    Теперь решим этот же пример методом Гаусса-Жордана.

    Метод Гаусса-Жордана

    Первый шаг

    На первом шаге мы работаем с первой строкой. Первый элемент этой строки (число -5) не равен нулю, поэтому можем следовать стандартному алгоритму: домножить первую строку на $-frac{1}{5}$, чтобы первый элемент стал равен единице, а затем обнулить все иные ненулевые элементы первого столбца. Однако, как и при решении методом Гаусса, удобно, когда ведущий элемент используемой строки равен 1 или -1. Поэтому как и на первом шаге метода Гаусса, поменяем местами первую строку с второй строкой:

    $$
    left(begin{array}{ccc|ccc}
    -5 & 23 & -24 & 1 & 0 & 0\
    -1 & 4 & -5 & 0 & 1 & 0\
    9 & -40 & 43 & 0 & 0 & 1 end{array}right)
    overset{r_1leftrightarrow{r_2}}{rightarrow}

    left(begin{array}{ccc|ccc}
    -1 & 4 & -5 & 0 & 1 & 0\
    normblue{-5} & 23 & -24 & 1 & 0 & 0\
    normblue{9} & -40 & 43 & 0 & 0 & 1 end{array}right)
    $$

    Теперь первый элемент первой строки стал равен -1. Чтобы этот элемент стал равен 1, домножим первую строку на -1, а потом обнулим все остальные ненулевые элементы первого столбца (они выделены в матрице выше синим цветом):

    $$
    left(begin{array}{ccc|ccc}
    -1 & 4 & -5 & 0 & 1 & 0\
    -5 & 23 & -24 & 1 & 0 & 0\
    9 & -40 & 43 & 0 & 0 & 1 end{array}right)
    begin{array} {l} -1cdot{r_1}\ phantom{0} \ phantom{0} end{array} rightarrow\

    rightarrowleft(begin{array}{ccc|ccc}
    1 & -4 & 5 & 0 & -1 & 0\
    -5 & 23 & -24 & 1 & 0 & 0\
    9 & -40 & 43 & 0 & 0 & 1 end{array}right)
    begin{array} {l} phantom{0}\ r_2+5r_1 \ r_3-9r_1 end{array} rightarrow

    left(begin{array}{ccc|ccc}
    1 & -4 & 5 & 0 & -1 & 0\
    0 & 3 & 1 & 1 & -5 & 0\
    0 & -4 & -2 & 0 & 9 & 1 end{array}right)
    $$

    На этом первый шаг закончен. Нулевых строк в матрице до черты не возникло, поэтому продолжаем решение.

    Второй шаг

    На втором шаге мы работаем с второй строкой. Второй элемент этой строки (число 3) не равен нулю, поэтому домножаем вторую строку на $frac{1}{3}$, чтобы второй элемент стал равен единице, а затем обнуляем все иные ненулевые элементы второго столбца.

    $$
    left(begin{array}{ccc|ccc}
    1 & -4 & 5 & 0 & -1 & 0\
    0 & 3 & 1 & 1 & -5 & 0\
    0 & -4 & -2 & 0 & 9 & 1 end{array}right)
    begin{array} {l} phantom{0}\1/3cdot{r_2} \phantom{0}end{array} rightarrow\

    rightarrowleft(begin{array}{ccc|ccc}
    1 & -4 & 5 & 0 & -1 & 0\
    0 & 1 & 1/3 & 1/3 & -5/3 & 0\
    0 & -4 & -2 & 0 & 9 & 1 end{array}right)
    begin{array} {l} r_1+4r_2\ phantom{0} \ r_3+4r_2 end{array} rightarrow

    left(begin{array}{ccc|ccc}
    1 & 0 & 19/3 & 4/3 & -23/3 & 0\
    0 & 1 & 1/3 & 1/3 & -5/3 & 0\
    0 & 0 & -2/3 & 4/3 & 7/3 & 1 end{array}right)
    $$

    Замечание относительно облегчения работы с дробями, сделанное после второго шага прямого хода метода Гаусса, остаётся в силе и здесь.

    Третий шаг

    На третьем шаге мы работаем с третьей строкой. Третий элемент этой строки (число -2/3) не равен нулю, поэтому домножаем третью строку на $-frac{3}{2}$, чтобы третий элемент стал равен единице, а затем обнуляем все иные ненулевые элементы третьего столбца.

    $$
    left(begin{array}{ccc|ccc}
    1 & 0 & 19/3 & 4/3 & -23/3 & 0\
    0 & 1 & 1/3 & 1/3 & -5/3 & 0\
    0 & 0 & -2/3 & 4/3 & 7/3 & 1 end{array}right)
    begin{array} {l} phantom{0}\phantom{0} \ -3/2cdot{r_3}end{array} rightarrow\

    rightarrowleft(begin{array}{ccc|ccc}
    1 & 0 & 19/3 & 4/3 & -23/3 & 0\
    0 & 1 & 1/3 & 1/3 & -5/3 & 0\
    0 & 0 & 1 & -2 & -7/2 & -3/2 end{array}right)
    begin{array} {l} r_1-19/3r_3\ r_2-1/3cdot{r_3} \ phantom{0} end{array} rightarrow

    left(begin{array}{ccc|ccc}
    1 & 0 & 0 & 14 & 29/2 & 19/2\
    0 & 1 & 0 & 1 & -1/2 & 1/2\
    0 & 0 & 1 & -2 & -7/2 & -3/2 end{array}right)
    $$

    Матрица до черты стала единичной, преобразования завершены. Обратная матрица будет такой:

    $$
    A^{-1}
    =left(begin{array}{ccc}
    14 & 29/2 & 19/2\
    1 & -1/2 & 1/2\
    -2 & -7/2 & -3/2 end{array}right)
    $$

    Если пропустить все пояснения, то решение будет таким:

    $$
    left(begin{array}{ccc|ccc}
    -5 & 23 & -24 & 1 & 0 & 0\
    -1 & 4 & -5 & 0 & 1 & 0\
    9 & -40 & 43 & 0 & 0 & 1 end{array}right)
    overset{r_1leftrightarrow{r_2}}{rightarrow}

    left(begin{array}{ccc|ccc}
    -1 & 4 & -5 & 0 & 1 & 0\
    -5 & 23 & -24 & 1 & 0 & 0\
    9 & -40 & 43 & 0 & 0 & 1 end{array}right)
    begin{array} {l} -1cdot{r_1}\ phantom{0} \ phantom{0} end{array} rightarrow
    $$

    $$
    rightarrowleft(begin{array}{ccc|ccc}
    1 & -4 & 5 & 0 & -1 & 0\
    -5 & 23 & -24 & 1 & 0 & 0\
    9 & -40 & 43 & 0 & 0 & 1 end{array}right)
    begin{array} {l} phantom{0}\ r_2+5r_1 \ r_3-9r_1 end{array} rightarrow

    left(begin{array}{ccc|ccc}
    1 & -4 & 5 & 0 & -1 & 0\
    0 & 3 & 1 & 1 & -5 & 0\
    0 & -4 & -2 & 0 & 9 & 1 end{array}right)
    begin{array} {l} phantom{0}\1/3cdot{r_2} \phantom{0}end{array} rightarrow
    $$

    $$
    rightarrowleft(begin{array}{ccc|ccc}
    1 & -4 & 5 & 0 & -1 & 0\
    0 & 1 & 1/3 & 1/3 & -5/3 & 0\
    0 & -4 & -2 & 0 & 9 & 1 end{array}right)
    begin{array} {l} r_1+4r_2\ phantom{0} \ r_3+4r_2 end{array} rightarrow

    left(begin{array}{ccc|ccc}
    1 & 0 & 19/3 & 4/3 & -23/3 & 0\
    0 & 1 & 1/3 & 1/3 & -5/3 & 0\
    0 & 0 & -2/3 & 4/3 & 7/3 & 1 end{array}right)
    begin{array} {l} phantom{0}\phantom{0} \ -3/2cdot{r_3}end{array} rightarrow
    $$

    $$
    rightarrowleft(begin{array}{ccc|ccc}
    1 & 0 & 19/3 & 4/3 & -23/3 & 0\
    0 & 1 & 1/3 & 1/3 & -5/3 & 0\
    0 & 0 & 1 & -2 & -7/2 & -3/2 end{array}right)
    begin{array} {l} r_1-19/3r_3\ r_2-1/3cdot{r_3} \ phantom{0} end{array} rightarrow

    left(begin{array}{ccc|ccc}
    1 & 0 & 0 & 14 & 29/2 & 19/2\
    0 & 1 & 0 & 1 & -1/2 & 1/2\
    0 & 0 & 1 & -2 & -7/2 & -3/2 end{array}right)
    $$

    Ответ: $A^{-1}
    =left(begin{array}{ccc}
    14 & 29/2 & 19/2\
    1 & -1/2 & 1/2\
    -2 & -7/2 & -3/2 end{array}right)$.

    Пример №6

    Найти матрицу $A^{-1}$, если
    $A=left(begin{array}{cccc}
    -2 & 3 & 0 & 1\
    -6 & 9 & -2 & 7\
    0 & -2 & -18 & 27\
    -4 & 5 & -8 & 14end{array} right)$.

    Решение

    В предыдущем примере были даны подробные пояснения каждого шага как метода Гаусса, так и метода Гаусса-Жордана. В этом примере я стану комментировать лишь некие нюансы, которые возникнут в ходе решения.

    Метод Гаусса

    $$
    left(begin{array}{cccc|cccc}
    -2 & 3 & 0 & 1 & 1 & 0 & 0 & 0\
    -6 & 9 & -2 & 7 & 0 & 1 & 0 & 0 \
    0 & -2 & -18 & 27 & 0 & 0 & 1 & 0\
    -4 & 5 & -8 & 14 & 0 & 0 & 0 & 1
    end{array} right)
    begin{array} {l} phantom{0} \ r_2-3r_1 \ phantom{0} \ r_4-2r_1 end{array} rightarrow

    left(begin{array}{cccc|cccc}
    -2 & 3 & 0 & 1 & 1 & 0 & 0 & 0\
    0 & 0 & -2 & 4 & -3 & 1 & 0 & 0 \
    0 & -2 & -18 & 27 & 0 & 0 & 1 & 0\
    0 & -1 & -8 & 12 & -2 & 0 & 0 & 1
    end{array} right)
    $$

    Пора переходить ко второму шагу прямого хода метода Гаусса. На этом шаге должна использоваться вторая строка, однако второй элемент данной строки равен нулю. Согласно алгоритму, нужно поменять местами вторую строку с одной из нижележащих строк, у которых второй элемент отличен от нуля. Поменяем местами вторую и четвёртую строки, а потом продолжим преобразования:

    $$
    left(begin{array}{cccc|cccc}
    -2 & 3 & 0 & 1 & 1 & 0 & 0 & 0\
    0 & 0 & -2 & 4 & -3 & 1 & 0 & 0 \
    0 & -2 & -18 & 27 & 0 & 0 & 1 & 0\
    0 & -1 & -8 & 12 & -2 & 0 & 0 & 1
    end{array} right)
    overset{r_2leftrightarrow{r_4}}{rightarrow}

    left(begin{array}{cccc|cccc}
    -2 & 3 & 0 & 1 & 1 & 0 & 0 & 0\
    0 & -1 & -8 & 12 & -2 & 0 & 0 & 1\
    0 & -2 & -18 & 27 & 0 & 0 & 1 & 0\
    0 & 0 & -2 & 4 & -3 & 1 & 0 & 0
    end{array} right)
    begin{array} {l} phantom{0} \ phantom{0} \ r_3-2r_2 \ phantom{0} end{array} rightarrow
    $$

    $$
    rightarrowleft(begin{array}{cccc|cccc}
    -2 & 3 & 0 & 1 & 1 & 0 & 0 & 0\
    0 & -1 & -8 & 12 & -2 & 0 & 0 & 1\
    0 & 0 & -2 & 3 & 4 & 0 & 1 & -2\
    0 & 0 & -2 & 4 & -3 & 1 & 0 & 0
    end{array} right)
    begin{array} {l} phantom{0} \ phantom{0} \ phantom{0} \ r_4-r_3 end{array} rightarrow
    $$

    $$
    rightarrowleft(begin{array}{cccc|cccc}
    -2 & 3 & 0 & 1 & 1 & 0 & 0 & 0\
    0 & -1 & -8 & 12 & -2 & 0 & 0 & 1\
    0 & 0 & -2 & 3 & 4 & 0 & 1 & -2\
    0 & 0 & 0 & 1 & -7 & 1 & -1 & 2 end{array} right)
    begin{array} {l} r_1-r_4 \ r_2-12r_4 \ r_3-3r_1 \ phantom{0} end{array} rightarrow
    $$

    $$
    rightarrowleft(begin{array}{cccc|cccc}
    -2 & 3 & 0 & 0 & 8 & -1 & 1 & -2\
    0 & -1 & -8 & 0 & 82 & -12 & 12 & -23\
    0 & 0 & -2 & 0 & 25 & -3 & 4 & -8\
    0 & 0 & 0 & 1 & -7 & 1 & -1 & 2
    end{array} right)
    begin{array} {l} phantom{0} \ phantom{0} \ -1/2cdot{r_3} \ phantom{0} end{array} rightarrow
    $$

    $$
    rightarrowleft(begin{array}{cccc|cccc}
    -2 & 3 & 0 & 0 & 8 & -1 & 1 & -2\
    0 & -1 & -8 & 0 & 82 & -12 & 12 & -23\
    0 & 0 & 1 & 0 & -25/2 & 3/2 & -2 & 4\
    0 & 0 & 0 & 1 & -7 & 1 & -1 & 2
    end{array} right)
    begin{array} {l} phantom{0} \ r_2+8r_3 \ phantom{0} \ phantom{0} end{array} rightarrow
    $$

    $$
    rightarrowleft(begin{array}{cccc|cccc}
    -2 & 3 & 0 & 0 & 8 & -1 & 1 & -2\
    0 & -1 & 0 & 0 & -18 & 0 & -4 & 9\
    0 & 0 & 1 & 0 & -25/2 & 3/2 & -2 & 4\
    0 & 0 & 0 & 1 & -7 & 1 & -1 & 2
    end{array} right)
    begin{array} {l} phantom{0} \ -1cdot{r_2} \ phantom{0} \ phantom{0} end{array} rightarrow
    $$

    $$
    rightarrowleft(begin{array}{cccc|cccc}
    -2 & 3 & 0 & 0 & 8 & -1 & 1 & -2\
    0 & 1 & 0 & 0 & 18 & 0 & 4 & -9\
    0 & 0 & 1 & 0 & -25/2 & 3/2 & -2 & 4\
    0 & 0 & 0 & 1 & -7 & 1 & -1 & 2
    end{array} right)
    begin{array} {l} r_1-3r_2 \ phantom{0} \ phantom{0} \ phantom{0} end{array} rightarrow

    $$

    $$
    rightarrowleft(begin{array}{cccc|cccc}
    -2 & 0 & 0 & 0 & -46 & -1 & -11 & 25\
    0 & 1 & 0 & 0 & 18 & 0 & 4 & -9\
    0 & 0 & 1 & 0 & -25/2 & 3/2 & -2 & 4\
    0 & 0 & 0 & 1 & -7 & 1 & -1 & 2
    end{array} right)
    begin{array} {l} -1/2cdot{r_1} \ phantom{0} \ phantom{0} \ phantom{0} end{array} rightarrow
    $$

    $$
    rightarrowleft(begin{array}{cccc|cccc}
    1 & 0 & 0 & 0 & 23 & 1/2 & 11/2 & -25/2\
    0 & 1 & 0 & 0 & 18 & 0 & 4 & -9\
    0 & 0 & 1 & 0 & -25/2 & 3/2 & -2 & 4\
    0 & 0 & 0 & 1 & -7 & 1 & -1 & 2
    end{array}right)
    $$

    Из последней матрицы получаем ответ:

    $$
    A^{-1}
    =left(begin{array}{cccc}
    23 & 1/2 & 11/2 & -25/2\
    18 & 0 & 4 & -9\
    -25/2 & 3/2 & -2 & 4\
    -7 & 1 & -1 & 2
    end{array}right)
    $$

    Метод Гаусса-Жордана

    $$
    left(begin{array}{cccc|cccc}
    -2 & 3 & 0 & 1 & 1 & 0 & 0 & 0\
    -6 & 9 & -2 & 7 & 0 & 1 & 0 & 0 \
    0 & -2 & -18 & 27 & 0 & 0 & 1 & 0\
    -4 & 5 & -8 & 14 & 0 & 0 & 0 & 1
    end{array} right)
    begin{array} {l} -1/2cdot{r_1} \ phantom{0} \ phantom{0} \ phantom{0} end{array} rightarrow
    $$

    $$
    rightarrowleft(begin{array}{cccc|cccc}
    1 & -3/2 & 0 & -1/2 & -1/2 & 0 & 0 & 0\
    -6 & 9 & -2 & 7 & 0 & 1 & 0 & 0 \
    0 & -2 & -18 & 27 & 0 & 0 & 1 & 0\
    -4 & 5 & -8 & 14 & 0 & 0 & 0 & 1
    end{array} right)
    begin{array} {l} phantom{0} \ r_2+6r_1 \ phantom{0} \ r_4+4r_1 end{array} rightarrow
    $$

    $$
    rightarrowleft(begin{array}{cccc|cccc}
    1 & -3/2 & 0 & -1/2 & -1/2 & 0 & 0 & 0\
    0 & 0 & -2 & 4 & -3 & 1 & 0 & 0 \
    0 & -2 & -18 & 27 & 0 & 0 & 1 & 0\
    0 & -1 & -8 & 12 & -2 & 0 & 0 & 1
    end{array} right)
    $$

    Пора переходить ко второму шагу метода Гаусса-Жордана. На этом шаге должна использоваться вторая строка, однако второй элемент данной строки равен нулю. Согласно алгоритму, нужно поменять местами вторую строку с одной из нижележащих строк, у которых второй элемент отличен от нуля. Поменяем местами вторую и четвёртую строки, а потом продолжим преобразования:

    $$
    left(begin{array}{cccc|cccc}
    1 & -3/2 & 0 & -1/2 & -1/2 & 0 & 0 & 0\
    0 & 0 & -2 & 4 & -3 & 1 & 0 & 0 \
    0 & -2 & -18 & 27 & 0 & 0 & 1 & 0\
    0 & -1 & -8 & 12 & -2 & 0 & 0 & 1
    end{array} right)
    overset{r_2leftrightarrow{r_4}}{rightarrow}
    $$

    $$
    rightarrowleft(begin{array}{cccc|cccc}
    1 & -3/2 & 0 & -1/2 & -1/2 & 0 & 0 & 0\
    0 & -1 & -8 & 12 & -2 & 0 & 0 & 1 \
    0 & -2 & -18 & 27 & 0 & 0 & 1 & 0\
    0 & 0 & -2 & 4 & -3 & 1 & 0 & 0
    end{array} right)
    begin{array} {l} phantom{0} \ -1cdot{r_2} \ phantom{0} \ phantom{0} end{array} rightarrow
    $$

    $$
    rightarrowleft(begin{array}{cccc|cccc}
    1 & -3/2 & 0 & -1/2 & -1/2 & 0 & 0 & 0\
    0 & 1 & 8 & -12 & 2 & 0 & 0 & -1 \
    0 & -2 & -18 & 27 & 0 & 0 & 1 & 0\
    0 & 0 & -2 & 4 & -3 & 1 & 0 & 0
    end{array} right)
    begin{array} {l} r_1+3/2cdot{r_2} \ phantom{0} \ r_3+2r_2 \ phantom{0} end{array} rightarrow
    $$

    $$
    rightarrowleft(begin{array}{cccc|cccc}
    1 & 0 & 12 & -37/2 & 5/2 & 0 & 0 & -3/2\
    0 & 1 & 8 & -12 & 2 & 0 & 0 & -1 \
    0 & 0 & -2 & 3 & 4 & 0 & 1 & -2\
    0 & 0 & -2 & 4 & -3 & 1 & 0 & 0
    end{array} right)
    begin{array} {l} phantom{0} \ phantom{0} \ -1/2cdot{r_3} \ phantom{0} end{array} rightarrow
    $$

    $$
    rightarrowleft(begin{array}{cccc|cccc}
    1 & 0 & 12 & -37/2 & 5/2 & 0 & 0 & -3/2\
    0 & 1 & 8 & -12 & 2 & 0 & 0 & -1 \
    0 & 0 & 1 & -3/2 & -2 & 0 & -1/2 & 1\
    0 & 0 & -2 & 4 & -3 & 1 & 0 & 0
    end{array} right)
    begin{array} {l} r_1-12r_3 \ r_2-8r_3 \ phantom{0} \ r_4+2r_3 end{array} rightarrow
    $$

    $$
    rightarrowleft(begin{array}{cccc|cccc}
    1 & 0 & 0 & -1/2 & 53/2 & 0 & 6 & -27/2\
    0 & 1 & 0 & 0 & 18 & 0 & 4 & -9 \
    0 & 0 & 1 & -3/2 & -2 & 0 & -1/2 & 1\
    0 & 0 & 0 & 1 & -7 & 1 & -1 & 2
    end{array} right)
    begin{array} {l} r_1+1/2cdot{r_4} \ phantom{0} \ r_3+3/2cdot{r_4} \ phantom{0} end{array} rightarrow
    $$

    $$
    rightarrowleft(begin{array}{cccc|cccc}
    1 & 0 & 0 & 0 & 23 & 1/2 & 11/2 & -25/2\
    0 & 1 & 0 & 0 & 18 & 0 & 4 & -9\
    0 & 0 & 1 & 0 & -25/2 & 3/2 & -2 & 4\
    0 & 0 & 0 & 1 & -7 & 1 & -1 & 2
    end{array}right)
    $$

    Из последней матрицы получаем ответ:

    $$
    A^{-1}
    =left(begin{array}{cccc}
    23 & 1/2 & 11/2 & -25/2\
    18 & 0 & 4 & -9\
    -25/2 & 3/2 & -2 & 4\
    -7 & 1 & -1 & 2
    end{array}right)
    $$

    Ответ: $
    A^{-1}
    =left(begin{array}{cccc}
    23 & 1/2 & 11/2 & -25/2\
    18 & 0 & 4 & -9\
    -25/2 & 3/2 & -2 & 4\
    -7 & 1 & -1 & 2
    end{array}right)
    $.

    Пример №7

    Найти матрицу $A^{-1}$, если
    $A=left(begin{array}{ccc}
    1 & -2 & 5\
    -2 & 5 & -13\
    -3 & 4 & -9end{array} right)$.

    Решение

    В данном примере применим метод Гаусса.

    $$
    left(begin{array}{ccc|ccc}
    1 & -2 & 5 & 1 & 0 & 0\
    -2 & 5 & -13 & 0 & 1 & 0\
    -3 & 4 & -9 & 0 & 0 & 1end{array} right)
    begin{array} {l} phantom{0} \ r_2+2r_1 \ r_3+3r_1 end{array} rightarrow\
    $$

    $$
    rightarrowleft(begin{array}{ccc|ccc}
    1 & -2 & 5 & 1 & 0 & 0\
    0 & 1 & -3 & 2 & 1 & 0\
    0 & -2 & 6 & 3 & 0 & 1end{array} right)
    begin{array} {l} phantom{0} \ phantom{0} \ r_3+2r_2 end{array} rightarrow

    left(begin{array}{ccc|ccc}
    1 & -2 & 5 & 1 & 0 & 0\
    0 & 1 & -3 & 2 & 1 & 0\
    0 & 0 & 0 & 7 & 2 & 1end{array}right)
    $$

    В матрице до черты появилась нулевая строка. Это означает, что обратная матрица $A^{-1}$ не существует.

    Ответ: обратной матрицы не существует.

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

    A∙A−1
    = A−1∙A
    = E

    Наш калькулятор поддерживает два различных способа вычисления обратной матрицы: по методу Гаусса-Жордана и при помощи построения алгебраических дополнений к исходной матрице.

    Для нахождения обратной матрицы по методу Гаусса-Жордана, к исходной матрице справа дописывают единичную матрицу:

    ( A | E )

    Затем, с помощью элементарных преобразований приводят исходную матрицу к единичной, выполняя теже самые операции и над единичной матрицей, записанной справа. В результате таких действий исходная матрица приводится к единичной, а единичная к обратной:

    ( A | E) → ( E | A−1 )

    Метод довольно простой, удобный и не очень трудоемкий.

    Для нахождения обратной матрицы при помощи метода алгебраических дополнений используют следующую формулу:

    вычисление обратной матрицы по методу алгебраических дополнений

    где
    | A |
    — определитель матрицы
    A,
    Ai j
    — алгебраическое дополнение элемента
    ai j
    матрицы
    A.

    По определению:

    Ai j = (-1) i+j Mi j

    где
    Mi j
    — минор элемента
    ai j
    матрицы
    A.

    По определению — минор элемента
    ai j
    матрицы
    A
    — это определитель, полученный путем вычеркивания
    i
    строки,
    j
    столбца матрицы
    A.

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

    Автор статьи

    оксана николаевна кузнецова

    Эксперт по предмету «Математика»

    Задать вопрос автору статьи

    Определение 1

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

    История возникновения метода

    Исторически метод Гаусса возник достаточно давно. Решение систем уравнений подобным способом было изложено ещё в древнем китайском математическом трактате под названием “Математика в девяти книгах”, представляющим собой разрозненное собрание решений различных прикладных математических задач.

    Некоторые главы этого трактата датируются 150 г. до н.э.

    В Европе же первым, кто занимался изучением этого метода, был Исаак Ньютон. Учёный изучил много книг по алгебре того времени и обнаружил, что ни в одной из них не предложено решений систем уравнений со множеством переменных, после чего он предложил свой способ решения.

    Его работа на эту тему была опубликована в 1707 г., в это время Ньютон уже больше не работал в Кембридже. После этого в течение века метод появился во многих книгах и учебниках по алгебре.

    В 1810 году известный немецкий учёный и математик К. Ф. Гаусс опубликовал свои дополнения к этому методу вместе с другими своими работами по линейной алгебре, после чего метод с получением верхней треугольной матрицы стал широко известен под его именем.

    Затем в в конце XIX века геодезист и математик Жордан разработал на основе метода Гаусса свой усовершенствованный вариант с получением диагональной матрицы.

    Примечательно, что он сделал это практически одновременно с другим учёным, тем не менее, в названии усовершенствованного метода отразилось только имя геодезиста Жордана.

    Практическое применение метода Жордана-Гаусса

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

    «Метод Жордана-Гаусса» 👇

    Для решения получаемых на основе технических задач систем уравнений выделяют наибольшие по модулю переменные для уменьшения ошибки погрешности, а затем производят поочередное удаление лишних переменных из строчек матрицы.

    Для решения технических задач методом Жордана-Гаусса также используются реализации на различных языках программирования, они позволяют получать более точные значения переменных.

    Объяснение сущности метода Жордана-Гаусса

    Обычно матрица, полученная с помощью метода Жордана-Гаусса выглядит как диагональ с единицами, вот например:

    $A = begin{array}{ccc|c} 1& 0 &0 &a_1 \ 0& 1 &0 &a_2 \ 0 & 0 & 1 &a_3 end{array}$

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

    С помощью метода Гаусса можно найти базисное и общее решение системы уравнений, также как и с помощью метода Жордана-Гаусса.

    Базисное решение системы уравнений – это решение, при котором все свободные переменные равны нулю.

    Общее решение системы уравнений – это решение, при котором основные переменные выражаются через свободные переменные.

    Также методом Жордана-Гаусса производят получение обратных матриц.

    Получение обратной матрицы методом Жордана-Гаусса

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

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

    В результате мы получим диагональную единичную матрицу из исходной, а рядом с ней будет её обратная матрица, полученная из единичной матрицы.

    Получение обратной матрицы методом Жордана-Гаусса.

    Исходная матрица:

    $begin{array}{cc} 1& 2 \ 3 & 4 \ end{array}$

    Запишем рядом единичную матрицу и исходную:

    $ begin{array}{cc|cc} 1& 2 & 1& 0\ 3 & 4& 0 & 1 \ end{array}$

    Теперь к нижней строчке прибавляем верхнюю строчку, умноженную на $-3$:

    $ begin{array}{cc|cc} 1& 2 & 1 & 0\ 0 & -2 & -3 & 1 \ end{array}$

    Прибавляем к верхней строчке нижнюю:

    $ begin{array}{cc|cc} 1& 0 & -2 & 1\ 0 & -2 & -3 & 1 \ end{array}$

    Делим вторую строку на $-2$:

    $ begin{array}{cc|cc} 1& 0 & -2 & 1\ 0 & 1& 3/2 & -1/2 \ end{array}$

    Обратной исходной будет следующая матрица:

    $begin{array}{cc} -2& 1 \ 3/2 & -1/2 \ end{array}$

    Чтобы решить СЛАУ методом Жордана-Гаусса, к матрице возможно применить те же элементарные преобразования, что и в случае решения методом Гаусса, а именно:

    • умножение любой строчки на константу, отличную от нуля;
    • вычитание или сложение двух любых строчек;
    • перестановка любых двух строчек местами;
    • удаление строчек, состоящих из одних нулей;
    • удаление лишних строк, пропорциональных друг другу.

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

    Общий алгоритм решения системы уравнений методом Жордана-Гаусса

    1. Выбирают строчку, в которой первый элемент имеет ненулевое значение максимально приближенное к единице и ставят её на место первой строки. Такой элемент называют также “разрешающим”
    2. Приводят значение верхней левой ячейки к $1$ посредством деления или умножения всей верхней строки.
    3. Из оставшихся строчек вычитают верхнюю строчку, помноженную на коэффициент, стоящий на первом месте в строчке, над которой ведутся преобразования.
    4. Далее тоже самое проделывают необходимое количество раз с целью получения треугольной матрицы, в которой все элементы ниже главной диагонали, проходящей слева направо сверху вниз, равны нулю. Последовательность действий, описанных выше, называется прямым ходом преобразования матрицы.
    5. После получения треугольной матрицы затем вычитают последнюю строку из предпоследней, помножив последнюю строку на элемент из предпоследней. На данном этапе в последней и предпоследней строке остаётся по одному коэффициенту. Эту операцию повторяют пока не дойдут до верха матрицы, получив диагональную матрицу. Эти действия носят название обратного хода преобразования матрицы.

    Пример 1

    Задача. Решить систему линейных уравнений методом Гаусса-Жордана

    $begin{cases} 3x_1 + 2x_2 – 5x_3 = -1 \ 2x_1 – x_2 + 3x_3 = 13 \ x_1 + 2x_2 – x_3 = 9 end{cases}$

    Теперь запишем эту систему в виде расширенной матрицы:

    $ begin{array}{ccc|c} 3& 2 & -5 & -1\ 2 & -1& 3 & 13 \ 1 & 2 & -1 & 9 \ end{array}$

    Путём элементарных преобразований методом Гаусса получим следующую матрицу:

    $ begin{array}{ccc|c} 1& 2 & -1 & 9\ 0 & 1& -1 & 1 \ 0 & 0& 1 & 4 \ end{array}$

    Теперь начнём использовать обратный ход и преобразуем эту матрицу чтобы получить диагональ из единиц.

    Сначала к средней и верхней строчкам необходимо добавить последнюю строчку, получается:

    $ begin{array}{ccc|c} 1& 2 & 0 & 13\ 0 & 1& 0 & 5 \ 0 & 0 & 1 & 4 \ end{array}$

    А теперь к верхней строчке прибавим среднюю, умноженную на $-2$:

    $ begin{array}{ccc|c} 1& 0 & 0 & 3\ 0 & 1& 0 & 5 \ 0 & 0 & 1 & 4 \ end{array}$

    Получаем следующую систему:

    $begin{cases} x_1 = 3 \ x_2 = 5 \ x_3 = 4 end{cases}$

    Пример 2

    Решить систему линейных уравнений методом Жордана-Гаусса:

    $begin{cases} x_1 – 8x_2 + x_3 — 9x_4 = 6 \ x_1 – 4x_2 – x_3 — 5x_4 = 2 \ -3x_1 + 2x_2 + 8x_3 + 5x_4 = 4 \ 5x_1 + 2x_2 + 2x_3 + 3x_4 = 12 end{cases}$

    Сначала запишем систему в матричном виде:

    $ begin{array}{cccc|c} 1& -8 & 1 & -9 & 6 \ -1 & -4& -1 & -5 & 2 \ -3 & 2 & 8 & 5 & 4 \ 5& 2 & 2 & 3 & 12 \ end{array}$

    Затем преобразуем до треугольной:

    К самой верхней строчке прибавляем вторую строчку, домноженную на $-1$. К третьей строчке прибавляем утроенную самую верхнюю строчку, затем к последней строчке прибавляем самую верхнюю, помноженную на $-5$:

    $ begin{array}{cccc|c} 1& -8 & 1 & -9 & 6 \ 0 & 4& -2 & 4 & -4 \ 0 & -22 & 11 & -22 & 22 \ 0& 42 & -3 & 48 & -18 \ end{array}$

    Теперь вторую строчку необходимо поделить на $2$, третью строчку на на $11$, а самую нижнюю строку делим на 3:

    $ begin{array}{cccc|c} 1& -8 & 1 & -9 & 6 \ 0 & 2& -1 & 2 & -2 \ 0 & -2 & 1 & -2 & 2 \ 0& 14 & -1 & 16 & -6 \ end{array}$

    Удаляем третью строчку, так как она пропорциональна со второй. А к последней строке прибавляем вторую, предварительно домноженную на $-7$:

    $ begin{array}{cccc|c} 1& -8 & 1 & -9 & 6 \ 0 & 2& -1 & 2 & -2 \ 0& 0 & 6 & 2 & 8 \ end{array}$

    Теперь сокращаем последнюю строчку с $2$:

    $ begin{array}{cccc|c} 1& -8 & 1 & -9 & 6 \ 0 & 2& -1 & 2 & -2 \ 0& 0 & 3 & 1 & 4 \ end{array}$

    В полученной матрице количество строк и столбцов неодинаково, а значит, она имеет бесконечное множество решений.
    Продолжаем дальнейшее преобразование системы, для этого необходимо в третьем столбце получить числа с равным модулем, поэтому сначала верхнюю строку умножаем на $-3$, а среднюю на $3$:

    $ begin{array}{cccc|c} -3& 24 & -3 & 27 & -18 \ 0 & 6& -3 & 6 & -6 \ 0& 0 & 3 & 1 & 4 \ end{array}$

    Складываем поочередно первую строчку с третьей, а затем вторую с третьей:

    $ begin{array}{cccc|c} -3& 24 & 0 & 28 & -14 \ 0 & 6 & 0 & 7 & -2 \ 0& 0 & 3 & 1 & 4 \ end{array}$

    Домножаем вторую строчку на $-4$ чтобы получить одинаковые по модулю числа во втором столбце нашей матрицы:

    $ begin{array}{cccc|c} -3& 24 & 0 & 28 & -14 \ 0 & -24 & 0 & -28 & 8 \ 0& 0 & 3 & 1 & 4 \ end{array}$

    Складываем верхнюю строчку со второй:

    $ begin{array}{cccc|c} -3& 0 & 0 & 0 & -6 \ 0 & -24 & 0 & -28 & 8 \ 0& 0 & 3 & 1 & 4 \ end{array}$

    Теперь необходимо разделить верхнюю строчку на $-3$, среднюю строчку на $-24$, а последнюю строчку нужно разделить на 3:

    $ begin{array}{cccc|c} 1 & 0 & 0 & 0 & 2 \ 0 & 1 & 0 & 7/6 & -1/3 \ 0& 0 & 1 & 1/3 & 4/3 \ end{array}$

    Если переписать в виде системы, получим следующее:

    $begin{cases} x_1 = 2 \ x_2 + frac{7}{6}x_4 = -frac{1}{3} \ x_3 + frac{1}{3}x_4 = frac{4}{3} \ end{cases}$

    А теперь просто выражаем базисные переменные:

    $begin{cases} x_1 = 2 \ x_2 = -frac{7}{6}x_4 — frac{1}{3} \ x_3 = -frac{1}{3}x_4 + frac{4}{3} \ end{cases}$

    Данная система является общим решением уравнения.

    Находи статьи и создавай свой список литературы по ГОСТу

    Поиск по теме

    Понравилась статья? Поделить с друзьями:
  • Как найти течь трубы под землей
  • Как найти неизвестный член пропорции правило
  • Как найти монеты в речке
  • Как найти группу контактов в outlook
  • Как найти равновесную цену если изменилось предложение