В этой статье рассматривается процесс решения линейных уравнений с помощью обратной матрицы с использованием Python и Numpy.

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

Для этого возьмем пример двух линейных уравнений с двумя переменными. мы решим найти значение x и y.

Что такое линейное уравнение?

Линейное уравнение — это уравнение, которое представляет собой прямую линию и представляет собой полиномиальное уравнение со степенью 1. Линейное уравнение может содержать несколько переменных.

Стандартная форма линейного уравнения

Стандартная форма линейного уравнения приведена ниже.

ax + by = c

Пример линейного уравнения

3x + 8y = 5
4x + 11y = 7

Как решить линейные уравнения с обращением матрицы? | Математика

A = [[3, 8], [4, 11]] 
B = [5, 7] 
X = ?
X = inverse(A) . B

Как найти обратную матрицу? | Питон

Вот код Python для поиска значения x и y с использованием обратной матрицы с использованием Python и Numpy.

""" Solver Linear equation using inverse matrix """
import numpy as np

class LinearEquationSolver(object):
    """ Linear Equation solver using inverse matrix 
    
    equation: AX = B

    X = inverse(A) . B

    Args:
        A: matrix A (np array)
        B: Matrix B (np array)

    return:
        value of X
    """

    def __init__(self, A, B):
        self.A = A
        self.B = B
        
    def is_valid(self):
        """ 
        check if the correct matrix
        # checking if A is square matrix and dot product possible for A and B (n *m )(m*n)
        """
        shape_A = self.A.shape
        shape_B = self.B.shape

        
        if shape_A[1] == shape_B[0]:
            if shape_A[0] == shape_A[1]: 
                return True
            else:
                raise Exception("A is not a Square matrix")
        else:
            raise Exception("Dot Product not possible for A and B")   

    def inverse_matrix(self, matrix):
        """ Inverse the matrix """
        try:
            inverse_matix = np.linalg.inv(matrix)
            return inverse_matix
        except Exception as e:
            raise ValueError("Inverse of matrix not possible")

    def solve(self):
        """ main function to solve the equation by calling the dot product between 
            inverse(A) and B.
        """
        coff = 0
        if self.is_valid():
            inverse_A = self.inverse_matrix(self.A)
            coff = np.dot(inverse_A, self.B)
            
        return coff

Сначала мы проверим, обратима ли матрица или нет. Если матрица обратима, то мы найдем обратную матрицу, а затем умножим обратную матрицу на постоянную матрицу, чтобы найти значение x и y.

Код драйвера

def test_case():
    A = np.array([[3, 8], [4, 11]])
    B = np.array([5, 7])
    solver = LinearEquationSolver(A, B)
    coff = solver.solve()
    print(coff)


if __name__ == "__main__":
    test_case()

Пришло время протестировать наш код. Вот код драйвера для проверки нашего кода.

Выход

[ -1.  1.]

Объяснение

Вот объяснение вывода.

x = 1, y = -1

3x + 8y = 5 3(-1) + 8(1) = 5 -3 + 8 = 5 5 = 5
4x + 11y = 7 4(-1) + 11(1) = 7 -4 + 11 = 7 7 = 7

Заключение

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

Математическая серия

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

Оригинально опубликовано на сайте https://codeperfectplus.com 17 августа 2023 г.