numpy.linalg.solve
Функция linalg.solve() решает линейное матричное уравнение (систему линейных уравнений).
Данная функция вычисляет значение неизвестных только для квадратных, невырожденных матриц с полным рангом, т.е. только если матрица A размером имеет ранг равный m. Если хотя бы одно из этих условий не выполняется, то возвращается ошибка LinAlgError.
Система линейных уравнений может быть записана в матричной форме:
$$ \begin
Или в более короткой форме \(Ax=b\), где A — это матрица коэфициентов (матрица системы), x — столбец неизвестных, b — столбец свободных членов.
Параметры: a — массив NumPy или подобнй массиву объект. Матрица коэфициентов — квадратный массив или многомерный массив у которого две последние оси равны. b — массив NumPy или подобнй массиву объект. Столбец свободных членов — одномерный массив длина которого совпадает с длиной a . Это может быть многомерный массив, но в этом случае его последняя или предпоследняя ось должна быть равна последней оси массива a. Возвращает: x — массив NumPy. Решение матричного уравнения (системы уравнений) \(Ax=b\). Форма возвращаемого массива зависит от формы массивов a и b.
Примеры
Решим систему уравнений
$$\left\<\begin
Выполним проверку, умножим матрицу коэфициентов на полученный столбец решений. Данное произведение должно оказаться равно столбцу b:
Мы можем решать несколько систем одновременно. Допустим у нас есть несколько систем уравнений:
$$\left\<\begin
$$\left\<\begin
$$\left\<\begin
numpy.linalg.solve¶
Solve a linear matrix equation, or system of linear scalar equations.
Computes the “exact” solution, x, of the well-determined, i.e., full rank, linear matrix equation ax = b.
Parameters a (…, M, M) array_like
b <(…, M,), (…, M, K)>, array_like
Ordinate or “dependent variable” values.
Returns x <(…, M,), (…, M, K)>ndarray
Solution to the system a x = b. Returned shape is identical to b.
If a is singular or not square.
Similar function in SciPy.
New in version 1.8.0.
Broadcasting rules apply, see the numpy.linalg documentation for details.
The solutions are computed using LAPACK routine _gesv .
a must be square and of full-rank, i.e., all rows (or, equivalently, columns) must be linearly independent; if either is not true, use lstsq for the least-squares best “solution” of the system/equation.
G. Strang, Linear Algebra and Its Applications, 2nd Ed., Orlando, FL, Academic Press, Inc., 1980, pg. 22.
Solve the system of equations x0 + 2 * x1 = 1 and 3 * x0 + 5 * x1 = 2 :
Решение систем линейных уравнений с помощью Python’s Numpy
Два или более линейных уравнения с одинаковым набором переменных называются системой линейных уравнений. Мы можем решить эти переменные в Python с помощью Numpy.
- Автор записи
Автор: Guest Contributor
Дата записи
Библиотека Numpy может использоваться для выполнения различных математических/научных операций, таких как матричные кросс-и точечные произведения, поиск значений синуса и косинуса, преобразование Фурье и манипулирование формой и т. Д. Слово Numpy-это сокращенное обозначение “Числового питона”.
В этой статье вы увидите, как решить систему линейных уравнений с помощью библиотеки Numpy Python.
Что такое Система линейных уравнений?
В математике система линейных уравнений (или линейная система) представляет собой совокупность двух или более линейных уравнений, включающих один и тот же набор переменных.
Конечная цель решения системы линейных уравнений – найти значения неизвестных переменных. Вот пример системы линейных уравнений с двумя неизвестными переменными, x и y :
Чтобы решить приведенную выше систему линейных уравнений, нам нужно найти значения переменных x и y . Существует множество способов решения такой системы, таких как Исключение переменных, Правило Крамера, Метод сокращения строк и Матричное решение. В этой статье мы рассмотрим матричное решение.
В матричном решении система решаемых линейных уравнений представляется в виде матрицы AX . Например, мы можем представить Уравнение 1 в виде матрицы следующим образом:
Чтобы найти значение переменных x и y в Уравнение 1 , нам нужно найти значения в матрице X . Для этого мы можем взять точечное произведение обратной матрицы A и матрицы B , как показано ниже:
Если вы не знакомы с тем, как найти обратную матрицу, взгляните на эту ссылку, чтобы понять, как вручную найти обратную матрицу. Чтобы понять матричный точечный продукт, ознакомьтесь с этой статьей .
Решение системы линейных уравнений с Numpy
Из предыдущего раздела мы знаем, что для решения системы линейных уравнений необходимо выполнить две операции: инверсию матрицы и матричное точечное произведение. Библиотека Numpy из Python поддерживает обе эти операции. Если вы еще не установили библиотеку Numpy, вы можете сделать это с помощью следующей команды pip :
Теперь давайте посмотрим, как решить систему линейных уравнений с помощью библиотеки Numpy.
Использование методов inv() и dot()
Во-первых, мы найдем обратную матрицу A , которую мы определили в предыдущем разделе.
Давайте сначала создадим матрицу A в Python. Для создания матрицы можно использовать метод array модуля Numpy. Матрицу можно рассматривать как список списков, где каждый список представляет собой строку.
В следующем скрипте мы создаем список с именем m_list , который далее содержит два списка: [4,3] и [-5,9] . Эти списки являются двумя строками в матрице A . Чтобы создать матрицу A с помощью Numpy, m_list передается методу array , как показано ниже:
Чтобы найти обратную матрицу, матрица передается в метод linalg.inv() модуля Numpy:
Следующий шаг-найти точечное произведение между обратной матрицей A и матрицей B . Важно отметить, что матричное точечное произведение возможно только между матрицами , если внутренние размеры матриц равны , то есть количество столбцов левой матрицы должно соответствовать количеству строк в правой матрице.
Для поиска точечного продукта с помощью библиотеки Numpy используется функция linalg.dot () . Следующий скрипт находит точечное произведение между обратной матрицей A и матрицей B , которая является решением уравнения 1 .
Вот, 2 и 4 являются ли соответствующие значения для неизвестных x и y in Уравнение 1 . Для проверки, если вы подключаете 2 на месте неизвестного x и 4 на месте неизвестного y в уравнении 4x + 3y вы увидите , что результат будет равен 20.
Давайте теперь решим систему из трех линейных уравнений, как показано ниже:
Приведенное выше уравнение можно решить с помощью библиотеки Numpy следующим образом:
В приведенном выше скрипте методы linalg.inv() и linalg.dot() соединены вместе. Переменная X содержит решение для уравнения 2 и печатается следующим образом:
Значение для неизвестных x , y и z равно 5, 3 и -2 соответственно. Вы можете подключить эти значения в Уравнение 2 и проверить их правильность.
Использование метода solve()
В предыдущих двух примерах мы использовали методы linalg.inv() и linalg.dot() для нахождения решения системы уравнений. Однако библиотека Numpy содержит метод linalg.dsolve () , который может быть использован для непосредственного нахождения решения системы линейных уравнений:
Вы можете видеть, что выход такой же, как и раньше.
Реальный Пример
Давайте посмотрим, как система линейных уравнений может быть использована для решения реальных задач.
Предположим, продавец фруктов продал 20 манго и 10 апельсинов за один день на общую сумму 350 долларов. На следующий день он продал 17 манго и 22 апельсина за 500 долларов. Если цены на фрукты оставались неизменными в оба дня, то какова была цена одного манго и одного апельсина?
Эта задача легко решается с помощью системы двух линейных уравнений.
Допустим, цена одного манго равна x , а цена одного апельсина равна y . Вышеприведенная проблема может быть преобразована следующим образом:
Решение приведенной выше системы уравнений показано здесь:
Результат показывает, что цена одного манго составляет 10 долларов, а цена одного апельсина-15 долларов.
http://numpy.org/doc/stable/reference/generated/numpy.linalg.solve.html
http://pythobyte.com/solving-systems-of-linear-equations-with-pythons-numpy-97e805af/