В этой статье рассматривается процесс решения линейных уравнений с помощью обратной матрицы с использованием 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 г.